Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
namespace MLAPI.RuntimeTests.Metrics.Messaging
{
#if true
public class NetworkMetricsMessagingDispatchTests : MetricsTestBase
public class NetworkMetricsMessagingDispatchTests
{
NetworkManager m_NetworkManager;
NetworkMetrics m_NetworkMetrics;
Expand All @@ -35,80 +35,73 @@ public void TearDown()
public IEnumerator TrackNamedMessageSentMetric()
{
var messageName = Guid.NewGuid().ToString();

var clientId = 100UL;
m_NetworkMetrics.Dispatcher.RegisterObserver(new TestObserver(collection =>
{
var namedMessageSentMetric = AssertSingleMetricEventOfType<NamedMessageEvent>(collection, MetricNames.NamedMessageSent);
Assert.AreEqual(1, namedMessageSentMetric.Values.Count);

var namedMessageSent = namedMessageSentMetric.Values.First();
Assert.AreEqual(messageName, namedMessageSent.Name);
Assert.AreEqual(clientId, namedMessageSent.Connection.Id);
}));

var waitForMetricEvent = new WaitForMetricValues<NamedMessageEvent>(m_NetworkMetrics.Dispatcher, MetricNames.NamedMessageSent);
m_NetworkManager.CustomMessagingManager.SendNamedMessage(messageName, clientId, Stream.Null);

yield return WaitForMetricsDispatch();
yield return waitForMetricEvent.WaitForMetricsDispatch();

var namedMessageSentMetricValues = waitForMetricEvent.Values;
Assert.AreEqual(1, namedMessageSentMetricValues.Count);

var namedMessageSent = namedMessageSentMetricValues.First();
Assert.AreEqual(messageName, namedMessageSent.Name);
Assert.AreEqual(clientId, namedMessageSent.Connection.Id);
}

[UnityTest]
public IEnumerator TrackNamedMessageSentMetricToMultipleClients()
{
var messageName = Guid.NewGuid().ToString();

var waitForMetricEvent = new WaitForMetricValues<NamedMessageEvent>(m_NetworkMetrics.Dispatcher, MetricNames.NamedMessageSent);
m_NetworkManager.CustomMessagingManager.SendNamedMessage(messageName, new List<ulong> { 100, 200, 300 }, Stream.Null);

m_NetworkMetrics.Dispatcher.RegisterObserver(new TestObserver(collection =>
{
var namedMessageSentMetric = AssertSingleMetricEventOfType<NamedMessageEvent>(collection, MetricNames.NamedMessageSent);
Assert.AreEqual(3, namedMessageSentMetric.Values.Count);
Assert.True(namedMessageSentMetric.Values.All(x => x.Name == messageName));
yield return waitForMetricEvent.WaitForMetricsDispatch();

var clientIds = namedMessageSentMetric.Values.Select(x => x.Connection.Id).ToList();
Assert.Contains(100UL, clientIds);
Assert.Contains(200UL, clientIds);
Assert.Contains(300UL, clientIds);
}));
var namedMessageSentMetricValues = waitForMetricEvent.Values;
Assert.AreEqual(3, namedMessageSentMetricValues.Count);
Assert.True(namedMessageSentMetricValues.All(x => x.Name == messageName));

m_NetworkManager.CustomMessagingManager.SendNamedMessage(messageName, new List<ulong> { 100, 200, 300 }, Stream.Null);

yield return WaitForMetricsDispatch();
var clientIds = namedMessageSentMetricValues.Select(x => x.Connection.Id).ToList();
Assert.Contains(100UL, clientIds);
Assert.Contains(200UL, clientIds);
Assert.Contains(300UL, clientIds);
}

[UnityTest]
public IEnumerator TrackUnnamedMessageSentMetric()
{
var clientId = 100UL;
m_NetworkMetrics.Dispatcher.RegisterObserver(new TestObserver(collection =>
{
var unnamedMessageSentMetric = AssertSingleMetricEventOfType<UnnamedMessageEvent>(collection, MetricNames.UnnamedMessageSent);
Assert.AreEqual(1, unnamedMessageSentMetric.Values.Count);

var waitForMetricEvent = new WaitForMetricValues<UnnamedMessageEvent>(m_NetworkMetrics.Dispatcher, MetricNames.UnnamedMessageSent);
m_NetworkManager.CustomMessagingManager.SendUnnamedMessage(clientId, new NetworkBuffer());

var unnamedMessageSent = unnamedMessageSentMetric.Values.First();
Assert.AreEqual(clientId, unnamedMessageSent.Connection.Id);
}));
yield return waitForMetricEvent.WaitForMetricsDispatch();

m_NetworkManager.CustomMessagingManager.SendUnnamedMessage(clientId, new NetworkBuffer());
var unnamedMessageSentMetricValues = waitForMetricEvent.Values;
Assert.AreEqual(1, unnamedMessageSentMetricValues.Count);

yield return WaitForMetricsDispatch();
var unnamedMessageSent = unnamedMessageSentMetricValues.First();
Assert.AreEqual(clientId, unnamedMessageSent.Connection.Id);
}

[UnityTest]
public IEnumerator TrackUnnamedMessageSentMetricToMultipleClients()
{
m_NetworkMetrics.Dispatcher.RegisterObserver(new TestObserver(collection =>
{
var unnamedMessageSentMetric = AssertSingleMetricEventOfType<UnnamedMessageEvent>(collection, MetricNames.UnnamedMessageSent);
Assert.AreEqual(3, unnamedMessageSentMetric.Values.Count);
var waitForMetricEvent = new WaitForMetricValues<UnnamedMessageEvent>(m_NetworkMetrics.Dispatcher, MetricNames.UnnamedMessageSent);
m_NetworkManager.CustomMessagingManager.SendUnnamedMessage(new List<ulong> { 100, 200, 300 }, new NetworkBuffer());

var clientIds = unnamedMessageSentMetric.Values.Select(x => x.Connection.Id).ToList();
Assert.Contains(100UL, clientIds);
Assert.Contains(200UL, clientIds);
Assert.Contains(300UL, clientIds);
}));
yield return waitForMetricEvent.WaitForMetricsDispatch();

m_NetworkManager.CustomMessagingManager.SendUnnamedMessage(new List<ulong> { 100, 200, 300 }, new NetworkBuffer());
var unnamedMessageSentMetricValues = waitForMetricEvent.Values;
Assert.AreEqual(3, unnamedMessageSentMetricValues.Count);

yield return WaitForMetricsDispatch();
var clientIds = unnamedMessageSentMetricValues.Select(x => x.Connection.Id).ToList();
Assert.Contains(100UL, clientIds);
Assert.Contains(200UL, clientIds);
Assert.Contains(300UL, clientIds);
}
}
#endif
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
namespace MLAPI.RuntimeTests.Metrics.Messaging
{
#if true
public class NetworkMetricsMessagingReceptionTests : MetricsTestBase
public class NetworkMetricsMessagingReceptionTests
{
NetworkManager m_Server;
NetworkManager m_Client;
Expand Down Expand Up @@ -60,60 +60,34 @@ public IEnumerator TrackNamedMessageReceivedMetric()
Debug.Log($"Received from {sender}");
});

var found = false;
m_ClientMetrics.Dispatcher.RegisterObserver(new TestObserver(collection =>
{
var namedMessageReceivedMetric = collection.Metrics.SingleOrDefault(x => x.Name == MetricNames.NamedMessageReceived);
Assert.NotNull(namedMessageReceivedMetric);

var typedMetric = namedMessageReceivedMetric as IEventMetric<NamedMessageEvent>;
Assert.NotNull(typedMetric);
if (typedMetric.Values.Any()) // We always get the metric, but when it has values, something has been tracked
{
Assert.AreEqual(1, typedMetric.Values.Count);

var namedMessageReceived = typedMetric.Values.First();
Assert.AreEqual(messageName, namedMessageReceived.Name);
Assert.AreEqual(m_Server.LocalClientId, namedMessageReceived.Connection.Id);

found = true;
}
}));
var waitForMetricValues = new WaitForMetricValues<NamedMessageEvent>(m_ClientMetrics.Dispatcher, MetricNames.NamedMessageReceived);

m_Server.CustomMessagingManager.SendNamedMessage(messageName, m_Client.LocalClientId, Stream.Null);

yield return WaitForAFewFrames(); // Client does not receive message synchronously
yield return waitForMetricValues.WaitForAFewFrames();

var namedMessageReceivedValues = waitForMetricValues.Values;
Assert.AreEqual(1, namedMessageReceivedValues.Count);

Assert.True(found);
var namedMessageReceived = namedMessageReceivedValues.First();
Assert.AreEqual(messageName, namedMessageReceived.Name);
Assert.AreEqual(m_Server.LocalClientId, namedMessageReceived.Connection.Id);
}

