@@ -31,12 +31,6 @@ private class DummyNetworkBehaviour : NetworkBehaviour
3131 private bool m_InitialOwnerOwnedBySever ;
3232 private bool m_TargetOwnerOwnedBySever ;
3333
34- // TODO: [CmbServiceTests] Adapt to run with the service
35- protected override bool UseCMBService ( )
36- {
37- return false ;
38- }
39-
4034 public NetworkObjectOwnershipPropertiesTests ( NetworkTopologyTypes networkTopologyType ) : base ( networkTopologyType ) { }
4135
4236 protected override IEnumerator OnTearDown ( )
@@ -57,51 +51,29 @@ protected override void OnServerAndClientsCreated()
5751
5852 public enum InstanceTypes
5953 {
60- Server ,
61- Client
54+ Authority ,
55+ NonAuthority ,
6256 }
6357
64- private StringBuilder m_OwnershipPropagatedFailures = new StringBuilder ( ) ;
65- private bool OwnershipPropagated ( )
58+ private bool OwnershipPropagated ( StringBuilder errorLog )
6659 {
6760 var conditionMet = true ;
68- m_OwnershipPropagatedFailures . Clear ( ) ;
69- // In distributed authority mode, we will check client owner to DAHost owner with InstanceTypes.Server and client owner to client
70- // when InstanceTypes.Client
71- if ( m_DistributedAuthority )
61+
62+ foreach ( var manager in m_NetworkManagers )
7263 {
73- if ( ! m_ClientNetworkManagers [ 1 ] . SpawnManager . GetClientOwnedObjects ( m_NextTargetOwner . LocalClientId ) . Any ( x => x . NetworkObjectId == m_OwnerSpawnedInstance . NetworkObjectId ) )
74- {
75- conditionMet = false ;
76- m_OwnershipPropagatedFailures . AppendLine ( $ "Client-{ m_ClientNetworkManagers [ 1 ] . LocalClientId } has no ownership entry for { m_OwnerSpawnedInstance . name } ({ m_OwnerSpawnedInstance . NetworkObjectId } )") ;
77- }
78- if ( ! m_ClientNetworkManagers [ 0 ] . SpawnManager . GetClientOwnedObjects ( m_NextTargetOwner . LocalClientId ) . Any ( x => x . NetworkObjectId == m_OwnerSpawnedInstance . NetworkObjectId ) )
79- {
80- conditionMet = false ;
81- m_OwnershipPropagatedFailures . AppendLine ( $ "Client-{ m_ClientNetworkManagers [ 0 ] . LocalClientId } has no ownership entry for { m_OwnerSpawnedInstance . name } ({ m_OwnerSpawnedInstance . NetworkObjectId } )") ;
82- }
83- if ( ! m_ServerNetworkManager . SpawnManager . GetClientOwnedObjects ( m_NextTargetOwner . LocalClientId ) . Any ( x => x . NetworkObjectId == m_OwnerSpawnedInstance . NetworkObjectId ) )
64+ if ( ! manager . SpawnManager . SpawnedObjects . TryGetValue ( m_OwnerSpawnedInstance . NetworkObjectId , out var networkObject ) )
8465 {
8566 conditionMet = false ;
86- m_OwnershipPropagatedFailures . AppendLine ( $ "Client-{ m_ServerNetworkManager . LocalClientId } has no ownership entry for { m_OwnerSpawnedInstance . name } ({ m_OwnerSpawnedInstance . NetworkObjectId } )") ;
87- }
88- }
89- else
90- {
91- if ( m_NextTargetOwner != m_ServerNetworkManager )
92- {
93- if ( ! m_NextTargetOwner . SpawnManager . GetClientOwnedObjects ( m_NextTargetOwner . LocalClientId ) . Any ( x => x . NetworkObjectId == m_OwnerSpawnedInstance . NetworkObjectId ) )
94- {
95- conditionMet = false ;
96- m_OwnershipPropagatedFailures . AppendLine ( $ "Client-{ m_NextTargetOwner . LocalClientId } has no ownership entry for { m_OwnerSpawnedInstance . name } ({ m_OwnerSpawnedInstance . NetworkObjectId } )") ;
97- }
67+ errorLog . AppendLine ( $ "Client-{ manager . LocalClientId } has not spawned { m_OwnerSpawnedInstance . name } ") ;
68+
9869 }
99- if ( ! m_ServerNetworkManager . SpawnManager . GetClientOwnedObjects ( m_NextTargetOwner . LocalClientId ) . Any ( x => x . NetworkObjectId == m_OwnerSpawnedInstance . NetworkObjectId ) )
70+ else if ( networkObject . OwnerClientId != m_NextTargetOwner . LocalClientId )
10071 {
10172 conditionMet = false ;
102- m_OwnershipPropagatedFailures . AppendLine ( $ "Client-{ m_ServerNetworkManager . LocalClientId } has no ownership entry for { m_OwnerSpawnedInstance . name } ({ m_OwnerSpawnedInstance . NetworkObjectId } )") ;
73+ errorLog . AppendLine ( $ "Client-{ manager . LocalClientId } has incorrect ownership set for { m_OwnerSpawnedInstance . name } ({ m_OwnerSpawnedInstance . NetworkObjectId } )") ;
10374 }
10475 }
76+
10577 return conditionMet ;
10678 }
10779
@@ -128,19 +100,23 @@ private void ValidateOwnerShipProperties(bool targetIsOwner = false)
128100
129101
130102 [ UnityTest ]
131- public IEnumerator ValidatePropertiesWithOwnershipChanges ( [ Values ( InstanceTypes . Server , InstanceTypes . Client ) ] InstanceTypes instanceType )
103+ public IEnumerator ValidatePropertiesWithOwnershipChanges ( [ Values ( InstanceTypes . Authority , InstanceTypes . NonAuthority ) ] InstanceTypes instanceType )
132104 {
133- m_NextTargetOwner = instanceType == InstanceTypes . Server ? m_ServerNetworkManager : m_ClientNetworkManagers [ 0 ] ;
134- m_InitialOwner = instanceType == InstanceTypes . Client ? m_ServerNetworkManager : m_ClientNetworkManagers [ 0 ] ;
105+ var authority = GetAuthorityNetworkManager ( ) ;
106+ var firstClient = GetNonAuthorityNetworkManager ( 0 ) ;
107+ var secondClient = GetNonAuthorityNetworkManager ( 1 ) ;
135108
136- // In distributed authority mode, we will check client owner to DAHost owner with InstanceTypes.Server and client owner to client
137- // when InstanceTypes.Client
109+ m_NextTargetOwner = instanceType == InstanceTypes . Authority ? authority : firstClient ;
110+ m_InitialOwner = instanceType == InstanceTypes . NonAuthority ? authority : firstClient ;
111+
112+ // In distributed authority mode, we will check client owner to DAHost owner with InstanceTypes.Authority and client owner to client
113+ // when InstanceTypes.NonAuthority
138114 if ( m_DistributedAuthority )
139115 {
140- m_InitialOwner = m_ClientNetworkManagers [ 0 ] ;
141- if ( instanceType == InstanceTypes . Client )
116+ m_InitialOwner = firstClient ;
117+ if ( instanceType == InstanceTypes . NonAuthority )
142118 {
143- m_NextTargetOwner = m_ClientNetworkManagers [ 1 ] ;
119+ m_NextTargetOwner = secondClient ;
144120 }
145121 m_PrefabToSpawn . GetComponent < NetworkObject > ( ) . SetOwnershipStatus ( NetworkObject . OwnershipStatus . Transferable ) ;
146122 }
@@ -174,16 +150,17 @@ public IEnumerator ValidatePropertiesWithOwnershipChanges([Values(InstanceTypes.
174150 {
175151 // Use the target client's instance to change ownership
176152 m_TargetOwnerInstance . ChangeOwnership ( m_NextTargetOwner . LocalClientId ) ;
177- if ( instanceType == InstanceTypes . Client )
153+ if ( instanceType == InstanceTypes . NonAuthority )
178154 {
179- var networkManagersList = new System . Collections . Generic . List < NetworkManager > ( ) { m_ServerNetworkManager , m_ClientNetworkManagers [ 0 ] } ;
155+ var networkManagersList = new System . Collections . Generic . List < NetworkManager > { authority , firstClient } ;
180156 // Provide enough time for the client to receive and process the spawned message.
181157 yield return WaitForMessageReceived < ChangeOwnershipMessage > ( networkManagersList ) ;
182158 }
183159 else
184160 {
161+ var networkManagersList = new System . Collections . Generic . List < NetworkManager > { firstClient , secondClient } ;
185162 // Provide enough time for the client to receive and process the change in ownership message.
186- yield return WaitForMessageReceived < ChangeOwnershipMessage > ( m_ClientNetworkManagers . ToList ( ) ) ;
163+ yield return WaitForMessageReceived < ChangeOwnershipMessage > ( networkManagersList ) ;
187164 }
188165 }
189166 else
@@ -195,7 +172,7 @@ public IEnumerator ValidatePropertiesWithOwnershipChanges([Values(InstanceTypes.
195172
196173 // Ensure it's the ownership tables are updated
197174 yield return WaitForConditionOrTimeOut ( OwnershipPropagated ) ;
198- AssertOnTimeout ( $ "Timed out waiting for ownership to propagate!\n { m_OwnershipPropagatedFailures } ") ;
175+ AssertOnTimeout ( $ "Timed out waiting for ownership to propagate!") ;
199176
200177 m_SpawnedInstanceIsOwner = m_OwnerSpawnedInstance . NetworkManager == m_NextTargetOwner ;
201178 if ( m_SpawnedInstanceIsOwner )
0 commit comments