Skip to content

Commit f3f4be7

Browse files
test fixes and updates
This "should" constitute the remaining fixes for this PR's adjustments.
1 parent 683d15f commit f3f4be7

File tree

6 files changed

+55
-47
lines changed

6 files changed

+55
-47
lines changed

com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,10 @@ public static void DeregisterNetworkObject(ulong localClientId, ulong networkObj
9999
/// <summary>
100100
/// Total number of clients that should be connected at any point during a test.
101101
/// </summary>
102-
protected int TotalClients => m_UseHost ? m_NumberOfClients + 1 : m_NumberOfClients;
102+
/// <remarks>
103+
/// When using the CMB Service, we ignore if <see cref="m_UseHost"/> is true.
104+
/// </remarks>
105+
protected int TotalClients => m_UseHost && !UseCMBService() ? m_NumberOfClients + 1 : m_NumberOfClients;
103106

104107
protected const uint k_DefaultTickRate = 30;
105108

@@ -222,15 +225,20 @@ protected NetworkManager GetNonAuthorityNetworkManager()
222225
private bool m_UseCmbServiceEnv;
223226

224227
/// <summary>
225-
/// Will set itself once and if already set then return true
228+
/// Will check the environment variable once and then always return the results
229+
/// of the first check.
226230
/// </summary>
231+
/// <remarks>
232+
/// This resets its properties during <see cref="OnOneTimeTearDown"/>, so it will
233+
/// check the environment variable once per test set.
234+
/// </remarks>
227235
/// <returns>true/false</returns>
228-
internal bool UseCMBServiceEnviromentVariableSet()
236+
private bool UseCMBServiceEnviromentVariableSet()
229237
{
230238
if (!m_UseCmbServiceEnv && m_UseCmbServiceEnvString == null)
231239
{
232240
var useCmbService = Environment.GetEnvironmentVariable("USE_CMB_SERVICE") ?? "unset";
233-
m_UseCmbServiceEnv = useCmbService.ToLower() == "true";
241+
m_UseCmbServiceEnv = bool.Parse(useCmbService.ToLower());
234242
}
235243
return m_UseCmbServiceEnv;
236244
}

com.unity.netcode.gameobjects/Tests/Runtime/NetworkBehaviourUpdaterTests.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -168,12 +168,7 @@ public NetworkBehaviourUpdaterTests(HostOrServer hostOrServer, int numberOfClien
168168
SecondType = second
169169
};
170170
// Adjust the client count if connecting to the service.
171-
m_ClientCount = UseCMBServiceEnviromentVariableSet() ? numberOfClients + 1 : numberOfClients;
172-
}
173-
174-
protected override bool UseCMBService()
175-
{
176-
return true;
171+
m_ClientCount = UseCMBService() ? numberOfClients + 1 : numberOfClients;
177172
}
178173

179174
protected override void OnOneTimeTearDown()

com.unity.netcode.gameobjects/Tests/Runtime/NetworkVariable/NetworkVarBufferCopyTest.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,16 @@ public override void OnNetworkSpawn()
101101
base.OnNetworkSpawn();
102102
}
103103
}
104-
protected override int NumberOfClients => 1;
104+
protected override int NumberOfClients => m_ClientCount;
105105

106-
public NetworkVarBufferCopyTest(HostOrServer hostOrServer) : base(hostOrServer) { }
106+
private const int k_ClientCount = 1;
107+
private int m_ClientCount = k_ClientCount;
108+
109+
public NetworkVarBufferCopyTest(HostOrServer hostOrServer) : base(hostOrServer)
110+
{
111+
// Adjust the client count if connecting to the CMB service.
112+
m_ClientCount = UseCMBService() ? k_ClientCount + 1 : k_ClientCount;
113+
}
107114

