Ejemplo n.º 1
0
class TopicAutocreateTest(RedpandaTest):
    """
    Verify that autocreation works, and that the settings of an autocreated
    topic match those for a topic created by hand with rpk.
    """
    def __init__(self, test_context):
        super(TopicAutocreateTest, self).__init__(
            test_context=test_context,
            num_brokers=1,
            extra_rp_conf={'auto_create_topics_enabled': False})

        self.kafka_tools = KafkaCliTools(self.redpanda)
        self.rpk = RpkTool(self.redpanda)

    @cluster(num_nodes=1)
    def topic_autocreate_test(self):
        auto_topic = 'autocreated'
        manual_topic = "manuallycreated"

        # With autocreation disabled, producing to a nonexistent topic should not work.
        try:
            # Use rpk rather than kafka CLI because rpk errors out promptly
            self.rpk.produce(auto_topic, "foo", "bar")
        except Exception:
            # The write failed, and shouldn't have created a topic
            assert auto_topic not in self.kafka_tools.list_topics()
        else:
            assert False, "Producing to a nonexistent topic should fail"

        # Enable autocreation
        self.redpanda.restart_nodes(self.redpanda.nodes,
                                    {'auto_create_topics_enabled': True})

        # Auto create topic
        assert auto_topic not in self.kafka_tools.list_topics()
        self.kafka_tools.produce(auto_topic, 1, 4096)
        assert auto_topic in self.kafka_tools.list_topics()
        auto_topic_spec = self.kafka_tools.describe_topic(auto_topic)
        assert auto_topic_spec.retention_ms is None
        assert auto_topic_spec.retention_bytes is None

        # Create topic by hand, compare its properties to the autocreated one
        self.rpk.create_topic(manual_topic)
        manual_topic_spec = self.kafka_tools.describe_topic(auto_topic)
        assert manual_topic_spec.retention_ms == auto_topic_spec.retention_ms
        assert manual_topic_spec.retention_bytes == auto_topic_spec.retention_bytes

        # Clear name and compare the rest of the attributes
        manual_topic_spec.name = auto_topic_spec.name = None
        assert manual_topic_spec == auto_topic_spec
Ejemplo n.º 2
0
    def test_scram(self):
        topic = TopicSpec()
        client = KafkaCliTools(self.redpanda,
                               user="******",
                               passwd="redpanda_pass")
        client.create_topic(topic)

        client = KafkaCliTools(self.redpanda,
                               user="******",
                               passwd="bad_password")
        try:
            client.list_topics()
            assert False, "Listing topics should fail"
        except Exception:
            pass

        client = KafkaCliTools(self.redpanda,
                               user="******",
                               passwd="redpanda_pass")
        topics = client.list_topics()
        print(topics)
        assert topic.name in topics
Ejemplo n.º 3
0
 def test_create_topic(self, version):
     tools = KafkaCliTools(self.redpanda, version)
     topics = ["v{}.{}".format(version, i) for i in range(3)]
     for topic in topics:
         tools.create_topic(topic)
     assert set(topics) <= set(tools.list_topics())