Skip to content

Commit a83293a

Browse files
committed
Update the NetworkObjectOwnershipPropertiesTests to work with rust
1 parent 0ced5ce commit a83293a

File tree

1 file changed

+28
-51
lines changed

1 file changed

+28
-51
lines changed

com.unity.netcode.gameobjects/Tests/Runtime/NetworkObject/NetworkObjectOwnershipPropertiesTests.cs

Lines changed: 28 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)