Search in sources :

Example 1 with AdminClientUnitTestEnv

use of org.apache.kafka.clients.admin.AdminClientUnitTestEnv in project apache-kafka-on-k8s by banzaicloud.

the class TopicAdminTest method returnNullWithApiVersionMismatch.

/**
 * 0.11.0.0 clients can talk with older brokers, but the CREATE_TOPIC API was added in 0.10.1.0. That means,
 * if our TopicAdmin talks to a pre 0.10.1 broker, it should receive an UnsupportedVersionException, should
 * create no topics, and return false.
 */
@Test
public void returnNullWithApiVersionMismatch() {
    final NewTopic newTopic = TopicAdmin.defineTopic("myTopic").partitions(1).compacted().build();
    Cluster cluster = createCluster(1);
    try (AdminClientUnitTestEnv env = new AdminClientUnitTestEnv(cluster)) {
        env.kafkaClient().setNode(cluster.controller());
        env.kafkaClient().setNodeApiVersions(NodeApiVersions.create());
        env.kafkaClient().prepareMetadataUpdate(env.cluster(), Collections.<String>emptySet());
        env.kafkaClient().prepareResponse(createTopicResponseWithUnsupportedVersion(newTopic));
        TopicAdmin admin = new TopicAdmin(null, env.adminClient());
        boolean created = admin.createTopic(newTopic);
        assertFalse(created);
    }
}
Also used : AdminClientUnitTestEnv(org.apache.kafka.clients.admin.AdminClientUnitTestEnv) Cluster(org.apache.kafka.common.Cluster) NewTopic(org.apache.kafka.clients.admin.NewTopic) Test(org.junit.Test)

Example 2 with AdminClientUnitTestEnv

use of org.apache.kafka.clients.admin.AdminClientUnitTestEnv in project kafka by apache.

the class TopicAdminTest method endOffsetsShouldFailWithTimeoutExceptionWhenTimeoutErrorOccurs.

@Test
public void endOffsetsShouldFailWithTimeoutExceptionWhenTimeoutErrorOccurs() {
    String topicName = "myTopic";
    TopicPartition tp1 = new TopicPartition(topicName, 0);
    Set<TopicPartition> tps = Collections.singleton(tp1);
    // response should use error
    Long offset = null;
    Cluster cluster = createCluster(1, topicName, 1);
    try (AdminClientUnitTestEnv env = new AdminClientUnitTestEnv(new MockTime(), cluster)) {
        env.kafkaClient().setNodeApiVersions(NodeApiVersions.create());
        env.kafkaClient().prepareResponse(prepareMetadataResponse(cluster, Errors.NONE));
        env.kafkaClient().prepareResponse(listOffsetsResultWithTimeout(tp1, offset));
        TopicAdmin admin = new TopicAdmin(null, env.adminClient());
        TimeoutException e = assertThrows(TimeoutException.class, () -> admin.endOffsets(tps));
    }
}
Also used : AdminClientUnitTestEnv(org.apache.kafka.clients.admin.AdminClientUnitTestEnv) TopicPartition(org.apache.kafka.common.TopicPartition) Cluster(org.apache.kafka.common.Cluster) MockTime(org.apache.kafka.common.utils.MockTime) TimeoutException(org.apache.kafka.common.errors.TimeoutException) Test(org.junit.Test)

Example 3 with AdminClientUnitTestEnv

use of org.apache.kafka.clients.admin.AdminClientUnitTestEnv in project kafka by apache.

the class TopicAdminTest method endOffsetsShouldFailWithNonRetriableWhenUnknownErrorOccurs.

@Test
public void endOffsetsShouldFailWithNonRetriableWhenUnknownErrorOccurs() {
    String topicName = "myTopic";
    TopicPartition tp1 = new TopicPartition(topicName, 0);
    Set<TopicPartition> tps = Collections.singleton(tp1);
    // response should use error
    Long offset = null;
    Cluster cluster = createCluster(1, topicName, 1);
    try (AdminClientUnitTestEnv env = new AdminClientUnitTestEnv(new MockTime(), cluster)) {
        env.kafkaClient().setNodeApiVersions(NodeApiVersions.create());
        env.kafkaClient().prepareResponse(prepareMetadataResponse(cluster, Errors.NONE));
        env.kafkaClient().prepareResponse(listOffsetsResultWithUnknownError(tp1, offset));
        TopicAdmin admin = new TopicAdmin(null, env.adminClient());
        ConnectException e = assertThrows(ConnectException.class, () -> admin.endOffsets(tps));
        assertTrue(e.getMessage().contains("Error while getting end offsets for topic"));
    }
}
Also used : AdminClientUnitTestEnv(org.apache.kafka.clients.admin.AdminClientUnitTestEnv) TopicPartition(org.apache.kafka.common.TopicPartition) Cluster(org.apache.kafka.common.Cluster) MockTime(org.apache.kafka.common.utils.MockTime) ConnectException(org.apache.kafka.connect.errors.ConnectException) Test(org.junit.Test)

Example 4 with AdminClientUnitTestEnv

use of org.apache.kafka.clients.admin.AdminClientUnitTestEnv in project kafka by apache.

the class TopicAdminTest method throwsWithClusterAuthorizationFailureOnDescribe.

