public async Task UpdateOrCreateOffsetConsumerGroupExistsTest() { // Creating a broker router and a protocol gateway for the producer and consumer var brokerRouter = new BrokerRouter(_kafkaUri, new ConnectionFactory(), _config); var partitionId = 0; var consumerGroup = TestConfig.ConsumerName(); var topicName = TestConfig.TopicName(); var offest = 5; var newOffset = 10; await brokerRouter.GetTopicOffsetAsync(topicName, partitionId, CancellationToken.None); await brokerRouter.CommitTopicOffsetAsync(topicName, partitionId, consumerGroup, offest, CancellationToken.None); var res = await brokerRouter.GetTopicOffsetAsync(topicName, partitionId, consumerGroup, CancellationToken.None); Assert.AreEqual(offest, res.Offset); await brokerRouter.CommitTopicOffsetAsync(topicName, partitionId, consumerGroup, newOffset, CancellationToken.None); res = await brokerRouter.GetTopicOffsetAsync(topicName, partitionId, consumerGroup, CancellationToken.None); Assert.AreEqual(newOffset, res.Offset); }
public async Task OffsetCommitShouldStoreAndReturnSuccess() { const int partitionId = 0; var router = new BrokerRouter(_options); await router.GetTopicMetadataAsync(TestConfig.TopicName(), CancellationToken.None); var conn = router.GetBrokerRoute(TestConfig.TopicName(), partitionId); // ensure the group exists var group = new GroupCoordinatorRequest(TestConfig.ConsumerName()); var groupResponse = await conn.Connection.SendAsync(group, CancellationToken.None); Assert.That(groupResponse, Is.Not.Null); Assert.That(groupResponse.ErrorCode, Is.EqualTo(ErrorResponseCode.None)); var commit = new OffsetCommitRequest(group.GroupId, new [] { new OffsetCommitRequest.Topic(TestConfig.TopicName(), partitionId, 10, null) }); var response = await conn.Connection.SendAsync(commit, CancellationToken.None); var topic = response.Topics.FirstOrDefault(); Assert.That(topic, Is.Not.Null); Assert.That(topic.ErrorCode, Is.EqualTo(ErrorResponseCode.None)); router.Dispose(); }
public async Task FetchOffsetTopicDoesntExistTest() { // Creating a broker router and a protocol gateway for the producer and consumer var brokerRouter = new BrokerRouter(_kafkaUri, new ConnectionFactory(), _config); var topic = TestConfig.TopicName(); var consumerGroup = TestConfig.ConsumerName(); await brokerRouter.GetTopicOffsetAsync(topic, _partitionId, consumerGroup, CancellationToken.None); }
public async Task FetchOffsetPartitionDoesntExistTest() { // Creating a broker router and a protocol gateway for the producer and consumer var brokerRouter = new BrokerRouter(_kafkaUri, new ConnectionFactory(), _config); var partitionId = 100; var consumerGroup = TestConfig.ConsumerName(); var topicName = TestConfig.TopicName(); Assert.ThrowsAsync <CachedMetadataException>(async() => await brokerRouter.GetTopicOffsetAsync(topicName, partitionId, consumerGroup, CancellationToken.None)); }
public async Task UpdateOrCreateOffsetNegativeOffsetTest() { // Creating a broker router and a protocol gateway for the producer and consumer var brokerRouter = new BrokerRouter(_kafkaUri, new ConnectionFactory(), _config); var partitionId = 0; var topic = TestConfig.TopicName(); var consumerGroup = TestConfig.ConsumerName(); var offest = -5; Assert.ThrowsAsync <ArgumentOutOfRangeException>(async() => await brokerRouter.CommitTopicOffsetAsync(topic, partitionId, consumerGroup, offest, CancellationToken.None)); }
public async Task ConsumerMetadataRequestShouldReturnWithoutError() { using (var router = new BrokerRouter(_options)) { var conn = await router.GetBrokerRouteAsync(TestConfig.TopicName(), 0, CancellationToken.None); var request = new GroupCoordinatorRequest(TestConfig.ConsumerName()); var response = await conn.Connection.SendAsync(request, CancellationToken.None); Assert.That(response, Is.Not.Null); Assert.That(response.ErrorCode, Is.EqualTo(ErrorResponseCode.None)); } }
public async Task FetchOffsetConsumerGroupArgumentNull([Values(null, "")] string group) { // Creating a broker router and a protocol gateway for the producer and consumer var brokerRouter = new BrokerRouter(_kafkaUri, new ConnectionFactory(), _config); var partitionId = 0; var consumerGroup = TestConfig.ConsumerName(); var topicName = TestConfig.TopicName(); var offset = 5; await brokerRouter.CommitTopicOffsetAsync(topicName, partitionId, consumerGroup, offset, CancellationToken.None); Assert.ThrowsAsync <ArgumentNullException>(async() => await brokerRouter.GetTopicOffsetAsync(topicName, partitionId, group, CancellationToken.None)); }
public async Task OffsetCommitShouldStoreOffsetValue() { const int partitionId = 0; const long offset = 99; var router = new BrokerRouter(_options); await router.GetTopicMetadataAsync(TestConfig.TopicName(), CancellationToken.None); var conn = router.GetBrokerRoute(TestConfig.TopicName(), partitionId); // ensure the group exists var group = new GroupCoordinatorRequest(TestConfig.ConsumerName()); var groupResponse = await conn.Connection.SendAsync(group, CancellationToken.None); Assert.That(groupResponse, Is.Not.Null); Assert.That(groupResponse.ErrorCode, Is.EqualTo(ErrorResponseCode.None)); var commit = new OffsetCommitRequest(group.GroupId, new [] { new OffsetCommitRequest.Topic(TestConfig.TopicName(), partitionId, offset, null) }); var commitResponse = await conn.Connection.SendAsync(commit, CancellationToken.None); var commitTopic = commitResponse.Topics.SingleOrDefault(); Assert.That(commitTopic, Is.Not.Null); Assert.That(commitTopic.ErrorCode, Is.EqualTo(ErrorResponseCode.None)); var fetch = new OffsetFetchRequest(TestConfig.ConsumerName(), new TopicPartition(TestConfig.TopicName(), partitionId)); var fetchResponse = await conn.Connection.SendAsync(fetch, CancellationToken.None); var fetchTopic = fetchResponse.Topics.SingleOrDefault(); Assert.That(fetchTopic, Is.Not.Null); Assert.That(fetchTopic.ErrorCode, Is.EqualTo(ErrorResponseCode.None)); Assert.That(fetchTopic.Offset, Is.EqualTo(offset)); router.Dispose(); }