|
| 1 | +using System; |
1 | 2 | using System.Collections; |
| 3 | +using System.Linq; |
| 4 | +using System.Net; |
2 | 5 | using NUnit.Framework; |
3 | 6 | using Unity.Netcode.TestHelpers.Runtime; |
| 7 | +using Unity.Networking.Transport; |
4 | 8 | using UnityEngine; |
5 | 9 | using UnityEngine.TestTools; |
6 | 10 |
|
@@ -67,6 +71,54 @@ public IEnumerator CreateObjectNew() |
67 | 71 | AssertOnTimeout("failed to spawn object!"); |
68 | 72 | } |
69 | 73 |
|
| 74 | + private static readonly string k_TransportHost = GetAddressToBind(); |
| 75 | + private static readonly ushort k_TransportPort = GetPortToBind(); |
| 76 | + |
| 77 | + /// <summary> |
| 78 | + /// Configures the port to look for the rust service. |
| 79 | + /// </summary> |
| 80 | + /// <returns>The port from the environment variable "CMB_SERVICE_PORT" if it is set and valid; otherwise uses port 7789</returns> |
| 81 | + private static ushort GetPortToBind() |
| 82 | + { |
| 83 | + var value = Environment.GetEnvironmentVariable("CMB_SERVICE_PORT"); |
| 84 | + return ushort.TryParse(value, out var configuredPort) ? configuredPort : (ushort)7789; |
| 85 | + } |
| 86 | + |
| 87 | + /// <summary> |
| 88 | + /// Configures the address to look for the rust service. |
| 89 | + /// </summary> |
| 90 | + /// <returns>The address from the environment variable "NGO_HOST" if it is set and valid; otherwise uses "127.0.0.1"</returns> |
| 91 | + private static string GetAddressToBind() |
| 92 | + { |
| 93 | + var value = Environment.GetEnvironmentVariable("NGO_HOST") ?? "127.0.0.1"; |
| 94 | + return Dns.GetHostAddresses(value).First().ToString(); |
| 95 | + } |
| 96 | + |
| 97 | + [Test] |
| 98 | + public void CanConnectToServer() |
| 99 | + { |
| 100 | + var address = Dns.GetHostAddresses(k_TransportHost).First(); |
| 101 | + var endpoint = NetworkEndpoint.Parse(address.ToString(), k_TransportPort); |
| 102 | + |
| 103 | + var driver = NetworkDriver.Create(); |
| 104 | + var connection = driver.Connect(endpoint); |
| 105 | + |
| 106 | + var start = DateTime.Now; |
| 107 | + var ev = Networking.Transport.NetworkEvent.Type.Empty; |
| 108 | + while (ev != Networking.Transport.NetworkEvent.Type.Connect) |
| 109 | + { |
| 110 | + driver.ScheduleUpdate().Complete(); |
| 111 | + ev = driver.PopEventForConnection(connection, out _, out _); |
| 112 | + |
| 113 | + if (DateTime.Now - start > TimeSpan.FromMilliseconds(100)) |
| 114 | + { |
| 115 | + Assert.Fail("Failed to connect to comb service within time!"); |
| 116 | + } |
| 117 | + } |
| 118 | + |
| 119 | + driver.Disconnect(connection); |
| 120 | + } |
| 121 | + |
70 | 122 |
|
71 | 123 | private bool CheckObjectExists() |
72 | 124 | { |
|
0 commit comments