Skip to content

Commit a27cffb

Browse files
test
Potentially last iteration on fixing/updating integration tests.
1 parent 9ec5725 commit a27cffb

12 files changed

Lines changed: 810 additions & 849 deletions

com.unity.netcode.gameobjects/Tests/Runtime/Components/BufferDataValidationComponent.cs

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ internal class BufferDataValidationComponent : NetworkBehaviour
3838
private List<byte> m_SendBuffer;
3939
private List<byte> m_PreCalculatedBufferValues;
4040

41-
// Start is called before the first frame update
42-
private void Start()
41+
protected override void OnNetworkPreSpawn(ref NetworkManager networkManager)
4342
{
4443
m_WaitForValidation = false;
4544
m_CurrentBufferSize = BufferSizeStart;
@@ -49,6 +48,7 @@ private void Start()
4948
{
5049
m_PreCalculatedBufferValues.Add((byte)Random.Range(0, 255));
5150
}
51+
base.OnNetworkPreSpawn(ref networkManager);
5252
}
5353

5454
/// <summary>
@@ -67,7 +67,12 @@ public bool IsTestComplete()
6767
// Update is called once per frame
6868
private void Update()
6969
{
70-
if (NetworkManager.Singleton.IsListening && EnableTesting && !IsTestComplete() && !m_WaitForValidation)
70+
if (!EnableTesting || !IsSpawned)
71+
{
72+
return;
73+
}
74+
75+
if (!m_WaitForValidation && !IsTestComplete())
7176
{
7277
m_SendBuffer.Clear();
7378
//Keep the current contents of the bufffer and fill the buffer with the delta difference of the buffer's current size and new size from the m_PreCalculatedBufferValues
@@ -77,16 +82,16 @@ private void Update()
7782
m_WaitForValidation = true;
7883

7984
//Send the buffer
80-
SendBufferServerRpc(m_SendBuffer.ToArray());
85+
SendBufferRpc(m_SendBuffer.ToArray());
8186
}
87+
8288
}
8389

