public async Task ReceiverIsConstructedCorrectly() { var eventHub = "eventHub"; var consumerGroup = "$TestThing"; var partition = "123"; var position = EventPosition.FromEnqueuedTime(DateTimeOffset.Parse("2015-10-25T12:00:00Z")); var priority = 8765; var identifier = "ThisIsAnAwesomeConsumer!"; var partitionMetrics = new LastEnqueuedEventProperties(eventHub, partition); var retryPolicy = Mock.Of <EventHubRetryPolicy>(); var mock = new ObservableReceiverMock(new ClientMock(), consumerGroup, partition, TrackOne.EventPosition.FromEnqueuedTime(position.EnqueuedTime.Value.UtcDateTime), priority, new ReceiverOptions { Identifier = identifier, EnableReceiverRuntimeMetric = true }); var consumer = new TrackOneEventHubConsumer(_ => mock, retryPolicy, partitionMetrics); // Invoke an operation to force the consumer to be lazily instantiated. Otherwise, // construction does not happen. await consumer.ReceiveAsync(0, TimeSpan.Zero, default); Assert.That(mock.ConstructedWith.ConsumerGroup, Is.EqualTo(consumerGroup), "The consumer group should match."); Assert.That(mock.ConstructedWith.Partition, Is.EqualTo(partition), "The partition should match."); Assert.That(TrackOneComparer.IsEventPositionEquivalent(mock.ConstructedWith.Position, position), Is.True, "The starting event position should match."); Assert.That(mock.ConstructedWith.Priority, Is.EqualTo(priority), "The owner level should match."); Assert.That(mock.ConstructedWith.Options.Identifier, Is.EqualTo(identifier), "The consumer identifier should match."); Assert.That(mock.ConstructedWith.Options.EnableReceiverRuntimeMetric, Is.True, "The receiver metrics should be enabled when set in the options."); var consumerRetry = GetRetryPolicy(consumer); Assert.That(consumerRetry, Is.SameAs(retryPolicy), "The consumer retry instance should match."); }
public async Task ReceiveAsyncForwardsParameters() { var maximumEventCount = 666; var maximumWaitTime = TimeSpan.FromMilliseconds(17); var mock = new ObservableReceiverMock(new ClientMock(), "$Default", "0", TrackOne.EventPosition.FromEnd(), null, new ReceiverOptions()); var consumer = new TrackOneEventHubConsumer(_ => mock, Mock.Of <EventHubRetryPolicy>(), null); await consumer.ReceiveAsync(maximumEventCount, maximumWaitTime, CancellationToken.None); Assert.That(mock.ReceiveInvokeWith.MaxCount, Is.EqualTo(maximumEventCount), "The maximum event count should match."); Assert.That(mock.ReceiveInvokeWith.WaitTime, Is.EqualTo(maximumWaitTime), "The maximum wait time should match."); }
public async Task ReceiverIsConstructedCorrectly() { var consumerGroup = "$TestThing"; var partition = "123"; var position = EventPosition.FromEnqueuedTime(DateTime.Parse("2015-10-25T12:00:00Z")); var priority = 8765; var identifier = "ThisIsAnAwesomeConsumer!"; var mock = new ObservableReceiverMock(new ClientMock(), consumerGroup, partition, TrackOne.EventPosition.FromEnqueuedTime(position.EnqueuedTimeUtc.Value), priority, new ReceiverOptions { Identifier = identifier }); var consumer = new TrackOneEventHubConsumer(() => mock); // Invoke an operation to force the consumer to be lazily instantiated. Otherwise, // construction does not happen. await consumer.ReceiveAsync(0, TimeSpan.Zero, default); Assert.That(mock.ConstructedWith.ConsumerGroup, Is.EqualTo(consumerGroup), "The consumer group should match."); Assert.That(mock.ConstructedWith.Partition, Is.EqualTo(partition), "The partition should match."); Assert.That(TrackOneComparer.IsEventPositionEquivalent(mock.ConstructedWith.Position, position), Is.True, "The starting event position should match."); Assert.That(mock.ConstructedWith.Priority, Is.EqualTo(priority), "The ownerlevel should match."); Assert.That(mock.ConstructedWith.Options.Identifier, Is.EqualTo(identifier), "The consumer identifier should match."); }
public async Task ReceiveAsyncSendsAnEmptyEnumerableWhenThereAreNoEvents() { var mock = new ObservableReceiverMock(new ClientMock(), "$Default", "0", TrackOne.EventPosition.FromEnd(), null, new ReceiverOptions()); var consumer = new TrackOneEventHubConsumer(_ => mock, Mock.Of <EventHubRetryPolicy>(), null); var results = await consumer.ReceiveAsync(10, default, default);