public void Constuctor()
        {
            var bm = new BrokerMetadata(42, "myhost", 8080);

            Assert.Equal(bm.BrokerId, 42);
            Assert.Equal(bm.Host, "myhost");
            Assert.Equal(bm.Port, 8080);
        }
Beispiel #2
0
        public void Constuctor()
        {
            var bm = new BrokerMetadata(42, "myhost", 8080);

            Assert.Equal(42, bm.BrokerId);
            Assert.Equal("myhost", bm.Host);
            Assert.Equal(8080, bm.Port);
        }
Beispiel #3
0
        public void ToStringTest()
        {
            var bm = new BrokerMetadata(42, "myhost", 8080);

            Assert.Contains(42.ToString(), bm.ToString());
            Assert.Contains("myhost", bm.ToString());
            Assert.Contains(8080.ToString(), bm.ToString());

            // TODO: JSON based test. Note: there is coverage of this already in the Metadata integration test.
        }
        public void Constuctor()
        {
            var bmd     = new BrokerMetadata(1, "host", 42);
            var members = new List <GroupMemberInfo>();
            var gi      = new GroupInfo(bmd, "mygroup", new Error(ErrorCode.NoError), "mystate", "myprotocoltype", "myprotocol", members);

            Assert.Equal(gi.Broker, bmd);
            Assert.Equal(gi.Group, "mygroup");
            Assert.Equal(gi.Error, new Error(ErrorCode.NoError));
            Assert.Equal(gi.State, "mystate");
            Assert.Equal(gi.ProtocolType, "myprotocoltype");
            Assert.Equal(gi.Protocol, "myprotocol");
            Assert.Same(gi.Members, members);
        }
        public async Task CanLoadWatermarksWithValidParamsAsync()
        {
            // Arrange
            var topic        = new TopicName("test");
            var clientMock   = new Mock <IAdminClient>();
            var client       = clientMock.Object;
            var timeout      = 1000;
            var loader       = new TopicWatermarkLoader(topic, client, timeout);
            var consumerMock = new Mock <IConsumer <object, object> >();

            IConsumer <object, object> consumerFactory() => consumerMock.Object;

            var adminClientPartition = new TopicPartition(topic.Value, new Partition(1));

            var adminParitions = new[] { adminClientPartition };

            var borkerMeta = new BrokerMetadata(1, "testHost", 1000);

            var partitionMeta = new PartitionMetadata(1, 1, new[] { 1 }, new[] { 1 }, null);

            var topicMeta = new TopicMetadata(topic.Value, new[] { partitionMeta }.ToList(), null);

            var meta = new Confluent.Kafka.Metadata(
                new[] { borkerMeta }.ToList(),
                new[] { topicMeta }.ToList(), 1, "test"
                );

            clientMock.Setup(c => c.GetMetadata(topic.Value, TimeSpan.FromSeconds(timeout))).Returns(meta);

            var offets = new WatermarkOffsets(new Offset(1), new Offset(2));

            consumerMock.Setup(x => x.QueryWatermarkOffsets(adminClientPartition, TimeSpan.FromSeconds(timeout))).Returns(offets);

            TopicWatermark result = null !;

            // Act
            var exception = await Record.ExceptionAsync(async() => result = await loader.LoadWatermarksAsync(consumerFactory, CancellationToken.None));

            // Assert
            exception.Should().BeNull();

            consumerMock.Verify(x => x.Close(), Times.Once);

            consumerMock.Verify(x => x.Dispose(), Times.Once);

            result.Should().NotBeNull();

            var watermarks = result.Watermarks.ToList();

            watermarks.Should().ContainSingle();

            clientMock.Verify(c => c.GetMetadata(topic.Value, TimeSpan.FromSeconds(timeout)), Times.Once);

            consumerMock.Verify(x => x.QueryWatermarkOffsets(adminClientPartition, TimeSpan.FromSeconds(timeout)), Times.Once);

            watermarks.Single().TopicName.Should().Be(topic);

            watermarks.Single().Partition.Value.Should().Be(partitionMeta.PartitionId);

            watermarks.Single().Offset.Should().Be(offets);
        }