From d7bb4bcf414a0f9ae627d045fb9795a1fe56251e Mon Sep 17 00:00:00 2001 From: Emma Date: Thu, 20 Aug 2026 17:24:06 -0400 Subject: [PATCH 1/3] chore: Enable U-PR bot --- .pr_agent.toml | 9 +- .../SceneManagementSynchronizationTests.cs | 124 +++++++++--------- 2 files changed, 70 insertions(+), 63 deletions(-) diff --git a/.pr_agent.toml b/.pr_agent.toml index 49734d8c44..71d8783c0c 100644 --- a/.pr_agent.toml +++ b/.pr_agent.toml @@ -1,2 +1,9 @@ +# This is the configuration for the u-pr bot +# https://github.cds.internal.unity3d.com/unity/u-pr +# For configuration of this file: +# https://developer.portal.internal.unity.com/catalog/default/component/u-pr/docs/configuration/automatic_runs/ + [github_app] -pr_commands = [] +handle_pr_actions = ['opened', 'ready_for_review'] # PR events that auto-run pr_commands +pr_commands = ["/harness-review"] # what runs on those events +reviewer_commands = ["/harness-review"] # what runs when @u-pr is added as reviewer diff --git a/testproject/Assets/Tests/Runtime/NetworkSceneManager/SceneManagementSynchronizationTests.cs b/testproject/Assets/Tests/Runtime/NetworkSceneManager/SceneManagementSynchronizationTests.cs index e5c4e6716a..2a1e87de99 100644 --- a/testproject/Assets/Tests/Runtime/NetworkSceneManager/SceneManagementSynchronizationTests.cs +++ b/testproject/Assets/Tests/Runtime/NetworkSceneManager/SceneManagementSynchronizationTests.cs @@ -6,6 +6,7 @@ using Unity.Collections; using Unity.Netcode; using Unity.Netcode.TestHelpers.Runtime; +using UnityEngine; using UnityEngine.TestTools; namespace TestProject.RuntimeTests @@ -24,6 +25,7 @@ public SceneManagementSynchronizationTests(HostOrServer hostOrServer) : base(hos private struct ExpectedEvent { + public bool IsSceneEvent; public SceneEvent SceneEvent; public ConnectionEventData ConnectionEvent; } @@ -51,13 +53,19 @@ private void AssertEventMatchesExpectedEvent(Action predicate, if (m_ExpectedEventQueue.Count > 0) { var expectedEvent = m_ExpectedEventQueue.Dequeue(); - predicate(expectedEvent); + try + { + predicate(expectedEvent); + } + catch(Exception failure) + { + Debug.LogException(failure); + } } else { Assert.Fail($"Received unexpected event at index {s_NumEventsProcessed}: {eventType}"); } - s_NumEventsProcessed++; } @@ -100,42 +108,30 @@ public IEnumerator SynchronizationCallbacks_Authority() var expectedClientId = GetNonAuthorityNetworkManager().LocalClientId + 1; // Setup expected events - m_ExpectedEventQueue.Enqueue(new ExpectedEvent() + AddExpectedEvent(new SceneEvent() { - SceneEvent = new SceneEvent() - { - SceneEventType = SceneEventType.Synchronize, - ClientId = expectedClientId - }, + SceneEventType = SceneEventType.Synchronize, + ClientId = expectedClientId }); - m_ExpectedEventQueue.Enqueue(new ExpectedEvent() + AddExpectedEvent(new SceneEvent() { - SceneEvent = new SceneEvent() - { - SceneEventType = SceneEventType.SynchronizeComplete, - ClientId = expectedClientId, - }, + SceneEventType = SceneEventType.SynchronizeComplete, + ClientId = expectedClientId, }); - m_ExpectedEventQueue.Enqueue(new ExpectedEvent() + AddExpectedEvent(new ConnectionEventData() { - ConnectionEvent = new ConnectionEventData() - { - EventType = ConnectionEvent.ClientConnected, - ClientId = expectedClientId, - } + EventType = ConnectionEvent.ClientConnected, + ClientId = expectedClientId, }); if (m_UseHost) { - m_ExpectedEventQueue.Enqueue(new ExpectedEvent() + AddExpectedEvent(new ConnectionEventData() { - ConnectionEvent = new ConnectionEventData() - { - EventType = ConnectionEvent.PeerConnected, - ClientId = expectedClientId, - } + EventType = ConnectionEvent.PeerConnected, + ClientId = expectedClientId, }); } @@ -158,31 +154,22 @@ public IEnumerator SynchronizationCallbacks_NonAuthority() var expectedPeerClientIds = m_UseHost ? new[] { authorityId, peerClientId } : new[] { peerClientId }; // Setup expected events - m_ExpectedEventQueue.Enqueue(new ExpectedEvent() + AddExpectedEvent(new SceneEvent() { - SceneEvent = new SceneEvent() - { - SceneEventType = SceneEventType.Synchronize, - ClientId = expectedClientId, - }, + SceneEventType = SceneEventType.Synchronize, + ClientId = expectedClientId, }); - m_ExpectedEventQueue.Enqueue(new ExpectedEvent() + AddExpectedEvent(new ConnectionEventData() { - ConnectionEvent = new ConnectionEventData() - { - EventType = ConnectionEvent.ClientConnected, - ClientId = expectedClientId, - PeerClientIds = new NativeArray(expectedPeerClientIds.ToArray(), Allocator.Persistent), - } + EventType = ConnectionEvent.ClientConnected, + ClientId = expectedClientId, + PeerClientIds = new NativeArray(expectedPeerClientIds.ToArray(), Allocator.Persistent), }); - m_ExpectedEventQueue.Enqueue(new ExpectedEvent() + AddExpectedEvent(new SceneEvent() { - SceneEvent = new SceneEvent() - { - SceneEventType = SceneEventType.SynchronizeComplete, - ClientId = expectedClientId, - }, + SceneEventType = SceneEventType.SynchronizeComplete, + ClientId = expectedClientId, }); Assert.Null(m_ManagerToTest, "m_ManagerToTest should be null as we should be testing newly created client"); @@ -203,27 +190,22 @@ public IEnumerator LateJoiningClient_PeerCallbacks() var nonAuthority = GetNonAuthorityNetworkManager(); var expectedClientId = nonAuthority.LocalClientId + 1; SetManagerToTest(nonAuthority); + // Setup expected events - if (m_UseCmbService) + AddExpectedEvent(new ConnectionEventData() { - m_ExpectedEventQueue.Enqueue(new ExpectedEvent() - { - SceneEvent = new SceneEvent() - { - SceneEventType = SceneEventType.SynchronizeComplete, - ClientId = expectedClientId, - }, - }); - } + EventType = ConnectionEvent.PeerConnected, + ClientId = expectedClientId, + }); - m_ExpectedEventQueue.Enqueue(new ExpectedEvent() + if (m_UseCmbService) { - ConnectionEvent = new ConnectionEventData() + AddExpectedEvent(new SceneEvent() { - EventType = ConnectionEvent.PeerConnected, + SceneEventType = SceneEventType.SynchronizeComplete, ClientId = expectedClientId, - } - }); + }); + } ////////////////////////////////////////// // Testing event notifications @@ -233,16 +215,34 @@ public IEnumerator LateJoiningClient_PeerCallbacks() Assert.IsEmpty(m_ExpectedEventQueue, "Not all expected callbacks were received"); } + private void AddExpectedEvent(SceneEvent expectedEvent) + { + m_ExpectedEventQueue.Enqueue(new ExpectedEvent() + { + IsSceneEvent = true, + SceneEvent = expectedEvent, + }); + } + + private void AddExpectedEvent(ConnectionEventData expectedEvent) + { + m_ExpectedEventQueue.Enqueue(new ExpectedEvent() + { + IsSceneEvent = false, + ConnectionEvent = expectedEvent, + }); + } + private static void ValidateSceneEventsAreEqual(ExpectedEvent expectedEvent, SceneEvent sceneEvent) { - Assert.NotNull(expectedEvent.SceneEvent, $"Received unexpected scene event {sceneEvent.SceneEventType} at index {s_NumEventsProcessed}"); + Assert.That(expectedEvent.IsSceneEvent, Is.True, $"Received unexpected scene event {sceneEvent.SceneEventType} at index {s_NumEventsProcessed}. Expected connection event: {expectedEvent.ConnectionEvent.EventType}"); AssertField(expectedEvent.SceneEvent.SceneEventType, sceneEvent.SceneEventType, nameof(sceneEvent.SceneEventType), sceneEvent.SceneEventType); AssertField(expectedEvent.SceneEvent.ClientId, sceneEvent.ClientId, nameof(sceneEvent.ClientId), sceneEvent.SceneEventType); } private static void ValidateConnectionEventsAreEqual(ExpectedEvent expectedEvent, ConnectionEventData eventData) { - Assert.NotNull(expectedEvent.ConnectionEvent, $"Received unexpected connection event {eventData.EventType} at index {s_NumEventsProcessed}"); + Assert.That(expectedEvent.IsSceneEvent, Is.False, $"Received unexpected connection event {eventData.EventType} at index {s_NumEventsProcessed}. Expected scene event: {expectedEvent.SceneEvent.SceneEventType}"); AssertField(expectedEvent.ConnectionEvent.EventType, eventData.EventType, nameof(eventData.EventType), eventData.EventType); AssertField(expectedEvent.ConnectionEvent.ClientId, eventData.ClientId, nameof(eventData.ClientId), eventData.EventType); From 3f91df7dc3e78a6c2c95b9857ac99dab2733a719 Mon Sep 17 00:00:00 2001 From: Emma Date: Thu, 20 Aug 2026 17:40:27 -0400 Subject: [PATCH 2/3] dotnet-fix --- .../NetworkSceneManager/SceneManagementSynchronizationTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testproject/Assets/Tests/Runtime/NetworkSceneManager/SceneManagementSynchronizationTests.cs b/testproject/Assets/Tests/Runtime/NetworkSceneManager/SceneManagementSynchronizationTests.cs index 2a1e87de99..b9dd9c4be5 100644 --- a/testproject/Assets/Tests/Runtime/NetworkSceneManager/SceneManagementSynchronizationTests.cs +++ b/testproject/Assets/Tests/Runtime/NetworkSceneManager/SceneManagementSynchronizationTests.cs @@ -57,7 +57,7 @@ private void AssertEventMatchesExpectedEvent(Action predicate, { predicate(expectedEvent); } - catch(Exception failure) + catch (Exception failure) { Debug.LogException(failure); } From 336e43ff4d073141c1fec9d8f96da28b5feb7092 Mon Sep 17 00:00:00 2001 From: Noel Stephens Date: Thu, 20 Aug 2026 18:05:53 -0500 Subject: [PATCH 3/3] test - fix ValidateConnectionEventsAreEqual should check against the expectedEvent.ConnectionEvent.EventType and not the expectedEvent.SceneEvent.SceneEventType (the later throws an exception). --- .../NetworkSceneManager/SceneManagementSynchronizationTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testproject/Assets/Tests/Runtime/NetworkSceneManager/SceneManagementSynchronizationTests.cs b/testproject/Assets/Tests/Runtime/NetworkSceneManager/SceneManagementSynchronizationTests.cs index b9dd9c4be5..0fb1ce61c3 100644 --- a/testproject/Assets/Tests/Runtime/NetworkSceneManager/SceneManagementSynchronizationTests.cs +++ b/testproject/Assets/Tests/Runtime/NetworkSceneManager/SceneManagementSynchronizationTests.cs @@ -242,7 +242,7 @@ private static void ValidateSceneEventsAreEqual(ExpectedEvent expectedEvent, Sce private static void ValidateConnectionEventsAreEqual(ExpectedEvent expectedEvent, ConnectionEventData eventData) { - Assert.That(expectedEvent.IsSceneEvent, Is.False, $"Received unexpected connection event {eventData.EventType} at index {s_NumEventsProcessed}. Expected scene event: {expectedEvent.SceneEvent.SceneEventType}"); + Assert.That(expectedEvent.IsSceneEvent, Is.False, $"Received unexpected connection event {eventData.EventType} at index {s_NumEventsProcessed}. Expected scene event: {expectedEvent.ConnectionEvent.EventType}"); AssertField(expectedEvent.ConnectionEvent.EventType, eventData.EventType, nameof(eventData.EventType), eventData.EventType); AssertField(expectedEvent.ConnectionEvent.ClientId, eventData.ClientId, nameof(eventData.ClientId), eventData.EventType);