|
1 | 1 | using System;
|
2 | 2 | using System.Collections;
|
3 | 3 | using NUnit.Framework;
|
| 4 | +using Unity.Netcode.TestHelpers.Runtime; |
| 5 | +using Unity.Netcode.Transports.UTP; |
| 6 | +using Unity.Networking.Transport; |
4 | 7 | using UnityEngine;
|
5 | 8 | using UnityEngine.TestTools;
|
6 | 9 |
|
@@ -157,4 +160,51 @@ public override void DisconnectLocalClient()
|
157 | 160 | }
|
158 | 161 | }
|
159 | 162 | }
|
| 163 | + |
| 164 | + /// <summary> |
| 165 | + /// Verifies the UnityTransport.GetEndpoint method returns |
| 166 | + /// valid NetworkEndPoint information. |
| 167 | + /// </summary> |
| 168 | + internal class TransportEndpointTests : NetcodeIntegrationTest |
| 169 | + { |
| 170 | + protected override int NumberOfClients => 2; |
| 171 | + |
| 172 | + [UnityTest] |
| 173 | + public IEnumerator GetEndpointReportedCorrectly() |
| 174 | + { |
| 175 | + var serverUnityTransport = m_ServerNetworkManager.NetworkConfig.NetworkTransport as UnityTransport; |
| 176 | + var serverEndpoint = new NetworkEndPoint(); |
| 177 | + var clientEndpoint = new NetworkEndPoint(); |
| 178 | + foreach (var client in m_ClientNetworkManagers) |
| 179 | + { |
| 180 | + var unityTransport = client.NetworkConfig.NetworkTransport as UnityTransport; |
| 181 | + serverEndpoint = unityTransport.GetEndpoint(m_ServerNetworkManager.LocalClientId); |
| 182 | + clientEndpoint = serverUnityTransport.GetEndpoint(client.LocalClientId); |
| 183 | + Assert.IsTrue(serverEndpoint.IsValid); |
| 184 | + Assert.IsTrue(clientEndpoint.IsValid); |
| 185 | + Assert.IsTrue(clientEndpoint.Address.Split(":")[0] == unityTransport.ConnectionData.Address); |
| 186 | + Assert.IsTrue(serverEndpoint.Address.Split(":")[0] == serverUnityTransport.ConnectionData.Address); |
| 187 | + Assert.IsTrue(serverEndpoint.Port == unityTransport.ConnectionData.Port); |
| 188 | + Assert.IsTrue(clientEndpoint.Port >= serverUnityTransport.ConnectionData.Port); |
| 189 | + } |
| 190 | + |
| 191 | + // Now validate that when disconnected it returns a non-valid NetworkEndPoint |
| 192 | + var clientId = m_ClientNetworkManagers[0].LocalClientId; |
| 193 | + m_ClientNetworkManagers[0].Shutdown(); |
| 194 | + yield return s_DefaultWaitForTick; |
| 195 | + |
| 196 | + serverEndpoint = (m_ClientNetworkManagers[0].NetworkConfig.NetworkTransport as UnityTransport).GetEndpoint(m_ServerNetworkManager.LocalClientId); |
| 197 | + clientEndpoint = serverUnityTransport.GetEndpoint(clientId); |
| 198 | + Assert.IsFalse(serverEndpoint.IsValid); |
| 199 | + Assert.IsFalse(clientEndpoint.IsValid); |
| 200 | + |
| 201 | + // Validate that invalid client identifiers return an invalid NetworkEndPoint |
| 202 | + serverEndpoint = (m_ClientNetworkManagers[0].NetworkConfig.NetworkTransport as UnityTransport).GetEndpoint((ulong)UnityEngine.Random.Range(NumberOfClients + 1, 30)); |
| 203 | + clientEndpoint = serverUnityTransport.GetEndpoint((ulong)UnityEngine.Random.Range(NumberOfClients + 1, 30)); |
| 204 | + Assert.IsFalse(serverEndpoint.IsValid); |
| 205 | + Assert.IsFalse(clientEndpoint.IsValid); |
| 206 | + } |
| 207 | + } |
| 208 | + |
| 209 | + |
160 | 210 | }
|
0 commit comments