Skip to content

Commit 6b9bdc3

Browse files
committed
Swap a test to a CMB test for validation
1 parent 9d780c1 commit 6b9bdc3

File tree

1 file changed

+26
-22
lines changed

1 file changed

+26
-22
lines changed

testproject/Assets/Tests/Runtime/SceneObjectsNotDestroyedOnShutdownTest.cs

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,25 @@
1010

1111
namespace TestProject.RuntimeTests
1212
{
13+
[TestFixture(HostOrServer.Host)]
14+
[TestFixture(HostOrServer.DAHost)]
1315
public class SceneObjectsNotDestroyedOnShutdownTest : NetcodeIntegrationTest
1416
{
1517
protected override int NumberOfClients => 0;
1618

1719
private const string k_TestScene = "InSceneNetworkObject";
1820
private const string k_SceneObjectName = "InSceneObject";
1921
private Scene m_TestScene;
20-
private WaitForSeconds m_DefaultWaitForTick = new WaitForSeconds(1.0f / 30);
22+
private WaitForSeconds m_DefaultWaitForTick = new(1.0f / 30);
2123

22-
// TODO: [CmbServiceTests] Adapt to run with the service
23-
protected override bool UseCMBService()
24-
{
25-
return false;
26-
}
24+
public SceneObjectsNotDestroyedOnShutdownTest(HostOrServer hostOrServer) : base(hostOrServer) {}
2725

2826
[UnityTest]
2927
public IEnumerator SceneObjectsNotDestroyedOnShutdown()
3028
{
31-
m_ServerNetworkManager.SceneManager.OnSceneEvent += SceneManager_OnSceneEvent;
32-
m_ServerNetworkManager.SceneManager.LoadScene(k_TestScene, LoadSceneMode.Additive);
29+
var authority = GetAuthorityNetworkManager();
30+
authority.SceneManager.OnSceneEvent += SceneManager_OnSceneEvent;
31+
authority.SceneManager.LoadScene(k_TestScene, LoadSceneMode.Additive);
3332

3433
yield return WaitForConditionOrTimeOut(() => m_TestScene.IsValid() && m_TestScene.isLoaded);
3534
AssertOnTimeout($"Timed out waiting for scene {k_TestScene} to load!");
@@ -38,11 +37,12 @@ public IEnumerator SceneObjectsNotDestroyedOnShutdown()
3837

3938
AssertOnTimeout($"Timed out waiting to find {k_SceneObjectName} after scene load and before starting client!\"");
4039

41-
yield return CreateAndStartNewClient();
40+
var lateJoin = CreateNewClient();
41+
yield return StartClient(lateJoin);
4242

4343
var loadedInSceneObjects = Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID).Where((c) => c.name.Contains(k_SceneObjectName));
4444
Assert.IsTrue(loadedInSceneObjects.Count() > 1, $"Only found one instance of {k_SceneObjectName} after client connected!");
45-
m_ClientNetworkManagers[0].Shutdown();
45+
lateJoin.Shutdown();
4646
yield return m_DefaultWaitForTick;
4747
loadedInSceneObjects = Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID).Where((c) => c.name.Contains(k_SceneObjectName));
4848

@@ -52,36 +52,39 @@ public IEnumerator SceneObjectsNotDestroyedOnShutdown()
5252
[UnityTest]
5353
public IEnumerator ChildSceneObjectsDoNotDestroyOnShutdown()
5454
{
55-
m_ServerNetworkManager.SceneManager.OnSceneEvent += SceneManager_OnSceneEvent;
56-
m_ServerNetworkManager.SceneManager.LoadScene(k_TestScene, LoadSceneMode.Additive);
55+
var authority = GetAuthorityNetworkManager();
56+
authority.SceneManager.OnSceneEvent += SceneManager_OnSceneEvent;
57+
authority.SceneManager.LoadScene(k_TestScene, LoadSceneMode.Additive);
5758

5859
yield return WaitForConditionOrTimeOut(() => m_TestScene.IsValid() && m_TestScene.isLoaded);
5960
AssertOnTimeout($"Timed out waiting for scene {k_TestScene} to load!");
6061

6162
var loadedInSceneObject = Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID).Where((c) => c.name.Contains(k_SceneObjectName)).FirstOrDefault();
6263
Assert.IsNotNull(loadedInSceneObject, $"Failed to find {k_SceneObjectName} before starting client!");
63-
yield return CreateAndStartNewClient();
6464

65-
var clientId = m_ClientNetworkManagers[0].LocalClientId;
66-
Assert.IsTrue(loadedInSceneObject.TrySetParent(m_PlayerNetworkObjects[0][clientId]), $"Failed to parent in-scene object under client player");
65+
var lateJoin = CreateNewClient();
66+
yield return StartClient(lateJoin);
67+
68+
var clientId = lateJoin.LocalClientId;
69+
Assert.IsTrue(loadedInSceneObject.TrySetParent(m_PlayerNetworkObjects[authority.LocalClientId][clientId]), $"Failed to parent in-scene object under client player");
6770

6871
yield return WaitForConditionOrTimeOut(() => PlayerHasChildren(clientId));
6972
AssertOnTimeout($"Client-{clientId} player never parented {k_SceneObjectName}!");
7073

7174
var loadedInSceneObjects = Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID).Where((c) => c.name.Contains(k_SceneObjectName));
7275
Assert.IsTrue(loadedInSceneObjects.Count() > 1, $"Only found one instance of {k_SceneObjectName} after client connected!");
73-
m_ClientNetworkManagers[0].Shutdown();
76+
lateJoin.Shutdown();
7477
yield return m_DefaultWaitForTick;
7578

