Skip to content

Commit 8eb0e81

Browse files
authored
Merge pull request #22 from Cysharp/feature/AddEmptyGroupTest
Add tests
2 parents 7f45cf6 + 6312635 commit 8eb0e81

File tree

2 files changed

+59
-1
lines changed

2 files changed

+59
-1
lines changed

test/Multicaster.Distributed.Nats.Tests/NatsGroupTest.cs

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -652,7 +652,7 @@ public async Task KeysAreNotGuid()
652652
group2.Single(receiverC.Id.ToString()).Parameter_One(5432);
653653
group2.Except([receiverA.Id.ToString(), receiverB.Id.ToString(), receiverC.Id.ToString()]).Parameter_One(7654);
654654

655-
// We need to wait to receive the message from Redis.
655+
// We need to wait to receive the message from NATS.
656656
await Task.Delay(500);
657657

658658
// Assert
@@ -676,6 +676,8 @@ public async Task UseSameNameGroupAfterDispose()
676676
{
677677
var group = groupProvider.GetOrAddSynchronousGroup<string, ITestReceiver>("MyGroup");
678678
group.Add(receiverA.Id.ToString(), receiverA.Proxy);
679+
// Wait for subscriptions to be established.
680+
await Task.Delay(250);
679681

680682
group.All.Parameter_One(1234);
681683
// We need to wait to receive the message from NATS.
@@ -705,4 +707,34 @@ public async Task UseSameNameGroupAfterDispose()
705707
group.Dispose();
706708
}
707709
}
710+
711+
[Fact]
712+
public async Task InvokeViaLocalEmptyGroup()
713+
{
714+
// Arrange
715+
var proxyFactory = DynamicRemoteProxyFactory.Instance;
716+
var serializer = new TestJsonRemoteSerializer();
717+
IMulticastGroupProvider groupProvider = new NatsGroupProvider(proxyFactory, serializer, new NatsGroupOptions() { Url = _natsContainer.GetConnectionString() });
718+
var receiverA = TestNatsReceiverHelper.CreateReceiverSet(proxyFactory, serializer);
719+
var receiverB = TestNatsReceiverHelper.CreateReceiverSet(proxyFactory, serializer);
720+
721+
// Act
722+
using var group1 = groupProvider.GetOrAddSynchronousGroup<string, ITestReceiver>("MyGroup");
723+
group1.Add(receiverA.Id.ToString(), receiverA.Proxy);
724+
group1.Add(receiverB.Id.ToString(), receiverB.Proxy);
725+
726+
// Wait for subscriptions to be established.
727+
await Task.Delay(250);
728+
729+
using var group2 = groupProvider.GetOrAddSynchronousGroup<string, ITestReceiver>("MyGroup");
730+
731+
group2.All.Parameter_One(1234); // This group is empty, so the message will be sent to backplane.
732+
733+
// We need to wait to receive the message from NATS.
734+
await Task.Delay(550);
735+
736+
// Assert
737+
Assert.Equal([CreateJsonSerializedInvocation(nameof(ITestReceiver.Parameter_One), [1234])], receiverA.Writer.Written);
738+
Assert.Equal([CreateJsonSerializedInvocation(nameof(ITestReceiver.Parameter_One), [1234])], receiverB.Writer.Written);
739+
}
708740
}

test/Multicaster.Distributed.Redis.Tests/RedisGroupTest.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,4 +657,30 @@ public async Task UseSameNameGroupAfterDispose()
657657
group.Dispose();
658658
}
659659
}
660+
661+
[Fact]
662+
public async Task InvokeViaLocalEmptyGroup()
663+
{
664+
// Arrange
665+
var proxyFactory = DynamicRemoteProxyFactory.Instance;
666+
var serializer = new TestJsonRemoteSerializer();
667+
IMulticastGroupProvider groupProvider = new RedisGroupProvider(proxyFactory, serializer, new RedisGroupOptions() { ConnectionString = _redisContainer.GetConnectionString() });
668+
var receiverA = TestRedisReceiverHelper.CreateReceiverSet(proxyFactory, serializer);
669+
var receiverB = TestRedisReceiverHelper.CreateReceiverSet(proxyFactory, serializer);
670+
671+
// Act
672+
using var group1 = groupProvider.GetOrAddSynchronousGroup<string, ITestReceiver>("MyGroup");
673+
group1.Add(receiverA.Id.ToString(), receiverA.Proxy);
674+
group1.Add(receiverB.Id.ToString(), receiverB.Proxy);
675+
using var group2 = groupProvider.GetOrAddSynchronousGroup<string, ITestReceiver>("MyGroup");
676+
677+
group2.All.Parameter_One(1234); // This group is empty, so the message will be sent to backplane.
678+
679+
// We need to wait to receive the message from Redis.
680+
await Task.Delay(100);
681+
682+
// Assert
683+
Assert.Equal([CreateJsonSerializedInvocation(nameof(ITestReceiver.Parameter_One), [1234])], receiverA.Writer.Written);
684+
Assert.Equal([CreateJsonSerializedInvocation(nameof(ITestReceiver.Parameter_One), [1234])], receiverB.Writer.Written);
685+
}
660686
}

0 commit comments

Comments
 (0)