Skip to content

Commit 5c5a11c

Browse files
committed
Add tests again
1 parent f96b7a2 commit 5c5a11c

File tree

3 files changed

+524
-61
lines changed

3 files changed

+524
-61
lines changed

src/rdkafka_mock_handlers.c

Lines changed: 40 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1299,15 +1299,40 @@ static int rd_kafka_mock_handle_Metadata(rd_kafka_mock_connection_t *mconn,
12991299
int i;
13001300
size_t of_Brokers_cnt;
13011301
int32_t response_Brokers_cnt = 0;
1302+
rd_kafka_resp_err_t err;
13021303

13031304
if (rkbuf->rkbuf_reqhdr.ApiVersion >= 3) {
13041305
/* Response: ThrottleTime */
13051306
rd_kafka_buf_write_i32(resp, 0);
13061307
}
13071308

1309+
err = rd_kafka_mock_next_request_error(mconn, resp);
1310+
if (err && rkbuf->rkbuf_reqhdr.ApiVersion < 13)
1311+
/* Top-level error code not supported */
1312+
err = RD_KAFKA_RESP_ERR_NO_ERROR;
1313+
1314+
if (err) {
1315+
/* Response: #Brokers */
1316+
rd_kafka_buf_write_arraycnt(resp, 0);
1317+
1318+
if (rkbuf->rkbuf_reqhdr.ApiVersion >= 2) {
1319+
/* Response: ClusterId */
1320+
rd_kafka_buf_write_str(resp, mcluster->id, -1);
1321+
}
1322+
1323+
if (rkbuf->rkbuf_reqhdr.ApiVersion >= 1) {
1324+
/* Response: ControllerId */
1325+
rd_kafka_buf_write_i32(resp, mcluster->controller_id);
1326+
}
1327+
1328+
/* Response: #Topics */
1329+
rd_kafka_buf_write_arraycnt(resp, 0);
1330+
1331+
goto send_response;
1332+
}
1333+
13081334
/* Response: #Brokers */
13091335
of_Brokers_cnt = rd_kafka_buf_write_arraycnt_pos(resp);
1310-
13111336
TAILQ_FOREACH(mrkb, &mcluster->brokers, link) {
13121337
if (!mrkb->up)
13131338
continue;
@@ -1318,7 +1343,7 @@ static int rd_kafka_mock_handle_Metadata(rd_kafka_mock_connection_t *mconn,
13181343
/* Response: Brokers.Port */
13191344
rd_kafka_buf_write_i32(resp, (int32_t)mrkb->port);
13201345
if (rkbuf->rkbuf_reqhdr.ApiVersion >= 1) {
1321-
/* Response: Brokers.Rack (Matt's going to love this) */
1346+
/* Response: Brokers.Rack */
13221347
rd_kafka_buf_write_str(resp, mrkb->rack, -1);
13231348
}
13241349
rd_kafka_buf_write_tags_empty(resp);
@@ -1455,18 +1480,23 @@ static int rd_kafka_mock_handle_Metadata(rd_kafka_mock_connection_t *mconn,
14551480
rd_kafka_buf_write_arraycnt(resp, 0);
14561481
}
14571482

1483+
if (requested_topics)
1484+
rd_kafka_topic_partition_list_destroy(requested_topics);
1485+
1486+
send_response:
1487+
14581488
if (rkbuf->rkbuf_reqhdr.ApiVersion >= 8 &&
14591489
rkbuf->rkbuf_reqhdr.ApiVersion <= 10) {
14601490
/* ClusterAuthorizedOperations */
14611491
rd_kafka_buf_write_i32(resp, INT32_MIN);
14621492
}
14631493

1464-
rd_kafka_buf_skip_tags(rkbuf);
1465-
rd_kafka_buf_write_tags_empty(resp);
1466-
1467-
if (requested_topics)
1468-
rd_kafka_topic_partition_list_destroy(requested_topics);
1494+
if (rkbuf->rkbuf_reqhdr.ApiVersion >= 13) {
1495+
/* Response: ErrorCode */
1496+
rd_kafka_buf_write_i16(resp, err);
1497+
}
14691498

1499+
rd_kafka_buf_write_tags_empty(resp);
14701500
rd_kafka_mock_connection_send_response(mconn, resp);
14711501

14721502
return 0;
@@ -1516,7 +1546,8 @@ rd_kafka_mock_handle_FindCoordinator(rd_kafka_mock_connection_t *mconn,
15161546

15171547
if (!err && RD_KAFKAP_STR_LEN(&Key) > 0) {
15181548
mrkb = rd_kafka_mock_cluster_get_coord(mcluster, KeyType, &Key);
1519-
rd_assert(mrkb);
1549+
if (!mrkb)
1550+
err = RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE;
15201551
}
15211552

15221553
if (!mrkb && !err)
@@ -3003,7 +3034,7 @@ const struct rd_kafka_mock_api_handler
30033034
[RD_KAFKAP_OffsetFetch] = {0, 6, 6, rd_kafka_mock_handle_OffsetFetch},
30043035
[RD_KAFKAP_OffsetCommit] = {0, 9, 8, rd_kafka_mock_handle_OffsetCommit},
30053036
[RD_KAFKAP_ApiVersion] = {0, 2, 3, rd_kafka_mock_handle_ApiVersion},
3006-
[RD_KAFKAP_Metadata] = {0, 12, 9, rd_kafka_mock_handle_Metadata},
3037+
[RD_KAFKAP_Metadata] = {0, 13, 9, rd_kafka_mock_handle_Metadata},
30073038
[RD_KAFKAP_FindCoordinator] = {0, 3, 3,
30083039
rd_kafka_mock_handle_FindCoordinator},
30093040
[RD_KAFKAP_InitProducerId] = {0, 4, 2,

0 commit comments

Comments
 (0)