Skip to content

Commit fc59679

Browse files
authored
fix: make NetworkVariablePermissionTests consistent (#1815)
1 parent 6e69c6e commit fc59679

File tree

1 file changed

+57
-38
lines changed

1 file changed

+57
-38
lines changed

com.unity.netcode.gameobjects/Tests/Runtime/NetworkVariableTests.cs

Lines changed: 57 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -49,39 +49,65 @@ protected override IEnumerator OnServerAndClientsConnected()
4949
yield return null;
5050
}
5151

52-
private void AssertOwnerWritableAreEqualOnAll()
52+
private IEnumerator WaitForPositionsAreEqual(NetworkVariable<Vector3> netvar, Vector3 expected)
53+
{
54+
yield return WaitForConditionOrTimeOut(() => netvar.Value == expected);
55+
Assert.IsFalse(s_GlobalTimeoutHelper.TimedOut);
56+
}
57+
58+
private IEnumerator WaitForOwnerWritableAreEqualOnAll()
59+
{
60+
yield return WaitForConditionOrTimeOut(CheckOwnerWritableAreEqualOnAll);
61+
Assert.IsFalse(s_GlobalTimeoutHelper.TimedOut);
62+
}
63+
64+
private bool CheckOwnerWritableAreEqualOnAll()
5365
{
5466
var testObjServer = m_ServerNetworkManager.SpawnManager.SpawnedObjects[m_TestObjId];
5567
var testCompServer = testObjServer.GetComponent<NetVarPermTestComp>();
5668
foreach (var clientNetworkManager in m_ClientNetworkManagers)
5769
{
5870
var testObjClient = clientNetworkManager.SpawnManager.SpawnedObjects[m_TestObjId];
5971
var testCompClient = testObjClient.GetComponent<NetVarPermTestComp>();
60-
Assert.AreEqual(testObjServer.OwnerClientId, testObjClient.OwnerClientId);
61-
Assert.AreEqual(testCompServer.OwnerWritable_Position.Value, testCompClient.OwnerWritable_Position.Value);
62-
Assert.AreEqual(testCompServer.OwnerWritable_Position.ReadPerm, testCompClient.OwnerWritable_Position.ReadPerm);
63-
Assert.AreEqual(testCompServer.OwnerWritable_Position.WritePerm, testCompClient.OwnerWritable_Position.WritePerm);
72+
if (testObjServer.OwnerClientId != testObjClient.OwnerClientId ||
73+
testCompServer.OwnerWritable_Position.Value != testCompClient.OwnerWritable_Position.Value ||
74+
testCompServer.OwnerWritable_Position.ReadPerm != testCompClient.OwnerWritable_Position.ReadPerm ||
75+
testCompServer.OwnerWritable_Position.WritePerm != testCompClient.OwnerWritable_Position.WritePerm)
76+
{
77+
return false;
78+
}
6479
}
80+
return true;
6581
}
6682

67-
private void AssertServerWritableAreEqualOnAll()
83+
private IEnumerator WaitForServerWritableAreEqualOnAll()
84+
{
85+
yield return WaitForConditionOrTimeOut(CheckServerWritableAreEqualOnAll);
86+
Assert.IsFalse(s_GlobalTimeoutHelper.TimedOut);
87+
}
88+
89+
private bool CheckServerWritableAreEqualOnAll()
6890
{
6991
var testObjServer = m_ServerNetworkManager.SpawnManager.SpawnedObjects[m_TestObjId];
7092
var testCompServer = testObjServer.GetComponent<NetVarPermTestComp>();
7193
foreach (var clientNetworkManager in m_ClientNetworkManagers)
7294
{
7395
var testObjClient = clientNetworkManager.SpawnManager.SpawnedObjects[m_TestObjId];
7496
var testCompClient = testObjClient.GetComponent<NetVarPermTestComp>();
75-
Assert.AreEqual(testCompServer.ServerWritable_Position.Value, testCompClient.ServerWritable_Position.Value);
76-
Assert.AreEqual(testCompServer.ServerWritable_Position.ReadPerm, testCompClient.ServerWritable_Position.ReadPerm);
77-
Assert.AreEqual(testCompServer.ServerWritable_Position.WritePerm, testCompClient.ServerWritable_Position.WritePerm);
97+
if (testCompServer.ServerWritable_Position.Value != testCompClient.ServerWritable_Position.Value ||
98+
testCompServer.ServerWritable_Position.ReadPerm != testCompClient.ServerWritable_Position.ReadPerm ||
99+
testCompServer.ServerWritable_Position.WritePerm != testCompClient.ServerWritable_Position.WritePerm)
100+
{
101+
return false;
102+
}
78103
}
104+
return true;
79105
}
80106

