public async Task CanBlockBuffer() { // Arrange var ra = new RabbitAdapter(1); var message1 = new BasicDeliverEventArgs(); var message2 = new BasicDeliverEventArgs(); // Act ra.ConsumeData(null, message1); var consume2Task = Task.Run(() => { ra.ConsumeData(null, message2); }); // Assert await Task.Delay(1000).ConfigureAwait(false); // Attempts to ensure that consume2 Task will never finished consume2Task.IsCompleted.Should().BeFalse(); var _ = ra.GetAsyncEnumerator().MoveNextAsync(); await Task.Delay(1000).ConfigureAwait(false); // Attempts to ensure that possible spinWait delay will finished consume2Task.IsCompleted.Should().BeTrue(); }
public void CaRunConsumeWithNotNullMessage() { // Arrange var ra = new RabbitAdapter(1); // Act var exception = Record.Exception( () => ra.ConsumeData(null, new RabbitMQ.Client.Events.BasicDeliverEventArgs())); // Assert exception.Should().BeNull(); }
public void CanNotRunConsumeWithNullMessage() { // Arrange var ra = new RabbitAdapter(1); // Act var exception = Record.Exception( () => ra.ConsumeData(null, null !)); // Assert exception.Should().NotBeNull().And.BeOfType <ArgumentNullException>(); }
public void CaRunConsumeWithNotNullMessageWithAck() { // Arrange var message = new RabbitMQ.Client.Events.BasicDeliverEventArgs() { DeliveryTag = 42 }; ulong ackId = 0; var ra = new RabbitAdapter(1, id => { ackId = id; }); // Act ra.ConsumeData(null, message); // Assert ackId.Should().Be(message.DeliveryTag); }
public async Task CanReadEnumerator() { // Arrange var ra = new RabbitAdapter(1); var message = new BasicDeliverEventArgs() { DeliveryTag = 1 }; // Act var enumerator = ra.GetAsyncEnumerator(); var t = enumerator.MoveNextAsync(); // Assert t.IsCompleted.Should().BeFalse(); ra.ConsumeData(null, message); await Task.Delay(1000).ConfigureAwait(false); // Attempts to ensure that continuation from WaitToReadAsync in enumerator will be finished t.IsCompleted.Should().BeTrue(); enumerator.Current.Should().Be(message); }