[UnityTest]
public IEnumerator TrackUnnamedMessageReceivedMetric()
{
var found = false;
m_ClientMetrics.Dispatcher.RegisterObserver(new TestObserver(collection =>
{
var unnamedMessageReceivedMetric = collection.Metrics.SingleOrDefault(x => x.Name == MetricNames.UnnamedMessageReceived);
Assert.NotNull(unnamedMessageReceivedMetric);

var typedMetric = unnamedMessageReceivedMetric as IEventMetric<UnnamedMessageEvent>;
Assert.NotNull(typedMetric);
if (typedMetric.Values.Any()) // We always get the metric, but when it has values, something has been tracked
{
Assert.AreEqual(1, typedMetric.Values.Count);

var unnamedMessageReceived = typedMetric.Values.First();
Assert.AreEqual(m_Server.LocalClientId, unnamedMessageReceived.Connection.Id);

found = true;
}
}));
var waitForMetricValues = new WaitForMetricValues<UnnamedMessageEvent>(m_ClientMetrics.Dispatcher, MetricNames.UnnamedMessageReceived);

m_Server.CustomMessagingManager.SendUnnamedMessage(m_Client.LocalClientId, new NetworkBuffer());

yield return WaitForAFewFrames(); // Client does not receive message synchronously
yield return waitForMetricValues.WaitForAFewFrames();

var unnamedMessageReceivedValues = waitForMetricValues.Values;
Assert.AreEqual(1, unnamedMessageReceivedValues.Count);

Assert.True(found);
var unnamedMessageReceived = unnamedMessageReceivedValues.First();
Assert.AreEqual(m_Server.LocalClientId, unnamedMessageReceived.Connection.Id);
}
}
#endif
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
using System.Collections;
using System.Collections;
using System.Linq;
using MLAPI.Metrics;
using NUnit.Framework;
using Unity.Multiplayer.NetStats.Metrics;
using Unity.Multiplayer.NetworkProfiler;
using Unity.Multiplayer.NetworkProfiler.Models;
using UnityEngine.TestTools;