@Test
public void throwsWithClusterAuthorizationFailureOnDescribe() {
    final NewTopic newTopic = TopicAdmin.defineTopic("myTopic").partitions(1).compacted().build();
    Cluster cluster = createCluster(1);
    try (AdminClientUnitTestEnv env = new AdminClientUnitTestEnv(new MockTime(), cluster)) {
        env.kafkaClient().prepareResponse(describeTopicResponseWithClusterAuthorizationException(newTopic));
        TopicAdmin admin = new TopicAdmin(null, env.adminClient());
        Exception e = assertThrows(ConnectException.class, () -> admin.describeTopics(newTopic.name()));
        assertTrue(e.getCause() instanceof ClusterAuthorizationException);
    }
}
Also used : AdminClientUnitTestEnv(org.apache.kafka.clients.admin.AdminClientUnitTestEnv) Cluster(org.apache.kafka.common.Cluster) NewTopic(org.apache.kafka.clients.admin.NewTopic) MockTime(org.apache.kafka.common.utils.MockTime) ClusterAuthorizationException(org.apache.kafka.common.errors.ClusterAuthorizationException) TimeoutException(org.apache.kafka.common.errors.TimeoutException) ConfigException(org.apache.kafka.common.config.ConfigException) ExecutionException(java.util.concurrent.ExecutionException) ConnectException(org.apache.kafka.connect.errors.ConnectException) TopicAuthorizationException(org.apache.kafka.common.errors.TopicAuthorizationException) UnsupportedVersionException(org.apache.kafka.common.errors.UnsupportedVersionException) ClusterAuthorizationException(org.apache.kafka.common.errors.ClusterAuthorizationException) Test(org.junit.Test)

Example 5 with AdminClientUnitTestEnv

use of org.apache.kafka.clients.admin.AdminClientUnitTestEnv in project kafka by apache.

the class TopicAdminTest method throwsWithApiVersionMismatchOnDescribe.

/**
 * 0.11.0.0 clients can talk with older brokers, but the DESCRIBE_TOPIC API was added in 0.10.0.0. That means,
 * if our TopicAdmin talks to a pre 0.10.0 broker, it should receive an UnsupportedVersionException, should
 * create no topics, and return false.
 */
@Test
public void throwsWithApiVersionMismatchOnDescribe() {
    final NewTopic newTopic = TopicAdmin.defineTopic("myTopic").partitions(1).compacted().build();
    Cluster cluster = createCluster(1);
    try (AdminClientUnitTestEnv env = new AdminClientUnitTestEnv(new MockTime(), cluster)) {
        env.kafkaClient().setNodeApiVersions(NodeApiVersions.create());
        env.kafkaClient().prepareResponse(describeTopicResponseWithUnsupportedVersion(newTopic));
        TopicAdmin admin = new TopicAdmin(null, env.adminClient());
        Exception e = assertThrows(ConnectException.class, () -> admin.describeTopics(newTopic.name()));
        assertTrue(e.getCause() instanceof UnsupportedVersionException);
    }
}
Also used : AdminClientUnitTestEnv(org.apache.kafka.clients.admin.AdminClientUnitTestEnv) Cluster(org.apache.kafka.common.Cluster) NewTopic(org.apache.kafka.clients.admin.NewTopic) MockTime(org.apache.kafka.common.utils.MockTime) ClusterAuthorizationException(org.apache.kafka.common.errors.ClusterAuthorizationException) TimeoutException(org.apache.kafka.common.errors.TimeoutException) ConfigException(org.apache.kafka.common.config.ConfigException) ExecutionException(java.util.concurrent.ExecutionException) ConnectException(org.apache.kafka.connect.errors.ConnectException) TopicAuthorizationException(org.apache.kafka.common.errors.TopicAuthorizationException) UnsupportedVersionException(org.apache.kafka.common.errors.UnsupportedVersionException) UnsupportedVersionException(org.apache.kafka.common.errors.UnsupportedVersionException) Test(org.junit.Test)

Aggregations

AdminClientUnitTestEnv (org.apache.kafka.clients.admin.AdminClientUnitTestEnv)24 Cluster (org.apache.kafka.common.Cluster)23 Test (org.junit.Test)23 MockTime (org.apache.kafka.common.utils.MockTime)21 NewTopic (org.apache.kafka.clients.admin.NewTopic)15 TopicPartition (org.apache.kafka.common.TopicPartition)9 ConnectException (org.apache.kafka.connect.errors.ConnectException)6 Config (org.apache.kafka.clients.admin.Config)4 TopicConfig (org.apache.kafka.common.config.TopicConfig)4 TimeoutException (org.apache.kafka.common.errors.TimeoutException)4 UnsupportedVersionException (org.apache.kafka.common.errors.UnsupportedVersionException)4 ExecutionException (java.util.concurrent.ExecutionException)3 ConfigException (org.apache.kafka.common.config.ConfigException)3 ClusterAuthorizationException (org.apache.kafka.common.errors.ClusterAuthorizationException)3 TopicAuthorizationException (org.apache.kafka.common.errors.TopicAuthorizationException)3 HashSet (java.util.HashSet)2 ArrayList (java.util.ArrayList)1 ListOffsetsOptions (org.apache.kafka.clients.admin.ListOffsetsOptions)1 Uuid (org.apache.kafka.common.Uuid)1 MetadataResponseData (org.apache.kafka.common.message.MetadataResponseData)1