diff --git a/tests/kafkatest/services/verifiable_client.py b/tests/kafkatest/services/verifiable_client.py index 459bd6e00d4..72114a4ccdf 100644 --- a/tests/kafkatest/services/verifiable_client.py +++ b/tests/kafkatest/services/verifiable_client.py @@ -181,8 +181,16 @@ def create_verifiable_client_implementation(context, parent): class VerifiableClientMixin (object): """ - Verifiable client mixin class + Verifiable client mixin class which loads the actual VerifiableClient.. class. """ + def __init__ (self, *args, **kwargs): + super(VerifiableClientMixin, self).__init__(*args, **kwargs) + if hasattr(self.impl, 'deploy'): + # Deploy client on node + self.context.logger.debug("Deploying %s on %s" % (self.impl, self.nodes)) + for node in self.nodes: + self.impl.deploy(node) + @property def impl (self): """ @@ -196,6 +204,13 @@ class VerifiableClientMixin (object): return self._impl +class VerifiableClient (object): + """ + Verifiable client base class + """ + def __init__(self, *args, **kwargs): + super(VerifiableClient, self).__init__() + def exec_cmd (self, node): """ :return: command string to execute client. @@ -218,7 +233,7 @@ class VerifiableClientMixin (object): return self.conf.get("kill_signal", signal.SIGTERM) -class VerifiableClientJava (VerifiableClientMixin): +class VerifiableClientJava (VerifiableClient): """ Verifiable Consumer and Producer using the official Java client. """ @@ -258,7 +273,7 @@ class VerifiableClientJava (VerifiableClientMixin): return [] -class VerifiableClientDummy (VerifiableClientMixin): +class VerifiableClientDummy (VerifiableClient): """ Dummy class for testing the pluggable framework """ @@ -280,7 +295,7 @@ class VerifiableClientDummy (VerifiableClientMixin): return [] -class VerifiableClientApp (VerifiableClientMixin): +class VerifiableClientApp (VerifiableClient): """ VerifiableClient using --global settings for exec_cmd, pids and deploy. By using this a verifiable client application can be used through simple @@ -302,9 +317,9 @@ class VerifiableClientApp (VerifiableClientMixin): raise SyntaxError("%s requires \"exec_cmd\": .. to be set in --globals %s object" % \ (self.__class__.__name__, self.name)) + def exec_cmd (self, node): """ :return: command to execute to start instance """ - self.deploy(node) return self.conf["exec_cmd"] def pids (self, node):