namespace MLAPI.RuntimeTests.Metrics.NetworkVariables
{
public class NetworkVariableMetricsDispatchTests : MetricsTestBase
public class NetworkVariableMetricsDispatchTests
{
NetworkManager m_NetworkManager;
NetworkMetrics m_NetworkMetrics;
Expand All @@ -34,30 +33,16 @@ public void TearDown()
[UnityTest]
public IEnumerator TrackNetworkVariableDeltaSentMetric()
{
var found = false;
m_NetworkMetrics.Dispatcher.RegisterObserver(new TestObserver(collection =>
{
var networkVariableUpdateMetric = collection.Metrics.SingleOrDefault(x => x.Name == MetricNames.NetworkVariableDeltaSent);
Assert.NotNull(networkVariableUpdateMetric);

var typedMetric = networkVariableUpdateMetric as IEventMetric<NetworkVariableEvent>;
Assert.NotNull(typedMetric);

if (typedMetric.Values.Any() && !found)
{
Assert.AreEqual(1, typedMetric.Values.Count);

var networkVariableDeltaSent = typedMetric.Values.First();
Assert.AreEqual(nameof(NetworkVariableComponent.MyNetworkVariable), networkVariableDeltaSent.Name);
Assert.AreEqual(m_NetworkManager.LocalClientId, networkVariableDeltaSent.Connection.Id);

found = true;
}
}));

yield return WaitForAFewFrames();

Assert.True(found);
var waitForMetricValues = new WaitForMetricValues<NetworkVariableEvent>(m_NetworkMetrics.Dispatcher, MetricNames.NetworkVariableDeltaSent);

yield return waitForMetricValues.WaitForAFewFrames();

var metricValues = waitForMetricValues.Values;
Assert.AreEqual(1, metricValues.Count);

var networkVariableDeltaSent = metricValues.First();
Assert.AreEqual(nameof(NetworkVariableComponent.MyNetworkVariable), networkVariableDeltaSent.Name);
Assert.AreEqual(m_NetworkManager.LocalClientId, networkVariableDeltaSent.Connection.Id);
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
using System.Collections;
using System.Collections;
using System.Linq;
using MLAPI.Metrics;
using NUnit.Framework;
using Unity.Multiplayer.NetStats.Metrics;
using Unity.Multiplayer.NetworkProfiler;
using Unity.Multiplayer.NetworkProfiler.Models;
using UnityEngine;
using UnityEngine.TestTools;

namespace MLAPI.RuntimeTests.Metrics.NetworkVariables
{
public class NetworkVariableMetricsReceptionTests : MetricsTestBase
public class NetworkVariableMetricsReceptionTests
{
NetworkManager m_Server;
NetworkManager m_Client;
Expand Down Expand Up @@ -62,32 +61,18 @@ public IEnumerator TearDown()
[UnityTest]
public IEnumerator TrackNetworkVariableDeltaReceivedMetric()
{
var found = false;
m_ClientMetrics.Dispatcher.RegisterObserver(new TestObserver(collection =>
{
var networkVariableUpdateMetric = collection.Metrics.SingleOrDefault(x => x.Name == MetricNames.NetworkVariableDeltaReceived);
Assert.NotNull(networkVariableUpdateMetric);

var typedMetric = networkVariableUpdateMetric as IEventMetric<NetworkVariableEvent>;
Assert.NotNull(typedMetric);
if (typedMetric.Values.Any()) // We always get the metric, but when it has values, something has been tracked
{
// We have an instance each of the player prefabs
Assert.AreEqual(2, typedMetric.Values.Count);

var first = typedMetric.Values.First();
Assert.AreEqual(nameof(NetworkVariableComponent.MyNetworkVariable), first.Name);
var waitForMetricValues = new WaitForMetricValues<NetworkVariableEvent>(m_ClientMetrics.Dispatcher, MetricNames.NetworkVariableDeltaReceived);

var last = typedMetric.Values.Last();
Assert.AreEqual(nameof(NetworkVariableComponent.MyNetworkVariable), last.Name);
yield return waitForMetricValues.WaitForAFewFrames();

found = true;
}
}));
var metricValues = waitForMetricValues.Values;
Assert.AreEqual(2, metricValues.Count); // We have an instance each of the player prefabs

yield return WaitForAFewFrames();
var first = metricValues.First();
Assert.AreEqual(nameof(NetworkVariableComponent.MyNetworkVariable), first.Name);

Assert.True(found);
var last = metricValues.Last();
Assert.AreEqual(nameof(NetworkVariableComponent.MyNetworkVariable), last.Name);
}
}
}
}
Loading