public async Task Bind_PushMessages_EachIsConsumedOnce() { var e1 = new TestEventOne { Content = "Test", Id = Guid.NewGuid() }; var e2 = new TestEventTwo { Content = "Test", Id = Guid.NewGuid() }; var o1 = new TestOffset("a", "1"); var o2 = new TestOffset("a", "2"); _connector.Bind(TestEndpoint.GetDefault()); _broker.Connect(); var consumer = _broker.Consumers.First(); await consumer.TestPush(e1, offset : o1); await consumer.TestPush(e2, offset : o2); await consumer.TestPush(e1, offset : o1); await consumer.TestPush(e2, offset : o2); await consumer.TestPush(e1, offset : o1); _testSubscriber.ReceivedMessages.Count.Should().Be(2); }
public async Task Bind_PushMessagesInBatch_OnlyOffsetOfCommittedBatchStored() { var e = new TestEventOne { Content = "Test", Id = Guid.NewGuid() }; var fail = new TestEventOne { Content = "Test", Id = Guid.NewGuid() }; var o1 = new TestOffset("a", "1"); var o2 = new TestOffset("a", "2"); var o3 = new TestOffset("a", "3"); var o4 = new TestOffset("a", "4"); _connector.Bind(TestEndpoint.GetDefault(), settings: new InboundConnectorSettings { Batch = new Silverback.Messaging.Batch.BatchSettings { Size = 2 } }); _broker.Connect(); _testSubscriber.FailCondition = m => m is TestEventOne m2 && m2.Id == fail.Id; var consumer = _broker.Consumers.First(); try { await consumer.TestPush(e, offset : o1); } catch { } try { await consumer.TestPush(e, offset : o2); } catch { } try { await consumer.TestPush(e, offset : o3); } catch { } try { await consumer.TestPush(fail, offset : o4); } catch { } (await _scopedServiceProvider.GetRequiredService <IOffsetStore>().GetLatestValue("a")).Value.Should().Be("2"); }
public async Task Bind_PushMessagesInBatch_OffsetStored() { var e = new TestEventOne { Content = "Test", Id = Guid.NewGuid() }; var o1 = new TestOffset("a", "1"); var o2 = new TestOffset("b", "1"); var o3 = new TestOffset("a", "2"); _connector.Bind(TestEndpoint.GetDefault(), settings: new InboundConnectorSettings { Batch = new Silverback.Messaging.Batch.BatchSettings { Size = 2 } }); _broker.Connect(); var consumer = _broker.Consumers.First(); await consumer.TestPush(e, offset : o1); await consumer.TestPush(e, offset : o2); await consumer.TestPush(e, offset : o3); await consumer.TestPush(e, offset : o2); await consumer.TestPush(e, offset : o1); _scopedServiceProvider.GetRequiredService <IOffsetStore>().As <InMemoryOffsetStore>().Count.Should().Be(2); }
public async Task Bind_PushMessagesInBatch_EachIsConsumedOnce() { var e = new TestEventOne { Content = "Test", Id = Guid.NewGuid() }; var o1 = new TestOffset("a", "1"); var o2 = new TestOffset("b", "1"); var o3 = new TestOffset("a", "2"); _connector.Bind(TestEndpoint.GetDefault(), settings: new InboundConnectorSettings { Batch = new Silverback.Messaging.Batch.BatchSettings { Size = 2 } }); _broker.Connect(); var consumer = _broker.Consumers.First(); await consumer.TestPush(e, offset : o1); await consumer.TestPush(e, offset : o2); await consumer.TestPush(e, offset : o3); await consumer.TestPush(e, offset : o2); await consumer.TestPush(e, offset : o1); await consumer.TestPush(e, offset : o3); _testSubscriber.ReceivedMessages.OfType <TestEventOne>().Should().HaveCount(3); }
public async Task Bind_PushMessages_OffsetStored() { var e = new TestEventOne { Content = "Test", Id = Guid.NewGuid() }; var o1 = new TestOffset("a", "1"); var o2 = new TestOffset("b", "1"); var o3 = new TestOffset("a", "2"); _connector.Bind(TestEndpoint.GetDefault()); _broker.Connect(); var consumer = _broker.Consumers.First(); await consumer.TestPush(e, offset : o1); await consumer.TestPush(e, offset : o2); await consumer.TestPush(e, offset : o3); await consumer.TestPush(e, offset : o2); await consumer.TestPush(e, offset : o1); _scopedServiceProvider.GetRequiredService <IOffsetStore>().As <InMemoryOffsetStore>().Count.Should().Be(2); }
public async Task Bind_PushMessagesInBatchToMultipleConsumers_OnlyOffsetOfCommittedBatchStored() { var e = new TestEventOne { Content = "Test", Id = Guid.NewGuid() }; var fail = new TestEventOne { Content = "Test", Id = Guid.NewGuid() }; var o1 = new TestOffset("a", "1"); var o2 = new TestOffset("a", "2"); var o3 = new TestOffset("a", "3"); var o4 = new TestOffset("a", "4"); _connector.Bind(TestEndpoint.GetDefault(), settings: new InboundConnectorSettings { Batch = new Silverback.Messaging.Batch.BatchSettings { Size = 2 }, Consumers = 2 }); _broker.Connect(); _testSubscriber.FailCondition = m => m is TestEventOne m2 && m2.Id == fail.Id; var consumer1 = _broker.Consumers[0]; var consumer2 = _broker.Consumers[1]; var tasks = new[] { Task.Run(async() => { try { await consumer1.TestPush(e, offset: o1); await consumer1.TestPush(e, offset: o2); } catch (Exception) { } }), Task.Run(async() => { try { await consumer2.TestPush(e, offset: o3); await consumer2.TestPush(fail, offset: o4); } catch (Exception) { } }) }; await Task.WhenAll(tasks); (await _scopedServiceProvider.GetRequiredService <IOffsetStore>().GetLatestValue("a")).Value.Should().Be("2"); }
private IEnumerator CreateOffset() { TestOffset newOffset = new TestOffset() { Offset = new BindableInt(Random.Range(-100, 101)) }; slider.SetSource(newOffset); Debug.Log("Created new offset with value: " + newOffset.Offset); yield break; }
public void Bind_PushMessagesFromDifferentTopics_EachIsConsumedOnce() { var e = new TestEventOne { Content = "Test", Id = Guid.NewGuid() }; var o1 = new TestOffset("a", "1"); var o2 = new TestOffset("b", "1"); _connector.Bind(TestEndpoint.Default); _broker.Connect(); var consumer = _broker.Consumers.First(); consumer.TestPush(e, offset: o1); consumer.TestPush(e, offset: o2); consumer.TestPush(e, offset: o1); consumer.TestPush(e, offset: o2); consumer.TestPush(e, offset: o1); _testSubscriber.ReceivedMessages.Count.Should().Be(2); }
public void LogProduced_NoEnvelope_Logged() { var endpoint = new TestProducerEndpoint("[dynamic]"); var actualEndpointName = "test1"; var headers = new MessageHeaderCollection { { DefaultMessageHeaders.MessageType, "Message.Type" }, { DefaultMessageHeaders.MessageId, "1234" } }; var brokerMessageIdentifier = new TestOffset("a", "42"); var expectedMessage = "Message produced. | " + "endpointName: test1, " + "messageType: Message.Type, " + "messageId: 1234, " + "unused1: (null), " + "unused2: (null)"; _outboundLogger.LogProduced(endpoint, actualEndpointName, headers, brokerMessageIdentifier); _loggerSubstitute.Received(LogLevel.Information, null, expectedMessage, 1031); }
public void SetTestSubsequentFragmentCRC16(byte[] crc, int offset, int timesUsed) { TestSubsequentFragmentCRC16.Reset(crc, timesUsed); TestOffset.Reset(offset, timesUsed); }
public void SetTestIgnoreSubsequentSegment(int offset, int times) { TestOffset.Reset(offset, times); TestNeedToIgnoreSubsequentSegment.Reset(true, times); }