use of org.apache.kafka.common.requests.ElectLeadersResponse in project kafka by apache.
the class KafkaAdminClientTest method testElectLeaders.
@Test
public void testElectLeaders() throws Exception {
TopicPartition topic1 = new TopicPartition("topic", 0);
TopicPartition topic2 = new TopicPartition("topic", 2);
try (AdminClientUnitTestEnv env = mockClientEnv()) {
for (ElectionType electionType : ElectionType.values()) {
env.kafkaClient().setNodeApiVersions(NodeApiVersions.create());
// Test a call where one partition has an error.
ApiError value = ApiError.fromThrowable(new ClusterAuthorizationException(null));
List<ReplicaElectionResult> electionResults = new ArrayList<>();
ReplicaElectionResult electionResult = new ReplicaElectionResult();
electionResult.setTopic(topic1.topic());
// Add partition 1 result
PartitionResult partition1Result = new PartitionResult();
partition1Result.setPartitionId(topic1.partition());
partition1Result.setErrorCode(value.error().code());
partition1Result.setErrorMessage(value.message());
electionResult.partitionResult().add(partition1Result);
// Add partition 2 result
PartitionResult partition2Result = new PartitionResult();
partition2Result.setPartitionId(topic2.partition());
partition2Result.setErrorCode(value.error().code());
partition2Result.setErrorMessage(value.message());
electionResult.partitionResult().add(partition2Result);
electionResults.add(electionResult);
env.kafkaClient().prepareResponse(new ElectLeadersResponse(0, Errors.NONE.code(), electionResults, ApiKeys.ELECT_LEADERS.latestVersion()));
ElectLeadersResult results = env.adminClient().electLeaders(electionType, new HashSet<>(asList(topic1, topic2)));
assertEquals(results.partitions().get().get(topic2).get().getClass(), ClusterAuthorizationException.class);
// Test a call where there are no errors. By mutating the internal of election results
partition1Result.setErrorCode(ApiError.NONE.error().code());
partition1Result.setErrorMessage(ApiError.NONE.message());
partition2Result.setErrorCode(ApiError.NONE.error().code());
partition2Result.setErrorMessage(ApiError.NONE.message());
env.kafkaClient().prepareResponse(new ElectLeadersResponse(0, Errors.NONE.code(), electionResults, ApiKeys.ELECT_LEADERS.latestVersion()));
results = env.adminClient().electLeaders(electionType, new HashSet<>(asList(topic1, topic2)));
assertFalse(results.partitions().get().get(topic1).isPresent());
assertFalse(results.partitions().get().get(topic2).isPresent());
// Now try a timeout
results = env.adminClient().electLeaders(electionType, new HashSet<>(asList(topic1, topic2)), new ElectLeadersOptions().timeoutMs(100));
TestUtils.assertFutureError(results.partitions(), TimeoutException.class);
}
}
}
Aggregations