public void JoinConsumerGroupResponse( [Values( ErrorResponseCode.None, ErrorResponseCode.OffsetMetadataTooLarge )] ErrorResponseCode errorCode, [Values(0, 1, 20000)] int generationId, [Values("consumer")] string protocol, [Values("test", "a groupId")] string leaderId, [Values("", "an existing member")] string memberId, [Values(1, 10)] int memberCount) { var encoder = new ConsumerEncoder(); var members = new List <JoinGroupResponse.Member>(); for (var m = 0; m < memberCount; m++) { var userData = new byte[memberCount * 100]; _randomizer.NextBytes(userData); var metadata = new ConsumerProtocolMetadata(0, new [] { protocol, memberId, leaderId }, userData); members.Add(new JoinGroupResponse.Member(memberId + m, metadata)); } var response = new JoinGroupResponse(errorCode, generationId, protocol, leaderId, memberId, members); response.AssertCanEncodeDecodeResponse(0, encoder); }
public void SyncConsumerGroupRequest( [Values("test", "a groupId")] string groupId, [Values(0, 1, 20000)] int generationId, [Values("", "an existing member")] string memberId, [Values("consumer")] string protocolType, [Values(1, 10)] int assignmentsPerRequest) { var encoder = new ConsumerEncoder(); var assignments = new List <SyncGroupRequest.GroupAssignment>(); for (var a = 0; a < assignmentsPerRequest; a++) { var topics = new List <TopicPartition>(); for (var t = 0; t < assignmentsPerRequest; t++) { topics.Add(new TopicPartition(groupId + t, t)); } var userData = new byte[assignmentsPerRequest * 100]; _randomizer.NextBytes(userData); var assignment = new ConsumerMemberAssignment(topics, new ArraySegment <byte>(userData), 0); assignments.Add(new SyncGroupRequest.GroupAssignment(protocolType + a, assignment)); } var request = new SyncGroupRequest(groupId, generationId, memberId, assignments); request.AssertCanEncodeDecodeRequest(0, encoder); }
public static IImmutableDictionary <string, IMembershipEncoder> Encoders(IEnumerable <IMembershipEncoder> encoders) { var defaultEncoders = encoders != null ? encoders.ToImmutableDictionary(e => e.ProtocolType) : ImmutableDictionary <string, IMembershipEncoder> .Empty; if (!defaultEncoders.ContainsKey(ConsumerEncoder.Protocol)) { var consumerEncoder = new ConsumerEncoder(SimpleAssignor.Assignors); defaultEncoders = defaultEncoders.Add(consumerEncoder.ProtocolType, consumerEncoder); } return(defaultEncoders); }
public void SyncConsumerGroupResponse( [Values( ErrorResponseCode.None, ErrorResponseCode.OffsetMetadataTooLarge )] ErrorResponseCode errorCode, [Values(1, 10)] int memberCount) { var encoder = new ConsumerEncoder(); var topics = new List <TopicPartition>(); for (var t = 0; t < memberCount; t++) { topics.Add(new TopicPartition("topic foo" + t, t)); } var assignment = new ConsumerMemberAssignment(0, topics); var response = new SyncGroupResponse(errorCode, assignment); response.AssertCanEncodeDecodeResponse(0, encoder); }
public void JoinConsumerGroupRequest( [Values("test", "a groupId")] string groupId, [Values(1, 20000)] int sessionTimeout, [Values("", "an existing member")] string memberId, [Values("consumer")] string protocolType, [Values(1, 10)] int protocolsPerRequest) { var encoder = new ConsumerEncoder(); var protocols = new List <JoinGroupRequest.GroupProtocol>(); for (var p = 0; p < protocolsPerRequest; p++) { var userData = new byte[protocolsPerRequest * 100]; _randomizer.NextBytes(userData); var metadata = new ConsumerProtocolMetadata(0, new [] { groupId, memberId, protocolType }, userData); protocols.Add(new JoinGroupRequest.GroupProtocol(protocolType + p, metadata)); } var request = new JoinGroupRequest(groupId, TimeSpan.FromMilliseconds(sessionTimeout), memberId, protocolType, protocols); request.AssertCanEncodeDecodeRequest(0, encoder); }
public void DescribeConsumerGroupsResponse( [Values( ErrorResponseCode.None, ErrorResponseCode.OffsetMetadataTooLarge )] ErrorResponseCode errorCode, [Values("test", "a groupId")] string groupId, [Range(2, 3)] int count, [Values(KafkaClient.Protocol.DescribeGroupsResponse.Group.States.Stable, KafkaClient.Protocol.DescribeGroupsResponse.Group.States.AwaitingSync)] string state, [Values("consumer")] string protocolType, [Values("good", "bad", "ugly")] string protocol) { var encoder = new ConsumerEncoder(); var groups = new DescribeGroupsResponse.Group[count]; for (var g = 0; g < count; g++) { var members = new List <DescribeGroupsResponse.Member>(); for (var m = 0; m < count; m++) { var memberId = "member" + m; var userData = new byte[count * 100]; _randomizer.NextBytes(userData); var metadata = new ConsumerProtocolMetadata(0, new [] { protocol, memberId, memberId }, userData); var topics = new List <TopicPartition>(); for (var t = 0; t < count; t++) { topics.Add(new TopicPartition("topic foo" + t, t)); } var assignment = new ConsumerMemberAssignment(0, topics); members.Add(new DescribeGroupsResponse.Member(memberId, "client" + m, "host-" + m, metadata, assignment)); } groups[g] = new DescribeGroupsResponse.Group(errorCode, groupId + g, state, protocolType, protocol, members); } var response = new DescribeGroupsResponse(groups); response.AssertCanEncodeDecodeResponse(0, encoder); }
public void SyncConsumerGroupResponse( [Values( ErrorCode.NONE, ErrorCode.OFFSET_METADATA_TOO_LARGE )] ErrorCode errorCode, [Values(1, 10)] int memberCount) { var encoder = new ConsumerEncoder(); var topics = new List <TopicPartition>(); for (var t = 0; t < memberCount; t++) { topics.Add(new TopicPartition("topic foo" + t, t)); } var userData = new byte[memberCount * 100]; _randomizer.NextBytes(userData); var assignment = new ConsumerMemberAssignment(topics, new ArraySegment <byte>(userData), 0); var response = new SyncGroupResponse(errorCode, assignment); response.AssertCanEncodeDecodeResponse(0, encoder); }