@@ -32,25 +32,21 @@ public function testTCPAdapterGetConnectionAndClose(): void
3232 $ error = null ;
3333
3434 Coroutine \run (function () use (&$ result , &$ error ): void {
35- // Bind an echo server on an ephemeral port
35+ // Bind a TCP listener on an ephemeral port
3636 $ listener = new Coroutine \Socket (\AF_INET , \SOCK_STREAM , 0 );
3737 $ listener ->bind ('127.0.0.1 ' , 0 );
3838 $ listener ->listen (128 );
39- $ backendPort = $ listener ->getsockname ()['port ' ];
4039
41- // Accept one connection and echo in a separate coroutine
40+ /** @var array{port: int} $addr */
41+ $ addr = $ listener ->getsockname ();
42+ $ backendPort = $ addr ['port ' ];
43+
44+ // Accept and hold one connection open
4245 Coroutine::create (function () use ($ listener ): void {
43- $ peer = $ listener ->accept ();
44- if ($ peer === false ) {
45- return ;
46- }
47- while (true ) {
48- $ data = $ peer ->recvAll (4096 , 2.0 );
49- if ($ data === '' || $ data === false ) {
50- break ;
51- }
52- $ peer ->sendAll ($ data );
53- }
46+ /** @var Coroutine\Socket $peer */
47+ $ peer = $ listener ->accept (5.0 );
48+ // Hold open until client disconnects
49+ $ peer ->recv (4096 , 5.0 );
5450 $ peer ->close ();
5551 $ listener ->close ();
5652 });
@@ -73,11 +69,6 @@ public function testTCPAdapterGetConnectionAndClose(): void
7369 $ cached = $ adapter ->getConnection ('ignored ' , 1 );
7470 $ this ->assertSame ($ client , $ cached );
7571
76- // Send/recv through the established connection
77- $ client ->send ('ping ' );
78- $ response = $ client ->recv (2.0 );
79- $ this ->assertSame ('ping ' , $ response );
80-
8172 // closeConnection cleans up
8273 $ adapter ->closeConnection (1 );
8374
0 commit comments