mimaison commented on a change in pull request #11393:
URL: https://github.com/apache/kafka/pull/11393#discussion_r765828093



##########
File path: 
clients/src/test/java/org/apache/kafka/common/requests/RequestResponseTest.java
##########
@@ -1269,24 +909,656 @@ public void 
testDeletableTopicResultErrorMessageIsNullByDefault() {
         assertNull(result.errorMessage());
     }
 
-    private ResponseHeader createResponseHeader(short headerVersion) {
-        return new ResponseHeader(10, headerVersion);
+    /**
+     * Check that all error codes in the response get included in {@link 
AbstractResponse#errorCounts()}.
+     */
+    @Test
+    public void testErrorCountsIncludesNone() {
+        assertEquals(1, 
createAddOffsetsToTxnResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createAddPartitionsToTxnResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createAlterClientQuotasResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createAlterConfigsResponse().errorCounts().get(Errors.NONE));
+        assertEquals(2, 
createAlterPartitionReassignmentsResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createAlterReplicaLogDirsResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createApiVersionResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createBrokerHeartbeatResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createBrokerRegistrationResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createControlledShutdownResponse().errorCounts().get(Errors.NONE));
+        assertEquals(2, 
createCreateAclsResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createCreatePartitionsResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createCreateTokenResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createCreateTopicResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createDeleteAclsResponse(DELETE_ACLS.latestVersion()).errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createDeleteGroupsResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createDeleteTopicsResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createDescribeAclsResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createDescribeClientQuotasResponse().errorCounts().get(Errors.NONE));
+        assertEquals(2, 
createDescribeConfigsResponse(DESCRIBE_CONFIGS.latestVersion()).errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createDescribeGroupResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createDescribeTokenResponse().errorCounts().get(Errors.NONE));
+        assertEquals(2, 
createElectLeadersResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, createEndTxnResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createExpireTokenResponse().errorCounts().get(Errors.NONE));
+        assertEquals(3, 
createFetchResponse(123).errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createFindCoordinatorResponse(FIND_COORDINATOR.oldestVersion()).errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createFindCoordinatorResponse(FIND_COORDINATOR.latestVersion()).errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createHeartBeatResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createIncrementalAlterConfigsResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createJoinGroupResponse(JOIN_GROUP.latestVersion()).errorCounts().get(Errors.NONE));
+        assertEquals(2, 
createLeaderAndIsrResponse(4).errorCounts().get(Errors.NONE));
+        assertEquals(2, 
createLeaderAndIsrResponse(5).errorCounts().get(Errors.NONE));
+        assertEquals(3, 
createLeaderEpochResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createLeaveGroupResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createListGroupsResponse(LIST_GROUPS.latestVersion()).errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createListOffsetResponse(LIST_OFFSETS.latestVersion()).errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createListPartitionReassignmentsResponse().errorCounts().get(Errors.NONE));
+        assertEquals(3, 
createMetadataResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createOffsetCommitResponse().errorCounts().get(Errors.NONE));
+        assertEquals(2, 
createOffsetDeleteResponse().errorCounts().get(Errors.NONE));
+        assertEquals(3, 
createOffsetFetchResponse(OFFSET_FETCH.latestVersion()).errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createProduceResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createRenewTokenResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createSaslAuthenticateResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createSaslHandshakeResponse().errorCounts().get(Errors.NONE));
+        assertEquals(2, 
createStopReplicaResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createSyncGroupResponse(SYNC_GROUP.latestVersion()).errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createTxnOffsetCommitResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createUpdateMetadataResponse().errorCounts().get(Errors.NONE));
+        assertEquals(1, 
createWriteTxnMarkersResponse().errorCounts().get(Errors.NONE));
+    }
+
+    private AbstractRequest getRequest(ApiKeys apikey, short version) {
+        switch (apikey) {
+            case PRODUCE: return createProduceRequest(version);
+            case FETCH: return createFetchRequest(version);
+            case LIST_OFFSETS: return createListOffsetRequest(version);
+            case METADATA: return createMetadataRequest(version, 
singletonList("topic1"));
+            case LEADER_AND_ISR: return createLeaderAndIsrRequest(version);
+            case STOP_REPLICA: return createStopReplicaRequest(version, true);
+            case UPDATE_METADATA: return createUpdateMetadataRequest(version, 
"rack1");
+            case CONTROLLED_SHUTDOWN: return 
createControlledShutdownRequest(version);
+            case OFFSET_COMMIT: return createOffsetCommitRequest(version);
+            case OFFSET_FETCH: return createOffsetFetchRequest(version, true);
+            case FIND_COORDINATOR: return 
createFindCoordinatorRequest(version);
+            case JOIN_GROUP: return createJoinGroupRequest(version);
+            case HEARTBEAT: return createHeartBeatRequest(version);
+            case LEAVE_GROUP: return createLeaveGroupRequest(version);
+            case SYNC_GROUP: return createSyncGroupRequest(version);
+            case DESCRIBE_GROUPS: return createDescribeGroupRequest(version);
+            case LIST_GROUPS: return createListGroupsRequest(version);
+            case SASL_HANDSHAKE: return createSaslHandshakeRequest(version);
+            case API_VERSIONS: return createApiVersionRequest(version);
+            case CREATE_TOPICS: return createCreateTopicRequest(version);
+            case DELETE_TOPICS: return createDeleteTopicsRequest(version);
+            case DELETE_RECORDS: return createDeleteRecordsRequest(version);
+            case INIT_PRODUCER_ID: return createInitPidRequest(version);
+            case OFFSET_FOR_LEADER_EPOCH: return 
createLeaderEpochRequestForReplica(version, 1);
+            case ADD_PARTITIONS_TO_TXN: return 
createAddPartitionsToTxnRequest(version);
+            case ADD_OFFSETS_TO_TXN: return 
createAddOffsetsToTxnRequest(version);
+            case END_TXN: return createEndTxnRequest(version);
+            case WRITE_TXN_MARKERS: return 
createWriteTxnMarkersRequest(version);
+            case TXN_OFFSET_COMMIT: return 
createTxnOffsetCommitRequest(version);
+            case DESCRIBE_ACLS: return createDescribeAclsRequest(version);
+            case CREATE_ACLS: return createCreateAclsRequest(version);
+            case DELETE_ACLS: return createDeleteAclsRequest(version);
+            case DESCRIBE_CONFIGS: return 
createDescribeConfigsRequest(version);
+            case ALTER_CONFIGS: return createAlterConfigsRequest(version);
+            case ALTER_REPLICA_LOG_DIRS: return 
createAlterReplicaLogDirsRequest(version);
+            case DESCRIBE_LOG_DIRS: return 
createDescribeLogDirsRequest(version);
+            case SASL_AUTHENTICATE: return 
createSaslAuthenticateRequest(version);
+            case CREATE_PARTITIONS: return 
createCreatePartitionsRequest(version);
+            case CREATE_DELEGATION_TOKEN: return 
createCreateTokenRequest(version);
+            case RENEW_DELEGATION_TOKEN: return 
createRenewTokenRequest(version);
+            case EXPIRE_DELEGATION_TOKEN: return 
createExpireTokenRequest(version);
+            case DESCRIBE_DELEGATION_TOKEN: return 
createDescribeTokenRequest(version);
+            case DELETE_GROUPS: return createDeleteGroupsRequest(version);
+            case ELECT_LEADERS: return createElectLeadersRequest(version);
+            case INCREMENTAL_ALTER_CONFIGS: return 
createIncrementalAlterConfigsRequest(version);
+            case ALTER_PARTITION_REASSIGNMENTS: return 
createAlterPartitionReassignmentsRequest(version);
+            case LIST_PARTITION_REASSIGNMENTS: return 
createListPartitionReassignmentsRequest(version);
+            case OFFSET_DELETE: return createOffsetDeleteRequest(version);
+            case DESCRIBE_CLIENT_QUOTAS: return 
createDescribeClientQuotasRequest(version);
+            case ALTER_CLIENT_QUOTAS: return 
createAlterClientQuotasRequest(version);
+            case DESCRIBE_USER_SCRAM_CREDENTIALS: return 
createDescribeUserScramCredentialsRequest(version);
+            case ALTER_USER_SCRAM_CREDENTIALS: return 
createAlterUserScramCredentialsRequest(version);
+            case VOTE: return createVoteRequest(version);
+            case BEGIN_QUORUM_EPOCH: return 
createBeginQuorumEpochRequest(version);
+            case END_QUORUM_EPOCH: return createEndQuorumEpochRequest(version);
+            case DESCRIBE_QUORUM: return createDescribeQuorumRequest(version);
+            case ALTER_ISR: return createAlterIsrRequest(version);
+            case UPDATE_FEATURES: return createUpdateFeaturesRequest(version);
+            case ENVELOPE: return createEnvelopeRequest(version);
+            case FETCH_SNAPSHOT: return createFetchSnapshotRequest(version);
+            case DESCRIBE_CLUSTER: return 
createDescribeClusterRequest(version);
+            case DESCRIBE_PRODUCERS: return 
createDescribeProducersRequest(version);
+            case BROKER_REGISTRATION: return 
createBrokerRegistrationRequest(version);
+            case BROKER_HEARTBEAT: return 
createBrokerHeartbeatRequest(version);
+            case UNREGISTER_BROKER: return 
createUnregisterBrokerRequest(version);
+            case DESCRIBE_TRANSACTIONS: return 
createDescribeTransactionsRequest(version);
+            case LIST_TRANSACTIONS: return 
createListTransactionsRequest(version);
+            case ALLOCATE_PRODUCER_IDS: return 
createAllocateProducerIdsRequest(version);
+            default: throw new IllegalArgumentException("Unknown API key " + 
apikey);
+        }
+    }
+
+    private AbstractResponse getResponse(ApiKeys apikey, short version) {
+        switch (apikey) {
+            case PRODUCE: return createProduceResponse();
+            case FETCH: return createFetchResponse(version);
+            case LIST_OFFSETS: return createListOffsetResponse(version);
+            case METADATA: return createMetadataResponse();
+            case LEADER_AND_ISR: return createLeaderAndIsrResponse(version);
+            case STOP_REPLICA: return createStopReplicaResponse();
+            case UPDATE_METADATA: return createUpdateMetadataResponse();
+            case CONTROLLED_SHUTDOWN: return 
createControlledShutdownResponse();
+            case OFFSET_COMMIT: return createOffsetCommitResponse();
+            case OFFSET_FETCH: return createOffsetFetchResponse(version);
+            case FIND_COORDINATOR: return 
createFindCoordinatorResponse(version);
+            case JOIN_GROUP: return createJoinGroupResponse(version);
+            case HEARTBEAT: return createHeartBeatResponse();
+            case LEAVE_GROUP: return createLeaveGroupResponse();
+            case SYNC_GROUP: return createSyncGroupResponse(version);
+            case DESCRIBE_GROUPS: return createDescribeGroupResponse();
+            case LIST_GROUPS: return createListGroupsResponse(version);
+            case SASL_HANDSHAKE: return createSaslHandshakeResponse();
+            case API_VERSIONS: return createApiVersionResponse();
+            case CREATE_TOPICS: return createCreateTopicResponse();
+            case DELETE_TOPICS: return createDeleteTopicsResponse();
+            case DELETE_RECORDS: return createDeleteRecordsResponse();
+            case INIT_PRODUCER_ID: return createInitPidResponse();
+            case OFFSET_FOR_LEADER_EPOCH: return createLeaderEpochResponse();
+            case ADD_PARTITIONS_TO_TXN: return 
createAddPartitionsToTxnResponse();
+            case ADD_OFFSETS_TO_TXN: return createAddOffsetsToTxnResponse();
+            case END_TXN: return createEndTxnResponse();
+            case WRITE_TXN_MARKERS: return createWriteTxnMarkersResponse();
+            case TXN_OFFSET_COMMIT: return createTxnOffsetCommitResponse();
+            case DESCRIBE_ACLS: return createDescribeAclsResponse();
+            case CREATE_ACLS: return createCreateAclsResponse();
+            case DELETE_ACLS: return createDeleteAclsResponse(version);
+            case DESCRIBE_CONFIGS: return 
createDescribeConfigsResponse(version);
+            case ALTER_CONFIGS: return createAlterConfigsResponse();
+            case ALTER_REPLICA_LOG_DIRS: return 
createAlterReplicaLogDirsResponse();
+            case DESCRIBE_LOG_DIRS: return createDescribeLogDirsResponse();
+            case SASL_AUTHENTICATE: return createSaslAuthenticateResponse();
+            case CREATE_PARTITIONS: return createCreatePartitionsResponse();
+            case CREATE_DELEGATION_TOKEN: return createCreateTokenResponse();
+            case RENEW_DELEGATION_TOKEN: return createRenewTokenResponse();
+            case EXPIRE_DELEGATION_TOKEN: return createExpireTokenResponse();
+            case DESCRIBE_DELEGATION_TOKEN: return 
createDescribeTokenResponse();
+            case DELETE_GROUPS: return createDeleteGroupsResponse();
+            case ELECT_LEADERS: return createElectLeadersResponse();
+            case INCREMENTAL_ALTER_CONFIGS: return 
createIncrementalAlterConfigsResponse();
+            case ALTER_PARTITION_REASSIGNMENTS: return 
createAlterPartitionReassignmentsResponse();
+            case LIST_PARTITION_REASSIGNMENTS: return 
createListPartitionReassignmentsResponse();
+            case OFFSET_DELETE: return createOffsetDeleteResponse();
+            case DESCRIBE_CLIENT_QUOTAS: return 
createDescribeClientQuotasResponse();
+            case ALTER_CLIENT_QUOTAS: return createAlterClientQuotasResponse();
+            case DESCRIBE_USER_SCRAM_CREDENTIALS: return 
createDescribeUserScramCredentialsResponse();
+            case ALTER_USER_SCRAM_CREDENTIALS: return 
createAlterUserScramCredentialsResponse();
+            case VOTE: return createVoteResponse();
+            case BEGIN_QUORUM_EPOCH: return createBeginQuorumEpochResponse();
+            case END_QUORUM_EPOCH: return createEndQuorumEpochResponse();
+            case DESCRIBE_QUORUM: return createDescribeQuorumResponse();
+            case ALTER_ISR: return createAlterIsrResponse();
+            case UPDATE_FEATURES: return createUpdateFeaturesResponse();
+            case ENVELOPE: return createEnvelopeResponse();
+            case FETCH_SNAPSHOT: return createFetchSnapshotResponse();
+            case DESCRIBE_CLUSTER: return createDescribeClusterResponse();
+            case DESCRIBE_PRODUCERS: return createDescribeProducersResponse();
+            case BROKER_REGISTRATION: return 
createBrokerRegistrationResponse();
+            case BROKER_HEARTBEAT: return createBrokerHeartbeatResponse();
+            case UNREGISTER_BROKER: return createUnregisterBrokerResponse();
+            case DESCRIBE_TRANSACTIONS: return 
createDescribeTransactionsResponse();
+            case LIST_TRANSACTIONS: return createListTransactionsResponse();
+            case ALLOCATE_PRODUCER_IDS: return 
createAllocateProducerIdsResponse();
+            default: throw new IllegalArgumentException("Unknown API key " + 
apikey);
+        }
+    }
+
+    private FetchSnapshotRequest createFetchSnapshotRequest(short version) {
+        FetchSnapshotRequestData data = new FetchSnapshotRequestData()
+                .setClusterId("clusterId")
+                .setTopics(singletonList(new 
FetchSnapshotRequestData.TopicSnapshot()
+                        .setName("topic1")
+                        .setPartitions(singletonList(new 
FetchSnapshotRequestData.PartitionSnapshot()
+                                .setSnapshotId(new 
FetchSnapshotRequestData.SnapshotId()
+                                        .setEndOffset(123L)
+                                        .setEpoch(0))
+                                .setPosition(123L)
+                                .setPartition(0)
+                                .setCurrentLeaderEpoch(1)))))
+                .setMaxBytes(1000)
+                .setReplicaId(2);
+        return new FetchSnapshotRequest.Builder(data).build(version);
+    }
+
+    private FetchSnapshotResponse createFetchSnapshotResponse() {
+        FetchSnapshotResponseData data = new FetchSnapshotResponseData()
+                .setErrorCode(Errors.NONE.code())
+                .setTopics(singletonList(new 
FetchSnapshotResponseData.TopicSnapshot()
+                        .setName("topic1")
+                        .setPartitions(singletonList(new 
FetchSnapshotResponseData.PartitionSnapshot()
+                                .setErrorCode(Errors.NONE.code())
+                                .setIndex(0)
+                                .setCurrentLeader(new 
FetchSnapshotResponseData.LeaderIdAndEpoch()
+                                        .setLeaderEpoch(0)
+                                        .setLeaderId(1))
+                                .setSnapshotId(new 
FetchSnapshotResponseData.SnapshotId()
+                                        .setEndOffset(123L)
+                                        .setEpoch(0))
+                                .setPosition(234L)
+                                .setSize(345L)
+                                
.setUnalignedRecords(MemoryRecords.withRecords(CompressionType.NONE, new 
SimpleRecord("blah".getBytes())))))))
+                .setThrottleTimeMs(123);
+        return new FetchSnapshotResponse(data);
+    }
+
+    private EnvelopeRequest createEnvelopeRequest(short version) {
+        return new EnvelopeRequest.Builder(
+                ByteBuffer.wrap("data".getBytes(StandardCharsets.UTF_8)),
+                "principal".getBytes(StandardCharsets.UTF_8),
+                "address".getBytes(StandardCharsets.UTF_8))
+                .build(version);
+    }
+
+    private EnvelopeResponse createEnvelopeResponse() {
+        EnvelopeResponseData data = new EnvelopeResponseData()
+                
.setResponseData(ByteBuffer.wrap("data".getBytes(StandardCharsets.UTF_8)))
+                .setErrorCode(Errors.NONE.code());
+        return new EnvelopeResponse(data);
+    }
+
+    private DescribeQuorumRequest createDescribeQuorumRequest(short version) {
+        DescribeQuorumRequestData data = new DescribeQuorumRequestData()
+                .setTopics(singletonList(new 
DescribeQuorumRequestData.TopicData()
+                        .setPartitions(singletonList(new 
DescribeQuorumRequestData.PartitionData()
+                                .setPartitionIndex(0)))
+                        .setTopicName("topic1")));
+        return new DescribeQuorumRequest.Builder(data).build(version);
+    }
+
+    private DescribeQuorumResponse createDescribeQuorumResponse() {
+        DescribeQuorumResponseData data = new DescribeQuorumResponseData()
+                .setErrorCode(Errors.NONE.code());
+        return new DescribeQuorumResponse(data);
+    }
+
+    private EndQuorumEpochRequest createEndQuorumEpochRequest(short version) {
+        EndQuorumEpochRequestData data = new EndQuorumEpochRequestData()
+                .setClusterId("clusterId")
+                .setTopics(singletonList(new 
EndQuorumEpochRequestData.TopicData()
+                        .setPartitions(singletonList(new 
EndQuorumEpochRequestData.PartitionData()
+                                .setLeaderEpoch(0)
+                                .setLeaderId(1)
+                                .setPartitionIndex(2)
+                                .setPreferredSuccessors(asList(0, 1, 2))))
+                        .setTopicName("topic1")));
+        return new EndQuorumEpochRequest.Builder(data).build(version);
+    }
+
+    private EndQuorumEpochResponse createEndQuorumEpochResponse() {
+        EndQuorumEpochResponseData data = new EndQuorumEpochResponseData()
+                .setErrorCode(Errors.NONE.code())
+                .setTopics(singletonList(new 
EndQuorumEpochResponseData.TopicData()
+                        .setPartitions(singletonList(new 
EndQuorumEpochResponseData.PartitionData()
+                                .setErrorCode(Errors.NONE.code())
+                                .setLeaderEpoch(1)))
+                        .setTopicName("topic1")));
+        return new EndQuorumEpochResponse(data);
     }
 
-    private FindCoordinatorRequest createFindCoordinatorRequest(int version) {
+    private BeginQuorumEpochRequest createBeginQuorumEpochRequest(short 
version) {
+        BeginQuorumEpochRequestData data = new BeginQuorumEpochRequestData()
+                .setClusterId("clusterId")
+                .setTopics(singletonList(new 
BeginQuorumEpochRequestData.TopicData()
+                        .setPartitions(singletonList(new 
BeginQuorumEpochRequestData.PartitionData()
+                                .setLeaderEpoch(0)
+                                .setLeaderId(1)
+                                .setPartitionIndex(2)))));
+        return new BeginQuorumEpochRequest.Builder(data).build(version);
+    }
+
+    private BeginQuorumEpochResponse createBeginQuorumEpochResponse() {
+        BeginQuorumEpochResponseData data = new BeginQuorumEpochResponseData()
+                .setErrorCode(Errors.NONE.code())
+                .setTopics(singletonList(new 
BeginQuorumEpochResponseData.TopicData()
+                        .setPartitions(singletonList(new 
BeginQuorumEpochResponseData.PartitionData()
+                                .setErrorCode(Errors.NONE.code())
+                                .setLeaderEpoch(0)
+                                .setLeaderId(1)
+                                .setPartitionIndex(2)))));
+        return new BeginQuorumEpochResponse(data);
+    }
+
+    private VoteRequest createVoteRequest(short version) {
+        VoteRequestData data = new VoteRequestData()
+                .setClusterId("clusterId")
+                .setTopics(singletonList(new VoteRequestData.TopicData()
+                        .setPartitions(singletonList(new 
VoteRequestData.PartitionData()
+                                .setPartitionIndex(0)
+                                .setCandidateEpoch(1)
+                                .setCandidateId(2)
+                                .setLastOffset(3L)
+                                .setLastOffsetEpoch(4)))
+                        .setTopicName("topic1")));
+        return new VoteRequest.Builder(data).build(version);
+    }
+
+    private VoteResponse createVoteResponse() {
+        VoteResponseData data = new VoteResponseData()
+                .setErrorCode(Errors.NONE.code())
+                .setTopics(singletonList(new VoteResponseData.TopicData()
+                        .setPartitions(singletonList(new 
VoteResponseData.PartitionData()
+                                .setErrorCode(Errors.NONE.code())
+                                .setLeaderEpoch(0)
+                                .setPartitionIndex(1)
+                                .setLeaderId(2)
+                                .setVoteGranted(false)))));
+        return new VoteResponse(data);
+    }
+
+    private AlterUserScramCredentialsRequest 
createAlterUserScramCredentialsRequest(short version) {
+        AlterUserScramCredentialsRequestData data = new 
AlterUserScramCredentialsRequestData()
+                .setDeletions(singletonList(new 
AlterUserScramCredentialsRequestData.ScramCredentialDeletion()
+                        .setName("user1")
+                        .setMechanism((byte) 0)))
+                .setUpsertions(singletonList(new 
AlterUserScramCredentialsRequestData.ScramCredentialUpsertion()
+                        .setName("user2")
+                        .setIterations(1024)
+                        .setMechanism((byte) 1)
+                        .setSalt("salt".getBytes())));
+        return new 
AlterUserScramCredentialsRequest.Builder(data).build(version);
+    }
+
+    private AlterUserScramCredentialsResponse 
createAlterUserScramCredentialsResponse() {
+        AlterUserScramCredentialsResponseData data = new 
AlterUserScramCredentialsResponseData()
+                .setResults(singletonList(new 
AlterUserScramCredentialsResponseData.AlterUserScramCredentialsResult()
+                        .setErrorCode(Errors.NONE.code())
+                        .setUser("user1")
+                        .setErrorMessage("error message")));
+        return new AlterUserScramCredentialsResponse(data);
+    }
+
+    private DescribeUserScramCredentialsRequest 
createDescribeUserScramCredentialsRequest(short version) {
+        DescribeUserScramCredentialsRequestData data = new 
DescribeUserScramCredentialsRequestData()
+                .setUsers(singletonList(new 
DescribeUserScramCredentialsRequestData.UserName()
+                        .setName("user1")));
+        return new 
DescribeUserScramCredentialsRequest.Builder(data).build(version);
+    }
+
+    private DescribeUserScramCredentialsResponse 
createDescribeUserScramCredentialsResponse() {
+        DescribeUserScramCredentialsResponseData data = new 
DescribeUserScramCredentialsResponseData()
+                .setResults(singletonList(new 
DescribeUserScramCredentialsResponseData.DescribeUserScramCredentialsResult()
+                        .setUser("user1")
+                        .setErrorCode(Errors.NONE.code())
+                        .setErrorMessage("error message")
+                        .setCredentialInfos(singletonList(new 
DescribeUserScramCredentialsResponseData.CredentialInfo()
+                                .setIterations(1024)
+                                .setMechanism((byte) 0)))))
+                .setErrorCode(Errors.NONE.code())
+                .setErrorMessage("error message")
+                .setThrottleTimeMs(123);
+        return new DescribeUserScramCredentialsResponse(data);
+    }
+
+    private AlterIsrRequest createAlterIsrRequest(short version) {
+        AlterIsrRequestData data = new AlterIsrRequestData()
+                .setBrokerEpoch(123L)
+                .setBrokerId(1)
+                .setTopics(singletonList(new AlterIsrRequestData.TopicData()
+                        .setName("topic1")
+                        .setPartitions(singletonList(new 
AlterIsrRequestData.PartitionData()
+                                .setPartitionIndex(1)
+                                .setCurrentIsrVersion(2)
+                                .setLeaderEpoch(3)
+                                .setNewIsr(asList(1, 2))))));
+        return new AlterIsrRequest.Builder(data).build(version);
+    }
+
+    private AlterIsrResponse createAlterIsrResponse() {
+        AlterIsrResponseData data = new AlterIsrResponseData()
+                .setErrorCode(Errors.NONE.code())
+                .setThrottleTimeMs(123)
+                .setTopics(singletonList(new AlterIsrResponseData.TopicData()
+                        .setName("topic1")
+                        .setPartitions(singletonList(new 
AlterIsrResponseData.PartitionData()
+                                .setCurrentIsrVersion(1)
+                                .setIsr(asList(0, 1, 2))
+                                .setErrorCode(Errors.NONE.code())
+                                .setLeaderEpoch(2)
+                                .setLeaderId(3)))));
+        return new AlterIsrResponse(data);
+    }
+
+    private UpdateFeaturesRequest createUpdateFeaturesRequest(short version) {
+        UpdateFeaturesRequestData.FeatureUpdateKeyCollection features = new 
UpdateFeaturesRequestData.FeatureUpdateKeyCollection();
+        features.add(new UpdateFeaturesRequestData.FeatureUpdateKey()
+                .setFeature("feature1")
+                .setAllowDowngrade(false)
+                .setMaxVersionLevel((short) 1));
+        UpdateFeaturesRequestData data = new UpdateFeaturesRequestData()
+                .setFeatureUpdates(features)
+                .setTimeoutMs(123);
+        return new UpdateFeaturesRequest.Builder(data).build(version);
+    }
+
+    private UpdateFeaturesResponse createUpdateFeaturesResponse() {
+        UpdateFeaturesResponseData.UpdatableFeatureResultCollection results = 
new UpdateFeaturesResponseData.UpdatableFeatureResultCollection();
+        results.add(new UpdateFeaturesResponseData.UpdatableFeatureResult()
+                .setFeature("feature1")
+                .setErrorCode(Errors.NONE.code())
+                .setErrorMessage("error message"));
+        UpdateFeaturesResponseData data = new UpdateFeaturesResponseData()
+                .setErrorCode(Errors.NONE.code())
+                .setThrottleTimeMs(123)
+                .setResults(results)
+                .setErrorMessage("error message");
+        return new UpdateFeaturesResponse(data);
+    }
+
+    private AllocateProducerIdsRequest createAllocateProducerIdsRequest(short 
version) {
+        AllocateProducerIdsRequestData data = new 
AllocateProducerIdsRequestData()
+                .setBrokerEpoch(123L)
+                .setBrokerId(2);
+        return new AllocateProducerIdsRequest.Builder(data).build(version);
+    }
+
+    private AllocateProducerIdsResponse createAllocateProducerIdsResponse() {
+        AllocateProducerIdsResponseData data = new 
AllocateProducerIdsResponseData()
+                .setErrorCode(Errors.NONE.code())
+                .setThrottleTimeMs(123)
+                .setProducerIdLen(234)
+                .setProducerIdStart(345L);
+        return new AllocateProducerIdsResponse(data);
+    }
+
+    private DescribeLogDirsRequest createDescribeLogDirsRequest(short version) 
{
+        DescribeLogDirsRequestData.DescribableLogDirTopicCollection topics = 
new DescribeLogDirsRequestData.DescribableLogDirTopicCollection();
+        topics.add(new DescribeLogDirsRequestData.DescribableLogDirTopic()
+                .setPartitions(asList(0, 1, 2))
+                .setTopic("topic1"));
+        DescribeLogDirsRequestData data = new DescribeLogDirsRequestData()
+                .setTopics(topics);
+        return new DescribeLogDirsRequest.Builder(data).build(version);
+    }
+
+    private DescribeLogDirsResponse createDescribeLogDirsResponse() {
+        DescribeLogDirsResponseData data = new DescribeLogDirsResponseData()
+                .setResults(singletonList(new 
DescribeLogDirsResponseData.DescribeLogDirsResult()
+                        .setErrorCode(Errors.NONE.code())
+                        .setLogDir("logdir")
+                        .setTopics(singletonList(new 
DescribeLogDirsResponseData.DescribeLogDirsTopic()
+                                .setName("topic1")
+                                .setPartitions(singletonList(new 
DescribeLogDirsResponseData.DescribeLogDirsPartition()
+                                        .setPartitionIndex(0)
+                                        .setIsFutureKey(false)
+                                        .setOffsetLag(123L)
+                                        .setPartitionSize(234L)))))))
+                .setThrottleTimeMs(123);
+        return new DescribeLogDirsResponse(data);
+    }
+
+    private DeleteRecordsRequest createDeleteRecordsRequest(short version) {
+        DeleteRecordsRequestData.DeleteRecordsTopic topic = new 
DeleteRecordsRequestData.DeleteRecordsTopic()
+                .setName("topic1")
+                .setPartitions(singletonList(new 
DeleteRecordsRequestData.DeleteRecordsPartition()
+                        .setPartitionIndex(1)
+                        .setOffset(123L)));
+        DeleteRecordsRequestData data = new DeleteRecordsRequestData()
+                .setTopics(singletonList(topic))
+                .setTimeoutMs(123);
+        return new DeleteRecordsRequest.Builder(data).build(version);
+    }
+
+    private DeleteRecordsResponse createDeleteRecordsResponse() {
+        DeleteRecordsResponseData.DeleteRecordsTopicResultCollection topics = 
new DeleteRecordsResponseData.DeleteRecordsTopicResultCollection();
+        DeleteRecordsResponseData.DeleteRecordsPartitionResultCollection 
partitions = new 
DeleteRecordsResponseData.DeleteRecordsPartitionResultCollection();
+        partitions.add(new 
DeleteRecordsResponseData.DeleteRecordsPartitionResult()
+                .setErrorCode(Errors.NONE.code())
+                .setLowWatermark(123L)
+                .setPartitionIndex(0));
+        topics.add(new DeleteRecordsResponseData.DeleteRecordsTopicResult()
+                .setName("topic1")
+                .setPartitions(partitions));
+        DeleteRecordsResponseData data = new DeleteRecordsResponseData()
+                .setThrottleTimeMs(123)
+                .setTopics(topics);
+        return new DeleteRecordsResponse(data);
+    }
+
+    private DescribeClusterRequest createDescribeClusterRequest(short version) 
{

Review comment:
       Yeah I thought this was a bit better like this. 




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to