From ce7d588055e7d3aacebcc696665b1260fa2e9063 Mon Sep 17 00:00:00 2001 From: John Fung Date: Tue, 23 Jul 2013 10:32:30 -0700 Subject: [PATCH] kafka-883; System Test - update migration tool testsuite after 0.7 ProducerPerformance sends seq MessageID; patched by John Fung; reviewed by Jun Rao --- .../0.7/lib/kafka-perf-0.7.0.jar | Bin 52975 -> 55427 bytes .../config/migration_producer.properties | 3 +++ .../migration_tool_test.py | 4 +++- .../testcase_9001_properties.json | 1 - .../testcase_9003_properties.json | 1 - .../testcase_9004_properties.json | 1 - .../testcase_9005_properties.json | 2 -- .../testcase_9006_properties.json | 2 -- system_test/utils/kafka_system_test_utils.py | 1 + 9 files changed, 7 insertions(+), 8 deletions(-) diff --git a/system_test/migration_tool_testsuite/0.7/lib/kafka-perf-0.7.0.jar b/system_test/migration_tool_testsuite/0.7/lib/kafka-perf-0.7.0.jar index b1d7c7ebde0b4221b83ad838a24b22ad06cda4ff..d4f89d54907affea7186c5f4d28e9f5fe7069466 100644 GIT binary patch delta 23220 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 diff --git a/system_test/migration_tool_testsuite/config/migration_producer.properties b/system_test/migration_tool_testsuite/config/migration_producer.properties index 175080778ab..17b5928a121 100644 --- a/system_test/migration_tool_testsuite/config/migration_producer.properties +++ b/system_test/migration_tool_testsuite/config/migration_producer.properties @@ -61,3 +61,6 @@ serializer.class=kafka.serializer.DefaultEncoder # the number of messages batched at the producer #batch.num.messages= + +message.send.max.retries=3 +request.required.acks=1 diff --git a/system_test/migration_tool_testsuite/migration_tool_test.py b/system_test/migration_tool_testsuite/migration_tool_test.py index 5d22f83ce2c..ce6f4f684be 100644 --- a/system_test/migration_tool_testsuite/migration_tool_test.py +++ b/system_test/migration_tool_testsuite/migration_tool_test.py @@ -76,6 +76,8 @@ class MigrationToolTest(ReplicationUtils, SetupUtils): self.testSuiteAbsPathName, SystemTestEnv.SYSTEM_TEST_CASE_PREFIX) testCasePathNameList.sort() + replicationUtils = ReplicationUtils(self) + # ============================================================= # launch each testcase one by one: testcase_1, testcase_2, ... # ============================================================= @@ -284,7 +286,7 @@ class MigrationToolTest(ReplicationUtils, SetupUtils): # validate the data matched and checksum # ============================================= self.log_message("validating data matched") - kafka_system_test_utils.validate_07_08_migrated_data_matched(self.systemTestEnv, self.testcaseEnv) + kafka_system_test_utils.validate_data_matched(self.systemTestEnv, self.testcaseEnv, replicationUtils) kafka_system_test_utils.validate_broker_log_segment_checksum(self.systemTestEnv, self.testcaseEnv) # ============================================= diff --git a/system_test/migration_tool_testsuite/testcase_9001/testcase_9001_properties.json b/system_test/migration_tool_testsuite/testcase_9001/testcase_9001_properties.json index 1904ab5b948..608e3bdf79c 100644 --- a/system_test/migration_tool_testsuite/testcase_9001/testcase_9001_properties.json +++ b/system_test/migration_tool_testsuite/testcase_9001/testcase_9001_properties.json @@ -100,7 +100,6 @@ "group.id": "mytestgroup", "consumer-timeout-ms": "10000", "log_filename": "console_consumer_8.log", - "formatter": "kafka.consumer.ChecksumMessageFormatter", "config_filename": "console_consumer_8.properties" }, { diff --git a/system_test/migration_tool_testsuite/testcase_9003/testcase_9003_properties.json b/system_test/migration_tool_testsuite/testcase_9003/testcase_9003_properties.json index 8cacc69a74c..333256c8f53 100644 --- a/system_test/migration_tool_testsuite/testcase_9003/testcase_9003_properties.json +++ b/system_test/migration_tool_testsuite/testcase_9003/testcase_9003_properties.json @@ -101,7 +101,6 @@ "group.id": "mytestgroup", "consumer-timeout-ms": "10000", "log_filename": "console_consumer_8.log", - "formatter": "kafka.consumer.ChecksumMessageFormatter", "config_filename": "console_consumer_8.properties" }, { diff --git a/system_test/migration_tool_testsuite/testcase_9004/testcase_9004_properties.json b/system_test/migration_tool_testsuite/testcase_9004/testcase_9004_properties.json index 4dbd80b5c82..b2a6e85e575 100644 --- a/system_test/migration_tool_testsuite/testcase_9004/testcase_9004_properties.json +++ b/system_test/migration_tool_testsuite/testcase_9004/testcase_9004_properties.json @@ -101,7 +101,6 @@ "group.id": "mytestgroup", "consumer-timeout-ms": "10000", "log_filename": "console_consumer_8.log", - "formatter": "kafka.consumer.ChecksumMessageFormatter", "config_filename": "console_consumer_8.properties" }, { diff --git a/system_test/migration_tool_testsuite/testcase_9005/testcase_9005_properties.json b/system_test/migration_tool_testsuite/testcase_9005/testcase_9005_properties.json index e46b4538c95..ddbc9050690 100644 --- a/system_test/migration_tool_testsuite/testcase_9005/testcase_9005_properties.json +++ b/system_test/migration_tool_testsuite/testcase_9005/testcase_9005_properties.json @@ -128,7 +128,6 @@ "group.id": "mytestgroup", "consumer-timeout-ms": "10000", "log_filename": "console_consumer_10.log", - "formatter": "kafka.consumer.ChecksumMessageFormatter", "config_filename": "console_consumer_10.properties" }, { @@ -137,7 +136,6 @@ "group.id": "mytestgroup", "consumer-timeout-ms": "10000", "log_filename": "console_consumer_11.log", - "formatter": "kafka.consumer.ChecksumMessageFormatter", "config_filename": "console_consumer_11.properties" }, diff --git a/system_test/migration_tool_testsuite/testcase_9006/testcase_9006_properties.json b/system_test/migration_tool_testsuite/testcase_9006/testcase_9006_properties.json index 10f5955cd83..21b4c40e207 100644 --- a/system_test/migration_tool_testsuite/testcase_9006/testcase_9006_properties.json +++ b/system_test/migration_tool_testsuite/testcase_9006/testcase_9006_properties.json @@ -128,7 +128,6 @@ "group.id": "mytestgroup", "consumer-timeout-ms": "10000", "log_filename": "console_consumer_10.log", - "formatter": "kafka.consumer.ChecksumMessageFormatter", "config_filename": "console_consumer_10.properties" }, { @@ -137,7 +136,6 @@ "group.id": "mytestgroup", "consumer-timeout-ms": "10000", "log_filename": "console_consumer_11.log", - "formatter": "kafka.consumer.ChecksumMessageFormatter", "config_filename": "console_consumer_11.properties" }, diff --git a/system_test/utils/kafka_system_test_utils.py b/system_test/utils/kafka_system_test_utils.py index de16a341156..35fc383933d 100644 --- a/system_test/utils/kafka_system_test_utils.py +++ b/system_test/utils/kafka_system_test_utils.py @@ -1047,6 +1047,7 @@ def start_producer_in_thread(testcaseEnv, entityConfigList, producerConfig, kafk "JMX_PORT=" + jmxPort, kafkaRunClassBin + " kafka.perf.ProducerPerformance", "--brokerinfo " + brokerInfoStr, + "--initial-message-id " + str(initMsgId), "--messages " + noMsgPerBatch, "--topic " + topic, "--threads " + threads,