def __init__(self, test_context):
     """:type test_context: ducktape.tests.test.TestContext"""
     super(ConsumeBenchTest, self).__init__(test_context)
     self.zk = ZookeeperService(test_context,
                                num_nodes=3) if quorum.for_test(
                                    test_context) == quorum.zk else None
     self.kafka = KafkaService(test_context, num_nodes=3, zk=self.zk)
     self.producer_workload_service = ProduceBenchWorkloadService(
         test_context, self.kafka)
     self.consumer_workload_service = ConsumeBenchWorkloadService(
         test_context, self.kafka)
     self.consumer_workload_service_2 = ConsumeBenchWorkloadService(
         test_context, self.kafka)
     self.active_topics = {
         "consume_bench_topic[0-5]": {
             "numPartitions": 5,
             "replicationFactor": 3
         }
     }
     self.trogdor = TrogdorService(context=self.test_context,
                                   client_services=[
                                       self.kafka,
                                       self.producer_workload_service,
                                       self.consumer_workload_service,
                                       self.consumer_workload_service_2
                                   ])
Example #2
0
 def __init__(self, test_context):
     """:type test_context: ducktape.tests.test.TestContext"""
     super(ProduceBenchTest, self).__init__(test_context)
     self.zk = ZookeeperService(test_context, num_nodes=3)
     self.kafka = KafkaService(test_context, num_nodes=3, zk=self.zk)
     self.workload_service = ProduceBenchWorkloadService(
         test_context, self.kafka)
     self.trogdor = TrogdorService(
         context=self.test_context,
         client_services=[self.kafka, self.workload_service])
Example #3
0
    def test_produce_consume(self, topic_count, partition_count, replication_factor):
        topics_create_start_time = time.time()
        for i in range(topic_count):
            topic = "replicas_produce_consume_%d" % i
            print("Creating topic %s" % topic)  # Force some stdout for Jenkins
            topic_cfg = {
                "topic": topic,
                "partitions": partition_count,
                "replication-factor": replication_factor,
                "configs": {"min.insync.replicas": 2}
            }
            self.kafka.create_topic(topic_cfg)

        topics_create_end_time = time.time()
        self.logger.info("Time to create topics: %d" % (topics_create_end_time - topics_create_start_time))

        producer_workload_service = ProduceBenchWorkloadService(self.test_context, self.kafka)
        consumer_workload_service = ConsumeBenchWorkloadService(self.test_context, self.kafka)
        trogdor = TrogdorService(context=self.test_context,
                                 client_services=[self.kafka, producer_workload_service, consumer_workload_service])
        trogdor.start()

        produce_spec = ProduceBenchWorkloadSpec(0, TaskSpec.MAX_DURATION_MS,
                                                producer_workload_service.producer_node,
                                                producer_workload_service.bootstrap_servers,
                                                target_messages_per_sec=10000,
                                                max_messages=3400000,
                                                producer_conf={},
                                                admin_client_conf={},
                                                common_client_conf={},
                                                inactive_topics={},
                                                active_topics={"replicas_produce_consume_[0-2]": {
                                                    "numPartitions": partition_count, "replicationFactor": replication_factor
                                                }})
        produce_workload = trogdor.create_task("replicas-produce-workload", produce_spec)
        produce_workload.wait_for_done(timeout_sec=600)
        self.logger.info("Completed produce bench")

        consume_spec = ConsumeBenchWorkloadSpec(0, TaskSpec.MAX_DURATION_MS,
                                                consumer_workload_service.consumer_node,
                                                consumer_workload_service.bootstrap_servers,
                                                target_messages_per_sec=10000,
                                                max_messages=3400000,
                                                consumer_conf={},
                                                admin_client_conf={},
                                                common_client_conf={},
                                                active_topics=["replicas_produce_consume_[0-2]"])
        consume_workload = trogdor.create_task("replicas-consume-workload", consume_spec)
        consume_workload.wait_for_done(timeout_sec=600)
        self.logger.info("Completed consume bench")

        trogdor.stop()
 def __init__(self, test_context):
     """:type test_context: ducktape.tests.test.TestContext"""
     super(ProduceBenchTest, self).__init__(test_context)
     self.redpanda = RedpandaService(test_context, num_nodes=3)
     self.workload_service = ProduceBenchWorkloadService(
         test_context, self.redpanda)
     self.trogdor = TrogdorService(
         context=self.test_context,
         client_services=[self.redpanda, self.workload_service])
     self.active_topics = {
         "produce_bench_topic[0-1]": {
             "numPartitions": 1,
             "replicationFactor": 3
         }
     }
     self.inactive_topics = {
         "produce_bench_topic[2-9]": {
             "numPartitions": 1,
             "replicationFactor": 3
         }
     }