@@ -592,4 +592,33 @@ public function testCheckCallsRejectFunctionImmediateWithoutLeavingDanglingPromi
592592
593593 $ this ->assertEquals (array (), $ promises );
594594 }
595+
596+ public function testCleanUpCancelsAllPendingConnectionAttempts ()
597+ {
598+ $ loop = $ this ->getMockBuilder ('React\EventLoop\LoopInterface ' )->getMock ();
599+
600+ $ connector = $ this ->getMockBuilder ('React\Socket\ConnectorInterface ' )->getMock ();
601+ $ connector ->expects ($ this ->exactly (2 ))->method ('connect ' )->with ('tcp://[::1]:80/path?test=yes&hostname=reactphp.org#start ' )->willReturnOnConsecutiveCalls (
602+ new Promise (function () { }, $ this ->expectCallableOnce ()),
603+ new Promise (function () { }, $ this ->expectCallableOnce ())
604+ );
605+
606+ $ resolver = $ this ->getMockBuilder ('React\Dns\Resolver\ResolverInterface ' )->getMock ();
607+ $ resolver ->expects ($ this ->never ())->method ('resolveAll ' );
608+
609+ $ uri = 'tcp://reactphp.org:80/path?test=yes#start ' ;
610+ $ host = 'reactphp.org ' ;
611+ $ parts = parse_url ($ uri );
612+
613+ $ builder = new HappyEyeBallsConnectionBuilder ($ loop , $ connector , $ resolver , $ uri , $ host , $ parts );
614+
615+ $ ref = new \ReflectionProperty ($ builder , 'connectQueue ' );
616+ $ ref ->setAccessible (true );
617+ $ ref ->setValue ($ builder , array ('::1 ' , '::1 ' ));
618+
619+ $ builder ->check ($ this ->expectCallableNever (), function () { });
620+ $ builder ->check ($ this ->expectCallableNever (), function () { });
621+
622+ $ builder ->cleanUp ();
623+ }
595624}
0 commit comments