public void ShouldAbleToParseRequest()
        {
            var stream = new MemoryStream();
            var writer = new KafkaBinaryWriter(stream);

            writer.Write(1);
            writer.Write(100);  // correlation id
            writer.Write(2);    // broker count
            writer.Write(0);    // broker id
            writer.WriteShortString("host1");
            writer.Write(9092); // port
            writer.Write(1);    // broker id
            writer.WriteShortString("host2");
            writer.Write(9093); // port
            writer.Write(1);    // topic count
            writer.Write((short)ErrorMapping.NoError);
            writer.WriteShortString("topic1");
            writer.Write(1);   // partitions
            writer.Write((short)ErrorMapping.NoError);
            writer.Write(111); // partition id
            writer.Write(0);   // leader broker id
            writer.Write(1);   // num replicas
            writer.Write(1);   // replica broker id
            writer.Write(1);   // in sync replicas
            writer.Write(1);   // in sync replica broker id
            stream.Seek(0, SeekOrigin.Begin);
            var reader     = new KafkaBinaryReader(stream);
            var response   = new TopicMetadataRequest.Parser().ParseFrom(reader);
            var enumerator = response.GetEnumerator();

            enumerator.MoveNext().Should().BeTrue();
            enumerator.Current.Topic.Should().Be("topic1");
            enumerator.Current.Error.Should().Be(ErrorMapping.NoError);
            var partitionEnumerator = enumerator.Current.PartitionsMetadata.GetEnumerator();

            partitionEnumerator.MoveNext().Should().BeTrue();
            partitionEnumerator.Current.PartitionId.Should().Be(111);
            var leader = partitionEnumerator.Current.Leader;

            leader.Id.Should().Be(0);
            leader.Host.Should().Be("host1");
            leader.Port.Should().Be(9092);
            var replicas = partitionEnumerator.Current.Replicas.ToList();

            replicas.Count.Should().Be(1);
            replicas.First().Id.Should().Be(1);
            replicas.First().Host.Should().Be("host2");
            replicas.First().Port.Should().Be(9093);
            var isrs = partitionEnumerator.Current.Isr.ToList();

            isrs.Count.Should().Be(1);
            isrs.First().Id.Should().Be(1);
            isrs.First().Host.Should().Be("host2");
            isrs.First().Port.Should().Be(9093);
        }
 public void ShouldAbleToParseRequest()
 {
     var stream = new MemoryStream();
     var writer = new KafkaBinaryWriter(stream);
     writer.Write(1);
     writer.Write(100); // correlation id
     writer.Write(2); // broker count
     writer.Write(0); // broker id
     writer.WriteShortString("host1");
     writer.Write(9092); // port
     writer.Write(1); // broker id
     writer.WriteShortString("host2");
     writer.Write(9093); // port
     writer.Write(1); // topic count
     writer.Write((short)ErrorMapping.NoError);
     writer.WriteShortString("topic1");
     writer.Write(1); // partitions
     writer.Write((short)ErrorMapping.NoError);
     writer.Write(111); // partition id
     writer.Write(0); // leader broker id
     writer.Write(1); // num replicas
     writer.Write(1); // replica broker id
     writer.Write(1); // in sync replicas
     writer.Write(1); // in sync replica broker id
     stream.Seek(0, SeekOrigin.Begin);
     var reader = new KafkaBinaryReader(stream);
     var response = new TopicMetadataRequest.Parser().ParseFrom(reader);
     var enumerator = response.GetEnumerator();
     enumerator.MoveNext().Should().BeTrue();
     enumerator.Current.Topic.Should().Be("topic1");
     enumerator.Current.Error.Should().Be(ErrorMapping.NoError);
     var partitionEnumerator = enumerator.Current.PartitionsMetadata.GetEnumerator();
     partitionEnumerator.MoveNext().Should().BeTrue();
     partitionEnumerator.Current.PartitionId.Should().Be(111);
     var leader = partitionEnumerator.Current.Leader;
     leader.Id.Should().Be(0);
     leader.Host.Should().Be("host1");
     leader.Port.Should().Be(9092);
     var replicas = partitionEnumerator.Current.Replicas.ToList();
     replicas.Count.Should().Be(1);
     replicas.First().Id.Should().Be(1);
     replicas.First().Host.Should().Be("host2");
     replicas.First().Port.Should().Be(9093);
     var isrs = partitionEnumerator.Current.Isr.ToList();
     isrs.Count.Should().Be(1);
     isrs.First().Id.Should().Be(1);
     isrs.First().Host.Should().Be("host2");
     isrs.First().Port.Should().Be(9093);
 }