@@ -1880,4 +1880,63 @@ describe(QUICClient.name, () => {
18801880 await client . destroy ( { force : true } ) ;
18811881 await server . stop ( { force : true } ) ;
18821882 } ) ;
1883+ test ( 'handles many connections' , async ( ) => {
1884+ const connNum = 100 ;
1885+ const tlsConfigServer = await testsUtils . generateTLSConfig ( defaultType ) ;
1886+ const connectionEventProm = promise < events . EventQUICServerConnection > ( ) ;
1887+ const server = new QUICServer ( {
1888+ crypto : {
1889+ key,
1890+ ops : serverCryptoOps ,
1891+ } ,
1892+ logger : logger . getChild ( QUICServer . name ) ,
1893+ config : {
1894+ key : tlsConfigServer . leafKeyPairPEM . privateKey ,
1895+ cert : tlsConfigServer . leafCertPEM ,
1896+ verifyPeer : false ,
1897+ } ,
1898+ } ) ;
1899+ socketCleanMethods . extractSocket ( server ) ;
1900+ let connCount = 0 ;
1901+ server . addEventListener (
1902+ events . EventQUICServerConnection . name ,
1903+ ( e : events . EventQUICServerConnection ) => {
1904+ connCount ++ ;
1905+ if ( connCount === connNum ) connectionEventProm . resolveP ( e ) ;
1906+ } ,
1907+ ) ;
1908+ await server . start ( {
1909+ host : localhost ,
1910+ } ) ;
1911+ const sharedSocket = new QUICSocket ( {
1912+ logger : logger . getChild ( QUICSocket . name ) ,
1913+ } ) ;
1914+ await sharedSocket . start ( {
1915+ host : localhost ,
1916+ } ) ;
1917+ const clientPs : Array < Promise < QUICClient > > = [ ] ;
1918+ for ( let i = 0 ; i < connNum ; i ++ ) {
1919+ const clientP = QUICClient . createQUICClient (
1920+ {
1921+ socket : sharedSocket ,
1922+ host : localhost ,
1923+ port : server . port ,
1924+ crypto : {
1925+ ops : clientCryptoOps ,
1926+ } ,
1927+ logger : logger . getChild ( QUICClient . name ) ,
1928+ config : {
1929+ verifyPeer : false ,
1930+ } ,
1931+ } ,
1932+ { timer : 2000 } ,
1933+ ) ;
1934+ clientPs . push ( clientP ) ;
1935+ }
1936+ const clients = await Promise . all ( clientPs ) ;
1937+ await connectionEventProm . p ;
1938+ await Promise . all ( clients . map ( client => client . destroy ( { force : true } ) ) ) ;
1939+ await sharedSocket . stop ( { force : true } ) ;
1940+ await server . stop ( { force : true } ) ;
1941+ } ) ;
18831942} ) ;
0 commit comments