예제 #1
0
def test_configured_topic(host):
    """
    Test if topic configuration is what was defined
    """
    ansible_vars = host.ansible.get_variables()
    topic_configuration = localhost_vars['topic_defaut_configuration']
    topic_name = localhost_vars['topic_name']
    kafka_servers = ansible_vars['ansible_eth0']['ipv4']['address'] + ':9092'

    # Forcing api_version to 0.11.0 in order to be sure that a
    # Metadata_v1 is sent (so that we get the controller info)
    kafka_client = KafkaManager(bootstrap_servers=kafka_servers,
                                api_version=(0, 11, 0))

    if topic_configuration['state'] == 'present':
        assert topic_name in kafka_client.get_topics()

        partitions = kafka_client.get_total_partitions_for_topic(topic_name)
        assert partitions == topic_configuration['partitions']

        ite = kafka_client.get_partitions_metadata_for_topic(topic_name)
        for _, metadata in six.iteritems(ite):
            tot_replica = len(metadata.replicas)
            assert tot_replica == topic_configuration['replica_factor']

        for key, value in six.iteritems(topic_configuration['options']):
            config = kafka_client.get_config_for_topic(topic_name, key)
            assert str(config) == str(value)
    else:
        assert topic_name not in kafka_client.get_topics()

    kafka_client.close()
예제 #2
0
def check_configured_topic(host,
                           topic_configuration,
                           topic_name,
                           kafka_servers,
                           deleted_options=None):
    """
    Test if topic configuration is what was defined
    """
    # Forcing api_version to 0.11.0 in order to be sure that a
    # Metadata_v1 is sent (so that we get the controller info)
    kafka_client = KafkaManager(bootstrap_servers=kafka_servers,
                                api_version=(0, 11, 0))

    if deleted_options is None:
        deleted_options = {}

    try:
        if topic_configuration['state'] == 'present':
            assert topic_name in kafka_client.get_topics()

            partitions = \
                kafka_client.get_total_partitions_for_topic(topic_name)
            assert partitions == topic_configuration['partitions']

            ite = kafka_client.get_partitions_metadata_for_topic(topic_name)
            for _, metadata in six.iteritems(ite):
                tot_replica = len(metadata.replicas)
                assert tot_replica == topic_configuration['replica_factor']

            for key, value in six.iteritems(topic_configuration['options']):
                config = kafka_client.get_config_for_topic(topic_name, [key])
                assert str(config) == str(value)

            for key, value in six.iteritems(deleted_options):
                config = kafka_client.get_config_for_topic(topic_name, key)
                assert str(config) != str(value)

        else:
            assert topic_name not in kafka_client.get_topics()
    finally:
        kafka_client.close()