Search in sources :

Example 1 with ListGroupsResponseData

use of org.apache.kafka.common.message.ListGroupsResponseData in project kafka by apache.

the class RequestResponseTest method createListGroupsResponse.

private ListGroupsResponse createListGroupsResponse(short version) {
    ListGroupsResponseData.ListedGroup group = new ListGroupsResponseData.ListedGroup().setGroupId("test-group").setProtocolType("consumer");
    if (version >= 4)
        group.setGroupState("Stable");
    ListGroupsResponseData data = new ListGroupsResponseData().setErrorCode(Errors.NONE.code()).setGroups(singletonList(group));
    return new ListGroupsResponse(data);
}
Also used : ListGroupsResponseData(org.apache.kafka.common.message.ListGroupsResponseData)

Example 2 with ListGroupsResponseData

use of org.apache.kafka.common.message.ListGroupsResponseData in project kafka by apache.

the class KafkaAdminClientTest method testListConsumerGroupsWithStates.

@Test
public void testListConsumerGroupsWithStates() throws Exception {
    try (AdminClientUnitTestEnv env = new AdminClientUnitTestEnv(mockCluster(1, 0))) {
        env.kafkaClient().setNodeApiVersions(NodeApiVersions.create());
        env.kafkaClient().prepareResponse(prepareMetadataResponse(env.cluster(), Errors.NONE));
        env.kafkaClient().prepareResponseFrom(new ListGroupsResponse(new ListGroupsResponseData().setErrorCode(Errors.NONE.code()).setGroups(Arrays.asList(new ListGroupsResponseData.ListedGroup().setGroupId("group-1").setProtocolType(ConsumerProtocol.PROTOCOL_TYPE).setGroupState("Stable"), new ListGroupsResponseData.ListedGroup().setGroupId("group-2").setGroupState("Empty")))), env.cluster().nodeById(0));
        final ListConsumerGroupsOptions options = new ListConsumerGroupsOptions();
        final ListConsumerGroupsResult result = env.adminClient().listConsumerGroups(options);
        Collection<ConsumerGroupListing> listings = result.valid().get();
        assertEquals(2, listings.size());
        List<ConsumerGroupListing> expected = new ArrayList<>();
        expected.add(new ConsumerGroupListing("group-2", true, Optional.of(ConsumerGroupState.EMPTY)));
        expected.add(new ConsumerGroupListing("group-1", false, Optional.of(ConsumerGroupState.STABLE)));
        assertEquals(expected, listings);
        assertEquals(0, result.errors().get().size());
    }
}
Also used : ListGroupsResponse(org.apache.kafka.common.requests.ListGroupsResponse) ListGroupsResponseData(org.apache.kafka.common.message.ListGroupsResponseData) ArrayList(java.util.ArrayList) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) Test(org.junit.jupiter.api.Test)

Example 3 with ListGroupsResponseData

use of org.apache.kafka.common.message.ListGroupsResponseData in project kafka by apache.

the class KafkaAdminClientTest method testListConsumerGroups.

@Test
public void testListConsumerGroups() throws Exception {
    try (AdminClientUnitTestEnv env = new AdminClientUnitTestEnv(mockCluster(4, 0), AdminClientConfig.RETRIES_CONFIG, "2")) {
        env.kafkaClient().setNodeApiVersions(NodeApiVersions.create());
        // Empty metadata response should be retried
        env.kafkaClient().prepareResponse(RequestTestUtils.metadataResponse(Collections.emptyList(), env.cluster().clusterResource().clusterId(), -1, Collections.emptyList()));
        env.kafkaClient().prepareResponse(RequestTestUtils.metadataResponse(env.cluster().nodes(), env.cluster().clusterResource().clusterId(), env.cluster().controller().id(), Collections.emptyList()));
        env.kafkaClient().prepareResponseFrom(new ListGroupsResponse(new ListGroupsResponseData().setErrorCode(Errors.NONE.code()).setGroups(Arrays.asList(new ListGroupsResponseData.ListedGroup().setGroupId("group-1").setProtocolType(ConsumerProtocol.PROTOCOL_TYPE).setGroupState("Stable"), new ListGroupsResponseData.ListedGroup().setGroupId("group-connect-1").setProtocolType("connector").setGroupState("Stable")))), env.cluster().nodeById(0));
        // handle retriable errors
        env.kafkaClient().prepareResponseFrom(new ListGroupsResponse(new ListGroupsResponseData().setErrorCode(Errors.COORDINATOR_NOT_AVAILABLE.code()).setGroups(Collections.emptyList())), env.cluster().nodeById(1));
        env.kafkaClient().prepareResponseFrom(new ListGroupsResponse(new ListGroupsResponseData().setErrorCode(Errors.COORDINATOR_LOAD_IN_PROGRESS.code()).setGroups(Collections.emptyList())), env.cluster().nodeById(1));
        env.kafkaClient().prepareResponseFrom(new ListGroupsResponse(new ListGroupsResponseData().setErrorCode(Errors.NONE.code()).setGroups(Arrays.asList(new ListGroupsResponseData.ListedGroup().setGroupId("group-2").setProtocolType(ConsumerProtocol.PROTOCOL_TYPE).setGroupState("Stable"), new ListGroupsResponseData.ListedGroup().setGroupId("group-connect-2").setProtocolType("connector").setGroupState("Stable")))), env.cluster().nodeById(1));
        env.kafkaClient().prepareResponseFrom(new ListGroupsResponse(new ListGroupsResponseData().setErrorCode(Errors.NONE.code()).setGroups(Arrays.asList(new ListGroupsResponseData.ListedGroup().setGroupId("group-3").setProtocolType(ConsumerProtocol.PROTOCOL_TYPE).setGroupState("Stable"), new ListGroupsResponseData.ListedGroup().setGroupId("group-connect-3").setProtocolType("connector").setGroupState("Stable")))), env.cluster().nodeById(2));
        // fatal error
        env.kafkaClient().prepareResponseFrom(new ListGroupsResponse(new ListGroupsResponseData().setErrorCode(Errors.UNKNOWN_SERVER_ERROR.code()).setGroups(Collections.emptyList())), env.cluster().nodeById(3));
        final ListConsumerGroupsResult result = env.adminClient().listConsumerGroups();
        TestUtils.assertFutureError(result.all(), UnknownServerException.class);
        Collection<ConsumerGroupListing> listings = result.valid().get();
        assertEquals(3, listings.size());
        Set<String> groupIds = new HashSet<>();
        for (ConsumerGroupListing listing : listings) {
            groupIds.add(listing.groupId());
            assertTrue(listing.state().isPresent());
        }
        assertEquals(Utils.mkSet("group-1", "group-2", "group-3"), groupIds);
        assertEquals(1, result.errors().get().size());
    }
}
Also used : ListGroupsResponse(org.apache.kafka.common.requests.ListGroupsResponse) ListGroupsResponseData(org.apache.kafka.common.message.ListGroupsResponseData) HashSet(java.util.HashSet) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) Test(org.junit.jupiter.api.Test)