8490
/// <summary>
85-
/// Server side RPC for testing
91+
/// Sends to self for buffer queue testing
8692
/// </summary>
87-
/// <param name="parameters">server rpc parameters</param>
88-
[ServerRpc]
89-
private void SendBufferServerRpc(byte[] buffer)
93+
[Rpc(SendTo.Me)]
94+
private void SendBufferRpc(byte[] buffer)
9095
{
9196
TestFailed = !NetworkManagerHelper.BuffersMatch(0, buffer.Length, buffer, m_SendBuffer.ToArray());
9297
if (!TestFailed)

com.unity.netcode.gameobjects/Tests/Runtime/Components/NetworkVariableTestComponent.cs

Lines changed: 46 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ internal class NetworkVariableTestComponent : NetworkBehaviour
242242
private float m_WaitForChangesTimeout;
243243

244244
// Start is called before the first frame update
245-
private void InitializeTest()
245+
public void InitializeTest()
246246
{
247247
// Generic Constructor Test Coverage
248248
m_NetworkVariableBool = new NetworkVariable<bool>();
@@ -358,7 +358,7 @@ public bool IsTestComplete()
358358

359359
public void Awake()
360360
{
361-
InitializeTest();
361+
//InitializeTest();
362362
}
363363

364364
public void AssertAllValuesAreCorrect()
@@ -423,56 +423,52 @@ public void AssertAllValuesAreCorrect()
423423
// Update is called once per frame
424424
private void Update()
425425
{
426-
if (EnableTesting)
426+
if (!EnableTesting || !IsSpawned)
427427
{
428-
//Added timeout functionality for near future changes to NetworkVariables
429-
if (!m_FinishedTests && m_ChangesAppliedToNetworkVariables)
430-
{
431-
//We finish testing if all NetworkVariables changed their value or we timed out waiting for
432-
//all NetworkVariables to change their value
433-
m_FinishedTests = DidAllValuesChange() || (m_WaitForChangesTimeout < Time.realtimeSinceStartup);
434-
}
435-
else
428+
return;
429+
}
430+
431+
if (!m_ChangesAppliedToNetworkVariables)
432+
{
433+
//Now change all of the values to make sure we are at least testing the local callback
434+
m_NetworkVariableBool.Value = false;
435+
m_NetworkVariableByte.Value = 255;
436+
m_NetworkVariableColor.Value = new Color(100, 100, 100);
437+
m_NetworkVariableColor32.Value = new Color32(100, 100, 100, 100);
438+
m_NetworkVariableDouble.Value = 1000;
439+
m_NetworkVariableFloat.Value = 1000.0f;
440+
m_NetworkVariableInt.Value = 1000;
441+
m_NetworkVariableLong.Value = 100000;
442+
m_NetworkVariableSByte.Value = -127;
443+
m_NetworkVariableQuaternion.Value = new Quaternion(100, 100, 100, 100);
444+
m_NetworkVariablePose.Value = new Pose(new Vector3(100, 100, 100), new Quaternion(100, 100, 100, 100));
445+
m_NetworkVariableShort.Value = short.MaxValue;
446+
m_NetworkVariableVector4.Value = new Vector4(1000, 1000, 1000, 1000);
447+
m_NetworkVariableVector3.Value = new Vector3(1000, 1000, 1000);
448+
m_NetworkVariableVector2.Value = new Vector2(1000, 1000);
449+
m_NetworkVariableRay.Value = new Ray(Vector3.one, Vector3.right);
450+
m_NetworkVariableULong.Value = ulong.MaxValue;
451+
m_NetworkVariableUInt.Value = uint.MaxValue;
452+
m_NetworkVariableUShort.Value = ushort.MaxValue;
453+
m_NetworkVariableFixedString32.Value = new FixedString32Bytes("FixedString32Bytes");
454+
m_NetworkVariableFixedString64.Value = new FixedString64Bytes("FixedString64Bytes");
455+
m_NetworkVariableFixedString128.Value = new FixedString128Bytes("FixedString128Bytes");
456+
m_NetworkVariableFixedString512.Value = new FixedString512Bytes("FixedString512Bytes");
457+
m_NetworkVariableFixedString4096.Value = new FixedString4096Bytes("FixedString4096Bytes");
458+
m_NetworkVariableManaged.Value = new ManagedNetworkSerializableType
436459
{
437-
if (NetworkManager != null && NetworkManager.IsListening)
438-
{
439-
//Now change all of the values to make sure we are at least testing the local callback
440-
m_NetworkVariableBool.Value = false;
441-
m_NetworkVariableByte.Value = 255;
442-
m_NetworkVariableColor.Value = new Color(100, 100, 100);
443-
m_NetworkVariableColor32.Value = new Color32(100, 100, 100, 100);
444-
m_NetworkVariableDouble.Value = 1000;
445-
m_NetworkVariableFloat.Value = 1000.0f;
446-
m_NetworkVariableInt.Value = 1000;
447-
m_NetworkVariableLong.Value = 100000;
448-
m_NetworkVariableSByte.Value = -127;
449-
m_NetworkVariableQuaternion.Value = new Quaternion(100, 100, 100, 100);
450-
m_NetworkVariablePose.Value = new Pose(new Vector3(100, 100, 100), new Quaternion(100, 100, 100, 100));
451-
m_NetworkVariableShort.Value = short.MaxValue;
452-
m_NetworkVariableVector4.Value = new Vector4(1000, 1000, 1000, 1000);
453-
m_NetworkVariableVector3.Value = new Vector3(1000, 1000, 1000);
454-
m_NetworkVariableVector2.Value = new Vector2(1000, 1000);
455-
m_NetworkVariableRay.Value = new Ray(Vector3.one, Vector3.right);
456-
m_NetworkVariableULong.Value = ulong.MaxValue;
457-
m_NetworkVariableUInt.Value = uint.MaxValue;
458-
m_NetworkVariableUShort.Value = ushort.MaxValue;
459-
m_NetworkVariableFixedString32.Value = new FixedString32Bytes("FixedString32Bytes");
460-
m_NetworkVariableFixedString64.Value = new FixedString64Bytes("FixedString64Bytes");
461-
m_NetworkVariableFixedString128.Value = new FixedString128Bytes("FixedString128Bytes");
462-
m_NetworkVariableFixedString512.Value = new FixedString512Bytes("FixedString512Bytes");
463-
m_NetworkVariableFixedString4096.Value = new FixedString4096Bytes("FixedString4096Bytes");
464-
m_NetworkVariableManaged.Value = new ManagedNetworkSerializableType
465-
{
466-
Str = "ManagedNetworkSerializableType",
467-
Ints = new[] { 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000 },
468-
Embedded = new EmbeddedManagedNetworkSerializableType { Int = 20000 }
469-
};
470-
471-
//Set the timeout (i.e. how long we will wait for all NetworkVariables to have registered their changes)
472-
m_WaitForChangesTimeout = Time.realtimeSinceStartup + 0.50f;
473-
m_ChangesAppliedToNetworkVariables = true;
474-
}
475-
}
460+
Str = "ManagedNetworkSerializableType",
461+
Ints = new[] { 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000 },
462+
Embedded = new EmbeddedManagedNetworkSerializableType { Int = 20000 }
463+
};
464+
465+
//Set the timeout (i.e. how long we will wait for all NetworkVariables to have registered their changes)
466+
m_WaitForChangesTimeout = Time.realtimeSinceStartup + 0.50f;
467+
m_ChangesAppliedToNetworkVariables = true;
468+
}
469+
else if (!m_FinishedTests)
470+
{
471+
m_FinishedTests = DidAllValuesChange() || (m_WaitForChangesTimeout < Time.realtimeSinceStartup);
476472
}
477473
}
478474
}

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

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -251,9 +251,17 @@ public NetworkVariableTests(Serialization serialization)
251251
m_EnsureLengthSafety = serialization == Serialization.EnsureLengthSafety;
252252
}
253253

