예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }