Skip to content

Commit 544baf7

Browse files
test
Adding a validation at the end of the scene load-unload test to assure the NetworkObjectsToSynchronizeSceneChanges has no remaining in-scene placed NetworkObjects when all scenes are unloaded. Removing a verbose setting from InScenePlacedNetworkObjectTests.
1 parent 987aaf2 commit 544baf7

File tree

3 files changed

+25
-3
lines changed

3 files changed

+25
-3
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ public IEnumerator TestNetworkObjectClientDestroy([Values] ClientDestroyObject c
140140
yield return WaitForConditionOrTimeOut(HaveLogsBeenReceived);
141141
AssertOnTimeout($"Not all expected logs were received when destroying a {nameof(NetworkObject)} on the client side during an active session!");
142142
}
143-
Assert.IsFalse(NetworkObject.NetworkObjectsToSynchronizeSceneChanges.ContainsKey(m_ClientNetworkObjectId), $"Player object {m_ClientNetworkObjectId} still exists within {nameof(NetworkObject.NetworkObjectsToSynchronizeSceneChanges)}!");
143+
Assert.IsFalse(m_ClientNetworkManagers[0].SpawnManager.NetworkObjectsToSynchronizeSceneChanges.ContainsKey(m_ClientNetworkObjectId), $"Player object {m_ClientNetworkObjectId} still exists within {nameof(NetworkSpawnManager.NetworkObjectsToSynchronizeSceneChanges)}!");
144144
}
145145

146146
private bool HaveLogsBeenReceived()

testproject/Assets/Tests/Runtime/NetworkSceneManager/InScenePlacedNetworkObjectTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public IEnumerator InSceneNetworkObjectSynchAndSpawn([Values] DespawnMode despaw
7474
Assert.Ignore($"Test ignored as DeferDespawn is only valid with Distributed Authority mode.");
7575
}
7676

77-
NetworkObjectTestComponent.VerboseDebug = true;
77+
NetworkObjectTestComponent.VerboseDebug = false;
7878
// Because despawning a client will cause it to shutdown and clean everything in the
7979
// scene hierarchy, we have to prevent one of the clients from spawning initially before
8080
// we test synchronizing late joining clients with despawned in-scene placed NetworkObjects.

testproject/Assets/Tests/Runtime/NetworkSceneManager/NetworkSceneManagerEventDataPoolTest.cs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections;
33
using System.Collections.Generic;
44
using System.Linq;
5+
using System.Text;
56
using NUnit.Framework;
67
using Unity.Netcode;
78
using Unity.Netcode.TestHelpers.Runtime;
@@ -309,6 +310,8 @@ private bool DataPoolVerifySceneClient(int sceneIndex, string sceneName, LoadSce
309310
return true;
310311
}
311312

313+
314+
private StringBuilder m_ErrorMsg = new StringBuilder();
312315
/// <summary>
313316
/// Small to heavy scene loading scenario to test the dynamically generated SceneEventData objects under a load.
314317
/// Will load from 1 to 32 scenes in both single and additive ClientSynchronizationMode
@@ -358,11 +361,30 @@ public IEnumerator SceneEventDataPoolSceneLoadingTest([Values(1, 2, 4, 6)] int n
358361
}
359362

360363
yield return UnloadAllScenes(true);
364+
Assert.IsTrue(CheckNetworkObjectsToSynchronizeSceneChanges(m_ServerNetworkManager), $"{nameof(NetworkSpawnManager.NetworkObjectsToSynchronizeSceneChanges)} validation check failure!\n {m_ErrorMsg}");
365+
m_ServerNetworkManager.SceneManager.OnSceneEvent -= ServerSceneManager_OnSceneEvent;
366+
// Validate that the NetworkObjectsToSynchronizeSceneChanges does not persist entries when scenes are unloaded.
361367
foreach (var client in m_ClientNetworkManagers)
362368
{
369+
Assert.IsTrue(CheckNetworkObjectsToSynchronizeSceneChanges(client), $"{nameof(NetworkSpawnManager.NetworkObjectsToSynchronizeSceneChanges)} validation check failure!\n {m_ErrorMsg}");
363370
client.SceneManager.OnUnloadComplete -= SceneManager_OnUnloadComplete;
364371
}
365-
m_ServerNetworkManager.SceneManager.OnSceneEvent -= ServerSceneManager_OnSceneEvent;
372+
}
373+
374+
private bool CheckNetworkObjectsToSynchronizeSceneChanges(NetworkManager networkManager)
375+
{
376+
m_ErrorMsg.Clear();
377+
if (networkManager.SpawnManager.NetworkObjectsToSynchronizeSceneChanges.Count > 0)
378+
{
379+
foreach (var entry in networkManager.SpawnManager.NetworkObjectsToSynchronizeSceneChanges)
380+
{
381+
if (entry.Value.IsSceneObject.HasValue && entry.Value.IsSceneObject.Value)
382+
{
383+
m_ErrorMsg.AppendLine($"{entry.Value.name} still exists within {nameof(NetworkSpawnManager.NetworkObjectsToSynchronizeSceneChanges)}!");
384+
}
385+
}
386+
}
387+
return m_ErrorMsg.Length == 0;
366388
}
367389

368390
private string m_SceneBeingUnloaded;

0 commit comments

Comments
 (0)