Skip to content

Commit 0365a46

Browse files
committed
#53: fix 028-udp_basic_operations.phpt
1 parent 793e9a0 commit 0365a46

File tree

1 file changed

+32
-20
lines changed

1 file changed

+32
-20
lines changed

tests/stream/028-udp_basic_operations.phpt

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,41 +7,45 @@ use function Async\spawn;
77
use function Async\awaitAll;
88
use function Async\delay;
99

10-
echo "Start UDP basic operations test\n";
10+
$output = [];
11+
12+
$output['1'] = "Start UDP basic operations test";
13+
14+
$address = null;
1115

1216
// Server coroutine
13-
$server = spawn(function() {
14-
echo "Server: creating UDP socket\n";
15-
$socket = stream_socket_server("udp://127.0.0.1:0", $errno, $errstr);
17+
$server = spawn(function() use(&$address, &$output) {
18+
$output['2'] = "Server: creating UDP socket";
19+
$socket = stream_socket_server("udp://127.0.0.1:0", $errno, $errstr, STREAM_SERVER_BIND);
1620
if (!$socket) {
17-
echo "Server: failed to create socket: $errstr\n";
21+
$output['2a'] = "Server: failed to create socket: $errstr";
1822
return;
1923
}
2024

2125
$address = stream_socket_get_name($socket, false);
22-
echo "Server: listening on $address\n";
26+
$address = "udp://$address";
27+
$output['3'] = "Server: listening on $address";
2328

2429
// Wait for incoming data
25-
echo "Server: waiting for UDP data\n";
30+
$output['4'] = "Server: waiting for UDP data";
2631
$data = stream_socket_recvfrom($socket, 1024, 0, $peer);
27-
echo "Server: received '$data' from $peer\n";
32+
$output['6'] = "Server: received '$data' from $peer";
2833

2934
// Send response back
3035
$response = "Hello from UDP server";
3136
$bytes = stream_socket_sendto($socket, $response, 0, $peer);
32-
echo "Server: sent $bytes bytes response\n";
37+
$output['7'] = "Server: sent $bytes bytes response";
3338

3439
fclose($socket);
3540
return $address;
3641
});
3742

3843
// Client coroutine
39-
$client = spawn(function() use ($server) {
44+
$client = spawn(function() use (&$address, &$output) {
4045
// Wait for server to start with retry logic
4146
$address = null;
4247
for ($attempts = 0; $attempts < 5; $attempts++) {
4348
delay(10);
44-
$address = $server->getResult();
4549
if ($address) {
4650
break;
4751
}
@@ -51,37 +55,45 @@ $client = spawn(function() use ($server) {
5155
throw new Exception("Client: failed to get server address after 5 attempts");
5256
}
5357

54-
echo "Client: connecting to $address\n";
58+
$output['4a'] = "Client: connecting to $address";
5559
$socket = stream_socket_client($address, $errno, $errstr);
5660
if (!$socket) {
57-
echo "Client: failed to connect: $errstr\n";
61+
$output['4b'] = "Client: failed to connect: $errstr";
5862
return;
5963
}
6064

6165
// Send data to server
6266
$message = "Hello from UDP client";
6367
$bytes = stream_socket_sendto($socket, $message);
64-
echo "Client: sent $bytes bytes\n";
68+
$output['5'] = "Client: sent $bytes bytes";
6569

6670
// Receive response
6771
$response = stream_socket_recvfrom($socket, 1024);
68-
echo "Client: received '$response'\n";
72+
$output['8'] = "Client: received '$response'";
6973

7074
fclose($socket);
7175
});
7276

7377
awaitAll([$server, $client]);
74-
echo "End UDP basic operations test\n";
78+
$output['9'] = "End UDP basic operations test";
79+
80+
// Sort output by keys to ensure deterministic test results
81+
ksort($output);
82+
83+
// Output sorted results
84+
foreach ($output as $line) {
85+
echo $line . "\n";
86+
}
7587

7688
?>
77-
--EXPECT--
89+
--EXPECTF--
7890
Start UDP basic operations test
7991
Server: creating UDP socket
80-
Server: listening on udp://127.0.0.1:0
92+
Server: listening on udp://127.0.0.1:%d
8193
Server: waiting for UDP data
82-
Client: connecting to udp://127.0.0.1:0
94+
Client: connecting to udp://127.0.0.1:%d
8395
Client: sent 21 bytes
84-
Server: received 'Hello from UDP client' from 127.0.0.1:0
96+
Server: received 'Hello from UDP client' from 127.0.0.1:%d
8597
Server: sent 21 bytes response
8698
Client: received 'Hello from UDP server'
8799
End UDP basic operations test

0 commit comments

Comments
 (0)