81107
[UnityTest]
82108
public IEnumerator ServerChangesOwnerWritableNetVar()
83109
{
84-
AssertOwnerWritableAreEqualOnAll();
110+
yield return WaitForOwnerWritableAreEqualOnAll();
85111

86112
var testObjServer = m_ServerNetworkManager.SpawnManager.SpawnedObjects[m_TestObjId];
87113
var testCompServer = testObjServer.GetComponent<NetVarPermTestComp>();
@@ -90,16 +116,15 @@ public IEnumerator ServerChangesOwnerWritableNetVar()
90116
var newValue = oldValue + new Vector3(Random.Range(0, 100.0f), Random.Range(0, 100.0f), Random.Range(0, 100.0f));
91117

92118
testCompServer.OwnerWritable_Position.Value = newValue;
93-
yield return NetcodeIntegrationTestHelpers.WaitForTicks(m_ServerNetworkManager, 2);
94-
Assert.AreEqual(testCompServer.OwnerWritable_Position.Value, newValue);
119+
yield return WaitForPositionsAreEqual(testCompServer.OwnerWritable_Position, newValue);
95120

96-
AssertOwnerWritableAreEqualOnAll();
121+
yield return WaitForOwnerWritableAreEqualOnAll();
97122
}
98123

99124
[UnityTest]
100125
public IEnumerator ServerChangesServerWritableNetVar()
101126
{
102-
AssertServerWritableAreEqualOnAll();
127+
yield return WaitForServerWritableAreEqualOnAll();
103128

104129
var testObjServer = m_ServerNetworkManager.SpawnManager.SpawnedObjects[m_TestObjId];
105130
var testCompServer = testObjServer.GetComponent<NetVarPermTestComp>();
@@ -108,16 +133,15 @@ public IEnumerator ServerChangesServerWritableNetVar()
108133
var newValue = oldValue + new Vector3(Random.Range(0, 100.0f), Random.Range(0, 100.0f), Random.Range(0, 100.0f));
109134

110135
testCompServer.ServerWritable_Position.Value = newValue;
111-
yield return NetcodeIntegrationTestHelpers.WaitForTicks(m_ServerNetworkManager, 2);
112-
Assert.AreEqual(testCompServer.ServerWritable_Position.Value, newValue);
136+
yield return WaitForPositionsAreEqual(testCompServer.ServerWritable_Position, newValue);
113137

114-
AssertServerWritableAreEqualOnAll();
138+
yield return WaitForServerWritableAreEqualOnAll();
115139
}
116140

117141
[UnityTest]
118142
public IEnumerator ClientChangesOwnerWritableNetVar()
119143
{
120-
AssertOwnerWritableAreEqualOnAll();
144+
yield return WaitForOwnerWritableAreEqualOnAll();
121145

122146
var testObjServer = m_ServerNetworkManager.SpawnManager.SpawnedObjects[m_TestObjId];
123147

@@ -126,7 +150,7 @@ public IEnumerator ClientChangesOwnerWritableNetVar()
126150
testObjServer.ChangeOwnership(newOwnerClientId);
127151
yield return NetcodeIntegrationTestHelpers.WaitForTicks(m_ServerNetworkManager, 2);
128152

129-
AssertOwnerWritableAreEqualOnAll();
153+
yield return WaitForOwnerWritableAreEqualOnAll();
130154

131155
var testObjClient = m_ClientNetworkManagers[clientManagerIndex].SpawnManager.SpawnedObjects[m_TestObjId];
132156
var testCompClient = testObjClient.GetComponent<NetVarPermTestComp>();
@@ -135,16 +159,15 @@ public IEnumerator ClientChangesOwnerWritableNetVar()
135159
var newValue = oldValue + new Vector3(Random.Range(0, 100.0f), Random.Range(0, 100.0f), Random.Range(0, 100.0f));
136160

137161
testCompClient.OwnerWritable_Position.Value = newValue;
138-
yield return NetcodeIntegrationTestHelpers.WaitForTicks(m_ClientNetworkManagers[clientManagerIndex], 4);
139-
Assert.AreEqual(testCompClient.OwnerWritable_Position.Value, newValue);
162+
yield return WaitForPositionsAreEqual(testCompClient.OwnerWritable_Position, newValue);
140163

141-
AssertOwnerWritableAreEqualOnAll();
164+
yield return WaitForOwnerWritableAreEqualOnAll();
142165
}
143166

