diff --git a/build.gradle b/build.gradle index 3c202567b04..7e7ae4e16d4 100644 --- a/build.gradle +++ b/build.gradle @@ -1211,6 +1211,9 @@ project(':core') { //By default gradle does not handle test dependencies between the sub-projects //This line is to include clients project test jar to dependant-testlibs from (project(':clients').testJar ) { "$buildDir/dependant-testlibs" } + // log4j-appender is not in core dependencies, + // so we add it to dependant-testlibs to avoid ClassNotFoundException in running kafka_log4j_appender.py + from (project(':log4j-appender').jar ) { "$buildDir/dependant-testlibs" } duplicatesStrategy 'exclude' } diff --git a/tests/kafkatest/services/kafka_log4j_appender.py b/tests/kafkatest/services/kafka_log4j_appender.py index 1212a7d5454..bd60cbcd188 100644 --- a/tests/kafkatest/services/kafka_log4j_appender.py +++ b/tests/kafkatest/services/kafka_log4j_appender.py @@ -15,20 +15,21 @@ from ducktape.services.background_thread import BackgroundThreadService -from kafkatest.directory_layout.kafka_path import KafkaPathResolverMixin +from kafkatest.directory_layout.kafka_path import KafkaPathResolverMixin, CORE_DEPENDANT_TEST_LIBS_JAR_NAME from kafkatest.services.security.security_config import SecurityConfig from kafkatest.services.kafka.util import fix_opts_for_new_jvm +from kafkatest.version import DEV_BRANCH class KafkaLog4jAppender(KafkaPathResolverMixin, BackgroundThreadService): - logs = { "producer_log": { "path": "/mnt/kafka_log4j_appender.log", "collect_default": False} } - def __init__(self, context, num_nodes, kafka, topic, max_messages=-1, security_protocol="PLAINTEXT", tls_version=None): + def __init__(self, context, num_nodes, kafka, topic, max_messages=-1, security_protocol="PLAINTEXT", + tls_version=None): super(KafkaLog4jAppender, self).__init__(context, num_nodes) self.kafka = kafka @@ -48,7 +49,11 @@ class KafkaLog4jAppender(KafkaPathResolverMixin, BackgroundThreadService): node.account.ssh(cmd) def start_cmd(self, node): + # Since the core module does not contain the log4j-appender, we need to add it manually. + core_dependant_test_libs_jar = self.path.jar(CORE_DEPENDANT_TEST_LIBS_JAR_NAME, DEV_BRANCH) cmd = fix_opts_for_new_jvm(node) + cmd += "for file in %s; do CLASSPATH=$CLASSPATH:$file; done;" % core_dependant_test_libs_jar + cmd += " export CLASSPATH;" cmd += self.path.script("kafka-run-class.sh", node) cmd += " " cmd += self.java_class_name()