Example 4 with ListGroupsResponseData

use of org.apache.kafka.common.message.ListGroupsResponseData in project kafka by apache.

the class KafkaAdminClientTest method testListConsumerGroupsWithStatesOlderBrokerVersion.

@Test
public void testListConsumerGroupsWithStatesOlderBrokerVersion() throws Exception {
    ApiVersion listGroupV3 = new ApiVersion().setApiKey(ApiKeys.LIST_GROUPS.id).setMinVersion((short) 0).setMaxVersion((short) 3);
    try (AdminClientUnitTestEnv env = new AdminClientUnitTestEnv(mockCluster(1, 0))) {
        env.kafkaClient().setNodeApiVersions(NodeApiVersions.create(Collections.singletonList(listGroupV3)));
        env.kafkaClient().prepareResponse(prepareMetadataResponse(env.cluster(), Errors.NONE));
        // Check we can list groups with older broker if we don't specify states
        env.kafkaClient().prepareResponseFrom(new ListGroupsResponse(new ListGroupsResponseData().setErrorCode(Errors.NONE.code()).setGroups(Collections.singletonList(new ListGroupsResponseData.ListedGroup().setGroupId("group-1").setProtocolType(ConsumerProtocol.PROTOCOL_TYPE)))), env.cluster().nodeById(0));
        ListConsumerGroupsOptions options = new ListConsumerGroupsOptions();
        ListConsumerGroupsResult result = env.adminClient().listConsumerGroups(options);
        Collection<ConsumerGroupListing> listing = result.all().get();
        assertEquals(1, listing.size());
        List<ConsumerGroupListing> expected = Collections.singletonList(new ConsumerGroupListing("group-1", false, Optional.empty()));
        assertEquals(expected, listing);
        // But we cannot set a state filter with older broker
        env.kafkaClient().prepareResponse(prepareMetadataResponse(env.cluster(), Errors.NONE));
        env.kafkaClient().prepareUnsupportedVersionResponse(body -> body instanceof ListGroupsRequest);
        options = new ListConsumerGroupsOptions().inStates(singleton(ConsumerGroupState.STABLE));
        result = env.adminClient().listConsumerGroups(options);
        TestUtils.assertFutureThrows(result.all(), UnsupportedVersionException.class);
    }
}
Also used : ListGroupsRequest(org.apache.kafka.common.requests.ListGroupsRequest) ApiVersion(org.apache.kafka.common.message.ApiVersionsResponseData.ApiVersion) ListGroupsResponse(org.apache.kafka.common.requests.ListGroupsResponse) ListGroupsResponseData(org.apache.kafka.common.message.ListGroupsResponseData) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) Test(org.junit.jupiter.api.Test)

Aggregations

ListGroupsResponseData (org.apache.kafka.common.message.ListGroupsResponseData)4 ListGroupsResponse (org.apache.kafka.common.requests.ListGroupsResponse)3 Test (org.junit.jupiter.api.Test)3 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)3 ArrayList (java.util.ArrayList)1 HashSet (java.util.HashSet)1 ApiVersion (org.apache.kafka.common.message.ApiVersionsResponseData.ApiVersion)1 ListGroupsRequest (org.apache.kafka.common.requests.ListGroupsRequest)1