66using Cysharp . Runtime . Multicast . Remoting ;
77using Multicaster . Tests ;
88using StackExchange . Redis ;
9+
910using Testcontainers . Redis ;
1011
1112namespace Multicaster . Distributed . Redis . Tests ;
@@ -101,7 +102,6 @@ public async Task DisposeAndUnsubscribe()
101102 Assert . Equal ( [ CreateJsonSerializedInvocation ( nameof ( ITestReceiver . Parameter_One ) , [ 1234 ] ) , CreateJsonSerializedInvocation ( nameof ( ITestReceiver . Parameter_One ) , [ 5678 ] ) ] , receiverD . Writer . Written ) ;
102103 }
103104
104-
105105 [ Fact ]
106106 public async Task RemoveAllMembersAndUnsubscribe ( )
107107 {
@@ -113,9 +113,16 @@ public async Task RemoveAllMembersAndUnsubscribe()
113113 var receiverC = TestRedisReceiverHelper . CreateReceiverSet ( proxyFactory , serializer ) ;
114114 var receiverD = TestRedisReceiverHelper . CreateReceiverSet ( proxyFactory , serializer ) ;
115115
116- IMulticastGroupProvider groupProvider = new RedisGroupProvider ( proxyFactory , serializer , new RedisGroupOptions ( ) { ConnectionString = _redisContainer . GetConnectionString ( ) } ) ;
116+ var profiler = new AsyncLocalSeRedisProfiler ( ) ;
117+ var conn = await ConnectionMultiplexer . ConnectAsync ( _redisContainer . GetConnectionString ( ) ) ;
118+ conn . RegisterProfiler ( profiler . GetSession ) ;
119+ IMulticastGroupProvider groupProvider = new RedisGroupProvider ( proxyFactory , serializer , new RedisGroupOptions ( ) { ConnectionMultiplexer = conn } ) ;
117120 var group = groupProvider . GetOrAddSynchronousGroup < Guid , ITestReceiver > ( "MyGroup" ) ;
118- IMulticastGroupProvider groupProvider2 = new RedisGroupProvider ( proxyFactory , serializer , new RedisGroupOptions ( ) { ConnectionString = _redisContainer . GetConnectionString ( ) } ) ;
121+
122+ var profiler2 = new AsyncLocalSeRedisProfiler ( ) ;
123+ var conn2 = await ConnectionMultiplexer . ConnectAsync ( _redisContainer . GetConnectionString ( ) ) ;
124+ conn2 . RegisterProfiler ( profiler2 . GetSession ) ;
125+ IMulticastGroupProvider groupProvider2 = new RedisGroupProvider ( proxyFactory , serializer , new RedisGroupOptions ( ) { ConnectionMultiplexer = conn2 } ) ;
119126 using var group2 = groupProvider2 . GetOrAddSynchronousGroup < Guid , ITestReceiver > ( "MyGroup" ) ;
120127
121128 // Act
@@ -136,11 +143,19 @@ public async Task RemoveAllMembersAndUnsubscribe()
136143 // We need to wait to receive the message from Redis.
137144 await Task . Delay ( 100 ) ;
138145
146+ // Get published Redis commands on `conn`.
147+ var publishedRedisCommands = profiler . GetSession ( ) . FinishProfiling ( ) . ToArray ( ) ;
148+ var publishedRedisCommands2 = profiler2 . GetSession ( ) . FinishProfiling ( ) . ToArray ( ) ;
149+
139150 // Assert
140151 Assert . Equal ( [ CreateJsonSerializedInvocation ( nameof ( ITestReceiver . Parameter_One ) , [ 1234 ] ) ] , receiverA . Writer . Written ) ;
141152 Assert . Equal ( [ CreateJsonSerializedInvocation ( nameof ( ITestReceiver . Parameter_One ) , [ 1234 ] ) ] , receiverB . Writer . Written ) ;
142153 Assert . Equal ( [ CreateJsonSerializedInvocation ( nameof ( ITestReceiver . Parameter_One ) , [ 1234 ] ) , CreateJsonSerializedInvocation ( nameof ( ITestReceiver . Parameter_One ) , [ 5678 ] ) ] , receiverC . Writer . Written ) ;
143154 Assert . Equal ( [ CreateJsonSerializedInvocation ( nameof ( ITestReceiver . Parameter_One ) , [ 1234 ] ) , CreateJsonSerializedInvocation ( nameof ( ITestReceiver . Parameter_One ) , [ 5678 ] ) ] , receiverD . Writer . Written ) ;
155+ Assert . Equal ( 3 , publishedRedisCommands . Length ) ;
156+ Assert . Equal ( [ "SUBSCRIBE" , "PUBLISH" , "UNSUBSCRIBE" ] , publishedRedisCommands . Select ( x => x . Command ) ) ;
157+ Assert . Equal ( 2 , publishedRedisCommands2 . Length ) ;
158+ Assert . Equal ( [ "SUBSCRIBE" , "PUBLISH" ] , publishedRedisCommands2 . Select ( x => x . Command ) ) ;
144159 }
145160
146161 [ Fact ]
0 commit comments