public void OffsetsResponse( [Values(0, 1)] short version, [Values("testTopic")] string topicName, [Values(1, 10)] int topicsPerRequest, [Values(5)] int totalPartitions, [Values( ErrorCode.UNKNOWN_TOPIC_OR_PARTITION, ErrorCode.NOT_LEADER_FOR_PARTITION, ErrorCode.UNKNOWN )] ErrorCode errorCode, [Values(1, 5)] int offsetsPerPartition) { var topics = new List <OffsetsResponse.Topic>(); for (var t = 0; t < topicsPerRequest; t++) { var partitionId = t % totalPartitions; for (var o = 0; o < offsetsPerPartition; o++) { topics.Add(new OffsetsResponse.Topic(topicName + t, partitionId, errorCode, _randomizer.Next(-1, int.MaxValue), version >= 1 ? (DateTimeOffset?)DateTimeOffset.UtcNow : null)); } } var response = new OffsetsResponse(topics); response.AssertCanEncodeDecodeResponse(version); }
private static bool TryEncodeResponse(IKafkaWriter writer, IRequestContext context, OffsetsResponse response) { if (response == null) { return(false); } var groupedTopics = response.responses.GroupBy(t => t.topic).ToList(); writer.Write(groupedTopics.Count); foreach (var topic in groupedTopics) { var partitions = topic.ToList(); writer.Write(topic.Key) .Write(partitions.Count); foreach (var partition in partitions) { writer.Write(partition.partition_id) .Write(partition.error_code); if (context.ApiVersion == 0) { writer.Write(1) .Write(partition.offset); } else { writer.Write(partition.timestamp?.ToUnixTimeMilliseconds() ?? 0L) .Write(partition.offset); } } } return(true); }