254+
private bool m_CanStart = false;
255+
254256
protected override bool CanStartServerAndClients()
255257
{
256-
return false;
258+
return m_CanStart;
259+
}
260+
261+
protected override void OnInlineSetup()
262+
{
263+
m_CanStart = false;
264+
base.OnInlineSetup();
257265
}
258266

259267
protected override void OnOneTimeSetup()
@@ -343,21 +351,44 @@ private void InitializeServerAndClients(HostOrServer useHost)
343351
[Test]
344352
public void AllNetworkVariableTypes([Values] HostOrServer useHost)
345353
{
354+
var prefabToSpawn = CreateNetworkObjectPrefab("NetVarTest");
355+
prefabToSpawn.AddComponent<NetworkVariableTestComponent>();
356+
357+
m_CanStart = true;
358+
StartServerAndClientsWithTimeTravel();
359+
var authority = GetAuthorityNetworkManager();
360+
361+
// Shutdown the other clients
362+
foreach(var networkManager in m_NetworkManagers)
363+
{
364+
if (networkManager == authority)
365+
{
366+
continue;
367+
}
368+
StopOneClientWithTimeTravel(networkManager);
369+
}
370+
346371
// Create, instantiate, and host
347372
// This would normally go in Setup, but since every other test but this one
348373
// uses NetworkManagerHelper, and it does its own NetworkManager setup / teardown,
349374
// for now we put this within this one test until we migrate it to MIH
350-
Assert.IsTrue(NetworkManagerHelper.StartNetworkManager(out NetworkManager server, useHost == HostOrServer.Host ? NetworkManagerHelper.NetworkManagerOperatingMode.Host : NetworkManagerHelper.NetworkManagerOperatingMode.Server));
375+
//Assert.IsTrue(NetworkManagerHelper.StartNetworkManager(out NetworkManager server, useHost == HostOrServer.Host ? NetworkManagerHelper.NetworkManagerOperatingMode.Host : NetworkManagerHelper.NetworkManagerOperatingMode.Server));
351376

352-
Assert.IsTrue(server.IsHost == (useHost == HostOrServer.Host), $"{nameof(useHost)} does not match the server.IsHost value!");
377+
//Assert.IsTrue(server.IsHost == (useHost == HostOrServer.Host), $"{nameof(useHost)} does not match the server.IsHost value!");
353378

354-
Guid gameObjectId = NetworkManagerHelper.AddGameNetworkObject("NetworkVariableTestComponent");
379+
//Guid gameObjectId = NetworkManagerHelper.AddGameNetworkObject("NetworkVariableTestComponent");
355380

356-
var networkVariableTestComponent = NetworkManagerHelper.AddComponentToObject<NetworkVariableTestComponent>(gameObjectId);
381+
//var networkVariableTestComponent = NetworkManagerHelper.AddComponentToObject<NetworkVariableTestComponent>(gameObjectId);
357382

358-
NetworkManagerHelper.SpawnNetworkObject(gameObjectId);
383+
//NetworkManagerHelper.SpawnNetworkObject(gameObjectId);
384+
385+
var instance = SpawnObject(prefabToSpawn, authority);
386+
var networkVariableTestComponent = instance.GetComponent<NetworkVariableTestComponent>();
387+
388+
Assert.IsTrue(networkVariableTestComponent.IsSpawned, $"Failed to spawn {instance.name}!");
359389

360390
// Start Testing
391+
networkVariableTestComponent.InitializeTest();
361392
networkVariableTestComponent.EnableTesting = true;
362393

363394
var success = WaitForConditionOrTimeOutWithTimeTravel(() => true == networkVariableTestComponent.IsTestComplete());
@@ -370,12 +401,15 @@ public void AllNetworkVariableTypes([Values] HostOrServer useHost)
370401
networkVariableTestComponent.AssertAllValuesAreCorrect();
371402

372403
// Disable this once we are done.
373-
networkVariableTestComponent.gameObject.SetActive(false);
404+
405+
406+
374407

375408
// This would normally go in Teardown, but since every other test but this one
376409
// uses NetworkManagerHelper, and it does its own NetworkManager setup / teardown,
377410
// for now we put this within this one test until we migrate it to MIH
378-
NetworkManagerHelper.ShutdownNetworkManager();
411+
StopOneClientWithTimeTravel(authority);
412+
//NetworkManagerHelper.ShutdownNetworkManager();
379413
}
380414

