@@ -12,6 +12,14 @@ namespace Unity.Netcode.UTP.RuntimeTests
12
12
{
13
13
public class TransportTests
14
14
{
15
+ // No need to test all reliable delivery methods since they all map to the same pipeline.
16
+ private static readonly NetworkDelivery [ ] k_DeliveryParameters =
17
+ {
18
+ NetworkDelivery . Unreliable ,
19
+ NetworkDelivery . UnreliableSequenced ,
20
+ NetworkDelivery . Reliable
21
+ } ;
22
+
15
23
private UnityTransport m_Server , m_Client1 , m_Client2 ;
16
24
private List < TransportEvent > m_ServerEvents , m_Client1Events , m_Client2Events ;
17
25
@@ -46,7 +54,7 @@ public IEnumerator Cleanup()
46
54
47
55
// Check if can make a simple data exchange.
48
56
[ UnityTest ]
49
- public IEnumerator PingPong ( )
57
+ public IEnumerator PingPong ( [ ValueSource ( "k_DeliveryParameters" ) ] NetworkDelivery delivery )
50
58
{
51
59
InitializeTransport ( out m_Server , out m_ServerEvents ) ;
52
60
InitializeTransport ( out m_Client1 , out m_Client1Events ) ;
@@ -57,28 +65,25 @@ public IEnumerator PingPong()
57
65
yield return WaitForNetworkEvent ( NetworkEvent . Connect , m_ServerEvents ) ;
58
66
59
67
var ping = new ArraySegment < byte > ( Encoding . ASCII . GetBytes ( "ping" ) ) ;
60
- m_Client1 . Send ( m_Client1 . ServerClientId , ping , NetworkDelivery . ReliableSequenced ) ;
68
+ m_Client1 . Send ( m_Client1 . ServerClientId , ping , delivery ) ;
61
69
62
70
yield return WaitForNetworkEvent ( NetworkEvent . Data , m_ServerEvents ) ;
63
71
64
72
Assert . That ( m_ServerEvents [ 1 ] . Data , Is . EquivalentTo ( Encoding . ASCII . GetBytes ( "ping" ) ) ) ;
65
73
66
74
var pong = new ArraySegment < byte > ( Encoding . ASCII . GetBytes ( "pong" ) ) ;
67
- m_Server . Send ( m_ServerEvents [ 0 ] . ClientID , pong , NetworkDelivery . ReliableSequenced ) ;
75
+ m_Server . Send ( m_ServerEvents [ 0 ] . ClientID , pong , delivery ) ;
68
76
69
77
yield return WaitForNetworkEvent ( NetworkEvent . Data , m_Client1Events ) ;
70
78
71
79
Assert . That ( m_Client1Events [ 1 ] . Data , Is . EquivalentTo ( Encoding . ASCII . GetBytes ( "pong" ) ) ) ;
72
80
73
- // server.Shutdown();
74
- // client.Shutdown();
75
-
76
81
yield return null ;
77
82
}
78
83
79
84
// Check if can make a simple data exchange (both ways at a time).
80
85
[ UnityTest ]
81
- public IEnumerator PingPongSimultaneous ( )
86
+ public IEnumerator PingPongSimultaneous ( [ ValueSource ( "k_DeliveryParameters" ) ] NetworkDelivery delivery )
82
87
{
83
88
InitializeTransport ( out m_Server , out m_ServerEvents ) ;
84
89
InitializeTransport ( out m_Client1 , out m_Client1Events ) ;
@@ -89,8 +94,8 @@ public IEnumerator PingPongSimultaneous()
89
94
yield return WaitForNetworkEvent ( NetworkEvent . Connect , m_ServerEvents ) ;
90
95
91
96
var ping = new ArraySegment < byte > ( Encoding . ASCII . GetBytes ( "ping" ) ) ;
92
- m_Server . Send ( m_ServerEvents [ 0 ] . ClientID , ping , NetworkDelivery . ReliableSequenced ) ;
93
- m_Client1 . Send ( m_Client1 . ServerClientId , ping , NetworkDelivery . ReliableSequenced ) ;
97
+ m_Server . Send ( m_ServerEvents [ 0 ] . ClientID , ping , delivery ) ;
98
+ m_Client1 . Send ( m_Client1 . ServerClientId , ping , delivery ) ;
94
99
95
100
// Once one event is in the other should be too.
96
101
yield return WaitForNetworkEvent ( NetworkEvent . Data , m_ServerEvents ) ;
@@ -99,8 +104,8 @@ public IEnumerator PingPongSimultaneous()
99
104
Assert . That ( m_Client1Events [ 1 ] . Data , Is . EquivalentTo ( Encoding . ASCII . GetBytes ( "ping" ) ) ) ;
100
105
101
106
var pong = new ArraySegment < byte > ( Encoding . ASCII . GetBytes ( "pong" ) ) ;
102
- m_Server . Send ( m_ServerEvents [ 0 ] . ClientID , pong , NetworkDelivery . ReliableSequenced ) ;
103
- m_Client1 . Send ( m_Client1 . ServerClientId , pong , NetworkDelivery . ReliableSequenced ) ;
107
+ m_Server . Send ( m_ServerEvents [ 0 ] . ClientID , pong , delivery ) ;
108
+ m_Client1 . Send ( m_Client1 . ServerClientId , pong , delivery ) ;
104
109
105
110
// Once one event is in the other should be too.
106
111
yield return WaitForNetworkEvent ( NetworkEvent . Data , m_ServerEvents ) ;
@@ -112,7 +117,7 @@ public IEnumerator PingPongSimultaneous()
112
117
}
113
118
114
119
[ UnityTest ]
115
- public IEnumerator FilledSendQueueSingleSend ( )
120
+ public IEnumerator FilledSendQueueSingleSend ( [ ValueSource ( "k_DeliveryParameters" ) ] NetworkDelivery delivery )
116
121
{
117
122
InitializeTransport ( out m_Server , out m_ServerEvents ) ;
118
123
InitializeTransport ( out m_Client1 , out m_Client1Events ) ;
@@ -123,15 +128,15 @@ public IEnumerator FilledSendQueueSingleSend()
123
128
yield return WaitForNetworkEvent ( NetworkEvent . Connect , m_ServerEvents ) ;
124
129
125
130
var payload = new ArraySegment < byte > ( new byte [ UnityTransport . InitialBatchQueueSize ] ) ;
126
- m_Client1 . Send ( m_Client1 . ServerClientId , payload , NetworkDelivery . ReliableFragmentedSequenced ) ;
131
+ m_Client1 . Send ( m_Client1 . ServerClientId , payload , delivery ) ;
127
132
128
133
yield return WaitForNetworkEvent ( NetworkEvent . Data , m_ServerEvents ) ;
129
134
130
135
yield return null ;
131
136
}
132
137
133
138
[ UnityTest ]
134
- public IEnumerator FilledSendQueueMultipleSends ( )
139
+ public IEnumerator FilledSendQueueMultipleSends ( [ ValueSource ( "k_DeliveryParameters" ) ] NetworkDelivery delivery )
135
140
{
136
141
InitializeTransport ( out m_Server , out m_ServerEvents ) ;
137
142
InitializeTransport ( out m_Client1 , out m_Client1Events ) ;
@@ -149,7 +154,7 @@ public IEnumerator FilledSendQueueMultipleSends()
149
154
// Without that we wouldn't fill the send queue; it would get flushed right when we
150
155
// try to send the last message.
151
156
var payload = new ArraySegment < byte > ( new byte [ 1024 - 4 ] ) ;
152
- m_Client1 . Send ( m_Client1 . ServerClientId , payload , NetworkDelivery . ReliableFragmentedSequenced ) ;
157
+ m_Client1 . Send ( m_Client1 . ServerClientId , payload , delivery ) ;
153
158
}
154
159
155
160
yield return WaitForNetworkEvent ( NetworkEvent . Data , m_ServerEvents ) ;
@@ -162,7 +167,7 @@ public IEnumerator FilledSendQueueMultipleSends()
162
167
163
168
// Check making multiple sends to a client in a single frame.
164
169
[ UnityTest ]
165
- public IEnumerator MultipleSendsSingleFrame ( )
170
+ public IEnumerator MultipleSendsSingleFrame ( [ ValueSource ( "k_DeliveryParameters" ) ] NetworkDelivery delivery )
166
171
{
167
172
InitializeTransport ( out m_Server , out m_ServerEvents ) ;
168
173
InitializeTransport ( out m_Client1 , out m_Client1Events ) ;
@@ -173,10 +178,10 @@ public IEnumerator MultipleSendsSingleFrame()
173
178
yield return WaitForNetworkEvent ( NetworkEvent . Connect , m_ServerEvents ) ;
174
179
175
180
var data1 = new ArraySegment < byte > ( new byte [ ] { 11 } ) ;
176
- m_Client1 . Send ( m_Client1 . ServerClientId , data1 , NetworkDelivery . ReliableSequenced ) ;
181
+ m_Client1 . Send ( m_Client1 . ServerClientId , data1 , delivery ) ;
177
182
178
183
var data2 = new ArraySegment < byte > ( new byte [ ] { 22 } ) ;
179
- m_Client1 . Send ( m_Client1 . ServerClientId , data2 , NetworkDelivery . ReliableSequenced ) ;
184
+ m_Client1 . Send ( m_Client1 . ServerClientId , data2 , delivery ) ;
180
185
181
186
yield return WaitForNetworkEvent ( NetworkEvent . Data , m_ServerEvents ) ;
182
187
@@ -191,7 +196,7 @@ public IEnumerator MultipleSendsSingleFrame()
191
196
192
197
// Check sending data to multiple clients.
193
198
[ UnityTest ]
194
- public IEnumerator SendMultipleClients ( )
199
+ public IEnumerator SendMultipleClients ( [ ValueSource ( "k_DeliveryParameters" ) ] NetworkDelivery delivery )
195
200
{
196
201
InitializeTransport ( out m_Server , out m_ServerEvents ) ;
197
202
InitializeTransport ( out m_Client1 , out m_Client1Events ) ;
@@ -207,10 +212,10 @@ public IEnumerator SendMultipleClients()
207
212
Assert . AreEqual ( 2 , m_ServerEvents . Count ) ;
208
213
209
214
var data1 = new ArraySegment < byte > ( new byte [ ] { 11 } ) ;
210
- m_Server . Send ( m_ServerEvents [ 0 ] . ClientID , data1 , NetworkDelivery . ReliableSequenced ) ;
215
+ m_Server . Send ( m_ServerEvents [ 0 ] . ClientID , data1 , delivery ) ;
211
216
212
217
var data2 = new ArraySegment < byte > ( new byte [ ] { 22 } ) ;
213
- m_Server . Send ( m_ServerEvents [ 1 ] . ClientID , data2 , NetworkDelivery . ReliableSequenced ) ;
218
+ m_Server . Send ( m_ServerEvents [ 1 ] . ClientID , data2 , delivery ) ;
214
219
215
220
// Once one has received its data, the other should have too.
216
221
yield return WaitForNetworkEvent ( NetworkEvent . Data , m_Client1Events ) ;
@@ -228,7 +233,7 @@ public IEnumerator SendMultipleClients()
228
233
229
234
// Check receiving data from multiple clients.
230
235
[ UnityTest ]
231
- public IEnumerator ReceiveMultipleClients ( )
236
+ public IEnumerator ReceiveMultipleClients ( [ ValueSource ( "k_DeliveryParameters" ) ] NetworkDelivery delivery )
232
237
{
233
238
InitializeTransport ( out m_Server , out m_ServerEvents ) ;
234
239
InitializeTransport ( out m_Client1 , out m_Client1Events ) ;
@@ -244,10 +249,10 @@ public IEnumerator ReceiveMultipleClients()
244
249
Assert . AreEqual ( 1 , m_Client2Events . Count ) ;
245
250
246
251
var data1 = new ArraySegment < byte > ( new byte [ ] { 11 } ) ;
247
- m_Client1 . Send ( m_Client1 . ServerClientId , data1 , NetworkDelivery . ReliableSequenced ) ;
252
+ m_Client1 . Send ( m_Client1 . ServerClientId , data1 , delivery ) ;
248
253
249
254
var data2 = new ArraySegment < byte > ( new byte [ ] { 22 } ) ;
250
- m_Client2 . Send ( m_Client2 . ServerClientId , data2 , NetworkDelivery . ReliableSequenced ) ;
255
+ m_Client2 . Send ( m_Client2 . ServerClientId , data2 , delivery ) ;
251
256
252
257
yield return WaitForNetworkEvent ( NetworkEvent . Data , m_ServerEvents ) ;
253
258
0 commit comments