@@ -45,22 +45,24 @@ final class ActorSingletonPluginClusteredTests: ClusteredNodesTestBase {
4545 settings. serialization. registerCodable ( for: GreeterSingleton . Message. self, underId: 10001 )
4646 }
4747
48+ // Bring up `ActorSingletonProxy` before setting up cluster (https://github.com/apple/swift-distributed-actors/issues/463)
49+ let ref1 = try first. singleton. host ( GreeterSingleton . Message. self, settings: singletonSettings, GreeterSingleton . makeBehavior ( instance: GreeterSingleton ( " Hello-1 " ) ) )
50+ let ref2 = try second. singleton. host ( GreeterSingleton . Message. self, settings: singletonSettings, GreeterSingleton . makeBehavior ( instance: GreeterSingleton ( " Hello-2 " ) ) )
51+ let ref3 = try third. singleton. host ( GreeterSingleton . Message. self, settings: singletonSettings, GreeterSingleton . makeBehavior ( instance: GreeterSingleton ( " Hello-3 " ) ) )
52+
4853 first. cluster. join ( node: second. cluster. node. node)
4954 third. cluster. join ( node: second. cluster. node. node)
5055
5156 // `first` will be the leader (lowest address) and runs the singleton
5257 try self . ensureNodes ( . up, within: . seconds( 10 ) , nodes: first. cluster. node, second. cluster. node, third. cluster. node)
5358
5459 let replyProbe1 = self . testKit ( first) . spawnTestProbe ( expecting: String . self)
55- let ref1 = try first. singleton. host ( GreeterSingleton . Message. self, settings: singletonSettings, GreeterSingleton . makeBehavior ( instance: GreeterSingleton ( " Hello-1 " ) ) )
5660 ref1. tell ( . greet( name: " Charlie " , _replyTo: replyProbe1. ref) )
5761
5862 let replyProbe2 = self . testKit ( second) . spawnTestProbe ( expecting: String . self)
59- let ref2 = try second. singleton. host ( GreeterSingleton . Message. self, settings: singletonSettings, GreeterSingleton . makeBehavior ( instance: GreeterSingleton ( " Hello-2 " ) ) )
6063 ref2. tell ( . greet( name: " Charlie " , _replyTo: replyProbe2. ref) )
6164
6265 let replyProbe3 = self . testKit ( third) . spawnTestProbe ( expecting: String . self)
63- let ref3 = try third. singleton. host ( GreeterSingleton . Message. self, settings: singletonSettings, GreeterSingleton . makeBehavior ( instance: GreeterSingleton ( " Hello-3 " ) ) )
6466 ref3. tell ( . greet( name: " Charlie " , _replyTo: replyProbe3. ref) )
6567
6668 try replyProbe1. expectMessage ( " Hello-1 Charlie! " )
@@ -159,26 +161,26 @@ final class ActorSingletonPluginClusteredTests: ClusteredNodesTestBase {
159161 settings. serialization. registerCodable ( for: GreeterSingleton . Message. self, underId: 10001 )
160162 }
161163
164+ // Bring up `ActorSingletonProxy` before setting up cluster (https://github.com/apple/swift-distributed-actors/issues/463)
165+ let ref1 = try first. singleton. host ( GreeterSingleton . Message. self, settings: singletonSettings, GreeterSingleton . makeBehavior ( instance: GreeterSingleton ( " Hello-1 " ) ) )
166+ let ref2 = try second. singleton. host ( GreeterSingleton . Message. self, settings: singletonSettings, GreeterSingleton . makeBehavior ( instance: GreeterSingleton ( " Hello-2 " ) ) )
167+ let ref3 = try third. singleton. host ( GreeterSingleton . Message. self, settings: singletonSettings, GreeterSingleton . makeBehavior ( instance: GreeterSingleton ( " Hello-3 " ) ) )
168+ _ = try fourth. singleton. host ( GreeterSingleton . Message. self, settings: singletonSettings, GreeterSingleton . makeBehavior ( instance: GreeterSingleton ( " Hello-4 " ) ) )
169+
162170 first. cluster. join ( node: second. cluster. node. node)
163171 third. cluster. join ( node: second. cluster. node. node)
164172
165173 try self . ensureNodes ( . up, within: . seconds( 10 ) , nodes: first. cluster. node, second. cluster. node, third. cluster. node)
166174
167175 let replyProbe1 = self . testKit ( first) . spawnTestProbe ( expecting: String . self)
168- let ref1 = try first. singleton. host ( GreeterSingleton . Message. self, settings: singletonSettings, GreeterSingleton . makeBehavior ( instance: GreeterSingleton ( " Hello-1 " ) ) )
169176 ref1. tell ( . greet( name: " Charlie " , _replyTo: replyProbe1. ref) )
170177
171178 let replyProbe2 = self . testKit ( second) . spawnTestProbe ( expecting: String . self)
172- let ref2 = try second. singleton. host ( GreeterSingleton . Message. self, settings: singletonSettings, GreeterSingleton . makeBehavior ( instance: GreeterSingleton ( " Hello-2 " ) ) )
173179 ref2. tell ( . greet( name: " Charlie " , _replyTo: replyProbe2. ref) )
174180
175181 let replyProbe3 = self . testKit ( third) . spawnTestProbe ( expecting: String . self)
176- let ref3 = try third. singleton. host ( GreeterSingleton . Message. self, settings: singletonSettings, GreeterSingleton . makeBehavior ( instance: GreeterSingleton ( " Hello-3 " ) ) )
177182 ref3. tell ( . greet( name: " Charlie " , _replyTo: replyProbe3. ref) )
178183
179- // Spawn the singleton on `fourth`
180- _ = try fourth. singleton. host ( GreeterSingleton . Message. self, settings: singletonSettings, GreeterSingleton . makeBehavior ( instance: GreeterSingleton ( " Hello-4 " ) ) )
181-
182184 // `first` has the lowest address so it should be the leader and singleton
183185 try replyProbe1. expectMessage ( " Hello-1 Charlie! " )
184186 try replyProbe2. expectMessage ( " Hello-1 Charlie! " )
0 commit comments