diff --git a/com.unity.netcode.gameobjects/Editor/AssemblyInfo.cs b/com.unity.netcode.gameobjects/Editor/AssemblyInfo.cs index 41e6599661..0f4e7e2b1d 100644 --- a/com.unity.netcode.gameobjects/Editor/AssemblyInfo.cs +++ b/com.unity.netcode.gameobjects/Editor/AssemblyInfo.cs @@ -2,7 +2,7 @@ #if UNITY_INCLUDE_TESTS #if UNITY_EDITOR -[assembly: InternalsVisibleTo("Unity.Netcode.EditorTests")] -[assembly: InternalsVisibleTo("TestProject.RuntimeTests")] +[assembly: InternalsVisibleTo("Unity.Netcode.Editor.Tests")] +[assembly: InternalsVisibleTo("TestProject.Runtime.Tests")] #endif // UNITY_EDITOR #endif // UNITY_INCLUDE_TESTS diff --git a/com.unity.netcode.gameobjects/Editor/CodeGen/com.unity.netcode.editor.codegen.asmdef b/com.unity.netcode.gameobjects/Editor/CodeGen/Unity.Netcode.Editor.CodeGen.asmdef similarity index 100% rename from com.unity.netcode.gameobjects/Editor/CodeGen/com.unity.netcode.editor.codegen.asmdef rename to com.unity.netcode.gameobjects/Editor/CodeGen/Unity.Netcode.Editor.CodeGen.asmdef diff --git a/com.unity.netcode.gameobjects/Editor/CodeGen/com.unity.netcode.editor.codegen.asmdef.meta b/com.unity.netcode.gameobjects/Editor/CodeGen/Unity.Netcode.Editor.CodeGen.asmdef.meta similarity index 100% rename from com.unity.netcode.gameobjects/Editor/CodeGen/com.unity.netcode.editor.codegen.asmdef.meta rename to com.unity.netcode.gameobjects/Editor/CodeGen/Unity.Netcode.Editor.CodeGen.asmdef.meta diff --git a/com.unity.netcode.gameobjects/Editor/PackageChecker/com.unity.netcode.editor.packagechecker.asmdef b/com.unity.netcode.gameobjects/Editor/PackageChecker/Unity.Netcode.Editor.PackageChecker.asmdef similarity index 100% rename from com.unity.netcode.gameobjects/Editor/PackageChecker/com.unity.netcode.editor.packagechecker.asmdef rename to com.unity.netcode.gameobjects/Editor/PackageChecker/Unity.Netcode.Editor.PackageChecker.asmdef diff --git a/com.unity.netcode.gameobjects/Editor/PackageChecker/com.unity.netcode.editor.packagechecker.asmdef.meta b/com.unity.netcode.gameobjects/Editor/PackageChecker/Unity.Netcode.Editor.PackageChecker.asmdef.meta similarity index 100% rename from com.unity.netcode.gameobjects/Editor/PackageChecker/com.unity.netcode.editor.packagechecker.asmdef.meta rename to com.unity.netcode.gameobjects/Editor/PackageChecker/Unity.Netcode.Editor.PackageChecker.asmdef.meta diff --git a/com.unity.netcode.gameobjects/Editor/com.unity.netcode.editor.asmdef b/com.unity.netcode.gameobjects/Editor/Unity.Netcode.Editor.asmdef similarity index 100% rename from com.unity.netcode.gameobjects/Editor/com.unity.netcode.editor.asmdef rename to com.unity.netcode.gameobjects/Editor/Unity.Netcode.Editor.asmdef diff --git a/com.unity.netcode.gameobjects/Editor/com.unity.netcode.editor.asmdef.meta b/com.unity.netcode.gameobjects/Editor/Unity.Netcode.Editor.asmdef.meta similarity index 100% rename from com.unity.netcode.gameobjects/Editor/com.unity.netcode.editor.asmdef.meta rename to com.unity.netcode.gameobjects/Editor/Unity.Netcode.Editor.asmdef.meta diff --git a/com.unity.netcode.gameobjects/Runtime/AssemblyInfo.cs b/com.unity.netcode.gameobjects/Runtime/AssemblyInfo.cs index 82e95f556e..e2697f2947 100644 --- a/com.unity.netcode.gameobjects/Runtime/AssemblyInfo.cs +++ b/com.unity.netcode.gameobjects/Runtime/AssemblyInfo.cs @@ -4,22 +4,23 @@ [assembly: InternalsVisibleTo("Unity.Netcode.Editor")] [assembly: InternalsVisibleTo("Unity.Netcode.Editor.CodeGen")] #endif // UNITY_EDITOR -#if MULTIPLAYER_TOOLS -[assembly: InternalsVisibleTo("Unity.Multiplayer.Tools.Adapters.Ngo1WithUtp2")] -#endif // MULTIPLAYER_TOOLS + #if COM_UNITY_NETCODE_ADAPTER_UTP [assembly: InternalsVisibleTo("Unity.Netcode.Adapter.UTP")] #endif // COM_UNITY_NETCODE_ADAPTER_UTP #if UNITY_INCLUDE_TESTS -[assembly: InternalsVisibleTo("Unity.Netcode.RuntimeTests")] +[assembly: InternalsVisibleTo("Unity.Netcode.Runtime.Tests")] [assembly: InternalsVisibleTo("Unity.Netcode.TestHelpers.Runtime")] -[assembly: InternalsVisibleTo("TestProject.RuntimeTests")] +[assembly: InternalsVisibleTo("TestProject.Runtime.Tests")] #if UNITY_EDITOR -[assembly: InternalsVisibleTo("Unity.Netcode.EditorTests")] -[assembly: InternalsVisibleTo("TestProject.EditorTests")] +[assembly: InternalsVisibleTo("Unity.Netcode.Editor.Tests")] +[assembly: InternalsVisibleTo("TestProject.Editor.Tests")] #endif // UNITY_EDITOR + #if MULTIPLAYER_TOOLS +[assembly: InternalsVisibleTo("Unity.Multiplayer.Tools.GameObjects.Tests")] +[assembly: InternalsVisibleTo("Unity.Multiplayer.Tools.Adapters.Ngo1WithUtp2")] [assembly: InternalsVisibleTo("TestProject.ToolsIntegration.RuntimeTests")] #endif // MULTIPLAYER_TOOLS #endif // UNITY_INCLUDE_TESTS diff --git a/com.unity.netcode.gameobjects/Runtime/Components/NetworkTransform.cs b/com.unity.netcode.gameobjects/Runtime/Components/NetworkTransform.cs index 05eeb22cfe..45391c018c 100644 --- a/com.unity.netcode.gameobjects/Runtime/Components/NetworkTransform.cs +++ b/com.unity.netcode.gameobjects/Runtime/Components/NetworkTransform.cs @@ -852,7 +852,7 @@ public void NetworkSerialize<T>(BufferSerializer<T> serializer) where T : IReade if (HasScaleChange) { // If we are teleporting (which includes synchronizing) and the associated NetworkObject has a parent - // then we want to serialize the LossyScale since NetworkObject spawn order is not guaranteed + // then we want to serialize the LossyScale since NetworkObject spawn order is not guaranteed if (IsTeleportingNextFrame && IsParented) { serializer.SerializeValue(ref LossyScale); @@ -1014,7 +1014,7 @@ public enum InterpolationTypes /// Uses a 1 to 2 phase smooth dampening approach where:<br /> /// <list type="bullet"> /// <item><description>The first phase smooth dampens towards the current tick state update being processed by the accumulated delta time relative to the time to target.</description></item> - /// <item><description>The second phase (optional) performs lerp smoothing where the current respective transform value is lerped towards the result of the third phase at a rate of delta time divided by the respective max interpolation time.</description></item> + /// <item><description>The second phase (optional) performs lerp smoothing where the current respective transform value is lerped towards the result of the first phase at a rate of delta time divided by the respective max interpolation time.</description></item> /// </list> /// </summary> /// <remarks> @@ -3726,13 +3726,13 @@ internal void ChildRegistration(NetworkObject child, bool isAdding) /// <inheritdoc/> /// <remarks> - /// When not using a NetworkRigidbody and using an owner authoritative motion model, you can <br /> + /// When not using a NetworkRigidbody and using an owner authoritative motion model, you can<br /> /// improve parenting transitions into and out of world and local space by:<br /> /// - Disabling <see cref="NetworkObject.SyncOwnerTransformWhenParented"/><br /> /// - Enabling <see cref="NetworkObject.AllowOwnerToParent"/><br /> /// - Enabling <see cref="SwitchTransformSpaceWhenParented"/><br /> /// -- Note: This handles changing from world space to local space for you.<br /> - /// When these settings are applied, transitioning from: <br /> + /// When these settings are applied, transitioning from:<br /> /// - World space to local space (root-null parent/null to <see cref="NetworkObject"/> parent) /// - Local space back to world space (<see cref="NetworkObject"/> parent to root-null parent) /// - Local space to local space (<see cref="NetworkObject"/> parent to <see cref="NetworkObject"/> parent) @@ -4101,12 +4101,12 @@ private void UpdateInterpolation() } // Note: This is for the legacy lerp type in order to maintain the same end result for any games under development that have tuned their - // project's to match the legacy lerp's end result. This will not allow changes + // project's to match the legacy lerp's end result. var cachedRenderTime = 0.0; if (PositionInterpolationType == InterpolationTypes.LegacyLerp || RotationInterpolationType == InterpolationTypes.LegacyLerp || ScaleInterpolationType == InterpolationTypes.LegacyLerp) { // Since InterpolationBufferTickOffset defaults to zero, this should not impact exist projects but still provides users with the ability to tweak - // their ticks ago time. + // their ticks ago time. var ticksAgo = (!IsServerAuthoritative() && !IsServer ? 2 : 1) + InterpolationBufferTickOffset; cachedRenderTime = timeSystem.TimeTicksAgo(ticksAgo).Time; } @@ -4533,7 +4533,7 @@ internal static void UpdateNetworkTick(NetworkManager networkManager) /// </summary> /// <remarks> /// Note: You can adjust this value during runtime. Increasing this value will set non-authority instances that much further - /// behind the authority instance but will increase the number of state updates to be processed. Increasing this can be useful + /// behind the authority instance but will increase the number of state updates to be processed. Increasing this can be useful /// under higher latency conditions.<br /> /// The default value is 1 tick (plus the tick latency). When running on a local network, reducing this to 0 is recommended.<br /> /// <see cref="NetworkTimeSystem.TickLatency"/> diff --git a/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ChangeOwnershipMessage.cs b/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ChangeOwnershipMessage.cs index 9b980d2430..9d1564ed21 100644 --- a/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ChangeOwnershipMessage.cs +++ b/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ChangeOwnershipMessage.cs @@ -381,7 +381,7 @@ private void HandleOwnershipChange(ref NetworkContext context) if (originalOwner == networkManager.LocalClientId && !networkManager.DistributedAuthorityMode) { - // Fully synchronize NetworkVariables with either read or write ownership permissions. + // Fully synchronize NetworkVariables with either read or write ownership permissions. networkObject.SynchronizeOwnerNetworkVariables(originalOwner, networkObject.PreviousOwnerId); } diff --git a/com.unity.netcode.gameobjects/Runtime/com.unity.netcode.runtime.asmdef b/com.unity.netcode.gameobjects/Runtime/Unity.Netcode.Runtime.asmdef similarity index 100% rename from com.unity.netcode.gameobjects/Runtime/com.unity.netcode.runtime.asmdef rename to com.unity.netcode.gameobjects/Runtime/Unity.Netcode.Runtime.asmdef diff --git a/com.unity.netcode.gameobjects/Runtime/com.unity.netcode.runtime.asmdef.meta b/com.unity.netcode.gameobjects/Runtime/Unity.Netcode.Runtime.asmdef.meta similarity index 100% rename from com.unity.netcode.gameobjects/Runtime/com.unity.netcode.runtime.asmdef.meta rename to com.unity.netcode.gameobjects/Runtime/Unity.Netcode.Runtime.asmdef.meta diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/AssemblyInfo.cs b/com.unity.netcode.gameobjects/TestHelpers/Runtime/AssemblyInfo.cs index e880ab216e..2910ea0f5b 100644 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/AssemblyInfo.cs +++ b/com.unity.netcode.gameobjects/TestHelpers/Runtime/AssemblyInfo.cs @@ -1,13 +1,15 @@ using System.Runtime.CompilerServices; #if UNITY_INCLUDE_TESTS -[assembly: InternalsVisibleTo("Unity.Netcode.RuntimeTests")] -[assembly: InternalsVisibleTo("TestProject.RuntimeTests")] +[assembly: InternalsVisibleTo("Unity.Netcode.Runtime.Tests")] +[assembly: InternalsVisibleTo("TestProject.Runtime.Tests")] #if UNITY_EDITOR [assembly: InternalsVisibleTo("Unity.Netcode.Editor")] -[assembly: InternalsVisibleTo("TestProject.EditorTests")] +[assembly: InternalsVisibleTo("Unity.Netcode.Editor.Tests")] +[assembly: InternalsVisibleTo("TestProject.Editor.Tests")] #endif // UNITY_EDITOR #if MULTIPLAYER_TOOLS +[assembly: InternalsVisibleTo("Unity.Multiplayer.Tools.GameObjects.Tests")] [assembly: InternalsVisibleTo("TestProject.ToolsIntegration.RuntimeTests")] #endif // MULTIPLAYER_TOOLS #endif // UNITY_INCLUDE_TESTS diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/MetricTestBase.cs b/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/MetricTestBase.cs deleted file mode 100644 index 773a79b470..0000000000 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/MetricTestBase.cs +++ /dev/null @@ -1,66 +0,0 @@ -#if MULTIPLAYER_TOOLS -using System.Collections; - -namespace Unity.Netcode.TestHelpers.Runtime.Metrics -{ - internal abstract class SingleClientMetricTestBase : NetcodeIntegrationTest - { - protected override int NumberOfClients => 1; - - internal NetworkManager Server { get; private set; } - - internal NetworkMetrics ServerMetrics { get; private set; } - - internal NetworkManager Client { get; private set; } - - internal NetworkMetrics ClientMetrics { get; private set; } - - protected override void OnServerAndClientsCreated() - { - Server = m_ServerNetworkManager; - Client = m_ClientNetworkManagers[0]; - base.OnServerAndClientsCreated(); - } - - protected override IEnumerator OnStartedServerAndClients() - { - ServerMetrics = Server.NetworkMetrics as NetworkMetrics; - ClientMetrics = Client.NetworkMetrics as NetworkMetrics; - yield return base.OnStartedServerAndClients(); - } - } - - public abstract class DualClientMetricTestBase : NetcodeIntegrationTest - { - protected override int NumberOfClients => 2; - - internal NetworkManager Server { get; private set; } - - internal NetworkMetrics ServerMetrics { get; private set; } - - internal NetworkManager FirstClient { get; private set; } - - internal NetworkMetrics FirstClientMetrics { get; private set; } - - internal NetworkManager SecondClient { get; private set; } - - internal NetworkMetrics SecondClientMetrics { get; private set; } - - protected override void OnServerAndClientsCreated() - { - Server = m_ServerNetworkManager; - FirstClient = m_ClientNetworkManagers[0]; - SecondClient = m_ClientNetworkManagers[1]; - base.OnServerAndClientsCreated(); - } - - protected override IEnumerator OnStartedServerAndClients() - { - ServerMetrics = Server.NetworkMetrics as NetworkMetrics; - FirstClientMetrics = FirstClient.NetworkMetrics as NetworkMetrics; - SecondClientMetrics = SecondClient.NetworkMetrics as NetworkMetrics; - yield return base.OnStartedServerAndClients(); - } - } -} -#endif diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/MetricTestBase.cs.meta b/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/MetricTestBase.cs.meta deleted file mode 100644 index fc32437f8c..0000000000 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/MetricTestBase.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: c726f5bc421c3874d9c1a26bcac3f091 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/NetworkVariableComponent.cs b/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/NetworkVariableComponent.cs deleted file mode 100644 index d21b8b1a25..0000000000 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/NetworkVariableComponent.cs +++ /dev/null @@ -1,19 +0,0 @@ -#if MULTIPLAYER_TOOLS -using UnityEngine; - -namespace Unity.Netcode.TestHelpers.Runtime.Metrics -{ - public class NetworkVariableComponent : NetworkBehaviour - { - public NetworkVariable<int> MyNetworkVariable { get; } = new NetworkVariable<int>(); - - private void Update() - { - if (IsServer) - { - MyNetworkVariable.Value = Random.Range(100, 999); - } - } - } -} -#endif diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/NetworkVariableComponent.cs.meta b/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/NetworkVariableComponent.cs.meta deleted file mode 100644 index 6694f4a450..0000000000 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/NetworkVariableComponent.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 124489f89ef59d449ab4bed1f5ef2f59 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/RpcTestComponent.cs b/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/RpcTestComponent.cs deleted file mode 100644 index 158f5d3c42..0000000000 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/RpcTestComponent.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; - -namespace Unity.Netcode.TestHelpers.Runtime.Metrics -{ - public class RpcTestComponent : NetworkBehaviour - { - public event Action OnServerRpcAction; - public event Action OnClientRpcAction; - - [ServerRpc] - public void MyServerRpc() - { - OnServerRpcAction?.Invoke(); - } - - [ClientRpc] - public void MyClientRpc(ClientRpcParams rpcParams = default) - { - OnClientRpcAction?.Invoke(); - } - } -} diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/RpcTestComponent.cs.meta b/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/RpcTestComponent.cs.meta deleted file mode 100644 index 5df815356d..0000000000 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/RpcTestComponent.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: fdfa28da9866545428083671c445a9ef -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForCounterMetricValue.cs b/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForCounterMetricValue.cs deleted file mode 100644 index 6912e73799..0000000000 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForCounterMetricValue.cs +++ /dev/null @@ -1,50 +0,0 @@ -#if MULTIPLAYER_TOOLS -using Unity.Multiplayer.Tools.MetricTypes; -using Unity.Multiplayer.Tools.NetStats; - -namespace Unity.Netcode.TestHelpers.Runtime.Metrics -{ - internal class WaitForCounterMetricValue : WaitForMetricValues<Counter> - { - private long m_Value; - - public delegate bool CounterFilter(long metric); - private CounterFilter m_CounterFilterDelegate; - - public WaitForCounterMetricValue(IMetricDispatcher dispatcher, DirectionalMetricInfo directionalMetricName) - : base(dispatcher, directionalMetricName) - { - } - - public WaitForCounterMetricValue(IMetricDispatcher dispatcher, DirectionalMetricInfo directionalMetricName, CounterFilter counterFilter) - : this(dispatcher, directionalMetricName) - { - m_CounterFilterDelegate = counterFilter; - } - - public long AssertMetricValueHaveBeenFound() - { - AssertHasError(); - AssertIsFound(); - - return m_Value; - } - - public override void Observe(MetricCollection collection) - { - if (FindMetric(collection, out var metric)) - { - var typedMetric = metric as Counter; - if (typedMetric == default) - { - SetError(metric); - return; - } - - m_Value = typedMetric.Value; - m_Found = m_CounterFilterDelegate != null ? m_CounterFilterDelegate(m_Value) : true; - } - } - } -} -#endif diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForCounterMetricValue.cs.meta b/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForCounterMetricValue.cs.meta deleted file mode 100644 index 73b1537579..0000000000 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForCounterMetricValue.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: aa1d3026d48b43bfa4c76e253b08b3ae -timeCreated: 1644269156 \ No newline at end of file diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForEventMetricValues.cs b/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForEventMetricValues.cs deleted file mode 100644 index a9af59427a..0000000000 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForEventMetricValues.cs +++ /dev/null @@ -1,57 +0,0 @@ -#if MULTIPLAYER_TOOLS -using System.Collections.Generic; -using System.Linq; -using Unity.Multiplayer.Tools.MetricTypes; -using Unity.Multiplayer.Tools.NetStats; - -namespace Unity.Netcode.TestHelpers.Runtime.Metrics -{ - internal class WaitForEventMetricValues<TMetric> : WaitForMetricValues<TMetric> - { - private IReadOnlyCollection<TMetric> m_EventValues; - - public delegate bool EventFilter(TMetric metric); - - private EventFilter m_EventFilterDelegate; - - public WaitForEventMetricValues(IMetricDispatcher dispatcher, DirectionalMetricInfo directionalMetricName) - : base(dispatcher, directionalMetricName) - { - } - - public WaitForEventMetricValues(IMetricDispatcher dispatcher, DirectionalMetricInfo directionalMetricName, EventFilter eventFilter) - : this(dispatcher, directionalMetricName) - { - m_EventFilterDelegate = eventFilter; - } - - public IReadOnlyCollection<TMetric> AssertMetricValuesHaveBeenFound() - { - AssertHasError(); - AssertIsFound(); - - return m_EventValues; - } - - public override void Observe(MetricCollection collection) - { - if (FindMetric(collection, out var metric)) - { - var typedMetric = metric as IEventMetric<TMetric>; - if (typedMetric == default) - { - SetError(metric); - return; - } - - if (typedMetric.Values.Any()) - { - // Apply filter if one was provided - m_EventValues = m_EventFilterDelegate != null ? typedMetric.Values.Where(x => m_EventFilterDelegate(x)).ToList() : typedMetric.Values.ToList(); - m_Found = m_EventValues.Count > 0; - } - } - } - } -} -#endif diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForEventMetricValues.cs.meta b/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForEventMetricValues.cs.meta deleted file mode 100644 index 93efe71f7d..0000000000 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForEventMetricValues.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 319c55f92728431283c9e888d8f9d70e -timeCreated: 1644269156 \ No newline at end of file diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForGaugeMetricValues.cs b/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForGaugeMetricValues.cs deleted file mode 100644 index 240639f663..0000000000 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForGaugeMetricValues.cs +++ /dev/null @@ -1,55 +0,0 @@ -#if MULTIPLAYER_TOOLS -using Unity.Multiplayer.Tools.MetricTypes; -using Unity.Multiplayer.Tools.NetStats; - -namespace Unity.Netcode.TestHelpers.Runtime.Metrics -{ - internal class WaitForGaugeMetricValues : WaitForMetricValues<Gauge> - { - private double m_Value; - - public delegate bool GaugeFilter(double metric); - private GaugeFilter m_GaugeFilterDelegate; - - public WaitForGaugeMetricValues(IMetricDispatcher dispatcher, DirectionalMetricInfo directionalMetricName) - : base(dispatcher, directionalMetricName) - { - } - - public WaitForGaugeMetricValues(IMetricDispatcher dispatcher, DirectionalMetricInfo directionalMetricName, GaugeFilter counterFilter) - : this(dispatcher, directionalMetricName) - { - m_GaugeFilterDelegate = counterFilter; - } - - public bool MetricFound() - { - return m_Found; - } - - public double AssertMetricValueHaveBeenFound() - { - AssertHasError(); - AssertIsFound(); - - return m_Value; - } - - public override void Observe(MetricCollection collection) - { - if (FindMetric(collection, out var metric)) - { - var typedMetric = metric as Gauge; - if (typedMetric == default) - { - SetError(metric); - return; - } - - m_Value = typedMetric.Value; - m_Found = m_GaugeFilterDelegate != null ? m_GaugeFilterDelegate(m_Value) : true; - } - } - } -} -#endif diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForGaugeMetricValues.cs.meta b/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForGaugeMetricValues.cs.meta deleted file mode 100644 index 7ad4b45ec2..0000000000 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForGaugeMetricValues.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 1d76c4e546c546a3b9d63b2c74fcbbca -timeCreated: 1644269156 \ No newline at end of file diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForMetricValues.cs b/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForMetricValues.cs deleted file mode 100644 index 10e8c6b8c5..0000000000 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForMetricValues.cs +++ /dev/null @@ -1,100 +0,0 @@ -#if MULTIPLAYER_TOOLS -using System.Collections; -using System.Linq; -using NUnit.Framework; -using Unity.Multiplayer.Tools.MetricTypes; -using Unity.Multiplayer.Tools.NetStats; - -namespace Unity.Netcode.TestHelpers.Runtime.Metrics -{ - internal abstract class WaitForMetricValues<TMetric> : IMetricObserver - { - protected readonly string m_MetricName; - protected bool m_Found; - protected bool m_HasError; - protected string m_Error; - protected uint m_NbFrames = 0; - - public WaitForMetricValues(IMetricDispatcher dispatcher, DirectionalMetricInfo directionalMetricName) - { - m_MetricName = directionalMetricName.Id; - dispatcher.RegisterObserver(this); - } - - public abstract void Observe(MetricCollection collection); - - public void AssertMetricValuesHaveNotBeenFound() - { - if (m_HasError) - { - Assert.Fail(m_Error); - } - - if (!m_Found) - { - Assert.Pass(); - } - else - { - Assert.Fail(); - } - } - - public IEnumerator WaitForMetricsReceived() - { - yield return WaitForFrames(60); - } - - protected void AssertHasError() - { - if (m_HasError) - { - Assert.Fail(m_Error); - } - } - - protected void AssertIsFound() - { - if (!m_Found) - { - Assert.Fail($"Found no matching values for metric of type '{typeof(TMetric).Name}', with name '{m_MetricName}' during '{m_NbFrames}' frames."); - } - } - - protected bool FindMetric(MetricCollection collection, out IMetric metric) - { - if (m_Found || m_HasError) - { - metric = null; - return false; - } - - metric = collection.Metrics.SingleOrDefault(x => x.Name == m_MetricName); - if (metric == default) - { - m_HasError = true; - m_Error = $"Metric collection does not contain metric named '{m_MetricName}'."; - - return false; - } - - return true; - } - - protected void SetError(IMetric metric) - { - m_HasError = true; - m_Error = $"Metric collection contains a metric of type '{metric.GetType().Name}' for name '{m_MetricName}', but was expecting '{typeof(TMetric).Name}'."; - } - - private IEnumerator WaitForFrames(uint maxNbFrames) - { - while (!m_Found && m_NbFrames < maxNbFrames) - { - m_NbFrames++; - yield return null; - } - } - } -} -#endif diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForMetricValues.cs.meta b/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForMetricValues.cs.meta deleted file mode 100644 index 64a440fee5..0000000000 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics/WaitForMetricValues.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 176888f06e2c5e14db33783fd0299668 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/com.unity.netcode.testhelpers.runtime.asmdef b/com.unity.netcode.gameobjects/TestHelpers/Runtime/Unity.Netcode.TestHelpers.Runtime.asmdef similarity index 66% rename from com.unity.netcode.gameobjects/TestHelpers/Runtime/com.unity.netcode.testhelpers.runtime.asmdef rename to com.unity.netcode.gameobjects/TestHelpers/Runtime/Unity.Netcode.TestHelpers.Runtime.asmdef index 2fb107c79f..f39b4d1e2f 100644 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/com.unity.netcode.testhelpers.runtime.asmdef +++ b/com.unity.netcode.gameobjects/TestHelpers/Runtime/Unity.Netcode.TestHelpers.Runtime.asmdef @@ -6,11 +6,18 @@ "Unity.Multiplayer.MetricTypes", "Unity.Multiplayer.NetStats", "Unity.Multiplayer.Tools.MetricTypes", - "Unity.Multiplayer.Tools.NetStats" + "Unity.Multiplayer.Tools.NetStats", + "UnityEngine.TestRunner", + "UnityEditor.TestRunner" ], - "optionalUnityReferences": [ - "TestAssemblies" + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "nunit.framework.dll" ], + "autoReferenced": false, "defineConstraints": [ "UNITY_INCLUDE_TESTS" ], @@ -25,5 +32,6 @@ "expression": "1.0.0-pre.7", "define": "MULTIPLAYER_TOOLS_1_0_0_PRE_7" } - ] + ], + "noEngineReferences": false } \ No newline at end of file diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/com.unity.netcode.testhelpers.runtime.asmdef.meta b/com.unity.netcode.gameobjects/TestHelpers/Runtime/Unity.Netcode.TestHelpers.Runtime.asmdef.meta similarity index 100% rename from com.unity.netcode.gameobjects/TestHelpers/Runtime/com.unity.netcode.testhelpers.runtime.asmdef.meta rename to com.unity.netcode.gameobjects/TestHelpers/Runtime/Unity.Netcode.TestHelpers.Runtime.asmdef.meta diff --git a/com.unity.netcode.gameobjects/Tests/Editor/Metrics.meta b/com.unity.netcode.gameobjects/Tests/Editor/Metrics.meta deleted file mode 100644 index bc962b1c81..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Editor/Metrics.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 87ddfad8823c4fe192fff56b7acc241b -timeCreated: 1629386688 \ No newline at end of file diff --git a/com.unity.netcode.gameobjects/Tests/Editor/Metrics/NetworkMetricsRegistrationTests.cs b/com.unity.netcode.gameobjects/Tests/Editor/Metrics/NetworkMetricsRegistrationTests.cs deleted file mode 100644 index 54114e2bd7..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Editor/Metrics/NetworkMetricsRegistrationTests.cs +++ /dev/null @@ -1,42 +0,0 @@ -#if MULTIPLAYER_TOOLS -using System; -using System.Linq; -using System.Reflection; -using NUnit.Framework; -using Unity.Multiplayer.Tools.MetricTypes; -using Unity.Multiplayer.Tools.NetStats; - -namespace Unity.Netcode.EditorTests.Metrics -{ - internal class NetworkMetricsRegistrationTests - { - private static Type[] s_MetricTypes = AppDomain.CurrentDomain.GetAssemblies() - .SelectMany(x => x.GetTypes()) - .Where(x => x.GetInterfaces().Contains(typeof(INetworkMetricEvent))) - .ToArray(); - - [TestCaseSource(nameof(s_MetricTypes))] - [Ignore("Disable test while we reevaluate the assumption that INetworkMetricEvent interfaces must be reported from MLAPI. This ignored test is tracked in MTT-11339")] - public void ValidateThatAllMetricTypesAreRegistered(Type metricType) - { - var dispatcher = new NetworkMetrics().Dispatcher as MetricDispatcher; - Assert.NotNull(dispatcher); - - var collection = typeof(MetricDispatcher) - .GetField("m_Collection", BindingFlags.NonPublic | BindingFlags.Instance)? - .GetValue(dispatcher) as MetricCollection; - Assert.NotNull(collection); - - Assert.That( - collection.Metrics.OfType<IEventMetric>(), - Has.Exactly(2).Matches<IEventMetric>( - eventMetric => - { - var eventType = eventMetric.GetType().GetGenericArguments()?.FirstOrDefault(); - return eventType == metricType; - })); - } - } -} - -#endif diff --git a/com.unity.netcode.gameobjects/Tests/Editor/Metrics/NetworkMetricsRegistrationTests.cs.meta b/com.unity.netcode.gameobjects/Tests/Editor/Metrics/NetworkMetricsRegistrationTests.cs.meta deleted file mode 100644 index 89ebdab722..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Editor/Metrics/NetworkMetricsRegistrationTests.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: af741f5e3d4f5544eaa68bb9bcaf54c6 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.unity.netcode.gameobjects/Tests/Editor/com.unity.netcode.editortests.asmdef b/com.unity.netcode.gameobjects/Tests/Editor/Unity.Netcode.Editor.Tests.asmdef similarity index 71% rename from com.unity.netcode.gameobjects/Tests/Editor/com.unity.netcode.editortests.asmdef rename to com.unity.netcode.gameobjects/Tests/Editor/Unity.Netcode.Editor.Tests.asmdef index b2c942a948..05e9c6ac53 100644 --- a/com.unity.netcode.gameobjects/Tests/Editor/com.unity.netcode.editortests.asmdef +++ b/com.unity.netcode.gameobjects/Tests/Editor/Unity.Netcode.Editor.Tests.asmdef @@ -1,28 +1,32 @@ { - "name": "Unity.Netcode.EditorTests", + "name": "Unity.Netcode.Editor.Tests", "rootNamespace": "Unity.Netcode.EditorTests", "references": [ "Unity.Collections", "Unity.Netcode.Runtime", "Unity.Netcode.Editor", - "Unity.Netcode.Components", "Unity.Multiplayer.MetricTypes", "Unity.Multiplayer.NetStats", "Unity.Multiplayer.Tools.MetricTypes", "Unity.Multiplayer.Tools.NetStats", "Unity.Networking.Transport", - "Unity.Mathematics" - ], - "optionalUnityReferences": [ - "TestAssemblies" - ], - "defineConstraints": [ - "UNITY_INCLUDE_TESTS" + "Unity.Mathematics", + "UnityEngine.TestRunner", + "UnityEditor.TestRunner" ], "includePlatforms": [ "Editor" ], + "excludePlatforms": [], "allowUnsafeCode": true, + "overrideReferences": true, + "precompiledReferences": [ + "nunit.framework.dll" + ], + "autoReferenced": false, + "defineConstraints": [ + "UNITY_INCLUDE_TESTS" + ], "versionDefines": [ { "name": "com.unity.multiplayer.tools", @@ -34,5 +38,6 @@ "expression": "(0,2022.2.0a5)", "define": "UNITY_UNET_PRESENT" } - ] -} + ], + "noEngineReferences": false +} \ No newline at end of file diff --git a/com.unity.netcode.gameobjects/Tests/Editor/com.unity.netcode.editortests.asmdef.meta b/com.unity.netcode.gameobjects/Tests/Editor/Unity.Netcode.Editor.Tests.asmdef.meta similarity index 100% rename from com.unity.netcode.gameobjects/Tests/Editor/com.unity.netcode.editortests.asmdef.meta rename to com.unity.netcode.gameobjects/Tests/Editor/Unity.Netcode.Editor.Tests.asmdef.meta diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/AssemblyInfo.cs b/com.unity.netcode.gameobjects/Tests/Runtime/AssemblyInfo.cs index fb444ea293..0c0d63f26e 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/AssemblyInfo.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/AssemblyInfo.cs @@ -1,9 +1,9 @@ using System.Runtime.CompilerServices; #if UNITY_INCLUDE_TESTS -[assembly: InternalsVisibleTo("TestProject.RuntimeTests")] +[assembly: InternalsVisibleTo("TestProject.Runtime.Tests")] #if UNITY_EDITOR -[assembly: InternalsVisibleTo("TestProject.EditorTests")] +[assembly: InternalsVisibleTo("TestProject.Editor.Tests")] #endif // UNITY_EDITOR #if MULTIPLAYER_TOOLS [assembly: InternalsVisibleTo("TestProject.ToolsIntegration.RuntimeTests")] diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/ParentChildDistibutionTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/ParentChildDistibutionTests.cs index bd74d710a2..21da72d5fb 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/ParentChildDistibutionTests.cs +++ b/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/ParentChildDistibutionTests.cs @@ -169,7 +169,7 @@ public IEnumerator DistributeOwnerHierarchy([Values] DistributionTypes distribut m_NetworkManagers.Remove(m_ClientNetworkManagers[3]); } - // When testing connect redistribution, + // When testing connect redistribution var instances = distributionType == DistributionTypes.UponDisconnect ? 1 : 2; var rootObject = (GameObject)null; var childOne = (GameObject)null; diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/TestHelpers.meta b/com.unity.netcode.gameobjects/Tests/Runtime/Helpers.meta similarity index 100% rename from com.unity.netcode.gameobjects/Tests/Runtime/TestHelpers.meta rename to com.unity.netcode.gameobjects/Tests/Runtime/Helpers.meta diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/TestHelpers/MessageCatcher.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Helpers/MessageCatcher.cs similarity index 100% rename from com.unity.netcode.gameobjects/Tests/Runtime/TestHelpers/MessageCatcher.cs rename to com.unity.netcode.gameobjects/Tests/Runtime/Helpers/MessageCatcher.cs diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/TestHelpers/MessageCatcher.cs.meta b/com.unity.netcode.gameobjects/Tests/Runtime/Helpers/MessageCatcher.cs.meta similarity index 100% rename from com.unity.netcode.gameobjects/Tests/Runtime/TestHelpers/MessageCatcher.cs.meta rename to com.unity.netcode.gameobjects/Tests/Runtime/Helpers/MessageCatcher.cs.meta diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/TestHelpers/MessageLogger.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Helpers/MessageLogger.cs similarity index 100% rename from com.unity.netcode.gameobjects/Tests/Runtime/TestHelpers/MessageLogger.cs rename to com.unity.netcode.gameobjects/Tests/Runtime/Helpers/MessageLogger.cs diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/TestHelpers/MessageLogger.cs.meta b/com.unity.netcode.gameobjects/Tests/Runtime/Helpers/MessageLogger.cs.meta similarity index 100% rename from com.unity.netcode.gameobjects/Tests/Runtime/TestHelpers/MessageLogger.cs.meta rename to com.unity.netcode.gameobjects/Tests/Runtime/Helpers/MessageLogger.cs.meta diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/ConnectionMetricsTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/ConnectionMetricsTests.cs deleted file mode 100644 index b94cc47725..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/ConnectionMetricsTests.cs +++ /dev/null @@ -1,68 +0,0 @@ -#if MULTIPLAYER_TOOLS -#if MULTIPLAYER_TOOLS_1_0_0_PRE_7 - -using System.Collections; -using NUnit.Framework; -using Unity.Multiplayer.Tools.MetricTypes; -using Unity.Netcode.TestHelpers.Runtime; -using Unity.Netcode.TestHelpers.Runtime.Metrics; -using UnityEngine.TestTools; - -namespace Unity.Netcode.RuntimeTests.Metrics -{ - [TestFixture(ClientCount.OneClient, HostOrServer.Host)] - [TestFixture(ClientCount.TwoClients, HostOrServer.Host)] - [TestFixture(ClientCount.OneClient, HostOrServer.Server)] - [TestFixture(ClientCount.TwoClients, HostOrServer.Server)] - internal class ConnectionMetricsTests : NetcodeIntegrationTest - { - protected override int NumberOfClients => m_ClientCount; - - private int m_ClientCount; - - public enum ClientCount - { - OneClient = 1, - TwoClients, - } - - public ConnectionMetricsTests(ClientCount clientCount, HostOrServer hostOrServer) - : base(hostOrServer) - { - m_ClientCount = (int)clientCount; - } - - private int GetClientCountForFixture() - { - return m_ClientCount + ((m_UseHost) ? 1 : 0); - } - - [UnityTest] - public IEnumerator UpdateConnectionCountOnServer() - { - var waitForGaugeValues = new WaitForGaugeMetricValues((m_ServerNetworkManager.NetworkMetrics as NetworkMetrics).Dispatcher, NetworkMetricTypes.ConnectedClients); - - yield return waitForGaugeValues.WaitForMetricsReceived(); - - var value = waitForGaugeValues.AssertMetricValueHaveBeenFound(); - Assert.AreEqual(GetClientCountForFixture(), value); - } - - [UnityTest] - public IEnumerator UpdateConnectionCountOnClient() - { - foreach (var clientNetworkManager in m_ClientNetworkManagers) - { - var waitForGaugeValues = new WaitForGaugeMetricValues((clientNetworkManager.NetworkMetrics as NetworkMetrics).Dispatcher, NetworkMetricTypes.ConnectedClients); - - yield return waitForGaugeValues.WaitForMetricsReceived(); - - var value = waitForGaugeValues.AssertMetricValueHaveBeenFound(); - Assert.AreEqual(1, value); - } - } - } -} - -#endif -#endif diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/ConnectionMetricsTests.cs.meta b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/ConnectionMetricsTests.cs.meta deleted file mode 100644 index bc0d812e3f..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/ConnectionMetricsTests.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 1845aef61dbb4f2b9d2be9145262ab90 -timeCreated: 1647023529 \ No newline at end of file diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/MessagingMetricsTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/MessagingMetricsTests.cs deleted file mode 100644 index 6cd827f691..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/MessagingMetricsTests.cs +++ /dev/null @@ -1,275 +0,0 @@ -#if MULTIPLAYER_TOOLS -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using NUnit.Framework; -using Unity.Collections; -using Unity.Multiplayer.Tools.MetricTypes; -using Unity.Netcode.TestHelpers.Runtime.Metrics; -using UnityEngine; -using UnityEngine.TestTools; - -namespace Unity.Netcode.RuntimeTests.Metrics -{ - internal class MessagingMetricsTests : DualClientMetricTestBase - { - private const uint k_MessageNameHashSize = 8; - // Header is dynamically sized due to packing, will be 2 bytes for all test messages. - private const int k_MessageHeaderSize = 2; - private static readonly int k_NamedMessageOverhead = (int)k_MessageNameHashSize + k_MessageHeaderSize; - private static readonly int k_UnnamedMessageOverhead = k_MessageHeaderSize; - - protected override int NumberOfClients => 2; - - [UnityTest] - public IEnumerator TrackNetworkMessageSentMetric() - { - var waitForMetricValues = new WaitForEventMetricValues<NetworkMessageEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.NetworkMessageSent); - - var messageName = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid()); - using (var writer = new FastBufferWriter(1300, Allocator.Temp)) - { - writer.WriteValueSafe(messageName); - - Server.CustomMessagingManager.SendNamedMessage(messageName.Value.ToString(), FirstClient.LocalClientId, writer); - } - - yield return waitForMetricValues.WaitForMetricsReceived(); - - var networkMessageSentMetricValues = waitForMetricValues.AssertMetricValuesHaveBeenFound(); - - // We should have 1 NamedMessage - Assert.That(networkMessageSentMetricValues, Has.Exactly(1).Matches<NetworkMessageEvent>(x => x.Name == nameof(NamedMessage))); - } - - [UnityTest] - public IEnumerator TrackNetworkMessageSentMetricToMultipleClients() - { - var waitForMetricValues = new WaitForEventMetricValues<NetworkMessageEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.NetworkMessageSent); - var messageName = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid()); - using (var writer = new FastBufferWriter(1300, Allocator.Temp)) - { - writer.WriteValueSafe(messageName); - - Server.CustomMessagingManager.SendNamedMessage(messageName.Value.ToString(), new List<ulong> { FirstClient.LocalClientId, SecondClient.LocalClientId }, writer); - } - - - yield return waitForMetricValues.WaitForMetricsReceived(); - - var networkMessageSentMetricValues = waitForMetricValues.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(2, networkMessageSentMetricValues.Count(x => x.Name.Equals(nameof(NamedMessage)))); - } - - [UnityTest] - public IEnumerator TrackNetworkMessageReceivedMetric() - { - var messageName = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid()); - - LogAssert.Expect(LogType.Log, $"Received from {Server.LocalClientId}"); - FirstClient.CustomMessagingManager.RegisterNamedMessageHandler(messageName.Value.ToString(), (ulong sender, FastBufferReader payload) => - { - Debug.Log($"Received from {sender}"); - }); - var waitForMetricValues = new WaitForEventMetricValues<NetworkMessageEvent>(FirstClientMetrics.Dispatcher, NetworkMetricTypes.NetworkMessageReceived, - metric => metric.Name == nameof(NamedMessage)); - - using (var writer = new FastBufferWriter(1300, Allocator.Temp)) - { - writer.WriteValueSafe(messageName); - - Server.CustomMessagingManager.SendNamedMessage(messageName.Value.ToString(), FirstClient.LocalClientId, writer); - } - - yield return waitForMetricValues.WaitForMetricsReceived(); - - var networkMessageReceivedValues = waitForMetricValues.AssertMetricValuesHaveBeenFound(); - // We should have 1 NamedMessage - Assert.That(networkMessageReceivedValues, Has.Exactly(1).Matches<NetworkMessageEvent>(x => x.Name == nameof(NamedMessage))); - } - - [UnityTest] - public IEnumerator TrackNamedMessageSentMetric() - { - var waitForMetricValues = new WaitForEventMetricValues<NamedMessageEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.NamedMessageSent); - - var messageName = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid()); - using (var writer = new FastBufferWriter(1300, Allocator.Temp)) - { - writer.WriteValueSafe(messageName); - - Server.CustomMessagingManager.SendNamedMessage(messageName.Value.ToString(), FirstClient.LocalClientId, writer); - } - - - yield return waitForMetricValues.WaitForMetricsReceived(); - - var namedMessageSentMetricValues = waitForMetricValues.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, namedMessageSentMetricValues.Count); - - var namedMessageSent = namedMessageSentMetricValues.First(); - Assert.AreEqual(messageName.Value.ToString(), namedMessageSent.Name); - Assert.AreEqual(FirstClient.LocalClientId, namedMessageSent.Connection.Id); - Assert.AreEqual(FastBufferWriter.GetWriteSize(messageName) + k_NamedMessageOverhead, namedMessageSent.BytesCount); - } - - [UnityTest] - public IEnumerator TrackNamedMessageSentMetricToMultipleClients() - { - var waitForMetricValues = new WaitForEventMetricValues<NamedMessageEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.NamedMessageSent); - var messageName = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid()); - using (var writer = new FastBufferWriter(1300, Allocator.Temp)) - { - writer.WriteValueSafe(messageName); - - Server.CustomMessagingManager.SendNamedMessage(messageName.Value.ToString(), new List<ulong> { FirstClient.LocalClientId, SecondClient.LocalClientId }, writer); - } - - - yield return waitForMetricValues.WaitForMetricsReceived(); - - var namedMessageSentMetricValues = waitForMetricValues.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(2, namedMessageSentMetricValues.Count); - Assert.That(namedMessageSentMetricValues.Select(x => x.Name), Has.All.EqualTo(messageName.Value.ToString())); - Assert.That(namedMessageSentMetricValues.Select(x => x.BytesCount), Has.All.EqualTo(FastBufferWriter.GetWriteSize(messageName) + k_NamedMessageOverhead)); - } - - [UnityTest] - public IEnumerator TrackNamedMessageSentMetricToSelf() - { - var waitForMetricValues = new WaitForEventMetricValues<NamedMessageEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.NamedMessageSent); - var messageName = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid()); - using (var writer = new FastBufferWriter(1300, Allocator.Temp)) - { - writer.WriteValueSafe(messageName); - - Server.CustomMessagingManager.SendNamedMessage(messageName.Value.ToString(), Server.LocalClientId, writer); - } - - yield return waitForMetricValues.WaitForMetricsReceived(); - - waitForMetricValues.AssertMetricValuesHaveNotBeenFound(); - } - - [UnityTest] - public IEnumerator TrackNamedMessageReceivedMetric() - { - var waitForMetricValues = new WaitForEventMetricValues<NamedMessageEvent>(FirstClientMetrics.Dispatcher, NetworkMetricTypes.NamedMessageReceived); - - var messageName = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid()); - - LogAssert.Expect(LogType.Log, $"Received from {Server.LocalClientId}"); - FirstClient.CustomMessagingManager.RegisterNamedMessageHandler(messageName.Value.ToString(), (ulong sender, FastBufferReader payload) => - { - Debug.Log($"Received from {sender}"); - }); - - using (var writer = new FastBufferWriter(1300, Allocator.Temp)) - { - writer.WriteValueSafe(messageName); - - Server.CustomMessagingManager.SendNamedMessage(messageName.Value.ToString(), FirstClient.LocalClientId, writer); - } - - - yield return waitForMetricValues.WaitForMetricsReceived(); - - var namedMessageReceivedValues = waitForMetricValues.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, namedMessageReceivedValues.Count); - - var namedMessageReceived = namedMessageReceivedValues.First(); - Assert.AreEqual(messageName.Value.ToString(), namedMessageReceived.Name); - Assert.AreEqual(Server.LocalClientId, namedMessageReceived.Connection.Id); - Assert.AreEqual(FastBufferWriter.GetWriteSize(messageName) + k_NamedMessageOverhead, namedMessageReceived.BytesCount); - } - - [UnityTest] - public IEnumerator TrackUnnamedMessageSentMetric() - { - var message = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid()); - using (var writer = new FastBufferWriter(1300, Allocator.Temp)) - { - writer.WriteValueSafe(message); - - Server.CustomMessagingManager.SendUnnamedMessage(FirstClient.LocalClientId, writer); - } - - - var waitForMetricValues = new WaitForEventMetricValues<UnnamedMessageEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.UnnamedMessageSent); - - yield return waitForMetricValues.WaitForMetricsReceived(); - - var unnamedMessageSentMetricValues = waitForMetricValues.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, unnamedMessageSentMetricValues.Count); - - var unnamedMessageSent = unnamedMessageSentMetricValues.First(); - Assert.AreEqual(FirstClient.LocalClientId, unnamedMessageSent.Connection.Id); - Assert.AreEqual(FastBufferWriter.GetWriteSize(message) + k_UnnamedMessageOverhead, unnamedMessageSent.BytesCount); - } - - [UnityTest] - public IEnumerator TrackUnnamedMessageSentMetricToMultipleClients() - { - var message = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid()); - var waitForMetricValues = new WaitForEventMetricValues<UnnamedMessageEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.UnnamedMessageSent); - using (var writer = new FastBufferWriter(1300, Allocator.Temp)) - { - writer.WriteValueSafe(message); - - Server.CustomMessagingManager.SendUnnamedMessage(new List<ulong> { FirstClient.LocalClientId, SecondClient.LocalClientId }, writer); - } - - - yield return waitForMetricValues.WaitForMetricsReceived(); - - var unnamedMessageSentMetricValues = waitForMetricValues.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(2, unnamedMessageSentMetricValues.Count); - Assert.That(unnamedMessageSentMetricValues.Select(x => x.BytesCount), Has.All.EqualTo(FastBufferWriter.GetWriteSize(message) + k_UnnamedMessageOverhead)); - - var clientIds = unnamedMessageSentMetricValues.Select(x => x.Connection.Id).ToList(); - Assert.Contains(FirstClient.LocalClientId, clientIds); - Assert.Contains(SecondClient.LocalClientId, clientIds); - } - - [UnityTest] - public IEnumerator TrackUnnamedMessageSentMetricToSelf() - { - var waitForMetricValues = new WaitForEventMetricValues<UnnamedMessageEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.UnnamedMessageSent); - var messageName = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid()); - using (var writer = new FastBufferWriter(1300, Allocator.Temp)) - { - writer.WriteValueSafe(messageName); - - Server.CustomMessagingManager.SendUnnamedMessage(Server.LocalClientId, writer); - } - - yield return waitForMetricValues.WaitForMetricsReceived(); - - waitForMetricValues.AssertMetricValuesHaveNotBeenFound(); - } - - [UnityTest] - public IEnumerator TrackUnnamedMessageReceivedMetric() - { - var message = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid()); - var waitForMetricValues = new WaitForEventMetricValues<UnnamedMessageEvent>(FirstClientMetrics.Dispatcher, NetworkMetricTypes.UnnamedMessageReceived); - using (var writer = new FastBufferWriter(1300, Allocator.Temp)) - { - writer.WriteValueSafe(message); - - Server.CustomMessagingManager.SendUnnamedMessage(FirstClient.LocalClientId, writer); - } - - yield return waitForMetricValues.WaitForMetricsReceived(); - - var unnamedMessageReceivedValues = waitForMetricValues.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, unnamedMessageReceivedValues.Count); - - var unnamedMessageReceived = unnamedMessageReceivedValues.First(); - Assert.AreEqual(Server.LocalClientId, unnamedMessageReceived.Connection.Id); - Assert.AreEqual(FastBufferWriter.GetWriteSize(message) + k_UnnamedMessageOverhead, unnamedMessageReceived.BytesCount); - } - } -} -#endif diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/MessagingMetricsTests.cs.meta b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/MessagingMetricsTests.cs.meta deleted file mode 100644 index 7910ff22ff..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/MessagingMetricsTests.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 2490ed51138306e4d92f8e9dcfc34462 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/MetricsDispatchTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/MetricsDispatchTests.cs deleted file mode 100644 index 6d1eb91789..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/MetricsDispatchTests.cs +++ /dev/null @@ -1,67 +0,0 @@ -#if MULTIPLAYER_TOOLS -using System; -using System.Collections; -using NUnit.Framework; -using Unity.Multiplayer.Tools.NetStats; -using Unity.Netcode.TestHelpers.Runtime; -using UnityEngine.TestTools; - -namespace Unity.Netcode.RuntimeTests.Metrics -{ - internal class MetricsDispatchTests - { - private int m_NbDispatches; - - private NetworkManager m_NetworkManager; - - [SetUp] - public void SetUp() - { - var networkManagerStarted = NetworkManagerHelper.StartNetworkManager( - out m_NetworkManager, - NetworkManagerHelper.NetworkManagerOperatingMode.Host, - new NetworkConfig - { - TickRate = 1, - }); - Assert.IsTrue(networkManagerStarted); - - var networkMetrics = m_NetworkManager.NetworkMetrics as NetworkMetrics; - networkMetrics.Dispatcher.RegisterObserver(new MockMetricsObserver(() => m_NbDispatches++)); - } - - [TearDown] - public void TearDown() - { - NetworkManagerHelper.ShutdownNetworkManager(); - } - - [UnityTest] - public IEnumerator VerifyNetworkMetricsDispatchesOncePerFrame() - { - var nbDispatchesBeforeFrame = m_NbDispatches; - - yield return null; // Wait one frame so dispatch occurs - - var nbDispatchesAfterFrame = m_NbDispatches; - - Assert.AreEqual(1, nbDispatchesAfterFrame - nbDispatchesBeforeFrame); - } - - private class MockMetricsObserver : IMetricObserver - { - private readonly Action m_OnObserve; - - public MockMetricsObserver(Action onObserve) - { - m_OnObserve = onObserve; - } - - public void Observe(MetricCollection collection) - { - m_OnObserve?.Invoke(); - } - } - } -} -#endif diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/MetricsDispatchTests.cs.meta b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/MetricsDispatchTests.cs.meta deleted file mode 100644 index 9a1994022a..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/MetricsDispatchTests.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 4833f15c8a59407abbb8532ea64b5683 -timeCreated: 1633451646 \ No newline at end of file diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/NetworkObjectMetricsTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/NetworkObjectMetricsTests.cs deleted file mode 100644 index 31abcadd50..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/NetworkObjectMetricsTests.cs +++ /dev/null @@ -1,288 +0,0 @@ -#if MULTIPLAYER_TOOLS -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using NUnit.Framework; -using Unity.Multiplayer.Tools.MetricTypes; -using Unity.Netcode.TestHelpers.Runtime.Metrics; -using UnityEngine; -using UnityEngine.TestTools; - -namespace Unity.Netcode.RuntimeTests.Metrics -{ - internal class NetworkObjectMetricsTests : SingleClientMetricTestBase - { - // Keep less than 23 chars to avoid issues if compared against a 32-byte fixed string - // since it will have "(Clone)" appended - private const string k_NewNetworkObjectName = "MetricObject"; - private GameObject m_NewNetworkPrefab; - - /// <summary> - /// Use OnServerAndClientsCreated to create any additional prefabs that you might need - /// </summary> - protected override void OnServerAndClientsCreated() - { - base.OnServerAndClientsCreated(); - m_NewNetworkPrefab = CreateNetworkObjectPrefab(k_NewNetworkObjectName); - } - - private NetworkObject SpawnNetworkObject() - { - return SpawnObject(m_NewNetworkPrefab, m_ServerNetworkManager).GetComponent<NetworkObject>(); - } - - [UnityTest] - public IEnumerator TrackNetworkObjectSpawnSentMetric() - { - var waitForMetricEvent = new WaitForEventMetricValues<ObjectSpawnedEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.ObjectSpawnedSent); - - var spawnedObject = SpawnNetworkObject(); - - yield return waitForMetricEvent.WaitForMetricsReceived(); - - var objectSpawnedSentMetricValues = waitForMetricEvent.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, objectSpawnedSentMetricValues.Count); - - var objectSpawned = objectSpawnedSentMetricValues.Last(); - Assert.AreEqual(Client.LocalClientId, objectSpawned.Connection.Id); - Assert.AreEqual(spawnedObject.name, objectSpawned.NetworkId.Name); - Assert.AreNotEqual(0, objectSpawned.BytesCount); - } - - [UnityTest] - public IEnumerator TrackNetworkObjectSpawnReceivedMetric() - { - var waitForMetricEvent = new WaitForEventMetricValues<ObjectSpawnedEvent>(ClientMetrics.Dispatcher, NetworkMetricTypes.ObjectSpawnedReceived); - - var networkObject = SpawnNetworkObject(); - yield return s_DefaultWaitForTick; - - yield return waitForMetricEvent.WaitForMetricsReceived(); - - var objectSpawnedReceivedMetricValues = waitForMetricEvent.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, objectSpawnedReceivedMetricValues.Count); - var clientSideObject = s_GlobalNetworkObjects[1][networkObject.NetworkObjectId]; - var objectSpawned = objectSpawnedReceivedMetricValues.First(); - Assert.AreEqual(Server.LocalClientId, objectSpawned.Connection.Id); - Assert.AreEqual(networkObject.NetworkObjectId, objectSpawned.NetworkId.NetworkId); - Assert.AreEqual(clientSideObject.name, objectSpawned.NetworkId.Name); - Assert.AreNotEqual(0, objectSpawned.BytesCount); - } - - [UnityTest] - public IEnumerator TrackNetworkObjectDestroySentMetric() - { - var waitForMetricEvent = new WaitForEventMetricValues<ObjectDestroyedEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.ObjectDestroyedSent); - var networkObject = SpawnNetworkObject(); - var objectName = networkObject.name; - - Server.SpawnManager.OnDespawnObject(networkObject, true); - - // Wait for the metric to be received - yield return waitForMetricEvent.WaitForMetricsReceived(); - var objectDestroyedSentMetricValues = waitForMetricEvent.AssertMetricValuesHaveBeenFound(); - - // The server should have sent 1 destroy message to the 1 client connected - Assert.AreEqual(1, objectDestroyedSentMetricValues.Count); - - var objectDestroyed = objectDestroyedSentMetricValues.Last(); - Assert.AreEqual(Client.LocalClientId, objectDestroyed.Connection.Id); - Assert.AreEqual(objectName, objectDestroyed.NetworkId.Name); - Assert.AreNotEqual(0, objectDestroyed.BytesCount); - } - - [UnityTest] - public IEnumerator TrackNetworkObjectDestroyReceivedMetric() - { - var networkObject = SpawnNetworkObject(); - - yield return s_DefaultWaitForTick; - - var waitForMetricEvent = new WaitForEventMetricValues<ObjectDestroyedEvent>(ClientMetrics.Dispatcher, NetworkMetricTypes.ObjectDestroyedReceived); - var objectId = networkObject.NetworkObjectId; - var objectName = s_GlobalNetworkObjects[1][objectId].name; - - Server.SpawnManager.OnDespawnObject(networkObject, true); - yield return s_DefaultWaitForTick; - - yield return waitForMetricEvent.WaitForMetricsReceived(); - - var objectDestroyedReceivedMetricValues = waitForMetricEvent.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, objectDestroyedReceivedMetricValues.Count); - - var objectDestroyed = objectDestroyedReceivedMetricValues.First(); - Assert.AreEqual(Server.LocalClientId, objectDestroyed.Connection.Id); - Assert.AreEqual(objectId, objectDestroyed.NetworkId.NetworkId); - Assert.AreEqual(objectName, objectDestroyed.NetworkId.Name); - Assert.AreNotEqual(0, objectDestroyed.BytesCount); - } - - [UnityTest] - public IEnumerator TrackMultipleNetworkObjectSpawnSentMetric() - { - var networkObject1 = SpawnNetworkObject(); - var networkObject2 = SpawnNetworkObject(); - yield return s_DefaultWaitForTick; - - NetworkObject.NetworkHide(new List<NetworkObject> { networkObject1, networkObject2 }, Client.LocalClientId); - - yield return s_DefaultWaitForTick; - - var waitForMetricEvent = new WaitForEventMetricValues<ObjectSpawnedEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.ObjectSpawnedSent); - - NetworkObject.NetworkShow(new List<NetworkObject> { networkObject1, networkObject2 }, Client.LocalClientId); - yield return s_DefaultWaitForTick; - - yield return waitForMetricEvent.WaitForMetricsReceived(); - - var objectSpawnedSentMetricValues = waitForMetricEvent.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(2, objectSpawnedSentMetricValues.Count); // As there's a client and server, this event is emitted twice. - Assert.That( - objectSpawnedSentMetricValues, - Has.Exactly(1).Matches<ObjectSpawnedEvent>( - x => Client.LocalClientId == x.Connection.Id - && x.NetworkId.NetworkId == networkObject1.NetworkObjectId - && x.NetworkId.Name == networkObject1.name)); - Assert.That( - objectSpawnedSentMetricValues, - Has.Exactly(1).Matches<ObjectSpawnedEvent>( - x => Client.LocalClientId == x.Connection.Id - && x.NetworkId.NetworkId == networkObject2.NetworkObjectId - && x.NetworkId.Name == networkObject2.name)); - - Assert.AreEqual(1, objectSpawnedSentMetricValues.Select(x => x.BytesCount).Distinct().Count()); - Assert.That(objectSpawnedSentMetricValues.Select(x => x.BytesCount), Has.All.Not.EqualTo(0)); - } - - [UnityTest] - public IEnumerator TrackMultipleNetworkObjectDestroySentMetric() - { - var networkObject1 = SpawnNetworkObject(); - var networkObject2 = SpawnNetworkObject(); - - yield return s_DefaultWaitForTick; - - var waitForMetricEvent = new WaitForEventMetricValues<ObjectDestroyedEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.ObjectDestroyedSent); - - NetworkObject.NetworkHide(new List<NetworkObject> { networkObject1, networkObject2 }, Client.LocalClientId); - yield return s_DefaultWaitForTick; - yield return waitForMetricEvent.WaitForMetricsReceived(); - - var objectDestroyedSentMetricValues = waitForMetricEvent.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(2, objectDestroyedSentMetricValues.Count); // As there's a client and server, this event is emitted twice. - Assert.That( - objectDestroyedSentMetricValues, - Has.Exactly(1).Matches<ObjectDestroyedEvent>( - x => Client.LocalClientId == x.Connection.Id - && x.NetworkId.NetworkId == networkObject1.NetworkObjectId - && x.NetworkId.Name == networkObject1.name)); - Assert.That( - objectDestroyedSentMetricValues, - Has.Exactly(1).Matches<ObjectDestroyedEvent>( - x => Client.LocalClientId == x.Connection.Id - && x.NetworkId.NetworkId == networkObject2.NetworkObjectId - && x.NetworkId.Name == networkObject2.name)); - - Assert.AreEqual(1, objectDestroyedSentMetricValues.Select(x => x.BytesCount).Distinct().Count()); - Assert.That(objectDestroyedSentMetricValues.Select(x => x.BytesCount), Has.All.Not.EqualTo(0)); - } - -#if MULTIPLAYER_TOOLS_1_0_0_PRE_7 - [UnityTest] - public IEnumerator TrackNetworkObjectCountAfterSpawnOnServer() - { - SpawnNetworkObject(); - - var waitForGaugeValues = new WaitForGaugeMetricValues(ServerMetrics.Dispatcher, NetworkMetricTypes.NetworkObjects); - - yield return s_DefaultWaitForTick; - yield return waitForGaugeValues.WaitForMetricsReceived(); - - var value = waitForGaugeValues.AssertMetricValueHaveBeenFound(); - Assert.AreEqual(3, value); - } - - [UnityTest] - public IEnumerator TrackNetworkObjectCountAfterSpawnOnClient() - { - SpawnNetworkObject(); - - //By default, we have 2 network objects - //There's a slight delay between the spawn on the server and the spawn on the client - //We want to have metrics when the value is different than the 2 default one to confirm the client has the new value - var waitForGaugeValues = new WaitForGaugeMetricValues(ClientMetrics.Dispatcher, NetworkMetricTypes.NetworkObjects, metric => (int)metric != 2); - - yield return waitForGaugeValues.WaitForMetricsReceived(); - - var value = waitForGaugeValues.AssertMetricValueHaveBeenFound(); - Assert.AreEqual(3, value); - } - - [UnityTest] - public IEnumerator TrackNetworkObjectCountAfterDespawnOnServer() - { - var objectList = Server.SpawnManager.SpawnedObjectsList; - for (int i = objectList.Count - 1; i >= 0; --i) - { - objectList.ElementAt(i).Despawn(); - } - - var waitForGaugeValues = new WaitForGaugeMetricValues(ServerMetrics.Dispatcher, NetworkMetricTypes.NetworkObjects); - - yield return s_DefaultWaitForTick; - yield return waitForGaugeValues.WaitForMetricsReceived(); - - var value = waitForGaugeValues.AssertMetricValueHaveBeenFound(); - Assert.AreEqual(0, value); - } - - [UnityTest] - public IEnumerator TrackNetworkObjectCountAfterDespawnOnClient() - { - var initialSpawnCount = Server.SpawnManager.SpawnedObjectsList.Count; - var spawnedObjects = new List<GameObject>(); - //By default, we have 2 network objects and will have spawned 4 so we want to wait for metrics to tell us we have 6 spawned objects - var waitForGaugeValues = new WaitForGaugeMetricValues(ClientMetrics.Dispatcher, NetworkMetricTypes.NetworkObjects, metric => (int)metric == 6); - - for (int i = 0; i < 4; i++) - { - spawnedObjects.Add(SpawnObject(m_NewNetworkPrefab, Server)); - } - - yield return waitForGaugeValues.WaitForMetricsReceived(); - var value = waitForGaugeValues.AssertMetricValueHaveBeenFound(); - Assert.AreEqual(6, value); - - // Create a new gauge that waits for the initial spawned client count - waitForGaugeValues = new WaitForGaugeMetricValues(ClientMetrics.Dispatcher, NetworkMetricTypes.NetworkObjects, metric => (int)metric != 6); - - // Now despawn the 4 spawned objects - foreach (var spawnedObject in spawnedObjects) - { - spawnedObject.GetComponent<NetworkObject>().Despawn(); - } - spawnedObjects.Clear(); - yield return waitForGaugeValues.WaitForMetricsReceived(); - value = waitForGaugeValues.AssertMetricValueHaveBeenFound(); - - // Validate the value is equals to the spawned objects prior to spawning the network prefab instances - Assert.AreEqual(initialSpawnCount, value); - - // Create a new gauge that waits for the initial spawned client count - waitForGaugeValues = new WaitForGaugeMetricValues(ClientMetrics.Dispatcher, NetworkMetricTypes.NetworkObjects, metric => (int)metric == 0); - - // Now assure despawning players are being tracked too - var spawnedPlayers = Server.SpawnManager.SpawnedObjectsList.ToList(); - foreach (var spawnedObject in spawnedPlayers) - { - spawnedObject.Despawn(); - } - yield return waitForGaugeValues.WaitForMetricsReceived(); - value = waitForGaugeValues.AssertMetricValueHaveBeenFound(); - // Nothing should be spawned on the client at this point - Assert.AreEqual(0, value); - } -#endif - } -} -#endif diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/NetworkObjectMetricsTests.cs.meta b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/NetworkObjectMetricsTests.cs.meta deleted file mode 100644 index d09dcacf56..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/NetworkObjectMetricsTests.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: c4cb56c442bed164da4908e54590dfeb -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/NetworkVariableMetricsTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/NetworkVariableMetricsTests.cs deleted file mode 100644 index 11f38cea1b..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/NetworkVariableMetricsTests.cs +++ /dev/null @@ -1,61 +0,0 @@ -#if MULTIPLAYER_TOOLS -using System.Collections; -using System.Linq; -using NUnit.Framework; -using Unity.Multiplayer.Tools.MetricTypes; -using Unity.Netcode.TestHelpers.Runtime.Metrics; -using UnityEngine.TestTools; - -namespace Unity.Netcode.RuntimeTests.Metrics -{ - internal class NetworkVariableMetricsTests : SingleClientMetricTestBase - { - protected override void OnCreatePlayerPrefab() - { - m_PlayerPrefab.AddComponent<NetworkVariableComponent>(); - base.OnCreatePlayerPrefab(); - } - - [UnityTest] - public IEnumerator TrackNetworkVariableDeltaSentMetric() - { - var waitForMetricValues = new WaitForEventMetricValues<NetworkVariableEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.NetworkVariableDeltaSent); - - yield return waitForMetricValues.WaitForMetricsReceived(); - - var metricValues = waitForMetricValues.AssertMetricValuesHaveBeenFound(); - - bool found = false; - foreach (var networkVariableDeltaSent in metricValues) - { - if (nameof(NetworkVariableComponent.MyNetworkVariable) == networkVariableDeltaSent.Name && - Client.LocalClientId == networkVariableDeltaSent.Connection.Id && - 0 != networkVariableDeltaSent.BytesCount) - { - found = true; - } - } - Assert.IsTrue(found); - } - - [UnityTest] - public IEnumerator TrackNetworkVariableDeltaReceivedMetric() - { - var waitForMetricValues = new WaitForEventMetricValues<NetworkVariableEvent>(ClientMetrics.Dispatcher, NetworkMetricTypes.NetworkVariableDeltaReceived); - - yield return waitForMetricValues.WaitForMetricsReceived(); - - var metricValues = waitForMetricValues.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(2, metricValues.Count); // We have an instance each of the player prefabs - - var first = metricValues.First(); - Assert.AreEqual(nameof(NetworkVariableComponent.MyNetworkVariable), first.Name); - Assert.AreNotEqual(0, first.BytesCount); - - var last = metricValues.Last(); - Assert.AreEqual(nameof(NetworkVariableComponent.MyNetworkVariable), last.Name); - Assert.AreNotEqual(0, last.BytesCount); - } - } -} -#endif diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/NetworkVariableMetricsTests.cs.meta b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/NetworkVariableMetricsTests.cs.meta deleted file mode 100644 index 690106bf91..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/NetworkVariableMetricsTests.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: abbea688505c90d4f82bfa5ea3ee1cd9 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/OwnershipChangeMetricsTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/OwnershipChangeMetricsTests.cs deleted file mode 100644 index cc08dcd5b7..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/OwnershipChangeMetricsTests.cs +++ /dev/null @@ -1,113 +0,0 @@ -#if MULTIPLAYER_TOOLS -using System.Collections; -using System.Linq; -using NUnit.Framework; -using Unity.Collections; -using Unity.Multiplayer.Tools.MetricTypes; -using Unity.Netcode.TestHelpers.Runtime; -using Unity.Netcode.TestHelpers.Runtime.Metrics; -using UnityEngine; -using UnityEngine.TestTools; - -namespace Unity.Netcode.RuntimeTests.Metrics -{ - internal class OwnershipChangeMetricsTests : SingleClientMetricTestBase - { - private const string k_NewNetworkObjectName = "TestNetworkObjectToSpawn"; - private NetworkObject m_NewNetworkPrefab; - // Header is dynamically sized due to packing, will be 2 bytes for all test messages. - private const int k_MessageHeaderSize = 2; - - protected override void OnServerAndClientsCreated() - { - var gameObject = new GameObject(k_NewNetworkObjectName); - m_NewNetworkPrefab = gameObject.AddComponent<NetworkObject>(); - NetcodeIntegrationTestHelpers.MakeNetworkObjectTestPrefab(m_NewNetworkPrefab); - - var networkPrefab = new NetworkPrefab { Prefab = gameObject }; - m_ServerNetworkManager.NetworkConfig.Prefabs.Add(networkPrefab); - foreach (var client in m_ClientNetworkManagers) - { - client.NetworkConfig.Prefabs.Add(networkPrefab); - } - base.OnServerAndClientsCreated(); - } - - private NetworkObject SpawnNetworkObject() - { - // Spawn another network object so we can hide multiple. - var gameObject = Object.Instantiate(m_NewNetworkPrefab); // new GameObject(NewNetworkObjectName); - var networkObject = gameObject.GetComponent<NetworkObject>(); - networkObject.NetworkManagerOwner = Server; - networkObject.Spawn(); - - return networkObject; - } - - private int GetWriteSizeForOwnerChange(NetworkObject networkObject, ulong newOwner) - { - var message = new ChangeOwnershipMessage - { - NetworkObjectId = networkObject.NetworkObjectId, - OwnerClientId = newOwner - }; - using var writer = new FastBufferWriter(1024, Allocator.Temp); - message.Serialize(writer, message.Version); - return writer.Length; - } - - [UnityTest] - public IEnumerator TrackOwnershipChangeSentMetric() - { - var networkObject = SpawnNetworkObject(); - - yield return new WaitForSeconds(0.2f); - - var waitForMetricValues = new WaitForEventMetricValues<OwnershipChangeEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.OwnershipChangeSent); - - networkObject.ChangeOwnership(1); - - yield return waitForMetricValues.WaitForMetricsReceived(); - - var metricValues = waitForMetricValues.AssertMetricValuesHaveBeenFound(); - - var ownershipChangeSent = metricValues.First(); - Assert.AreEqual(networkObject.NetworkObjectId, ownershipChangeSent.NetworkId.NetworkId); - Assert.AreEqual(Server.LocalClientId, ownershipChangeSent.Connection.Id); - Assert.AreEqual(0, ownershipChangeSent.BytesCount); - - // The first metric is to the server(self), so its size is now correctly reported as 0. - // Let's check the last one instead, to have a valid value - ownershipChangeSent = metricValues.Last(); - Assert.AreEqual(networkObject.NetworkObjectId, ownershipChangeSent.NetworkId.NetworkId); - Assert.AreEqual(Client.LocalClientId, ownershipChangeSent.Connection.Id); - - var serializedLength = GetWriteSizeForOwnerChange(networkObject, 1); - Assert.AreEqual(serializedLength + k_MessageHeaderSize, ownershipChangeSent.BytesCount); - } - - [UnityTest] - public IEnumerator TrackOwnershipChangeReceivedMetric() - { - var networkObject = SpawnNetworkObject(); - - yield return new WaitForSeconds(0.2f); - - var waitForMetricValues = new WaitForEventMetricValues<OwnershipChangeEvent>(ClientMetrics.Dispatcher, NetworkMetricTypes.OwnershipChangeReceived); - - networkObject.ChangeOwnership(1); - - yield return waitForMetricValues.WaitForMetricsReceived(); - - var metricValues = waitForMetricValues.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, metricValues.Count); - - var ownershipChangeReceived = metricValues.First(); - Assert.AreEqual(networkObject.NetworkObjectId, ownershipChangeReceived.NetworkId.NetworkId); - - var serializedLength = GetWriteSizeForOwnerChange(networkObject, 1); - Assert.AreEqual(serializedLength, ownershipChangeReceived.BytesCount); - } - } -} -#endif diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/OwnershipChangeMetricsTests.cs.meta b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/OwnershipChangeMetricsTests.cs.meta deleted file mode 100644 index a227871bc5..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/OwnershipChangeMetricsTests.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 86daf1dbe91c9ad40818743a805d0052 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/PacketLossMetricsTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/PacketLossMetricsTests.cs deleted file mode 100644 index 1f9a35390f..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/PacketLossMetricsTests.cs +++ /dev/null @@ -1,91 +0,0 @@ -#if MULTIPLAYER_TOOLS -#if MULTIPLAYER_TOOLS_1_0_0_PRE_7 -using System.Collections; -using NUnit.Framework; -using Unity.Collections; -using Unity.Multiplayer.Tools.MetricTypes; -using Unity.Netcode.TestHelpers.Runtime; -using Unity.Netcode.TestHelpers.Runtime.Metrics; -using Unity.Netcode.Transports.UTP; -using Unity.Networking.Transport.Utilities; -using UnityEngine.TestTools; - -namespace Unity.Netcode.RuntimeTests.Metrics -{ - internal class PacketLossMetricsTests : NetcodeIntegrationTest - { - protected override int NumberOfClients => 1; - private readonly int m_PacketLossRate = 25; - private readonly int m_PacketLossRangeDelta = 3; - private readonly int m_MessageSize = 200; - - public PacketLossMetricsTests() - : base(HostOrServer.Server) - { } - - protected override void OnServerAndClientsCreated() - { - var clientTransport = (UnityTransport)m_ClientNetworkManagers[0].NetworkConfig.NetworkTransport; - - // Determined through trial and error. With both UTP 1.2 and 2.0, this random seed - // results in an effective packet loss percentage between 22% and 28%. Future UTP - // updates may change the RNG call patterns and cause this test to fail, in which - // case the value should be modified again. - clientTransport.DebugSimulatorRandomSeed = 4; - - base.OnServerAndClientsCreated(); - } - - [UnityTest] - public IEnumerator TrackPacketLossAsServer() - { - var waitForPacketLossMetric = new WaitForGaugeMetricValues((m_ServerNetworkManager.NetworkMetrics as NetworkMetrics).Dispatcher, - NetworkMetricTypes.PacketLoss, - metric => metric == 0.0d); - - for (int i = 0; i < 1000; ++i) - { - using var writer = new FastBufferWriter(m_MessageSize, Allocator.Persistent); - writer.WriteBytesSafe(new byte[m_MessageSize]); - m_ServerNetworkManager.CustomMessagingManager.SendNamedMessage("Test", m_ServerNetworkManager.ConnectedClientsIds, writer); - } - - yield return waitForPacketLossMetric.WaitForMetricsReceived(); - - var packetLossValue = waitForPacketLossMetric.AssertMetricValueHaveBeenFound(); - Assert.AreEqual(0d, packetLossValue); - } - - [UnityTest] - public IEnumerator TrackPacketLossAsClient() - { - double packetLossRateMinRange = (m_PacketLossRate - m_PacketLossRangeDelta) / 100d; - double packetLossRateMaxrange = (m_PacketLossRate + m_PacketLossRangeDelta) / 100d; - var clientNetworkManager = m_ClientNetworkManagers[0]; - - var clientTransport = (UnityTransport)clientNetworkManager.NetworkConfig.NetworkTransport; - clientTransport.GetNetworkDriver().CurrentSettings.TryGet<SimulatorUtility.Parameters>(out var parameters); - parameters.PacketDropPercentage = m_PacketLossRate; - clientTransport.GetNetworkDriver().ModifySimulatorStageParameters(parameters); - - var waitForPacketLossMetric = new WaitForGaugeMetricValues((clientNetworkManager.NetworkMetrics as NetworkMetrics).Dispatcher, - NetworkMetricTypes.PacketLoss, - metric => packetLossRateMinRange <= metric && metric <= packetLossRateMaxrange); - - for (int i = 0; i < 1000; ++i) - { - using var writer = new FastBufferWriter(m_MessageSize, Allocator.Persistent); - writer.WriteBytesSafe(new byte[m_MessageSize]); - m_ServerNetworkManager.CustomMessagingManager.SendNamedMessage("Test", m_ServerNetworkManager.ConnectedClientsIds, writer); - } - - yield return waitForPacketLossMetric.WaitForMetricsReceived(); - - var packetLossValue = waitForPacketLossMetric.AssertMetricValueHaveBeenFound(); - Assert.That(packetLossValue, Is.InRange(packetLossRateMinRange, packetLossRateMaxrange)); - } - } -} - -#endif -#endif diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/PacketLossMetricsTests.cs.meta b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/PacketLossMetricsTests.cs.meta deleted file mode 100644 index d48f305665..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/PacketLossMetricsTests.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 12e64da4670d49a4a89da38d18e64396 -timeCreated: 1648133968 \ No newline at end of file diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/PacketMetricsTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/PacketMetricsTests.cs deleted file mode 100644 index b6bfd71bf9..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/PacketMetricsTests.cs +++ /dev/null @@ -1,50 +0,0 @@ -#if MULTIPLAYER_TOOLS -#if MULTIPLAYER_TOOLS_1_0_0_PRE_7 -using System.Collections; -using NUnit.Framework; -using Unity.Collections; -using Unity.Multiplayer.Tools.MetricTypes; -using Unity.Netcode.TestHelpers.Runtime.Metrics; -using UnityEngine.TestTools; - -namespace Unity.Netcode.RuntimeTests.Metrics -{ - internal class PacketMetricsTests : SingleClientMetricTestBase - { - [UnityTest] - public IEnumerator TrackPacketSentMetric() - { - var waitForMetricValues = new WaitForCounterMetricValue(ServerMetrics.Dispatcher, NetworkMetricTypes.PacketsSent, metric => metric > 0); - - using (var writer = new FastBufferWriter(sizeof(uint), Allocator.Temp)) - { - writer.WriteValueSafe(1337); - Server.CustomMessagingManager.SendUnnamedMessageToAll(writer); - } - - yield return waitForMetricValues.WaitForMetricsReceived(); - - var totalPacketCount = waitForMetricValues.AssertMetricValueHaveBeenFound(); - Assert.That(totalPacketCount, Is.InRange(1, 4)); - } - - [UnityTest] - public IEnumerator TrackPacketReceivedMetric() - { - var waitForMetricValues = new WaitForCounterMetricValue(ClientMetrics.Dispatcher, NetworkMetricTypes.PacketsReceived, metric => metric > 0); - - using (var writer = new FastBufferWriter(sizeof(uint), Allocator.Temp)) - { - writer.WriteValueSafe(1337); - Server.CustomMessagingManager.SendUnnamedMessageToAll(writer); - } - - yield return waitForMetricValues.WaitForMetricsReceived(); - - var totalPacketCount = waitForMetricValues.AssertMetricValueHaveBeenFound(); - Assert.That(totalPacketCount, Is.InRange(1, 4)); - } - } -} -#endif -#endif diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/PacketMetricsTests.cs.meta b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/PacketMetricsTests.cs.meta deleted file mode 100644 index d55ef2fa73..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/PacketMetricsTests.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 84a4884f4ea744a9944284d56b29531b -timeCreated: 1644269306 \ No newline at end of file diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/RpcMetricsTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/RpcMetricsTests.cs deleted file mode 100644 index f68d502597..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/RpcMetricsTests.cs +++ /dev/null @@ -1,145 +0,0 @@ -#if MULTIPLAYER_TOOLS -using System.Collections; -using System.Linq; -using NUnit.Framework; -using Unity.Collections; -using Unity.Multiplayer.Tools.MetricTypes; -using Unity.Netcode.TestHelpers.Runtime.Metrics; -using UnityEngine.TestTools; - -namespace Unity.Netcode.RuntimeTests.Metrics -{ - internal class RpcMetricsTests : DualClientMetricTestBase - { - protected override void OnCreatePlayerPrefab() - { - m_PlayerPrefab.AddComponent<RpcTestComponent>(); - base.OnCreatePlayerPrefab(); - } - - [UnityTest] - public IEnumerator TrackRpcSentMetricOnServerToOnlyOneClientWithArray() - { - var waitForMetricValues = new WaitForEventMetricValues<RpcEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.RpcSent); - - m_PlayerNetworkObjects[m_ServerNetworkManager.LocalClientId][FirstClient.LocalClientId].GetComponent<RpcTestComponent>().MyClientRpc(new ClientRpcParams - { - Send = new ClientRpcSendParams - { - TargetClientIds = new[] { FirstClient.LocalClientId } - } - }); - - yield return waitForMetricValues.WaitForMetricsReceived(); - - var serverRpcSentValues = waitForMetricValues.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, serverRpcSentValues.Count); - - Assert.That(serverRpcSentValues, Has.All.Matches<RpcEvent>(x => x.Name == nameof(RpcTestComponent.MyClientRpc))); - Assert.That(serverRpcSentValues, Has.All.Matches<RpcEvent>(x => x.NetworkBehaviourName == nameof(RpcTestComponent))); - Assert.That(serverRpcSentValues, Has.All.Matches<RpcEvent>(x => x.BytesCount != 0)); - Assert.AreEqual(FirstClient.LocalClientId, serverRpcSentValues.First().Connection.Id); - } - - [UnityTest] - public IEnumerator TrackRpcSentMetricOnServerToOnlyOneClientWithNativeArray() - { - var waitForMetricValues = new WaitForEventMetricValues<RpcEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.RpcSent); - - m_PlayerNetworkObjects[m_ServerNetworkManager.LocalClientId][FirstClient.LocalClientId].GetComponent<RpcTestComponent>().MyClientRpc(new ClientRpcParams - { - Send = new ClientRpcSendParams - { - TargetClientIdsNativeArray = new NativeArray<ulong>(new[] { FirstClient.LocalClientId }, Allocator.Temp) - } - }); - - yield return waitForMetricValues.WaitForMetricsReceived(); - - var serverRpcSentValues = waitForMetricValues.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, serverRpcSentValues.Count); - - Assert.That(serverRpcSentValues, Has.All.Matches<RpcEvent>(x => x.Name == nameof(RpcTestComponent.MyClientRpc))); - Assert.That(serverRpcSentValues, Has.All.Matches<RpcEvent>(x => x.NetworkBehaviourName == nameof(RpcTestComponent))); - Assert.That(serverRpcSentValues, Has.All.Matches<RpcEvent>(x => x.BytesCount != 0)); - Assert.AreEqual(FirstClient.LocalClientId, serverRpcSentValues.First().Connection.Id); - } - - [UnityTest] - public IEnumerator TrackRpcSentMetricOnServerToAllClients() - { - var waitForMetricValues = new WaitForEventMetricValues<RpcEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.RpcSent); - - m_PlayerNetworkObjects[m_ServerNetworkManager.LocalClientId][FirstClient.LocalClientId].GetComponent<RpcTestComponent>().MyClientRpc(); - - yield return waitForMetricValues.WaitForMetricsReceived(); - - var serverRpcSentValues = waitForMetricValues.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(3, serverRpcSentValues.Count); // Server will receive this, since it's host - - Assert.That(serverRpcSentValues, Has.All.Matches<RpcEvent>(x => x.Name == nameof(RpcTestComponent.MyClientRpc))); - Assert.That(serverRpcSentValues, Has.All.Matches<RpcEvent>(x => x.NetworkBehaviourName == nameof(RpcTestComponent))); - Assert.That(serverRpcSentValues, Has.All.Matches<RpcEvent>(x => x.BytesCount != 0)); - Assert.Contains(Server.LocalClientId, serverRpcSentValues.Select(x => x.Connection.Id).ToArray()); - Assert.Contains(FirstClient.LocalClientId, serverRpcSentValues.Select(x => x.Connection.Id).ToArray()); - Assert.Contains(SecondClient.LocalClientId, serverRpcSentValues.Select(x => x.Connection.Id).ToArray()); - } - - [UnityTest] - public IEnumerator TrackRpcSentMetricOnClient() - { - var waitForClientMetricsValues = new WaitForEventMetricValues<RpcEvent>(FirstClientMetrics.Dispatcher, NetworkMetricTypes.RpcSent); - - m_PlayerNetworkObjects[FirstClient.LocalClientId][FirstClient.LocalClientId].GetComponent<RpcTestComponent>().MyServerRpc(); - - yield return waitForClientMetricsValues.WaitForMetricsReceived(); - - var clientRpcSentValues = waitForClientMetricsValues.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, clientRpcSentValues.Count); - - var rpcSent = clientRpcSentValues.First(); - Assert.AreEqual(Server.LocalClientId, rpcSent.Connection.Id); - Assert.AreEqual(nameof(RpcTestComponent.MyServerRpc), rpcSent.Name); - Assert.AreEqual(nameof(RpcTestComponent), rpcSent.NetworkBehaviourName); - Assert.AreNotEqual(0, rpcSent.BytesCount); - } - - [UnityTest] - public IEnumerator TrackRpcReceivedMetricOnServer() - { - var waitForServerMetricsValues = new WaitForEventMetricValues<RpcEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.RpcReceived); - m_PlayerNetworkObjects[FirstClient.LocalClientId][FirstClient.LocalClientId].GetComponent<RpcTestComponent>().MyServerRpc(); - - yield return waitForServerMetricsValues.WaitForMetricsReceived(); - - var serverRpcReceivedValues = waitForServerMetricsValues.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, serverRpcReceivedValues.Count); - - var rpcReceived = serverRpcReceivedValues.First(); - Assert.AreEqual(FirstClient.LocalClientId, rpcReceived.Connection.Id); - Assert.AreEqual(nameof(RpcTestComponent.MyServerRpc), rpcReceived.Name); - Assert.AreEqual(nameof(RpcTestComponent), rpcReceived.NetworkBehaviourName); - Assert.AreNotEqual(0, rpcReceived.BytesCount); - } - - [UnityTest] - public IEnumerator TrackRpcReceivedMetricOnClient() - { - var waitForClientMetricsValues = new WaitForEventMetricValues<RpcEvent>(FirstClientMetrics.Dispatcher, NetworkMetricTypes.RpcReceived); - - m_PlayerNetworkObjects[m_ServerNetworkManager.LocalClientId][FirstClient.LocalClientId].GetComponent<RpcTestComponent>().MyClientRpc(); - - yield return waitForClientMetricsValues.WaitForMetricsReceived(); - - var clientRpcReceivedValues = waitForClientMetricsValues.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, clientRpcReceivedValues.Count); - - var rpcReceived = clientRpcReceivedValues.First(); - Assert.AreEqual(Server.LocalClientId, rpcReceived.Connection.Id); - Assert.AreEqual(nameof(RpcTestComponent.MyClientRpc), rpcReceived.Name); - Assert.AreEqual(nameof(RpcTestComponent), rpcReceived.NetworkBehaviourName); - Assert.AreNotEqual(0, rpcReceived.BytesCount); - } - } -} -#endif diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/RpcMetricsTests.cs.meta b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/RpcMetricsTests.cs.meta deleted file mode 100644 index 38427d5e46..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/RpcMetricsTests.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 02a31cf8be00f8b46b65477d648b297d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/RttMetricsTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/RttMetricsTests.cs deleted file mode 100644 index 3a1a2ca2d4..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/RttMetricsTests.cs +++ /dev/null @@ -1,88 +0,0 @@ -#if MULTIPLAYER_TOOLS -#if MULTIPLAYER_TOOLS_1_0_0_PRE_7 - -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using NUnit.Framework; -using Unity.Collections; -using Unity.Multiplayer.Tools.MetricTypes; -using Unity.Netcode.TestHelpers.Runtime; -using Unity.Netcode.TestHelpers.Runtime.Metrics; -using UnityEngine.TestTools; - -namespace Unity.Netcode.RuntimeTests.Metrics -{ - /// <summary> - /// Note: This is one way to easily identify each specific test. - /// Since the test only tested 1 and then 2 clients, I made this - /// and enum, but you can always remove the enum in the constructor, - /// replace it with an int, and then test from 1 to 9 clients. - /// Just an example of how you can accomplish the same task using - /// the NetcodeIntegrationTest - /// </summary> - [TestFixture(ClientCount.OneClient)] - [TestFixture(ClientCount.TwoClients)] - internal class RttMetricsTests : NetcodeIntegrationTest - { - protected override int NumberOfClients => m_ClientCount; - - public enum ClientCount - { - OneClient, - TwoClients - } - - private int m_ClientCount; - - public RttMetricsTests(ClientCount numberOfClients) - { - m_ClientCount = numberOfClients == ClientCount.OneClient ? 1 : 2; - } - - [UnityTest] - public IEnumerator TrackRttMetricServerToClient() - { - var waitForMetricValues = new WaitForGaugeMetricValues((m_ServerNetworkManager.NetworkMetrics as NetworkMetrics).Dispatcher, NetworkMetricTypes.RttToServer); - - using (var writer = new FastBufferWriter(sizeof(uint), Allocator.Temp)) - { - writer.WriteValueSafe(1337); - m_ServerNetworkManager.CustomMessagingManager.SendUnnamedMessageToAll(writer); - } - - yield return WaitForConditionOrTimeOut(() => waitForMetricValues.MetricFound()); - Assert.False(s_GlobalTimeoutHelper.TimedOut, $"{nameof(TrackRttMetricServerToClient)} timed out waiting for metric to be found for {m_ClientCount} clients!"); - - var rttValue = waitForMetricValues.AssertMetricValueHaveBeenFound(); - Assert.AreEqual(0f, rttValue); - } - - [UnityTest] - public IEnumerator TrackRttMetricClientToServer() - { - var clientGaugeMetricValues = new List<WaitForGaugeMetricValues>(); - foreach (var client in m_ClientNetworkManagers) - { - clientGaugeMetricValues.Add(new WaitForGaugeMetricValues((client.NetworkMetrics as NetworkMetrics).Dispatcher, NetworkMetricTypes.RttToServer, metric => metric > 0f)); - } - - using (var writer = new FastBufferWriter(sizeof(uint), Allocator.Temp)) - { - writer.WriteValueSafe(1337); - m_ServerNetworkManager.CustomMessagingManager.SendUnnamedMessageToAll(writer); - } - - yield return WaitForConditionOrTimeOut(() => clientGaugeMetricValues.Where((c) => c.MetricFound()).Count() == NumberOfClients); - Assert.False(s_GlobalTimeoutHelper.TimedOut, $"{nameof(TrackRttMetricClientToServer)} timed out waiting for metric to be found for {m_ClientCount} clients!"); - - foreach (var clientGaugeMetricValue in clientGaugeMetricValues) - { - var rttValue = clientGaugeMetricValue.AssertMetricValueHaveBeenFound(); - Assert.That(rttValue, Is.GreaterThanOrEqualTo(1e-3f)); - } - } - } -} -#endif -#endif diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/RttMetricsTests.cs.meta b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/RttMetricsTests.cs.meta deleted file mode 100644 index 704d1b4b6d..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/RttMetricsTests.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 452fbcb436d24291ba7db3a68e3e50ac -timeCreated: 1644269321 \ No newline at end of file diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/ServerLogsMetricTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/ServerLogsMetricTests.cs deleted file mode 100644 index 758d7aa114..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/ServerLogsMetricTests.cs +++ /dev/null @@ -1,95 +0,0 @@ -#if MULTIPLAYER_TOOLS -using System; -using System.Collections; -using System.Linq; -using NUnit.Framework; -using Unity.Collections; -using Unity.Multiplayer.Tools.MetricTypes; -using Unity.Netcode.TestHelpers.Runtime.Metrics; -using UnityEngine.TestTools; - -namespace Unity.Netcode.RuntimeTests.Metrics -{ - internal class ServerLogsMetricTests : SingleClientMetricTestBase - { - // Header is dynamically sized due to packing, will be 3 bytes for all test messages. - private const int k_MessageHeaderSize = 3; - - protected override IEnumerator OnSetup() - { - m_CreateServerFirst = false; - return base.OnSetup(); - } - - - private int GetWriteSizeForLog(NetworkLog.LogType logType, string logMessage) - { - var message = new ServerLogMessage - { - LogType = logType, - Message = logMessage - }; - using var writer = new FastBufferWriter(1024, Allocator.Temp); - message.Serialize(writer, message.Version); - return writer.Length; - } - - [UnityTest] - public IEnumerator TrackServerLogSentMetric() - { - // Set the client NetworkManager to assure the log is sent - NetworkLog.NetworkManagerOverride = Client; - var waitForSentMetric = new WaitForEventMetricValues<ServerLogEvent>(ClientMetrics.Dispatcher, NetworkMetricTypes.ServerLogSent); - - var message = Guid.NewGuid().ToString(); - Client.LogLevel = LogLevel.Developer; - Server.LogLevel = LogLevel.Developer; - NetworkLog.LogWarningServer(message); - yield return s_DefaultWaitForTick; - - yield return waitForSentMetric.WaitForMetricsReceived(); - - var sentMetrics = waitForSentMetric.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, sentMetrics.Count); - - var sentMetric = sentMetrics.First(); - Assert.AreEqual(Server.LocalClientId, sentMetric.Connection.Id); - Assert.AreEqual((uint)NetworkLog.LogType.Warning, (uint)sentMetric.LogLevel); - - var serializedLength = GetWriteSizeForLog(NetworkLog.LogType.Warning, message); - Assert.AreEqual(serializedLength + k_MessageHeaderSize, sentMetric.BytesCount); - } - - [UnityTest] - public IEnumerator TrackServerLogReceivedMetric() - { - var waitForReceivedMetric = new WaitForEventMetricValues<ServerLogEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.ServerLogReceived); - - var message = Guid.NewGuid().ToString(); - Client.LogLevel = LogLevel.Developer; - Server.LogLevel = LogLevel.Developer; - NetworkLog.LogWarningServer(message); - - yield return s_DefaultWaitForTick; - - yield return waitForReceivedMetric.WaitForMetricsReceived(); - - var receivedMetrics = waitForReceivedMetric.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, receivedMetrics.Count); - - var receivedMetric = receivedMetrics.First(); - Assert.AreEqual(Client.LocalClientId, receivedMetric.Connection.Id); - Assert.AreEqual((uint)NetworkLog.LogType.Warning, (uint)receivedMetric.LogLevel); - - var serializedLength = GetWriteSizeForLog(NetworkLog.LogType.Warning, message); - Assert.AreEqual(serializedLength, receivedMetric.BytesCount); - } - - protected override IEnumerator OnTearDown() - { - NetworkLog.NetworkManagerOverride = null; - return base.OnTearDown(); - } - } -} -#endif diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/ServerLogsMetricTests.cs.meta b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/ServerLogsMetricTests.cs.meta deleted file mode 100644 index 8eccb56ef7..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/ServerLogsMetricTests.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 5ba082aac78de5d488f621a0cbaf16a6 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/TransportBytesMetricsTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/TransportBytesMetricsTests.cs deleted file mode 100644 index 94e67e5630..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/TransportBytesMetricsTests.cs +++ /dev/null @@ -1,111 +0,0 @@ -#if MULTIPLAYER_TOOLS -using System; -using System.Collections; -using NUnit.Framework; -using Unity.Collections; -using Unity.Multiplayer.Tools.MetricTypes; -using Unity.Multiplayer.Tools.NetStats; -using Unity.Netcode.TestHelpers.Runtime.Metrics; -using UnityEngine.TestTools; - -namespace Unity.Netcode.RuntimeTests.Metrics -{ - internal class TransportBytesMetricsTests : SingleClientMetricTestBase - { - // Header is dynamically sized due to packing, will be 2 bytes for all test messages. - private const int k_MessageHeaderSize = 2; - private static readonly long k_MessageOverhead = 8 + FastBufferWriter.GetWriteSize<NetworkBatchHeader>() + k_MessageHeaderSize; - - [UnityTest] - public IEnumerator TrackTotalNumberOfBytesSent() - { - var messageName = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid()); - var writer = new FastBufferWriter(1300, Allocator.Temp); - var observer = new TotalBytesObserver(ClientMetrics.Dispatcher, NetworkMetricTypes.TotalBytesReceived); - try - { - writer.WriteValueSafe(messageName); - - Server.CustomMessagingManager.SendNamedMessage(messageName.Value.ToString(), Client.LocalClientId, writer); - } - finally - { - writer.Dispose(); - } - - var nbFrames = 0; - while (!observer.Found || nbFrames < 10) - { - yield return null; - nbFrames++; - } - - Assert.True(observer.Found); - Assert.AreEqual(((FastBufferWriter.GetWriteSize(messageName) + k_MessageOverhead) + 7) & ~7, observer.Value); - } - - [UnityTest] - public IEnumerator TrackTotalNumberOfBytesReceived() - { - var messageName = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid()); - var writer = new FastBufferWriter(1300, Allocator.Temp); - var observer = new TotalBytesObserver(ClientMetrics.Dispatcher, NetworkMetricTypes.TotalBytesReceived); - try - { - writer.WriteValueSafe(messageName); - - Server.CustomMessagingManager.SendNamedMessage(messageName.Value.ToString(), Client.LocalClientId, writer); - } - finally - { - writer.Dispose(); - } - - var nbFrames = 0; - while (!observer.Found || nbFrames < 10) - { - yield return null; - nbFrames++; - } - - Assert.True(observer.Found); - Assert.AreEqual(((FastBufferWriter.GetWriteSize(messageName) + k_MessageOverhead) + 7) & ~7, observer.Value); - } - - private class TotalBytesObserver : IMetricObserver - { - private readonly DirectionalMetricInfo m_MetricInfo; - - public TotalBytesObserver(IMetricDispatcher dispatcher, DirectionalMetricInfo metricInfo) - { - m_MetricInfo = metricInfo; - - dispatcher.RegisterObserver(this); - } - - public bool Found { get; private set; } - - public long Value { get; private set; } - - private int m_BytesFoundCounter; - private long m_TotalBytes; - - public void Observe(MetricCollection collection) - { - if (collection.TryGetCounter(m_MetricInfo.Id, out var counter) && counter.Value > 0) - { - // Don't assign another observed value once one is already observed - if (!Found) - { - Found = true; - Value = counter.Value; - m_TotalBytes += ((counter.Value + 7) & ~7); - m_BytesFoundCounter++; - UnityEngine.Debug.Log($"[{m_BytesFoundCounter}] Bytes Observed {counter.Value} | Total Bytes Observed: {m_TotalBytes}"); - } - } - } - } - } -} -#endif diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/TransportBytesMetricsTests.cs.meta b/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/TransportBytesMetricsTests.cs.meta deleted file mode 100644 index 2cfb1f3a0b..0000000000 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics/TransportBytesMetricsTests.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a8be98b50d230114f853054c479341ee -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/com.unity.netcode.runtimetests.asmdef b/com.unity.netcode.gameobjects/Tests/Runtime/Unity.Netcode.Runtime.Tests.asmdef similarity index 95% rename from com.unity.netcode.gameobjects/Tests/Runtime/com.unity.netcode.runtimetests.asmdef rename to com.unity.netcode.gameobjects/Tests/Runtime/Unity.Netcode.Runtime.Tests.asmdef index ce8ab1c7eb..96441cf8af 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/com.unity.netcode.runtimetests.asmdef +++ b/com.unity.netcode.gameobjects/Tests/Runtime/Unity.Netcode.Runtime.Tests.asmdef @@ -1,9 +1,8 @@ { - "name": "Unity.Netcode.RuntimeTests", + "name": "Unity.Netcode.Runtime.Tests", "rootNamespace": "Unity.Netcode.RuntimeTests", "references": [ "Unity.Netcode.Runtime", - "Unity.Netcode.Components", "Unity.Collections", "Unity.Multiplayer.MetricTypes", "Unity.Multiplayer.NetStats", diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/com.unity.netcode.runtimetests.asmdef.meta b/com.unity.netcode.gameobjects/Tests/Runtime/Unity.Netcode.Runtime.Tests.asmdef.meta similarity index 100% rename from com.unity.netcode.gameobjects/Tests/Runtime/com.unity.netcode.runtimetests.asmdef.meta rename to com.unity.netcode.gameobjects/Tests/Runtime/Unity.Netcode.Runtime.Tests.asmdef.meta diff --git a/testproject-tools-integration/Assets/Tests/Runtime/SceneEventTests.cs b/testproject-tools-integration/Assets/Tests/Runtime/SceneEventTests.cs deleted file mode 100644 index eccaf57490..0000000000 --- a/testproject-tools-integration/Assets/Tests/Runtime/SceneEventTests.cs +++ /dev/null @@ -1,751 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using NUnit.Framework; -using Unity.Multiplayer.Tools.MetricTypes; -using Unity.Netcode; -using Unity.Netcode.TestHelpers.Runtime; -using Unity.Netcode.TestHelpers.Runtime.Metrics; -using UnityEngine.SceneManagement; -using UnityEngine.TestTools; -using SceneEventType = Unity.Netcode.SceneEventType; - -namespace TestProject.ToolsIntegration.RuntimeTests -{ - internal class SceneEventTests : SingleClientMetricTestBase - { - // scenes referenced in this test must also be in the build settings of the project. - private const string k_SimpleSceneName = "SimpleScene"; - - private NetworkSceneManager m_ClientNetworkSceneManager; - private NetworkSceneManager m_ServerNetworkSceneManager; - private Scene m_LoadedScene; - - protected override IEnumerator OnSetup() - { - SceneManager.sceneLoaded += SceneManager_sceneLoaded; - m_CreateServerFirst = false; - return base.OnSetup(); - } - - private List<Scene> m_AllScenesLoaded = new List<Scene>(); - - private void SceneManager_sceneLoaded(Scene arg0, LoadSceneMode arg1) - { - m_AllScenesLoaded.Add(arg0); - } - - protected override void OnServerAndClientsCreated() - { - // invoke the base first so the Server and client are set - base.OnServerAndClientsCreated(); - - Server.NetworkConfig.EnableSceneManagement = true; - Client.NetworkConfig.EnableSceneManagement = true; - } - - protected override IEnumerator OnServerAndClientsConnected() - { - m_ClientNetworkSceneManager = Client.SceneManager; - m_ServerNetworkSceneManager = Server.SceneManager; - m_ServerNetworkSceneManager.OnSceneEvent += RegisterLoadedSceneCallback; - - yield return base.OnServerAndClientsConnected(); - } - - protected override IEnumerator OnTearDown() - { - if (!m_AllScenesLoaded.Contains(m_LoadedScene)) - { - m_AllScenesLoaded.Add(m_LoadedScene); - } - - foreach (var sceneLoaded in m_AllScenesLoaded) - { - if (sceneLoaded.IsValid()) - { - yield return UnloadTestScene(sceneLoaded); - } - } - - yield return base.OnTearDown(); - } - - [UnityTest] - public IEnumerator TestS2CLoadSent() - { - var serverSceneLoaded = false; - var clientSceneLoaded = false; - // Register a callback so we know when the scene has loaded server side, as this is when - // the message is sent to the client. AsyncOperation is the ScceneManager.LoadSceneAsync operation. - m_ClientNetworkSceneManager.OnSceneEvent += sceneEvent => - { - if (sceneEvent.SceneEventType.Equals(SceneEventType.Load) && sceneEvent.ClientId == Client.LocalClientId) - { - serverSceneLoaded = true; - } - }; - - m_ServerNetworkSceneManager.OnSceneEvent += sceneEvent => - { - if (sceneEvent.SceneEventType.Equals(SceneEventType.LoadComplete) && sceneEvent.ClientId == Client.LocalClientId) - { - clientSceneLoaded = true; - } - }; - - var waitForSentMetric = new WaitForEventMetricValues<SceneEventMetric>(ServerMetrics.Dispatcher, NetworkMetricTypes.SceneEventSent); - - // Load a scene to trigger the messages - StartServerLoadScene(); - - // Wait for the server to load the scene locally first. - yield return WaitForCondition(() => serverSceneLoaded); - Assert.IsTrue(serverSceneLoaded); - - yield return WaitForCondition(() => clientSceneLoaded); - Assert.IsTrue(clientSceneLoaded); - - // Now start the wait for the metric to be emitted when the message is sent. - yield return waitForSentMetric.WaitForMetricsReceived(); - - var sentMetrics = waitForSentMetric.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, sentMetrics.Count); - - var sentMetric = sentMetrics.First(); - Assert.AreEqual(SceneEventType.Load.ToString(), sentMetric.SceneEventType); - Assert.AreEqual(Client.LocalClientId, sentMetric.Connection.Id); - Assert.AreEqual(k_SimpleSceneName, sentMetric.SceneName); - } - - [UnityTest] - public IEnumerator TestS2CLoadReceived() - { - var serverSceneLoaded = false; - var clientSceneLoaded = false; - // Register a callback so we know when the scene has loaded server side, as this is when - // the message is sent to the client. AsyncOperation is the ScceneManager.LoadSceneAsync operation. - m_ClientNetworkSceneManager.OnSceneEvent += sceneEvent => - { - if (sceneEvent.SceneEventType.Equals(SceneEventType.Load) && sceneEvent.ClientId == Client.LocalClientId) - { - serverSceneLoaded = true; - } - }; - - m_ServerNetworkSceneManager.OnSceneEvent += sceneEvent => - { - if (sceneEvent.SceneEventType.Equals(SceneEventType.LoadComplete) && sceneEvent.ClientId == Client.LocalClientId) - { - clientSceneLoaded = true; - } - }; - - var waitForReceivedMetric = new WaitForEventMetricValues<SceneEventMetric>(ClientMetrics.Dispatcher, NetworkMetricTypes.SceneEventReceived); - - // Load a scene to trigger the messages - StartServerLoadScene(); - - // Wait for the server to load the scene locally first. - yield return WaitForCondition(() => serverSceneLoaded); - Assert.IsTrue(serverSceneLoaded); - - yield return WaitForCondition(() => clientSceneLoaded); - Assert.IsTrue(clientSceneLoaded); - - // Now start the wait for the metric to be emitted when the message is received. - yield return waitForReceivedMetric.WaitForMetricsReceived(); - - var receivedMetrics = waitForReceivedMetric.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, receivedMetrics.Count); - - var receivedMetric = receivedMetrics.First(); - Assert.AreEqual(SceneEventType.Load.ToString(), receivedMetric.SceneEventType); - Assert.AreEqual(Server.LocalClientId, receivedMetric.Connection.Id); - Assert.AreEqual(k_SimpleSceneName, receivedMetric.SceneName); - } - - [UnityTest] - public IEnumerator TestClientLoadCompleteSent() - { - // Register a callback so we can notify the test when the client has finished loading the scene locally - // as this is when the message is sent - var waitForClientLoadComplete = new WaitForSceneEvent( - m_ClientNetworkSceneManager, - SceneEventType.LoadComplete); - - var waitForSentMetric = new WaitForEventMetricValues<SceneEventMetric>(ClientMetrics.Dispatcher, NetworkMetricTypes.SceneEventSent); - - // Load a scene to trigger the messages - StartServerLoadScene(); - - - // Wait for the client to complete loading the scene locally - yield return waitForClientLoadComplete.Wait(); - Assert.IsTrue(waitForClientLoadComplete.Done); - - // Now start the wait for the metric to be emitted when the message is sent. - yield return waitForSentMetric.WaitForMetricsReceived(); - - var sentMetrics = waitForSentMetric.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, sentMetrics.Count); - - var sentMetric = sentMetrics.First(); - Assert.AreEqual(SceneEventType.LoadComplete.ToString(), sentMetric.SceneEventType); - Assert.AreEqual(Server.LocalClientId, sentMetric.Connection.Id); - Assert.AreEqual(k_SimpleSceneName, sentMetric.SceneName); - } - - [UnityTest] - public IEnumerator TestC2SLoadCompleteReceived() - { - // Register a callback so we can notify the test when the client has finished loading the scene locally - // as this is when the message is sent - var waitForClientLoadComplete = new WaitForSceneEvent( - m_ClientNetworkSceneManager, - SceneEventType.LoadComplete); - - var waitForReceivedMetric = new WaitForEventMetricValues<SceneEventMetric>(ServerMetrics.Dispatcher, NetworkMetricTypes.SceneEventReceived); - - // Load a scene to trigger the messages - StartServerLoadScene(); - - - // Wait for the client to complete loading the scene locally - yield return waitForClientLoadComplete.Wait(); - Assert.IsTrue(waitForClientLoadComplete.Done); - - // Now start the wait for the metric to be emitted when the message is received - yield return waitForReceivedMetric.WaitForMetricsReceived(); - - var receivedMetrics = waitForReceivedMetric.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, receivedMetrics.Count); - - var receivedMetric = receivedMetrics.First(); - Assert.AreEqual(SceneEventType.LoadComplete.ToString(), receivedMetric.SceneEventType); - Assert.AreEqual(Client.LocalClientId, receivedMetric.Connection.Id); - Assert.AreEqual(k_SimpleSceneName, receivedMetric.SceneName); - } - - [UnityTest] - public IEnumerator TestS2CLoadCompleteSent() - { - // Register a callback so we can notify the test when the server has finished loading the scene locally - // as this is when the message is sent - var waitForServerLoadComplete = new WaitForSceneEvent( - m_ServerNetworkSceneManager, - SceneEventType.LoadEventCompleted); - - var waitForSentMetric = new WaitForEventMetricValues<SceneEventMetric>( - ServerMetrics.Dispatcher, - NetworkMetricTypes.SceneEventSent, - metric => metric.SceneEventType.Equals(SceneEventType.LoadEventCompleted.ToString())); - - // Load a scene to trigger the messages - StartServerLoadScene(); - - // Wait for the server to complete loading the scene locally - yield return waitForServerLoadComplete.Wait(); - Assert.IsTrue(waitForServerLoadComplete.Done); - - // Now start the wait for the metric to be emitted when the message is sent - yield return waitForSentMetric.WaitForMetricsReceived(); - - var sentMetrics = waitForSentMetric.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(Server.ConnectedClients.Count, sentMetrics.Count); - - var filteredSentMetrics = sentMetrics - .Where(metric => metric.SceneEventType == SceneEventType.LoadEventCompleted.ToString()) - .Where(metric => metric.SceneName == k_SimpleSceneName); - CollectionAssert.AreEquivalent(filteredSentMetrics.Select(x => x.Connection.Id), Server.ConnectedClients.Select(x => x.Key)); - } - - [UnityTest] - public IEnumerator TestS2CLoadCompleteReceived() - { - // Register a callback so we can notify the test when the server has finished loading the scene locally - // as this is when the message is sent - var waitForServerLoadComplete = new WaitForSceneEvent( - m_ServerNetworkSceneManager, - SceneEventType.LoadEventCompleted); - - var waitForReceivedMetric = new WaitForEventMetricValues<SceneEventMetric>( - ClientMetrics.Dispatcher, - NetworkMetricTypes.SceneEventReceived, - metric => metric.SceneEventType.Equals(SceneEventType.LoadEventCompleted.ToString())); - - // Load a scene to trigger the messages - StartServerLoadScene(); - - // Wait for the server to complete loading the scene locally - yield return waitForServerLoadComplete.Wait(); - Assert.IsTrue(waitForServerLoadComplete.Done); - - // Now start the wait for the metric to be emitted when the message is received - yield return waitForReceivedMetric.WaitForMetricsReceived(); - - var receivedMetrics = waitForReceivedMetric.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, receivedMetrics.Count); - var receivedMetric = receivedMetrics.First(); - - Assert.AreEqual(SceneEventType.LoadEventCompleted.ToString(), receivedMetric.SceneEventType); - Assert.AreEqual(Server.LocalClientId, receivedMetric.Connection.Id); - Assert.AreEqual(k_SimpleSceneName, receivedMetric.SceneName); - } - - [UnityTest] - public IEnumerator TestS2CUnloadSent() - { - // Load a scene so that we can unload it - yield return LoadTestScene(k_SimpleSceneName, true); - - var serverSceneUnloaded = false; - // Register a callback so we can notify the test when the scene has finished unloading server side - // as this is when the message is sent - m_ServerNetworkSceneManager.OnSceneEvent += sceneEvent => - { - if (sceneEvent.SceneEventType.Equals(SceneEventType.UnloadComplete) && sceneEvent.ClientId == Server.LocalClientId) - { - serverSceneUnloaded = true; - } - }; - - var waitForSentMetric = new WaitForEventMetricValues<SceneEventMetric>( - ServerMetrics.Dispatcher, - NetworkMetricTypes.SceneEventSent, - metric => metric.SceneEventType.Equals(SceneEventType.Unload.ToString())); - - yield return s_DefaultWaitForTick; - // Unload the scene to trigger the messages - StartServerUnloadScene(); - - // Wait for the scene to unload locally - yield return WaitForCondition(() => serverSceneUnloaded); - Assert.IsTrue(serverSceneUnloaded); - - // Now wait for the metric to be emitted when the message is sent - yield return waitForSentMetric.WaitForMetricsReceived(); - - var sentMetrics = waitForSentMetric.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, sentMetrics.Count); - - var sentMetric = sentMetrics.First(); - Assert.AreEqual(SceneEventType.Unload.ToString(), sentMetric.SceneEventType); - Assert.AreEqual(Client.LocalClientId, sentMetric.Connection.Id); - Assert.AreEqual(k_SimpleSceneName, sentMetric.SceneName); - } - - [UnityTest] - public IEnumerator TestS2CUnloadReceived() - { - // Load a scene so that we can unload it. - yield return LoadTestScene(k_SimpleSceneName); - - var serverSceneUnloaded = false; - - // Register a callback so we can notify the test when the scene has started to unload server side - // as this is when the message is sent - m_ServerNetworkSceneManager.OnSceneEvent += sceneEvent => - { - if (sceneEvent.SceneEventType.Equals(SceneEventType.Unload) && sceneEvent.ClientId == Server.LocalClientId) - { - serverSceneUnloaded = true; - } - }; - - var waitForReceivedMetric = new WaitForEventMetricValues<SceneEventMetric>( - ClientMetrics.Dispatcher, - NetworkMetricTypes.SceneEventReceived, - metric => metric.SceneEventType.Equals(SceneEventType.Unload.ToString())); - - // Unload the scene to trigger the messages - StartServerUnloadScene(); - - // Wait for the scene to unload locally - yield return WaitForCondition(() => serverSceneUnloaded); - Assert.IsTrue(serverSceneUnloaded); - - // Now wait for the metric to be emitted when the message is received - yield return waitForReceivedMetric.WaitForMetricsReceived(); - - var receivedMetrics = waitForReceivedMetric.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, receivedMetrics.Count); - - var receivedMetric = receivedMetrics.First(); - Assert.AreEqual(SceneEventType.Unload.ToString(), receivedMetric.SceneEventType); - Assert.AreEqual(Server.LocalClientId, receivedMetric.Connection.Id); - Assert.AreEqual(k_SimpleSceneName, receivedMetric.SceneName); - } - - - - [UnityTest] - public IEnumerator TestC2SUnloadCompleteSent() - { - // Load a scene so that we can unload it - yield return LoadTestScene(k_SimpleSceneName, true); - - // Register a callback so we can notify the test when the scene has finished unloading client side - // as this is when the message is sent. - var waitForClientUnloadComplete = new WaitForSceneEvent( - m_ClientNetworkSceneManager, - SceneEventType.UnloadComplete); - - var waitForSentMetric = new WaitForEventMetricValues<SceneEventMetric>( - ClientMetrics.Dispatcher, - NetworkMetricTypes.SceneEventSent, - metric => metric.SceneEventType.Equals(SceneEventType.UnloadComplete.ToString())); - - // Unload a scene to trigger the messages - StartServerUnloadScene(); - - // Wait for the scene to complete unloading locally - yield return waitForClientUnloadComplete.Wait(); - Assert.IsTrue(waitForClientUnloadComplete.Done); - - // Now wait for the metric to be emitted when the message is sent - yield return waitForSentMetric.WaitForMetricsReceived(); - - var sentMetrics = waitForSentMetric.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, sentMetrics.Count); - - var sentMetric = sentMetrics.First(); - Assert.AreEqual(SceneEventType.UnloadComplete.ToString(), sentMetric.SceneEventType); - Assert.AreEqual(Server.LocalClientId, sentMetric.Connection.Id); - Assert.AreEqual(k_SimpleSceneName, sentMetric.SceneName); - } - - [UnityTest] - public IEnumerator TestC2SUnloadCompleteReceived() - { - // Load a scene so that we can unload it - yield return LoadTestScene(k_SimpleSceneName, true); - - // Register a callback we can notify the test when the scene has finished unloading client side - // as this is when the message is sent - var waitForClientUnloadComplete = new WaitForSceneEvent( - m_ClientNetworkSceneManager, - SceneEventType.UnloadComplete); - - var waitForReceivedMetric = new WaitForEventMetricValues<SceneEventMetric>( - ServerMetrics.Dispatcher, - NetworkMetricTypes.SceneEventReceived, - metric => metric.SceneEventType.Equals(SceneEventType.UnloadComplete.ToString())); - - // Unload a scene to trigger the messages - StartServerUnloadScene(); - - //Wait for the scene to complete unloading locally - yield return waitForClientUnloadComplete.Wait(); - Assert.IsTrue(waitForClientUnloadComplete.Done); - - // Now wait for the metric to be emitted when the message is received - yield return waitForReceivedMetric.WaitForMetricsReceived(); - - var receivedMetrics = waitForReceivedMetric.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, receivedMetrics.Count); - - var receivedMetric = receivedMetrics.First(); - Assert.AreEqual(SceneEventType.UnloadComplete.ToString(), receivedMetric.SceneEventType); - Assert.AreEqual(Client.LocalClientId, receivedMetric.Connection.Id); - Assert.AreEqual(k_SimpleSceneName, receivedMetric.SceneName); - } - - [UnityTest] - public IEnumerator TestS2CUnloadCompleteSent() - { - // Load a scene so that we can unload it - yield return LoadTestScene(k_SimpleSceneName); - - // Register a callback so we can notify the test when the scene has finished unloading server side - // as this is when the message is sent - var waitForServerUnloadComplete = new WaitForSceneEvent( - m_ServerNetworkSceneManager, - SceneEventType.UnloadEventCompleted); - - var waitForSentMetric = new WaitForEventMetricValues<SceneEventMetric>( - ServerMetrics.Dispatcher, - NetworkMetricTypes.SceneEventSent, - metric => metric.SceneEventType.Equals(SceneEventType.UnloadEventCompleted.ToString())); - - // Unload a scene to trigger the messages - StartServerUnloadScene(); - - // Wait for the scene to complete unloading locally - yield return waitForServerUnloadComplete.Wait(); - Assert.IsTrue(waitForServerUnloadComplete.Done); - - // Now wait for the metric to be emitted when the message is sent - yield return waitForSentMetric.WaitForMetricsReceived(); - - var sentMetrics = waitForSentMetric.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(Server.ConnectedClients.Count, sentMetrics.Count); - - // This message is sent from the server to all connected clients including itself if it is a host, - // so iterate over the connected client list on the server to ensure that we have a 1-1 match of connected - // clients to sent metrics. - var filteredSentMetrics = sentMetrics - .Where(metric => metric.SceneEventType == SceneEventType.UnloadEventCompleted.ToString()) - .Where(metric => metric.SceneName == k_SimpleSceneName); - CollectionAssert.AreEquivalent(filteredSentMetrics.Select(x => x.Connection.Id), Server.ConnectedClients.Select(x => x.Key)); - } - - [UnityTest] - public IEnumerator TestS2CUnloadCompleteReceived() - { - // Load a scene so that we can unload it - yield return LoadTestScene(k_SimpleSceneName); - - // Register a callback so we can notify the test when the scene has finished unloading server side - // as this is when the message is sent - var waitForServerUnloadComplete = new WaitForSceneEvent( - m_ServerNetworkSceneManager, - SceneEventType.UnloadEventCompleted); - - var waitForReceivedMetric = new WaitForEventMetricValues<SceneEventMetric>( - ClientMetrics.Dispatcher, - NetworkMetricTypes.SceneEventReceived, - metric => metric.SceneEventType.Equals(SceneEventType.UnloadEventCompleted.ToString())); - - // Unload the scene to trigger the messages - StartServerUnloadScene(); - - // Wait for the scene to unload locally - yield return waitForServerUnloadComplete.Wait(); - Assert.IsTrue(waitForServerUnloadComplete.Done); - - // Now wait for the metric to be emitted when the message is received - yield return waitForReceivedMetric.WaitForMetricsReceived(); - - var receivedMetrics = waitForReceivedMetric.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, receivedMetrics.Count); - var receivedMetric = receivedMetrics.First(); - - Assert.AreEqual(SceneEventType.UnloadEventCompleted.ToString(), receivedMetric.SceneEventType); - Assert.AreEqual(Server.LocalClientId, receivedMetric.Connection.Id); - Assert.AreEqual(k_SimpleSceneName, receivedMetric.SceneName); - } - - [UnityTest] - public IEnumerator TestS2CSyncSent() - { - // Register a callback so we can notify the test when the client and server have completed their sync - var waitForServerSyncComplete = new WaitForSceneEvent( - m_ServerNetworkSceneManager, - SceneEventType.SynchronizeComplete); - - var waitForSentMetric = new WaitForEventMetricValues<SceneEventMetric>( - ServerMetrics.Dispatcher, - NetworkMetricTypes.SceneEventSent, - metric => metric.SceneEventType.Equals(SceneEventType.Synchronize.ToString())); - - // To trigger a sync, we need to connect a new client to an already started server, so create a client - var newClient = CreateAndStartClient(); - - // Wait for the metric to be emitted when the server sends the sync message back to the client - yield return waitForSentMetric.WaitForMetricsReceived(); - - var sentMetrics = waitForSentMetric.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, sentMetrics.Count); - - // Although the metric should have been emitted, wait for the sync to complete - // as the client/server IDs have not been fully initialized until this is done. - yield return waitForServerSyncComplete.Wait(); - Assert.IsTrue(waitForServerSyncComplete.Done); - - var sentMetric = sentMetrics.First(); - - Assert.AreEqual(SceneEventType.Synchronize.ToString(), sentMetric.SceneEventType); - Assert.AreEqual(newClient.LocalClientId, sentMetric.Connection.Id); - - NetcodeIntegrationTestHelpers.StopOneClient(newClient); - } - - [UnityTest] - public IEnumerator TestS2CSyncReceived() - { - // To trigger a sync, we need to connect a new client to an already started server, so create a client - var newClient = CreateAndStartClient(); - - // Now the client is started we can grab the NetworkMetrics field from it - var newClientMetrics = newClient.NetworkMetrics as NetworkMetrics; - - var waitForReceivedMetric = new WaitForEventMetricValues<SceneEventMetric>( - newClientMetrics.Dispatcher, - NetworkMetricTypes.SceneEventReceived, - metric => metric.SceneEventType.Equals(SceneEventType.Synchronize.ToString())); - - // Wait for the metric to be emitted when the message is received on the client from the server - yield return waitForReceivedMetric.WaitForMetricsReceived(); - - var receivedMetrics = waitForReceivedMetric.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, receivedMetrics.Count); - var receivedMetric = receivedMetrics.First(); - - Assert.AreEqual(SceneEventType.Synchronize.ToString(), receivedMetric.SceneEventType); - Assert.AreEqual(Server.LocalClientId, receivedMetric.Connection.Id); - - NetcodeIntegrationTestHelpers.StopOneClient(newClient); - } - - [UnityTest] - public IEnumerator TestC2SSyncCompleteSent() - { - // To trigger a sync, we need to connect a new client to an already started server, so create a client - var newClient = CreateAndStartClient(); - - // Now the client is started we can grab the NetworkMetrics field from it - var newClientMetrics = newClient.NetworkMetrics as NetworkMetrics; - - var waitForSentMetric = new WaitForEventMetricValues<SceneEventMetric>( - newClientMetrics.Dispatcher, - NetworkMetricTypes.SceneEventSent, - metric => metric.SceneEventType.Equals(SceneEventType.SynchronizeComplete.ToString())); - - // Wait for the metric to be emitted when the client has completed the sync locally and sends the message - // to the server - yield return waitForSentMetric.WaitForMetricsReceived(); - - var sentMetrics = waitForSentMetric.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, sentMetrics.Count); - var sentMetric = sentMetrics.First(); - - Assert.AreEqual(SceneEventType.SynchronizeComplete.ToString(), sentMetric.SceneEventType); - Assert.AreEqual(Server.LocalClientId, sentMetric.Connection.Id); - - NetcodeIntegrationTestHelpers.StopOneClient(newClient); - } - - [UnityTest] - public IEnumerator TestC2SSyncCompleteReceived() - { - var waitForReceivedMetric = new WaitForEventMetricValues<SceneEventMetric>( - ServerMetrics.Dispatcher, - NetworkMetricTypes.SceneEventReceived, - metric => metric.SceneEventType.Equals(SceneEventType.SynchronizeComplete.ToString())); - - // To trigger a sync, we need to connect a new client to an already started server, so create a client - var newClient = CreateAndStartClient(); - - // Wait for the metric to be emitted when the client has completed the sync locally and the message is - // received on the server - yield return waitForReceivedMetric.WaitForMetricsReceived(); - - var receivedMetrics = waitForReceivedMetric.AssertMetricValuesHaveBeenFound(); - Assert.AreEqual(1, receivedMetrics.Count); - - var receivedMetric = receivedMetrics.First(); - - Assert.AreEqual(SceneEventType.SynchronizeComplete.ToString(), receivedMetric.SceneEventType); - Assert.AreEqual(newClient.LocalClientId, receivedMetric.Connection.Id); - - NetcodeIntegrationTestHelpers.StopOneClient(newClient); - } - - // Create a new client to connect to an already started server to trigger a server sync. - private NetworkManager CreateAndStartClient() - { - NetcodeIntegrationTestHelpers.CreateNewClients(1, out var newClients); - var newClient = newClients[0]; - - // Set up the client so it has the same NetworkConfig as the server - newClient.NetworkConfig.EnableSceneManagement = true; - newClient.NetworkConfig.PlayerPrefab = m_PlayerPrefab; - - // Start the client to trigger the sync - newClient.StartClient(); - - return newClient; - } - - private void StartServerLoadScene() - { - var loadSceneResult = m_ServerNetworkSceneManager.LoadScene(k_SimpleSceneName, LoadSceneMode.Additive); - Assert.AreEqual(SceneEventProgressStatus.Started, loadSceneResult); - } - - private void StartServerUnloadScene() - { - if (m_LoadedScene.IsValid() && m_LoadedScene.isLoaded) - { - var unloadSceneResult = m_ServerNetworkSceneManager.UnloadScene(m_LoadedScene); - Assert.AreEqual(SceneEventProgressStatus.Started, unloadSceneResult); - } - } - - // Loads a scene, then waits for the client to notify the server - // that it has finished loading the scene, as this is the last thing that happens. - private IEnumerator LoadTestScene(string sceneName, bool waitForClient = false) - { - var sceneLoadComplete = false; - m_ClientNetworkSceneManager.OnSceneEvent += sceneEvent => - { - var clientIdToWaitFor = waitForClient == true ? m_ClientNetworkManagers[0].LocalClientId : m_ServerNetworkManager.LocalClientId; - if (sceneEvent.SceneEventType == SceneEventType.LoadComplete) - { - sceneLoadComplete = true; - } - }; - - var loadSceneResult = m_ServerNetworkSceneManager.LoadScene(sceneName, LoadSceneMode.Additive); - Assert.AreEqual(SceneEventProgressStatus.Started, loadSceneResult); - - yield return WaitForCondition(() => sceneLoadComplete); - - Assert.IsTrue(sceneLoadComplete); - } - - // Unloads a loaded scene. If the scene is not loaded, this is a no-op - private IEnumerator UnloadTestScene(Scene scene) - { - if (scene.isLoaded) - { - // This is called after everything is done and destroyed. - // Just use the normal scene manager to unload the scene. - var asyncResults = SceneManager.UnloadSceneAsync(scene); - yield return WaitForCondition(() => asyncResults.isDone); - - } - } - - private static IEnumerator WaitForCondition(Func<bool> condition) - { - yield return WaitForConditionOrTimeOut(condition); - } - - // Registers a callback for the client's NetworkSceneManager which will synchronize the scene handles from - // the server to the client. This only needs to be done in multi-instance unit tests as the client and the - // server share a (Unity) SceneManager. - private void RegisterLoadedSceneCallback(SceneEvent sceneEvent) - { - if (!sceneEvent.SceneEventType.Equals(SceneEventType.Load) || sceneEvent.ClientId != m_ServerNetworkManager.LocalClientId) - { - return; - } - - m_LoadedScene = SceneManager.GetSceneByName(sceneEvent.SceneName); - } - - private class WaitForSceneEvent - { - public WaitForSceneEvent(NetworkSceneManager sceneManager, SceneEventType sceneEventType) - { - sceneManager.OnSceneEvent += sceneEvent => - { - if (sceneEvent.SceneEventType == sceneEventType) - { - Done = true; - } - }; - } - - public bool Done { get; private set; } - - public IEnumerator Wait() - { - yield return WaitForCondition(() => Done); - } - } - } -} diff --git a/testproject-tools-integration/Assets/Tests/Runtime/SceneEventTests.cs.meta b/testproject-tools-integration/Assets/Tests/Runtime/SceneEventTests.cs.meta deleted file mode 100644 index fc0aaa1169..0000000000 --- a/testproject-tools-integration/Assets/Tests/Runtime/SceneEventTests.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 9ec83c68fbe2bf54896596ac2ca71f26 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/testproject-tools-integration/Assets/Tests/Runtime/testproject.toolsintegration.runtimetests.asmdef b/testproject-tools-integration/Assets/Tests/Runtime/testproject.toolsintegration.runtimetests.asmdef deleted file mode 100644 index c076a6d6a3..0000000000 --- a/testproject-tools-integration/Assets/Tests/Runtime/testproject.toolsintegration.runtimetests.asmdef +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "TestProject.ToolsIntegration.RuntimeTests", - "rootNamespace": "TestProject.ToolsIntegration.RuntimeTests", - "references": [ - "Unity.Netcode.Runtime", - "Unity.Multiplayer.MetricTypes", - "Unity.Multiplayer.NetStats", - "Unity.Multiplayer.Tools.MetricTypes", - "Unity.Multiplayer.Tools.NetStats", - "Unity.Collections", - "Unity.Netcode.TestHelpers.Runtime" - ], - "optionalUnityReferences": [ - "TestAssemblies" - ], - "versionDefines": [ - { - "name": "com.unity.multiplayer.tools", - "expression": "", - "define": "MULTIPLAYER_TOOLS" - }, - { - "name": "Unity", - "expression": "(0,2022.2.0a5)", - "define": "UNITY_UNET_PRESENT" - }, - { - "name": "com.unity.multiplayer.tools", - "expression": "1.0.0-pre.4", - "define": "MULTIPLAYER_TOOLS_1_0_0_PRE_4" - } - ] -} \ No newline at end of file diff --git a/testproject-tools-integration/Packages/manifest.json b/testproject-tools-integration/Packages/manifest.json index a3f60bc15a..41bfa5ac67 100644 --- a/testproject-tools-integration/Packages/manifest.json +++ b/testproject-tools-integration/Packages/manifest.json @@ -1,13 +1,13 @@ { "dependencies": { - "com.unity.ai.navigation": "2.0.5", - "com.unity.ide.rider": "3.0.34", - "com.unity.ide.visualstudio": "2.0.22", - "com.unity.multiplayer.center": "1.0.0", - "com.unity.multiplayer.tools": "2.2.3", + "com.unity.ai.navigation": "2.0.7", + "com.unity.ide.rider": "3.0.36", + "com.unity.ide.visualstudio": "2.0.23", + "com.unity.multiplayer.center": "1.0.0", + "com.unity.multiplayer.tools": "https://github.com/Unity-Technologies/com.unity.multiplayer.tools.git?path=com.unity.multiplayer.tools#chore/migrate-metrics-tests-to-tools-repository", "com.unity.netcode.gameobjects": "file:../../com.unity.netcode.gameobjects", - "com.unity.test-framework": "1.4.6", - "com.unity.test-framework.performance": "3.0.3", + "com.unity.test-framework": "1.5.1", + "com.unity.test-framework.performance": "3.1.0", "com.unity.modules.accessibility": "1.0.0", "com.unity.modules.ai": "1.0.0", "com.unity.modules.androidjni": "1.0.0", diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics.meta b/testproject/Assets/Samples/Physics/PhysicsSample.meta similarity index 77% rename from com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics.meta rename to testproject/Assets/Samples/Physics/PhysicsSample.meta index 1e3c81867c..f8fbca94fa 100644 --- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/Metrics.meta +++ b/testproject/Assets/Samples/Physics/PhysicsSample.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ebacdb7d8cb876a43b4a908dd6d83aa9 +guid: 9e48167ebb6bd5540a1b9eb1cf359775 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/testproject/Assets/Samples/Physics/PhysicsSample/LightingData.asset b/testproject/Assets/Samples/Physics/PhysicsSample/LightingData.asset new file mode 100644 index 0000000000..6866c0e915 Binary files /dev/null and b/testproject/Assets/Samples/Physics/PhysicsSample/LightingData.asset differ diff --git a/testproject-tools-integration/Assets/Tests/Runtime/testproject.toolsintegration.runtimetests.asmdef.meta b/testproject/Assets/Samples/Physics/PhysicsSample/LightingData.asset.meta similarity index 52% rename from testproject-tools-integration/Assets/Tests/Runtime/testproject.toolsintegration.runtimetests.asmdef.meta rename to testproject/Assets/Samples/Physics/PhysicsSample/LightingData.asset.meta index daef7e0b6a..7d022180a5 100644 --- a/testproject-tools-integration/Assets/Tests/Runtime/testproject.toolsintegration.runtimetests.asmdef.meta +++ b/testproject/Assets/Samples/Physics/PhysicsSample/LightingData.asset.meta @@ -1,7 +1,8 @@ fileFormatVersion: 2 -guid: e99721187226b3c4da365db28d179f8b -AssemblyDefinitionImporter: +guid: 29d2c44a6e01063478e1b9a607c770c6 +NativeFormatImporter: externalObjects: {} + mainObjectFileID: 112000000 userData: assetBundleName: assetBundleVariant: diff --git a/testproject/Assets/Samples/Physics/PhysicsSample/ReflectionProbe-0.exr b/testproject/Assets/Samples/Physics/PhysicsSample/ReflectionProbe-0.exr new file mode 100644 index 0000000000..73bac30ef3 Binary files /dev/null and b/testproject/Assets/Samples/Physics/PhysicsSample/ReflectionProbe-0.exr differ diff --git a/testproject/Assets/Samples/Physics/PhysicsSample/ReflectionProbe-0.exr.meta b/testproject/Assets/Samples/Physics/PhysicsSample/ReflectionProbe-0.exr.meta new file mode 100644 index 0000000000..7803ed084d --- /dev/null +++ b/testproject/Assets/Samples/Physics/PhysicsSample/ReflectionProbe-0.exr.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: f2b15ba7b672e4846bd653be20c7d489 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 1 + seamlessCubemap: 1 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 0 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 2 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WindowsStoreApps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics.meta b/testproject/Assets/Scenes/SampleScene.meta similarity index 77% rename from com.unity.netcode.gameobjects/Tests/Runtime/Metrics.meta rename to testproject/Assets/Scenes/SampleScene.meta index 11b63dac9f..3c1200b671 100644 --- a/com.unity.netcode.gameobjects/Tests/Runtime/Metrics.meta +++ b/testproject/Assets/Scenes/SampleScene.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4cd7fa97c73f3674b9cce18b1e0a6874 +guid: c07594ceda5cd9d4887aa653a6dc5a05 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/testproject/Assets/Scenes/SampleScene/LightingData.asset b/testproject/Assets/Scenes/SampleScene/LightingData.asset new file mode 100644 index 0000000000..fd4cd58d9a Binary files /dev/null and b/testproject/Assets/Scenes/SampleScene/LightingData.asset differ diff --git a/testproject/Assets/Scenes/SampleScene/LightingData.asset.meta b/testproject/Assets/Scenes/SampleScene/LightingData.asset.meta new file mode 100644 index 0000000000..53d1892097 --- /dev/null +++ b/testproject/Assets/Scenes/SampleScene/LightingData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6c6756b3d6aa50248b97daa6cef80753 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 112000000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Scenes/SampleScene/ReflectionProbe-0.exr b/testproject/Assets/Scenes/SampleScene/ReflectionProbe-0.exr new file mode 100644 index 0000000000..73bac30ef3 Binary files /dev/null and b/testproject/Assets/Scenes/SampleScene/ReflectionProbe-0.exr differ diff --git a/testproject/Assets/Scenes/SampleScene/ReflectionProbe-0.exr.meta b/testproject/Assets/Scenes/SampleScene/ReflectionProbe-0.exr.meta new file mode 100644 index 0000000000..d558288481 --- /dev/null +++ b/testproject/Assets/Scenes/SampleScene/ReflectionProbe-0.exr.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: 0472d52de3d600846983f39d2f8663f9 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 1 + seamlessCubemap: 1 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 0 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 2 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WindowsStoreApps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject-tools-integration/Assets/Tests/Runtime.meta b/testproject/Assets/Scenes/ZooSam.meta similarity index 77% rename from testproject-tools-integration/Assets/Tests/Runtime.meta rename to testproject/Assets/Scenes/ZooSam.meta index 09d3d9f693..63a2788243 100644 --- a/testproject-tools-integration/Assets/Tests/Runtime.meta +++ b/testproject/Assets/Scenes/ZooSam.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c6826f5447d670a4591fb855ae4a94e6 +guid: 32fb0648e881ae843a439b0ca686d3a6 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/testproject/Assets/Scenes/ZooSam/LightingData.asset b/testproject/Assets/Scenes/ZooSam/LightingData.asset new file mode 100644 index 0000000000..635239ea06 Binary files /dev/null and b/testproject/Assets/Scenes/ZooSam/LightingData.asset differ diff --git a/testproject/Assets/Scenes/ZooSam/LightingData.asset.meta b/testproject/Assets/Scenes/ZooSam/LightingData.asset.meta new file mode 100644 index 0000000000..7b0b92350d --- /dev/null +++ b/testproject/Assets/Scenes/ZooSam/LightingData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4ac3c6a6e77b0234ab114d3c79575b8c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 112000000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Scenes/ZooSam/ReflectionProbe-0.exr b/testproject/Assets/Scenes/ZooSam/ReflectionProbe-0.exr new file mode 100644 index 0000000000..0d310ee3eb Binary files /dev/null and b/testproject/Assets/Scenes/ZooSam/ReflectionProbe-0.exr differ diff --git a/testproject/Assets/Scenes/ZooSam/ReflectionProbe-0.exr.meta b/testproject/Assets/Scenes/ZooSam/ReflectionProbe-0.exr.meta new file mode 100644 index 0000000000..34adcde9d6 --- /dev/null +++ b/testproject/Assets/Scenes/ZooSam/ReflectionProbe-0.exr.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: 138192721c6fad2409fc5c03d42e5a6d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 1 + seamlessCubemap: 1 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 0 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 2 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WindowsStoreApps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Tests/Editor/TestProject.Editor.Tests.asmdef b/testproject/Assets/Tests/Editor/TestProject.Editor.Tests.asmdef new file mode 100644 index 0000000000..51aa4685de --- /dev/null +++ b/testproject/Assets/Tests/Editor/TestProject.Editor.Tests.asmdef @@ -0,0 +1,25 @@ +{ + "name": "TestProject.Editor.Tests", + "rootNamespace": "TestProject.EditorTests", + "references": [ + "Unity.Netcode.Runtime", + "Unity.Netcode.Editor", + "UnityEngine.TestRunner", + "UnityEditor.TestRunner" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "nunit.framework.dll" + ], + "autoReferenced": false, + "defineConstraints": [ + "UNITY_INCLUDE_TESTS" + ], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/testproject/Assets/Tests/Editor/testproject.editortests.asmdef.meta b/testproject/Assets/Tests/Editor/TestProject.Editor.Tests.asmdef.meta similarity index 100% rename from testproject/Assets/Tests/Editor/testproject.editortests.asmdef.meta rename to testproject/Assets/Tests/Editor/TestProject.Editor.Tests.asmdef.meta diff --git a/testproject/Assets/Tests/Editor/testproject.editortests.asmdef b/testproject/Assets/Tests/Editor/testproject.editortests.asmdef deleted file mode 100644 index 9495d3cc11..0000000000 --- a/testproject/Assets/Tests/Editor/testproject.editortests.asmdef +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "TestProject.EditorTests", - "rootNamespace": "TestProject.EditorTests", - "references": [ - "Unity.Netcode.Runtime", - "Unity.Netcode.Editor" - ], - "optionalUnityReferences": [ - "TestAssemblies" - ], - "includePlatforms": [ - "Editor" - ] -} \ No newline at end of file diff --git a/testproject/Assets/Tests/Runtime/testproject.runtimetests.asmdef b/testproject/Assets/Tests/Runtime/TestProject.Runtime.Tests.asmdef similarity index 96% rename from testproject/Assets/Tests/Runtime/testproject.runtimetests.asmdef rename to testproject/Assets/Tests/Runtime/TestProject.Runtime.Tests.asmdef index 17af49a925..7abd1fb496 100644 --- a/testproject/Assets/Tests/Runtime/testproject.runtimetests.asmdef +++ b/testproject/Assets/Tests/Runtime/TestProject.Runtime.Tests.asmdef @@ -1,5 +1,5 @@ { - "name": "TestProject.RuntimeTests", + "name": "TestProject.Runtime.Tests", "rootNamespace": "TestProject.RuntimeTests", "references": [ "Unity.Netcode.Runtime", diff --git a/testproject/Assets/Tests/Runtime/testproject.runtimetests.asmdef.meta b/testproject/Assets/Tests/Runtime/TestProject.Runtime.Tests.asmdef.meta similarity index 100% rename from testproject/Assets/Tests/Runtime/testproject.runtimetests.asmdef.meta rename to testproject/Assets/Tests/Runtime/TestProject.Runtime.Tests.asmdef.meta