|
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,49 @@ 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 | + } |
160 | 208 | } |
0 commit comments