7679
// Sanity check to make sure the client's player no longer has any children
7780
yield return WaitForConditionOrTimeOut(() => PlayerNoLongerExistsWithChildren(clientId));
7881
AssertOnTimeout($"Client-{clientId} player still exits with children after client shutdown!");
7982

80-
loadedInSceneObjects = Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID).Where((c) => c.name.Contains(k_SceneObjectName));
83+
loadedInSceneObjects = Object.FindObjectsByType<NetworkObject>(FindObjectsSortMode.InstanceID).Where(o => o.name.Contains(k_SceneObjectName)).ToArray();
8184
// Make sure any in-scene placed NetworkObject instantiated has no parent
82-
foreach (var insceneObject in loadedInSceneObjects)
85+
foreach (var inSceneObject in loadedInSceneObjects)
8386
{
84-
Assert.IsTrue(insceneObject.transform.parent == null, $"{insceneObject.name} is still parented!");
87+
Assert.IsTrue(inSceneObject.transform.parent == null, $"{inSceneObject.name} is still parented!");
8588
}
8689

8790
// We should have exactly 2 in-scene placed NetworkObjects remaining:
@@ -100,16 +103,17 @@ private bool PlayerHasChildren(ulong clientId)
100103

101104
private bool PlayerNoLongerExistsWithChildren(ulong clientId)
102105
{
103-
if (m_PlayerNetworkObjects[0].ContainsKey(clientId) && m_PlayerNetworkObjects[0][clientId] != null)
106+
var authorityId = GetAuthorityNetworkManager().LocalClientId;
107+
if (m_PlayerNetworkObjects[authorityId].ContainsKey(clientId) && m_PlayerNetworkObjects[authorityId][clientId] != null)
104108
{
105-
return m_PlayerNetworkObjects[0][clientId].transform.childCount == 0;
109+
return m_PlayerNetworkObjects[authorityId][clientId].transform.childCount == 0;
106110
}
107111
return true;
108112
}
109113

110114
private void SceneManager_OnSceneEvent(SceneEvent sceneEvent)
111115
{
112-
if (sceneEvent.ClientId != m_ServerNetworkManager.LocalClientId)
116+
if (sceneEvent.ClientId != GetAuthorityNetworkManager().LocalClientId)
113117
{
114118
return;
115119
}

0 commit comments

Comments
 (0)