108115
private static List<DummyNetBehaviour> s_ClientDummyNetBehavioursSpawned = new List<DummyNetBehaviour>();
109116
public static void ClientDummyNetBehaviourSpawned(DummyNetBehaviour dummyNetBehaviour)
@@ -126,7 +133,7 @@ protected override void OnCreatePlayerPrefab()
126133
[UnityTest]
127134
public IEnumerator TestEntireBufferIsCopiedOnNetworkVariableDelta()
128135
{
129-
// This is the *SERVER VERSION* of the *CLIENT PLAYER*
136+
// This is the *SERVER/SESSION OWNER VERSION* of the *CLIENT PLAYER*
130137
var authority = GetAuthorityNetworkManager();
131138
var nonAuthority = GetNonAuthorityNetworkManager();
132139

com.unity.netcode.gameobjects/Tests/Runtime/NetworkVisibilityTests.cs

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -49,35 +49,21 @@ protected override IEnumerator OnServerAndClientsConnected()
4949
[UnityTest]
5050
public IEnumerator HiddenObjectsTest()
5151
{
52-
var expectedCount = NumberOfClients + (m_UseHost ? 1 : 0);
53-
#if UNITY_2023_1_OR_NEWER
54-
yield return WaitForConditionOrTimeOut(() => Object.FindObjectsByType<NetworkVisibilityComponent>(FindObjectsSortMode.None).Where((c) => c.IsSpawned).Count() == expectedCount);
55-
#else
56-
yield return WaitForConditionOrTimeOut(() => Object.FindObjectsOfType<NetworkVisibilityComponent>().Where((c) => c.IsSpawned).Count() == expectedCount);
57-
#endif
58-
59-
Assert.IsFalse(s_GlobalTimeoutHelper.TimedOut, "Timed out waiting for the visible object count to equal 2!");
52+
yield return WaitForConditionOrTimeOut(() => Object.FindObjectsByType<NetworkVisibilityComponent>(FindObjectsSortMode.None).Where((c) => c.IsSpawned).Count() == TotalClients);
53+
AssertOnTimeout($"Timed out waiting for the visible object count to equal {TotalClients}!Actual count {Object.FindObjectsByType<NetworkVisibilityComponent>(FindObjectsSortMode.None).Count(c => c.IsSpawned)}");
6054
}
6155

6256
[UnityTest]
6357
public IEnumerator HideShowAndDeleteTest()
6458
{
65-
var expectedCount = NumberOfClients + (m_UseHost ? 1 : 0);
66-
#if UNITY_2023_1_OR_NEWER
67-
yield return WaitForConditionOrTimeOut(() => Object.FindObjectsByType<NetworkVisibilityComponent>(FindObjectsSortMode.None).Count(c => c.IsSpawned) == expectedCount);
68-
#else
69-
yield return WaitForConditionOrTimeOut(() => Object.FindObjectsOfType<NetworkVisibilityComponent>().Where((c) => c.IsSpawned).Count() == expectedCount);
70-
#endif
71-
AssertOnTimeout($"Timed out waiting for the visible object count to equal 2! Actual count {Object.FindObjectsByType<NetworkVisibilityComponent>(FindObjectsSortMode.None).Count(c => c.IsSpawned)}");
59+
yield return WaitForConditionOrTimeOut(() => Object.FindObjectsByType<NetworkVisibilityComponent>(FindObjectsSortMode.None).Count(c => c.IsSpawned) == TotalClients);
60+
61+
AssertOnTimeout($"Timed out waiting for the visible object count to equal {TotalClients}! Actual count {Object.FindObjectsByType<NetworkVisibilityComponent>(FindObjectsSortMode.None).Count(c => c.IsSpawned)}");
7262

7363
var sessionOwnerNetworkObject = m_SpawnedObject.GetComponent<NetworkObject>();
7464
var nonAuthority = GetNonAuthorityNetworkManager();
7565
sessionOwnerNetworkObject.NetworkHide(nonAuthority.LocalClientId);
76-
#if UNITY_2023_1_OR_NEWER
77-
yield return WaitForConditionOrTimeOut(() => Object.FindObjectsByType<NetworkVisibilityComponent>(FindObjectsSortMode.None).Where((c) => c.IsSpawned).Count() == expectedCount - 1);
78-
#else
79-
yield return WaitForConditionOrTimeOut(() => Object.FindObjectsOfType<NetworkVisibilityComponent>().Where((c) => c.IsSpawned).Count() == expectedCount - 1);
80-
#endif
66+
yield return WaitForConditionOrTimeOut(() => Object.FindObjectsByType<NetworkVisibilityComponent>(FindObjectsSortMode.None).Where((c) => c.IsSpawned).Count() == TotalClients - 1);
8167
AssertOnTimeout($"Timed out waiting for {m_SpawnedObject.name} to be hidden from client!");
8268
var networkObjectId = sessionOwnerNetworkObject.NetworkObjectId;
8369
sessionOwnerNetworkObject.NetworkShow(nonAuthority.LocalClientId);

com.unity.netcode.gameobjects/Tests/Runtime/Physics/NetworkRigidbodyTest.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -339,9 +339,10 @@ protected void Log(string msg)
339339
[TestFixture(HostOrServer.DAHost, ContactEventTypes.WithInfo)]
340340
internal class RigidbodyContactEventManagerTests : IntegrationTestWithApproximation
341341
{
342-
protected override int NumberOfClients => 1;
343-
342+
protected override int NumberOfClients => m_ClientCount;
344343

344+
private const int k_ClientCount = 1;
345+
private int m_ClientCount = k_ClientCount;
345346
private GameObject m_RigidbodyContactEventManager;
346347

347348
public enum ContactEventTypes
@@ -355,6 +356,8 @@ public enum ContactEventTypes
355356

356357
public RigidbodyContactEventManagerTests(HostOrServer hostOrServer, ContactEventTypes contactEventType) : base(hostOrServer)
357358
{
359+
// Adjust the client count if connecting to the CMB service.
360+
m_ClientCount = UseCMBService() ? k_ClientCount + 1 : k_ClientCount;
358361
m_ContactEventType = contactEventType;
359362
}
360363

com.unity.netcode.gameobjects/Tests/Runtime/Prefabs/NetworkPrefabOverrideTests.cs

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,11 @@ protected override void OnCreatePlayerPrefab()
133133
/// </summary>
134134
protected override void OnServerAndClientsCreated()
135135
{
136+
var authorityNetworkManager = GetAuthorityNetworkManager();
136137
// Create a NetworkPrefab with an override
137-
var basePrefab = NetcodeIntegrationTestHelpers.CreateNetworkObject($"{k_PrefabRootName}-base", m_ServerNetworkManager, true);
138+
var basePrefab = NetcodeIntegrationTestHelpers.CreateNetworkObject($"{k_PrefabRootName}-base", authorityNetworkManager, true);
138139
basePrefab.AddComponent<SpawnDespawnDestroyNotifications>();
139-
var targetPrefab = NetcodeIntegrationTestHelpers.CreateNetworkObject($"{k_PrefabRootName}-over", m_ServerNetworkManager, true);
140+
var targetPrefab = NetcodeIntegrationTestHelpers.CreateNetworkObject($"{k_PrefabRootName}-over", authorityNetworkManager, true);
140141
targetPrefab.AddComponent<SpawnDespawnDestroyNotifications>();
141142
m_PrefabOverride = new NetworkPrefab()
142143
{
@@ -147,17 +148,21 @@ protected override void OnServerAndClientsCreated()
147148
};
148149

149150
// Add the prefab override handler for instance specific player prefabs to the server side
150-
var playerPrefabOverrideHandler = m_ServerNetworkManager.gameObject.AddComponent<TestPrefabOverrideHandler>();
151+
var playerPrefabOverrideHandler = authorityNetworkManager.gameObject.AddComponent<TestPrefabOverrideHandler>();
151152
playerPrefabOverrideHandler.ServerSideInstance = m_PlayerPrefab;
152153
playerPrefabOverrideHandler.ClientSideInstance = m_ClientSidePlayerPrefab.Prefab;
153154

154155
// Add the NetworkPrefab with override
155-
m_ServerNetworkManager.NetworkConfig.Prefabs.Add(m_PrefabOverride);
156+
authorityNetworkManager.NetworkConfig.Prefabs.Add(m_PrefabOverride);
156157
// Add the client player prefab that will be used on clients (and the host)
157-
m_ServerNetworkManager.NetworkConfig.Prefabs.Add(m_ClientSidePlayerPrefab);
158+
authorityNetworkManager.NetworkConfig.Prefabs.Add(m_ClientSidePlayerPrefab);
158159

159160
foreach (var networkManager in m_ClientNetworkManagers)
160161
{
162+
if (authorityNetworkManager == networkManager)
163+
{
164+
continue;
165+
}
161166
// Add the prefab override handler for instance specific player prefabs to the client side
162167
playerPrefabOverrideHandler = networkManager.gameObject.AddComponent<TestPrefabOverrideHandler>();
163168
playerPrefabOverrideHandler.ServerSideInstance = m_PlayerPrefab;
@@ -208,7 +213,7 @@ protected override IEnumerator OnTearDown()
208213

209214
private GameObject GetPlayerNetworkPrefabObject(NetworkManager networkManager)
210215
{
211-
return networkManager.IsClient ? m_ClientSidePlayerPrefab.Prefab : m_PlayerPrefab;
216+
return networkManager != GetAuthorityNetworkManager() ? m_ClientSidePlayerPrefab.Prefab : m_PlayerPrefab;
212217
}
213218

214219
[UnityTest]
@@ -217,11 +222,13 @@ public IEnumerator PrefabOverrideTests()
217222
var prefabNetworkObject = (NetworkObject)null;
218223
var spawnedGlobalObjectId = (uint)0;
219224

225+
var authorityNetworkManager = GetAuthorityNetworkManager();
226+
220227
if (!m_UseHost)
221228
{
222229
// If running as just a server, validate that all player prefab clone instances are the server side version
223-
prefabNetworkObject = GetPlayerNetworkPrefabObject(m_ServerNetworkManager).GetComponent<NetworkObject>();
224-
foreach (var playerEntry in m_PlayerNetworkObjects[m_ServerNetworkManager.LocalClientId])
230+
prefabNetworkObject = GetPlayerNetworkPrefabObject(authorityNetworkManager).GetComponent<NetworkObject>();
231+
foreach (var playerEntry in m_PlayerNetworkObjects[authorityNetworkManager.LocalClientId])
225232
{
226233
spawnedGlobalObjectId = playerEntry.Value.GlobalObjectIdHash;
227234
Assert.IsTrue(prefabNetworkObject.GlobalObjectIdHash == spawnedGlobalObjectId, $"Server-Side {playerEntry.Value.name} was spawned as prefab ({spawnedGlobalObjectId}) but we expected ({prefabNetworkObject.GlobalObjectIdHash})!");
@@ -254,7 +261,7 @@ public IEnumerator PrefabOverrideTests()
254261

255262
// Validates prefab overrides via NetworkPrefab configuration.
256263
var spawnedInstance = (NetworkObject)null;
257-
var networkManagerOwner = m_ServerNetworkManager;
264+
var networkManagerOwner = authorityNetworkManager;
258265

259266
if (m_DistributedAuthority)
260267
{
@@ -291,15 +298,17 @@ bool ObjectSpawnedOnAllNetworkMangers()
291298
yield return WaitForConditionOrTimeOut(ObjectSpawnedOnAllNetworkMangers);
292299
AssertOnTimeout($"The spawned prefab override validation failed!\n {builder}");
293300

301+
var nonAuthorityInstance = GetNonAuthorityNetworkManager();
302+
294303
// Verify that the despawn and destroy order of operations is correct for client owned NetworkObjects and the nunmber of times each is invoked is correct
295-
spawnedInstance = NetworkObject.InstantiateAndSpawn(m_PrefabOverride.SourcePrefabToOverride, networkManagerOwner, m_ClientNetworkManagers[0].LocalClientId);
304+
spawnedInstance = NetworkObject.InstantiateAndSpawn(m_PrefabOverride.SourcePrefabToOverride, networkManagerOwner, nonAuthorityInstance.LocalClientId);
296305

297306

298307
yield return WaitForConditionOrTimeOut(ObjectSpawnedOnAllNetworkMangers);
299308
AssertOnTimeout($"The spawned prefab override validation failed!\n {builder}");
300309

301-
var clientId = m_ClientNetworkManagers[0].LocalClientId;
302-
m_ClientNetworkManagers[0].Shutdown();
310+
var clientId = nonAuthorityInstance.LocalClientId;
311+
nonAuthorityInstance.Shutdown();
303312

304313
// Wait until all of the client's owned objects are destroyed
305314
// If no asserts occur, then the despawn & destroy order of operations and invocation count is correct

0 commit comments

Comments
 (0)