@Override
        public String clusterId() {
            return Stream.concat(controllers().values().stream().map(ControllerServer::clusterId),
                brokers().values().stream().map(KafkaBroker::clusterId)).findFirst()
                .orElseThrow(() -> new RuntimeException("No controllers or brokers!"));
        }
Wraps a {@link KafkaClusterTestKit} inside lifecycle methods for a test invocation. Each instance of this
class is provided with a configuration for the cluster.

This context also provides parameter resolvers for:

<ul>
    <li>ClusterConfig (the same instance passed to the constructor)</li>
    <li>ClusterInstance (includes methods to expose underlying SocketServer-s)</li>
</ul>
core/src/test/java/kafka/test/junit/RaftClusterInvocationContext.java