From 51f62787034bb1d6f2c3237874d130a381fa577f Mon Sep 17 00:00:00 2001 From: Emma Date: Tue, 22 Apr 2025 16:06:59 -0400 Subject: [PATCH 1/2] chore: Add test for unregistering custom message handlers --- .../Runtime/Messaging/NamedMessageTests.cs | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Messaging/NamedMessageTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Messaging/NamedMessageTests.cs index 64bab78658..61adb962e6 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Messaging/NamedMessageTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/Messaging/NamedMessageTests.cs @@ -279,5 +279,38 @@ public unsafe void ErrorMessageIsPrintedWhenAttemptingToSendNamedMessageWithTooB Assert.IsTrue(message.Contains($"Given message size ({msgSize} bytes) is greater than the maximum"), $"Unexpected exception: {message}"); } } + + [Test] + public void NamedMessageHandlerIsUnregisteredWithoutException() + { + var messageName = Guid.NewGuid().ToString(); + const int numMessagesToSend = 3; + const int expectedMessageHandlerCallCount = 1; + + var messageHandlerCalled = 0; + m_ServerNetworkManager.CustomMessagingManager.RegisterNamedMessageHandler( + messageName, + (_, _) => + { + messageHandlerCalled++; + m_ServerNetworkManager.CustomMessagingManager.UnregisterNamedMessageHandler(messageName); + }); + + var messageContent = new ForceNetworkSerializeByMemcpy(Guid.NewGuid()); + var writer = new FastBufferWriter(1300, Allocator.Temp); + using (writer) + { + writer.WriteValueSafe(messageContent); + for (var i = 0; i < numMessagesToSend; i++) + { + m_ServerNetworkManager.CustomMessagingManager.SendNamedMessage( + messageName, + m_ServerNetworkManager.LocalClientId, + writer); + } + } + + Assert.AreEqual(expectedMessageHandlerCallCount, messageHandlerCalled); + } } } From 9a01059c252917879b55a5ecb7c05048ad711d46 Mon Sep 17 00:00:00 2001 From: Emma Date: Wed, 23 Apr 2025 15:06:17 -0400 Subject: [PATCH 2/2] Add test to pvpExceptions.json --- pvpExceptions.json | 1 + 1 file changed, 1 insertion(+) diff --git a/pvpExceptions.json b/pvpExceptions.json index d506649f88..6a7fc8d678 100644 --- a/pvpExceptions.json +++ b/pvpExceptions.json @@ -860,6 +860,7 @@ "Unity.Netcode.RuntimeTests.NamedMessageTests: IEnumerator WhenSendingNamedMessageToAll_AllClientsReceiveIt(): undocumented", "Unity.Netcode.RuntimeTests.NamedMessageTests: void WhenSendingNamedMessageToNullClientList_ArgumentNullExceptionIsThrown(): undocumented", "Unity.Netcode.RuntimeTests.NamedMessageTests: void ErrorMessageIsPrintedWhenAttemptingToSendNamedMessageWithTooBigBuffer(): undocumented", + "Unity.Netcode.RuntimeTests.NamedMessageTests: void NamedMessageHandlerIsUnregisteredWithoutException(): undocumented", "Unity.Netcode.RuntimeTests.UnnamedMessageTests: undocumented", "Unity.Netcode.RuntimeTests.UnnamedMessageTests: NumberOfClients: undocumented", "Unity.Netcode.RuntimeTests.UnnamedMessageTests: IEnumerator UnnamedMessageIsReceivedOnClientWithContent(): undocumented",