diff --git a/.yamato/multiprocess-project-tests.yml b/.yamato/multiprocess-project-tests.yml index 04d365176c..3505d72c52 100644 --- a/.yamato/multiprocess-project-tests.yml +++ b/.yamato/multiprocess-project-tests.yml @@ -16,7 +16,7 @@ singlenode_multiprocess_test_testproject_{{ editor }}_{{ platform.name }}: {% if editor != "trunk" %} - unity-downloader-cli -u {{ editor }} -c editor -w --fast - curl -s https://artifactory.prd.it.unity3d.com/artifactory/unity-tools-local/utr-standalone/utr{% if platform.name == "win" %}.bat --output utr.bat{% endif %}{% if platform.name != "win" %} --output utr && chmod +x ./utr{% endif %} - - {{ platform.editorpath }} -projectpath testproject -batchmode -nographics -quit -logfile BuildMultiprocessTestPlayer.log -executeMethod Unity.Netcode.MultiprocessRuntimeTests.BuildMultiprocessTestPlayer.BuildRelease + - {{ platform.editorpath }} -projectpath testproject -batchmode -quit -nographics -logfile BuildMultiprocessTestPlayer.log -executeMethod Unity.Netcode.MultiprocessRuntimeTests.BuildMultiprocessTestPlayer.BuildRelease {% if platform.name == "mac" %} - sudo codesign --force --deep --sign - ./testproject/Builds/MultiprocessTests/MultiprocessTestPlayer.app{% endif %} - {{ platform.utr }} --suite=playmode --testproject=testproject --editor-location=.Editor --testfilter=Unity.Netcode.MultiprocessRuntimeTests --extra-editor-arg=-bypassIgnoreUTR {% endif %} diff --git a/.yamato/project.metafile b/.yamato/project.metafile index 4cc5a0efe2..dd8704b1f1 100644 --- a/.yamato/project.metafile +++ b/.yamato/project.metafile @@ -72,4 +72,4 @@ scripting_backends: - il2cpp # Images with build-tools installed required for Standalone Tests - IL2CPP -win_il2cpp_test_image: dots-player/windows10:latest \ No newline at end of file +win_il2cpp_test_image: dots-player/windows10:latest diff --git a/com.unity.netcode.gameobjects/Editor/CodeGen/INetworkMessageILPP.cs b/com.unity.netcode.gameobjects/Editor/CodeGen/INetworkMessageILPP.cs index a78a7e65ad..309e268ca9 100644 --- a/com.unity.netcode.gameobjects/Editor/CodeGen/INetworkMessageILPP.cs +++ b/com.unity.netcode.gameobjects/Editor/CodeGen/INetworkMessageILPP.cs @@ -18,8 +18,7 @@ internal sealed class INetworkMessageILPP : ILPPInterface public override ILPPInterface GetInstance() => this; public override bool WillProcess(ICompiledAssembly compiledAssembly) => - compiledAssembly.Name == CodeGenHelpers.RuntimeAssemblyName || - compiledAssembly.References.Any(filePath => Path.GetFileNameWithoutExtension(filePath) == CodeGenHelpers.RuntimeAssemblyName); + compiledAssembly.Name == CodeGenHelpers.RuntimeAssemblyName; private readonly List m_Diagnostics = new List(); diff --git a/testproject/Assets/Tests/Runtime/MultiprocessRuntime/BaseMultiprocessTests.cs b/testproject/Assets/Tests/Runtime/MultiprocessRuntime/BaseMultiprocessTests.cs index b3579f21d4..c02fb55965 100644 --- a/testproject/Assets/Tests/Runtime/MultiprocessRuntime/BaseMultiprocessTests.cs +++ b/testproject/Assets/Tests/Runtime/MultiprocessRuntime/BaseMultiprocessTests.cs @@ -85,7 +85,6 @@ public virtual void SetupTestSuite() private void OnSceneLoaded(Scene scene, LoadSceneMode mode) { - MultiprocessLogger.Log($"OnSceneLoaded {scene.name}"); SceneManager.sceneLoaded -= OnSceneLoaded; if (scene.name == BuildMultiprocessTestPlayer.MainSceneName) { @@ -93,7 +92,6 @@ private void OnSceneLoaded(Scene scene, LoadSceneMode mode) } var transport = NetworkManager.Singleton.NetworkConfig.NetworkTransport; - MultiprocessLogger.Log($"transport is {transport}"); switch (transport) { #if UNITY_UNET_PRESENT diff --git a/testproject/Assets/Tests/Runtime/MultiprocessRuntime/ExecuteStepInContext.cs b/testproject/Assets/Tests/Runtime/MultiprocessRuntime/ExecuteStepInContext.cs index dcde9fdb50..589e17a4f5 100644 --- a/testproject/Assets/Tests/Runtime/MultiprocessRuntime/ExecuteStepInContext.cs +++ b/testproject/Assets/Tests/Runtime/MultiprocessRuntime/ExecuteStepInContext.cs @@ -10,6 +10,7 @@ using UnityEngine; using UnityEngine.TestTools; using Debug = UnityEngine.Debug; +using Unity.Netcode.MultiprocessRuntimeTests; /// /// Allows for context based delegate execution. @@ -83,6 +84,7 @@ private static string GetMethodIdentifier(MethodBase callerMethod) internal static void InitializeAllSteps() { + MultiprocessLogger.Log("InitializeAllSteps - Start"); // registering magically all context based steps IsRegistering = true; var registeredMethods = typeof(TestCoordinator).Assembly.GetTypes().SelectMany(t => t.GetMethods()) @@ -147,6 +149,7 @@ object[] GetParameterValuesToPassFunc(ParameterInfo[] parameterInfo) IsRegistering = false; HasRegistered = true; + MultiprocessLogger.Log("InitializeAllSteps - Done"); } /// @@ -196,9 +199,11 @@ public ExecuteStepInContext(StepExecutionContext actionContext, Action s { Assert.That(AllActions, Does.Not.Contain(currentActionId)); // sanity check AllActions[currentActionId] = this; + MultiprocessLogger.Log($"InitializeAllSteps - Registering {currentActionId}"); } else { + MultiprocessLogger.Log($"InitializeAllSteps - Not Registering {currentActionId}"); if (shouldExecuteLocally) { m_StepToExecute.Invoke(paramToPass); diff --git a/testproject/Assets/Tests/Runtime/MultiprocessRuntime/Helpers/MultiprocessOrchestration.cs b/testproject/Assets/Tests/Runtime/MultiprocessRuntime/Helpers/MultiprocessOrchestration.cs index 0f9398d52f..240ee28ea4 100644 --- a/testproject/Assets/Tests/Runtime/MultiprocessRuntime/Helpers/MultiprocessOrchestration.cs +++ b/testproject/Assets/Tests/Runtime/MultiprocessRuntime/Helpers/MultiprocessOrchestration.cs @@ -84,7 +84,6 @@ public static int ActiveWorkerCount() if (s_Processes.Count > 0) { - MultiprocessLogger.Log($"s_Processes.Count is {s_Processes.Count}"); foreach (var p in s_Processes) { if ((p != null) && (!p.HasExited)) diff --git a/testproject/Assets/Tests/Runtime/MultiprocessRuntime/TestCoordinator.cs b/testproject/Assets/Tests/Runtime/MultiprocessRuntime/TestCoordinator.cs index 5de5010e6c..499e011aae 100644 --- a/testproject/Assets/Tests/Runtime/MultiprocessRuntime/TestCoordinator.cs +++ b/testproject/Assets/Tests/Runtime/MultiprocessRuntime/TestCoordinator.cs @@ -27,7 +27,7 @@ public class TestCoordinator : NetworkBehaviour { public const int PerTestTimeoutSec = 5 * 60; // seconds - public const float MaxWaitTimeoutSec = 20; + public const float MaxWaitTimeoutSec = 60; private const char k_MethodFullNameSplitChar = '@'; private bool m_ShouldShutdown; @@ -75,8 +75,10 @@ public void Awake() enabled = false; NetworkManager.OnClientConnectedCallback += OnClientConnectedCallback; + MultiprocessLogger.Log("Awake - Initialize All Steps"); + ExecuteStepInContext.InitializeAllSteps(); + s_ProcessId = Process.GetCurrentProcess().Id; - MultiprocessLogger.Log($"Awake {s_ProcessId}"); ReadGitHashFile(); // Configuration via command line (supported for many but not all platforms) @@ -165,6 +167,7 @@ private async void ConfigureViaWebApi() private void ReadGitHashFile() { + Rawgithash = "uninitialized"; try { var githash_resource = Resources.Load("Text/githash"); @@ -216,12 +219,7 @@ private void SetAddressAndPort() public void Start() { - MultiprocessLogger.Log("Start"); - MultiprocessLogger.Log("Initialize All Steps"); - ExecuteStepInContext.InitializeAllSteps(); - MultiprocessLogger.Log($"Initialize All Steps... done"); - MultiprocessLogger.Log($"IsInvoking: {NetworkManager.Singleton.IsInvoking()}"); - MultiprocessLogger.Log($"IsActiveAndEnabled: {NetworkManager.Singleton.isActiveAndEnabled}"); + MultiprocessLogger.Log($"TestCoordinator - Start"); } public void Update() @@ -282,8 +280,11 @@ public void OnDisable() // Once we are connected, we can run the update method public void OnClientConnectedCallback(ulong clientId) { - MultiprocessLogger.Log("Client start callback, enabling behavior"); - enabled = true; + if (enabled == false) + { + MultiprocessLogger.Log($"OnClientConnectedCallback enabling behavior clientId: {clientId} {NetworkManager.Singleton.IsHost}/{NetworkManager.Singleton.IsClient} IsRegistering:{ExecuteStepInContext.IsRegistering}"); + enabled = true; + } } private static void OnClientDisconnectCallback(ulong clientId) @@ -424,6 +425,7 @@ public void InvokeFromMethodActionRpc(Action methodInfo) public void TriggerActionIdClientRpc(string actionId, byte[] args, bool ignoreException, ClientRpcParams clientRpcParams = default) { MultiprocessLogger.Log($"received RPC from server, client side triggering action ID {actionId}"); + WriteLogServerRpc($"received RPC from server, client side triggering action ID {actionId} {ExecuteStepInContext.AllActions.Count}"); try { ExecuteStepInContext.AllActions[actionId].Invoke(args); @@ -519,5 +521,11 @@ public void WriteErrorServerRpc(string errorMessage, ServerRpcParams receivePara { MultiprocessLogger.LogError($"[Netcode-Server Sender={receiveParams.Receive.SenderClientId}] {errorMessage}"); } + + [ServerRpc(RequireOwnership = false)] + public void WriteLogServerRpc(string logMessage, ServerRpcParams receiveParams = default) + { + MultiprocessLogger.Log($"[Netcode-Server Sender={receiveParams.Receive.SenderClientId}] {logMessage}"); + } }