Search in sources :

Example 1 with DescribeProducersRequest

use of org.apache.kafka.common.requests.DescribeProducersRequest in project kafka by apache.

the class KafkaAdminClientTest method testDescribeProducersRetryAfterDisconnect.

@Test
public void testDescribeProducersRetryAfterDisconnect() throws Exception {
    MockTime time = new MockTime();
    int retryBackoffMs = 100;
    Cluster cluster = mockCluster(3, 0);
    Map<String, Object> configOverride = newStrMap(AdminClientConfig.RETRY_BACKOFF_MS_CONFIG, "" + retryBackoffMs);
    try (AdminClientUnitTestEnv env = new AdminClientUnitTestEnv(time, cluster, configOverride)) {
        TopicPartition topicPartition = new TopicPartition("foo", 0);
        Iterator<Node> nodeIterator = env.cluster().nodes().iterator();
        Node initialLeader = nodeIterator.next();
        expectMetadataRequest(env, topicPartition, initialLeader);
        List<ProducerState> expected = Arrays.asList(new ProducerState(12345L, 15, 30, env.time().milliseconds(), OptionalInt.of(99), OptionalLong.empty()), new ProducerState(12345L, 15, 30, env.time().milliseconds(), OptionalInt.empty(), OptionalLong.of(23423L)));
        DescribeProducersResponse response = buildDescribeProducersResponse(topicPartition, expected);
        env.kafkaClient().prepareResponseFrom(request -> {
            // We need a sleep here because the client will attempt to
            // backoff after the disconnect
            env.time().sleep(retryBackoffMs);
            return request instanceof DescribeProducersRequest;
        }, response, initialLeader, true);
        Node retryLeader = nodeIterator.next();
        expectMetadataRequest(env, topicPartition, retryLeader);
        env.kafkaClient().prepareResponseFrom(request -> request instanceof DescribeProducersRequest, response, retryLeader);
        DescribeProducersResult result = env.adminClient().describeProducers(singleton(topicPartition));
        KafkaFuture<DescribeProducersResult.PartitionProducerState> partitionFuture = result.partitionResult(topicPartition);
        assertEquals(new HashSet<>(expected), new HashSet<>(partitionFuture.get().activeProducers()));
    }
}
Also used : Node(org.apache.kafka.common.Node) Cluster(org.apache.kafka.common.Cluster) DescribeProducersResponse(org.apache.kafka.common.requests.DescribeProducersResponse) DescribeProducersRequest(org.apache.kafka.common.requests.DescribeProducersRequest) TopicPartition(org.apache.kafka.common.TopicPartition) MockTime(org.apache.kafka.common.utils.MockTime) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) Test(org.junit.jupiter.api.Test)

Example 2 with DescribeProducersRequest

use of org.apache.kafka.common.requests.DescribeProducersRequest in project kafka by apache.

the class KafkaAdminClientTest method testDescribeProducers.

@Test
public void testDescribeProducers() throws Exception {
    try (AdminClientUnitTestEnv env = mockClientEnv()) {
        TopicPartition topicPartition = new TopicPartition("foo", 0);
        Node leader = env.cluster().nodes().iterator().next();
        expectMetadataRequest(env, topicPartition, leader);
        List<ProducerState> expected = Arrays.asList(new ProducerState(12345L, 15, 30, env.time().milliseconds(), OptionalInt.of(99), OptionalLong.empty()), new ProducerState(12345L, 15, 30, env.time().milliseconds(), OptionalInt.empty(), OptionalLong.of(23423L)));
        DescribeProducersResponse response = buildDescribeProducersResponse(topicPartition, expected);
        env.kafkaClient().prepareResponseFrom(request -> request instanceof DescribeProducersRequest, response, leader);
        DescribeProducersResult result = env.adminClient().describeProducers(singleton(topicPartition));
        KafkaFuture<DescribeProducersResult.PartitionProducerState> partitionFuture = result.partitionResult(topicPartition);
        assertEquals(new HashSet<>(expected), new HashSet<>(partitionFuture.get().activeProducers()));
    }
}
Also used : DescribeProducersRequest(org.apache.kafka.common.requests.DescribeProducersRequest) TopicPartition(org.apache.kafka.common.TopicPartition) Node(org.apache.kafka.common.Node) DescribeProducersResponse(org.apache.kafka.common.requests.DescribeProducersResponse) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) Test(org.junit.jupiter.api.Test)

Aggregations

Node (org.apache.kafka.common.Node)2 TopicPartition (org.apache.kafka.common.TopicPartition)2 DescribeProducersRequest (org.apache.kafka.common.requests.DescribeProducersRequest)2 DescribeProducersResponse (org.apache.kafka.common.requests.DescribeProducersResponse)2 Test (org.junit.jupiter.api.Test)2 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)2 Cluster (org.apache.kafka.common.Cluster)1 MockTime (org.apache.kafka.common.utils.MockTime)1