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); }