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 ShouldParseResponse() { var stream = new MemoryStream(); var writer = new KafkaBinaryWriter(stream); writer.Write(1); writer.Write(123); // correlation id writer.Write(1); // topic count writer.WriteShortString("topic"); writer.Write(1); // partition count writer.Write(999); // partition id writer.Write((short)ErrorMapping.NoError); writer.Write(3); // number of offsets writer.Write(111L); writer.Write(222L); writer.Write(333L); stream.Seek(0, SeekOrigin.Begin); var reader = new KafkaBinaryReader(stream); var response = new OffsetResponse.Parser().ParseFrom(reader); response.CorrelationId.Should().Be(123); response.ResponseMap.Count.Should().Be(1); var partitions = response.ResponseMap["topic"]; partitions.Count.Should().Be(1); var info = partitions.First(); info.Error.Should().Be(ErrorMapping.NoError); info.Offsets.Count.Should().Be(3); info.Offsets.SequenceEqual(new List<long>() {111L, 222L, 333L}).Should().BeTrue(); info.PartitionId.Should().Be(999); }
public void ShouldAbleToParseFetchResponse() { var stream = new MemoryStream(); var writer = new KafkaBinaryWriter(stream); writer.Write(1); writer.Write(123); // correlation id writer.Write(1); // data count writer.WriteShortString("topic1"); writer.Write(1); // partition count writer.Write(111); //partition id writer.Write((short)ErrorMapping.NoError); writer.Write(1011L); // hw var messageStream = new MemoryStream(); var messageWriter = new KafkaBinaryWriter(messageStream); new BufferedMessageSet(new List<Message>() { new Message(new byte[100]) }, 0).WriteTo(messageWriter); writer.Write((int)messageStream.Length); writer.Write(messageStream.GetBuffer(), 0, (int)messageStream.Length); stream.Seek(0, SeekOrigin.Begin); var reader = new KafkaBinaryReader(stream); var response = new FetchResponse.Parser().ParseFrom(reader); var set = response.MessageSet("topic1", 111); set.Should().NotBeNull(); var messages = set.Messages.ToList(); messages.Count().Should().Be(1); messages.First().Payload.Length.Should().Be(100); }
public void ShouldAbleToParseResponse() { var stream = new MemoryStream(); var writer = new KafkaBinaryWriter(stream); writer.Write(1); writer.Write(123); // correlation id writer.Write(1); // topic count writer.WriteShortString("topic"); writer.Write(1); // partition count writer.Write(999); // partition id writer.Write((short)ErrorMapping.NoError); // error writer.Write(111L); // offset stream.Seek(0, SeekOrigin.Begin); var reader = new KafkaBinaryReader(stream); var response = new ProducerResponse.Parser().ParseFrom(reader); response.CorrelationId.Should().Be(123); response.Statuses.Count.Should().Be(1); var info = response.Statuses[new TopicAndPartition("topic", 999)]; info.Error.Should().Be(ErrorMapping.NoError); info.Offset.Should().Be(111L); }
public void WriteTo(KafkaBinaryWriter writer) { Guard.NotNull(writer, "writer"); writer.Write(this.Id); writer.WriteShortString(this.Host, AbstractRequest.DefaultEncoding); writer.Write(this.Port); }
public void ShouldReadShortString() { var stream = new MemoryStream(); var writer = new KafkaBinaryWriter(stream); writer.WriteShortString("hello world"); stream.Seek(0, SeekOrigin.Begin); BitWorks.ReadShortString(new KafkaBinaryReader(stream), "UTF-8").Should().Be("hello world"); }
/// <summary> /// Writes content into given writer /// </summary> /// <param name="writer"> /// The writer. /// </param> public void WriteTo(KafkaBinaryWriter writer) { Guard.NotNull(writer, "writer"); writer.Write(this.VersionId); writer.Write(this.CorrelationId); writer.WriteShortString(this.ClientId); writer.Write(this.RequiredAcks); writer.Write(this.AckTimeout); writer.Write(this.Data.Count()); foreach (var topicData in this.Data) { writer.WriteShortString(topicData.Topic); writer.Write(topicData.PartitionData.Count()); foreach (var partitionData in topicData.PartitionData) { writer.Write(partitionData.Partition); writer.Write(partitionData.MessageSet.SetSize); partitionData.MessageSet.WriteTo(writer); } } }
/// <summary> /// Writes content into given writer /// </summary> /// <param name="writer"> /// The writer. /// </param> public void WriteTo(KafkaBinaryWriter writer) { Guard.NotNull(writer, "writer"); writer.Write(VersionId); writer.Write(CorrelationId); writer.WriteShortString(ClientId); writer.Write(ReplicaId); writer.Write(RequestInfo.Count); foreach (var kv in RequestInfo) { writer.WriteShortString(kv.Key); writer.Write(kv.Value.Count); foreach (var info in kv.Value) { info.WriteTo(writer); } } }