Skip to content

Commit 0e9b6c3

Browse files
committed
Update tests to test fix properly
1 parent be6c14a commit 0e9b6c3

File tree

3 files changed

+37
-11
lines changed

3 files changed

+37
-11
lines changed

com.unity.netcode.gameobjects/Runtime/Transports/UTP/BatchedSendQueue.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ internal struct BatchedSendQueue : IDisposable
3232

3333
internal const int MinimumMinimumCapacity = 4096;
3434
// int.MaxValue is odd and maximum must be even.
35+
// This is safe to be so large as the queue is dynamically allocated.
36+
// It's very unlikely that the actual send queue will ever grow this large
3537
internal const int MaximumMaximumCapacity = int.MaxValue - 1;
3638

3739
// Indices into m_HeadTailIndicies.

com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1519,7 +1519,7 @@ public override void Send(ulong clientId, ArraySegment<byte> payload, NetworkDel
15191519
if (maxCapacity <= 0)
15201520
{
15211521
// Setting m_DisconnectTimeoutMS to zero will disable the timeout entirely
1522-
// by setting the maxCapacity to it's maximum capacity
1522+
// Set the capacity as if the disconnect timeout is the largest possible value
15231523
if (m_DisconnectTimeoutMS == 0)
15241524
{
15251525
maxCapacity = BatchedSendQueue.MaximumMaximumCapacity;

com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportTests.cs

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,9 @@ public IEnumerator SendMaximumPayloadSize(
192192
[UnityTest]
193193
public IEnumerator VeryLargeDisconnectTimeout()
194194
{
195-
// We want something that's over the old limit of ~44KB for reliable payloads.
196-
var payloadSize = 64 * 1024;
195+
// The calculation will never be lower than the UnityTransport.InitialMaxPayloadSize
196+
// We want to send a message larger than that size to ensure the maximum is high enough
197+
var payloadSize = UnityTransport.InitialMaxPayloadSize * 2;
197198

198199
var disconnectTimeout = int.MaxValue;
199200

@@ -207,21 +208,33 @@ public IEnumerator VeryLargeDisconnectTimeout()
207208

208209
yield return WaitForNetworkEvent(NetworkEvent.Connect, m_Client1Events);
209210

210-
var payload = new ArraySegment<byte>(Encoding.ASCII.GetBytes("Some message"));
211+
var payloadData = new byte[payloadSize];
212+
for (int i = 0; i < payloadData.Length; i++)
213+
{
214+
payloadData[i] = (byte)i;
215+
}
216+
217+
var payload = new ArraySegment<byte>(payloadData);
211218
m_Client1.Send(m_Client1.ServerClientId, payload, NetworkDelivery.Reliable);
212219

213220
yield return WaitForNetworkEvent(NetworkEvent.Data, m_ServerEvents, MaxNetworkEventWaitTime * 4);
214221

215-
Assert.That(m_ServerEvents[1].Data, Is.EquivalentTo(Encoding.ASCII.GetBytes("Some message")));
222+
Assert.AreEqual(payloadSize, m_ServerEvents[1].Data.Count);
216223

217-
yield return null;
224+
var receivedArray = m_ServerEvents[1].Data.Array;
225+
var receivedArrayOffset = m_ServerEvents[1].Data.Offset;
226+
for (int i = 0; i < payloadSize; i++)
227+
{
228+
Assert.AreEqual(payloadData[i], receivedArray[receivedArrayOffset + i]);
229+
}
218230
}
219231

220232
[UnityTest]
221233
public IEnumerator ZeroDisconnectTimeoutSetToZero()
222234
{
223-
// We want something that's over the old limit of ~44KB for reliable payloads.
224-
var payloadSize = 64 * 1024;
235+
// The calculation will never be lower than the UnityTransport.InitialMaxPayloadSize
236+
// We want to send a message larger than that size to ensure the maximum is high enough
237+
var payloadSize = UnityTransport.InitialMaxPayloadSize * 2;
225238

226239
var disconnectTimeout = 0;
227240

@@ -235,14 +248,25 @@ public IEnumerator ZeroDisconnectTimeoutSetToZero()
235248

236249
yield return WaitForNetworkEvent(NetworkEvent.Connect, m_Client1Events);
237250

238-
var payload = new ArraySegment<byte>(Encoding.ASCII.GetBytes("Some message"));
251+
var payloadData = new byte[payloadSize];
252+
for (int i = 0; i < payloadData.Length; i++)
253+
{
254+
payloadData[i] = (byte)i;
255+
}
256+
257+
var payload = new ArraySegment<byte>(payloadData);
239258
m_Client1.Send(m_Client1.ServerClientId, payload, NetworkDelivery.Reliable);
240259

241260
yield return WaitForNetworkEvent(NetworkEvent.Data, m_ServerEvents, MaxNetworkEventWaitTime * 4);
242261

243-
Assert.That(m_ServerEvents[1].Data, Is.EquivalentTo(Encoding.ASCII.GetBytes("Some message")));
262+
Assert.AreEqual(payloadSize, m_ServerEvents[1].Data.Count);
244263

245-
yield return null;
264+
var receivedArray = m_ServerEvents[1].Data.Array;
265+
var receivedArrayOffset = m_ServerEvents[1].Data.Offset;
266+
for (int i = 0; i < payloadSize; i++)
267+
{
268+
Assert.AreEqual(payloadData[i], receivedArray[receivedArrayOffset + i]);
269+
}
246270
}
247271

248272
// Check making multiple sends to a client in a single frame.

0 commit comments

Comments
 (0)