@@ -306,6 +306,8 @@ async function generateTLSConfig() {
306
306
} ;
307
307
}
308
308
309
+ // setInterval(() => console.log("Im still alive!"), 5000);
310
+
309
311
/* eslint-disable no-console */
310
312
const main = async ( ) => {
311
313
const logger = new Logger ( `${ QUICStream . name } Test` , LogLevel . WARN , [
@@ -322,8 +324,7 @@ const main = async () => {
322
324
const clientCrypto = {
323
325
randomBytes : ( data ) => webcrypto . getRandomValues ( new Uint8Array ( data ) ) ,
324
326
} ;
325
- const message = Buffer . from ( 'The Quick Brown Fox Jumped Over The Lazy Dog' ) ;
326
- const connectionEventProm = utils . promise ( ) ;
327
+ let connectionEventProm = utils . promise ( ) ;
327
328
const tlsConfig = await generateTLSConfig ( ) ;
328
329
const server = new QUICServer ( {
329
330
crypto : {
@@ -342,45 +343,51 @@ const main = async () => {
342
343
connectionEventProm . resolveP ( e ) ,
343
344
) ;
344
345
await server . start ( { host : '127.0.0.1' } ) ;
345
- const client = await QUICClient . createQUICClient ( {
346
- host : '127.0.0.1' ,
347
- port : server . port ,
348
- localHost : '127.0.0.1' ,
349
- crypto : {
350
- ops : clientCrypto ,
351
- } ,
352
- logger : logger . getChild ( QUICClient . name ) ,
353
- config : {
354
- verifyPeer : false ,
355
- } ,
356
- } ) ;
357
- socketCleanMethods . extractSocket ( client ) ;
358
- const conn = ( await connectionEventProm . p ) . detail ;
359
- const activeServerStreams = [ ] ;
360
- conn . addEventListener (
361
- events . EventQUICConnectionStream . name ,
362
- ( streamEvent ) => {
363
- const stream = streamEvent . detail ;
364
- const streamProm = stream . readable . pipeTo ( stream . writable ) ;
365
- activeServerStreams . push ( streamProm ) ;
366
- } ,
367
- ) ;
368
346
369
- for ( let i = 0 ; i < 1000 ; i ++ ) {
370
- console . error ( 'loop' ) ;
347
+ const data = Buffer . alloc ( 1 , 0xf0 ) ;
348
+
349
+ for ( let i = 0 ; i < 100000 ; i ++ ) {
350
+ // if (i % 500 == 0) console.error('loop', i);
351
+ console . error ( 'loop' , i ) ;
352
+
353
+ connectionEventProm = utils . promise ( ) ;
354
+ const client = await QUICClient . createQUICClient ( {
355
+ host : '127.0.0.1' ,
356
+ port : server . port ,
357
+ localHost : '127.0.0.1' ,
358
+ crypto : {
359
+ ops : clientCrypto ,
360
+ } ,
361
+ logger : logger . getChild ( QUICClient . name ) ,
362
+ config : {
363
+ verifyPeer : false ,
364
+ } ,
365
+ } ) ;
366
+ socketCleanMethods . extractSocket ( client ) ;
367
+ const conn = ( await connectionEventProm . p ) . detail ;
368
+ let activeStream = undefined ;
369
+ conn . addEventListener (
370
+ events . EventQUICConnectionStream . name ,
371
+ ( streamEvent ) => {
372
+ const stream = streamEvent . detail ;
373
+ const streamProm = stream . readable . pipeTo ( stream . writable ) ;
374
+ activeStream = streamProm ;
375
+ } ,
376
+ { 'once' : true } ,
377
+ ) ;
378
+
371
379
const stream = client . connection . newStream ( ) ;
372
380
const writer = stream . writable . getWriter ( ) ;
373
- await writer . write ( message ) ;
381
+ await writer . write ( data ) ;
374
382
await writer . close ( ) ;
375
- const reader = stream . readable . getReader ( ) ;
376
- let finished = false ;
377
- while ( ! finished ) {
378
- finished = ( await reader . read ( ) ) . done ;
383
+ for await ( const _ of stream . readable ) {
384
+ // do nothing
379
385
}
386
+ await activeStream ;
387
+ await conn . stop ( { force : true } ) ;
388
+ await client . destroy ( { force : true } ) ;
380
389
}
381
- await Promise . all ( [ activeServerStreams ] ) ;
382
390
383
- await client . destroy ( { force : true } ) ;
384
391
await server . stop ( { force : true } ) ;
385
392
console . error ( 'Test passed!' ) ;
386
393
} ;
0 commit comments