144167
[UnityTest]
145168
public IEnumerator ClientCannotChangeServerWritableNetVar()
146169
{
147-
AssertServerWritableAreEqualOnAll();
170+
yield return WaitForServerWritableAreEqualOnAll();
148171

149172
var testObjServer = m_ServerNetworkManager.SpawnManager.SpawnedObjects[m_TestObjId];
150173
var testCompServer = testObjServer.GetComponent<NetVarPermTestComp>();
@@ -154,7 +177,7 @@ public IEnumerator ClientCannotChangeServerWritableNetVar()
154177
testObjServer.ChangeOwnership(newOwnerClientId);
155178
yield return NetcodeIntegrationTestHelpers.WaitForTicks(m_ServerNetworkManager, 2);
156179

157-
AssertServerWritableAreEqualOnAll();
180+
yield return WaitForServerWritableAreEqualOnAll();
158181

159182
var testObjClient = m_ClientNetworkManagers[clientManagerIndex].SpawnManager.SpawnedObjects[m_TestObjId];
160183
var testCompClient = testObjClient.GetComponent<NetVarPermTestComp>();
@@ -163,22 +186,20 @@ public IEnumerator ClientCannotChangeServerWritableNetVar()
163186
var newValue = oldValue + new Vector3(Random.Range(0, 100.0f), Random.Range(0, 100.0f), Random.Range(0, 100.0f));
164187

165188
Assert.That(() => testCompClient.ServerWritable_Position.Value = newValue, Throws.TypeOf<InvalidOperationException>());
166-
yield return NetcodeIntegrationTestHelpers.WaitForTicks(m_ClientNetworkManagers[clientManagerIndex], 4);
167-
Assert.AreEqual(testCompServer.ServerWritable_Position.Value, oldValue);
189+
yield return WaitForPositionsAreEqual(testCompServer.ServerWritable_Position, oldValue);
168190

169-
AssertServerWritableAreEqualOnAll();
191+
yield return WaitForServerWritableAreEqualOnAll();
170192

171193
testCompServer.ServerWritable_Position.Value = newValue;
172-
yield return NetcodeIntegrationTestHelpers.WaitForTicks(m_ServerNetworkManager, 2);
173-
Assert.AreEqual(testCompServer.ServerWritable_Position.Value, newValue);
194+
yield return WaitForPositionsAreEqual(testCompServer.ServerWritable_Position, newValue);
174195

175-
AssertServerWritableAreEqualOnAll();
196+
yield return WaitForServerWritableAreEqualOnAll();
176197
}
177198

178199
[UnityTest]
179200
public IEnumerator ServerCannotChangeOwnerWritableNetVar()
180201
{
181-
AssertOwnerWritableAreEqualOnAll();
202+
yield return WaitForOwnerWritableAreEqualOnAll();
182203

183204
var testObjServer = m_ServerNetworkManager.SpawnManager.SpawnedObjects[m_TestObjId];
184205
var testCompServer = testObjServer.GetComponent<NetVarPermTestComp>();
@@ -188,25 +209,23 @@ public IEnumerator ServerCannotChangeOwnerWritableNetVar()
188209
testObjServer.ChangeOwnership(newOwnerClientId);
189210
yield return NetcodeIntegrationTestHelpers.WaitForTicks(m_ServerNetworkManager, 2);
190211

191-
AssertOwnerWritableAreEqualOnAll();
212+
yield return WaitForOwnerWritableAreEqualOnAll();
192213

193214
var oldValue = testCompServer.OwnerWritable_Position.Value;
194215
var newValue = oldValue + new Vector3(Random.Range(0, 100.0f), Random.Range(0, 100.0f), Random.Range(0, 100.0f));
195216

196217
Assert.That(() => testCompServer.OwnerWritable_Position.Value = newValue, Throws.TypeOf<InvalidOperationException>());
197-
yield return NetcodeIntegrationTestHelpers.WaitForTicks(m_ServerNetworkManager, 2);
198-
Assert.AreEqual(testCompServer.OwnerWritable_Position.Value, oldValue);
218+
yield return WaitForPositionsAreEqual(testCompServer.OwnerWritable_Position, oldValue);
199219

200-
AssertOwnerWritableAreEqualOnAll();
220+
yield return WaitForOwnerWritableAreEqualOnAll();
201221

202222
var testObjClient = m_ClientNetworkManagers[clientManagerIndex].SpawnManager.SpawnedObjects[m_TestObjId];
203223
var testCompClient = testObjClient.GetComponent<NetVarPermTestComp>();
204224

205225
testCompClient.OwnerWritable_Position.Value = newValue;
206-
yield return NetcodeIntegrationTestHelpers.WaitForTicks(m_ClientNetworkManagers[clientManagerIndex], 4);
207-
Assert.AreEqual(testCompClient.OwnerWritable_Position.Value, newValue);
226+
yield return WaitForPositionsAreEqual(testCompClient.OwnerWritable_Position, newValue);
208227

209-
AssertOwnerWritableAreEqualOnAll();
228+
yield return WaitForOwnerWritableAreEqualOnAll();
210229
}
211230
}
212231

0 commit comments

Comments
 (0)