381415
[Test]

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

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,10 @@ public IEnumerator NetworkPrefabHandlerSpawnAndSynchronizeTests()
3535

3636
var networkObjectToSpawnOnClient = m_ClientSideValidPrefab.GetComponent<NetworkObject>();
3737
nonAuthority.PrefabHandler.AddHandler(m_ClientSideExceptionPrefab, new NetworkPrefabExceptionThrower());
38-
nonAuthority.PrefabHandler.AddHandler(m_ValidPrefab, new NetworkPrefabInstanceHandler(networkObjectToSpawnOnClient));
38+
var prefabHandlerObject = new GameObject();
39+
var prefabHandler = prefabHandlerObject.AddComponent<NetworkPrefabInstanceHandler>();
40+
prefabHandler.Initialize(nonAuthority, m_ValidPrefab.GetComponent<NetworkObject>());
41+
//nonAuthority.PrefabHandler.AddHandler(m_ValidPrefab, new NetworkPrefabInstanceHandler(networkObjectToSpawnOnClient));
3942

4043
var authority = GetAuthorityNetworkManager();
4144

@@ -60,8 +63,14 @@ public IEnumerator NetworkPrefabHandlerSpawnAndSynchronizeTests()
6063

6164
// Create a new client and register the same PrefabHandlers on the client
6265
var newClient = CreateNewClient();
66+
var prefabHandlerObject2 = new GameObject();
67+
var prefabHandler2 = prefabHandlerObject2.AddComponent<NetworkPrefabExceptionThrower>();
68+
6369
newClient.PrefabHandler.AddHandler(m_ClientSideExceptionPrefab, new NetworkPrefabExceptionThrower());
64-
newClient.PrefabHandler.AddHandler(m_ValidPrefab, new NetworkPrefabInstanceHandler(networkObjectToSpawnOnClient));
70+
71+
var prefabHandlerObject3 = new GameObject();
72+
var prefabHandler3 = prefabHandlerObject3.AddComponent<NetworkPrefabInstanceHandler>();
73+
prefabHandler3.Initialize(nonAuthority, networkObjectToSpawnOnClient);
6574

6675
// Expect assertions from the new client
6776
LogAssert.Expect(LogType.Exception, "Exception: exception while instantiating");
@@ -92,6 +101,8 @@ public IEnumerator NetworkPrefabHandlerSpawnAndSynchronizeTests()
92101
Assert.That(networkManager.SpawnManager.SpawnedObjects.ContainsKey(exceptionObject.NetworkObjectId), Is.False, "Non authority should not have spawned exception object!");
93102
}
94103
}
104+
105+
Object.Destroy(prefabHandlerObject);
95106
}
96107
}
97108
}

0 commit comments

Comments
 (0)