@@ -143,6 +143,98 @@ struct PeerTests {
143
143
typealias EphemeralHandler = MockEphemeralStreamHandler
144
144
}
145
145
146
+ @Test
147
+ func mockHandshakeFailure( ) async throws {
148
+ let mockPeerTest = try MockPeerEventTests ( )
149
+ let serverHandler = MockPeerEventTests . MockPeerEventHandler (
150
+ MockPeerEventTests . MockPeerEventHandler. MockPeerAction. mockHandshakeFailure
151
+ )
152
+ let alpns = [
153
+ PeerRole . validator: Alpn ( genesisHeader: Data32 ( ) , builder: false ) . data,
154
+ PeerRole . builder: Alpn ( genesisHeader: Data32 ( ) , builder: true ) . data,
155
+ ]
156
+ let allAlpns = Array ( alpns. values)
157
+ // Server setup with bad certificate
158
+ let serverConfiguration = try QuicConfiguration (
159
+ registration: mockPeerTest. registration,
160
+ pkcs12: mockPeerTest. certData,
161
+ alpns: allAlpns,
162
+ client: false ,
163
+ settings: QuicSettings . defaultSettings
164
+ )
165
+
166
+ let listener = try QuicListener (
167
+ handler: serverHandler,
168
+ registration: mockPeerTest. registration,
169
+ configuration: serverConfiguration,
170
+ listenAddress: NetAddr ( ipAddress: " 127.0.0.1 " , port: 0 ) !,
171
+ alpns: allAlpns
172
+ )
173
+
174
+ let listenAddress = try listener. listenAddress ( )
175
+ let peer1 = try Peer (
176
+ options: PeerOptions < MockStreamHandler > (
177
+ role: . validator,
178
+ listenAddress: NetAddr ( ipAddress: " 127.0.0.1 " , port: 0 ) !,
179
+ genesisHeader: Data32 ( ) ,
180
+ secretKey: Ed25519 . SecretKey ( from: Data32 . random ( ) ) ,
181
+ presistentStreamHandler: MockPresentStreamHandler ( ) ,
182
+ ephemeralStreamHandler: MockEphemeralStreamHandler ( ) ,
183
+ serverSettings: . defaultSettings,
184
+ clientSettings: . defaultSettings
185
+ )
186
+ )
187
+
188
+ let connection1 = try peer1. connect ( to: listenAddress, role: . validator)
189
+ try ? await Task . sleep ( for: . milliseconds( 3000 ) )
190
+ #expect( connection1. isClosed == true )
191
+ }
192
+
193
+ @Test
194
+ func mockShutdownBadCert( ) async throws {
195
+ let mockPeerTest = try MockPeerEventTests ( )
196
+ let serverHandler = MockPeerEventTests . MockPeerEventHandler ( )
197
+ let alpns = [
198
+ PeerRole . validator: Alpn ( genesisHeader: Data32 ( ) , builder: false ) . data,
199
+ PeerRole . builder: Alpn ( genesisHeader: Data32 ( ) , builder: true ) . data,
200
+ ]
201
+ let allAlpns = Array ( alpns. values)
202
+ // Server setup with bad certificate
203
+ let serverConfiguration = try QuicConfiguration (
204
+ registration: mockPeerTest. registration,
205
+ pkcs12: mockPeerTest. badCertData,
206
+ alpns: allAlpns,
207
+ client: false ,
208
+ settings: QuicSettings . defaultSettings
209
+ )
210
+
211
+ let listener = try QuicListener (
212
+ handler: serverHandler,
213
+ registration: mockPeerTest. registration,
214
+ configuration: serverConfiguration,
215
+ listenAddress: NetAddr ( ipAddress: " 127.0.0.1 " , port: 0 ) !,
216
+ alpns: allAlpns
217
+ )
218
+
219
+ let listenAddress = try listener. listenAddress ( )
220
+ let peer1 = try Peer (
221
+ options: PeerOptions < MockStreamHandler > (
222
+ role: . validator,
223
+ listenAddress: NetAddr ( ipAddress: " 127.0.0.1 " , port: 0 ) !,
224
+ genesisHeader: Data32 ( ) ,
225
+ secretKey: Ed25519 . SecretKey ( from: Data32 . random ( ) ) ,
226
+ presistentStreamHandler: MockPresentStreamHandler ( ) ,
227
+ ephemeralStreamHandler: MockEphemeralStreamHandler ( ) ,
228
+ serverSettings: . defaultSettings,
229
+ clientSettings: . defaultSettings
230
+ )
231
+ )
232
+
233
+ let connection1 = try peer1. connect ( to: listenAddress, role: . validator)
234
+ try ? await Task . sleep ( for: . milliseconds( 1000 ) )
235
+ #expect( connection1. isClosed == true )
236
+ }
237
+
146
238
@Test
147
239
func reopenUpStream( ) async throws {
148
240
let handler2 = MockPresentStreamHandler ( )
@@ -197,7 +289,7 @@ struct PeerTests {
197
289
peer1. broadcast (
198
290
kind: . uniqueA, message: . init( kind: . uniqueA, data: messageData)
199
291
)
200
- try await Task . sleep ( for: . milliseconds( 1000 ) )
292
+ try await Task . sleep ( for: . milliseconds( 2000 ) )
201
293
let lastReceivedData2 = await handler2. lastReceivedData
202
294
#expect( lastReceivedData2 == messageData)
203
295
}
@@ -290,15 +382,15 @@ struct PeerTests {
290
382
291
383
let connection1 = try peer1. connect ( to: peer2. listenAddress ( ) , role: . validator)
292
384
let connection2 = try peer2. connect ( to: peer1. listenAddress ( ) , role: . validator)
293
- try ? await Task . sleep ( for: . milliseconds( 50 ) )
385
+ try ? await Task . sleep ( for: . milliseconds( 1000 ) )
294
386
if !connection1. isClosed {
295
387
let data = try await connection1. request ( MockRequest ( kind: . typeA, data: Data ( " hello world " . utf8) ) )
296
- try ? await Task . sleep ( for: . milliseconds( 50 ) )
388
+ try ? await Task . sleep ( for: . milliseconds( 500 ) )
297
389
#expect( data == Data ( " hello world response " . utf8) )
298
390
}
299
391
if !connection2. isClosed {
300
392
let data = try await connection2. request ( MockRequest ( kind: . typeA, data: Data ( " hello world " . utf8) ) )
301
- try ? await Task . sleep ( for: . milliseconds( 50 ) )
393
+ try ? await Task . sleep ( for: . milliseconds( 500 ) )
302
394
#expect( data == Data ( " hello world response " . utf8) )
303
395
}
304
396
}
@@ -573,7 +665,7 @@ struct PeerTests {
573
665
to: peer2. listenAddress ( ) , role: . validator
574
666
)
575
667
576
- try ? await Task . sleep ( for: . milliseconds( 50 ) )
668
+ try ? await Task . sleep ( for: . milliseconds( 500 ) )
577
669
578
670
peer1. broadcast (
579
671
kind: . uniqueA, message: . init( kind: . uniqueA, data: Data ( " hello world " . utf8) )
@@ -583,7 +675,7 @@ struct PeerTests {
583
675
kind: . uniqueB, message: . init( kind: . uniqueB, data: Data ( " I am jam " . utf8) )
584
676
)
585
677
// Verify last received data
586
- try ? await Task . sleep ( for: . milliseconds( 200 ) )
678
+ try ? await Task . sleep ( for: . milliseconds( 500 ) )
587
679
await #expect( handler2. lastReceivedData == Data ( " hello world " . utf8) )
588
680
await #expect( handler1. lastReceivedData == Data ( " I am jam " . utf8) )
589
681
}
0 commit comments