1--TEST--
2swoole_socket_coro: unix dgram
3--SKIPIF--
4<?php require __DIR__ . '/../include/skipif.inc'; ?>
5--FILE--
6<?php
7require __DIR__ . '/../include/bootstrap.php';
8go(function () {
9    @unlink('/tmp/test-server.sock');
10    $server = new Swoole\Coroutine\Socket(AF_UNIX, SOCK_DGRAM, IPPROTO_IP);
11    $server->bind('/tmp/test-server.sock');
12    go(function () use ($server) {
13        while ($data = $server->recvfrom($peer)) {
14            Assert::same($data, 'hello');
15            $server->sendto($peer['address'], 0, 'world');
16        }
17        var_dump($peer);
18    });
19    go(function () use ($server) {
20        @unlink('/tmp/test-client.sock');
21        $client = new Swoole\Coroutine\Socket(AF_UNIX, SOCK_DGRAM, IPPROTO_IP);
22        $client->bind('/tmp/test-client.sock');
23        $peer = [];
24        for ($n = MAX_REQUESTS; $n--;) {
25            $client->sendto('/tmp/test-server.sock', 0, 'hello');
26            $data = $client->recvfrom($peer);
27            Assert::notEmpty($data);
28            if (empty($data)) {
29                break;
30            }
31            Assert::same($data, 'world');
32        }
33        var_dump($peer);
34        $client->close();
35        $server->close();
36    });
37});
38Swoole\Event::wait();
39echo "DONE\n";
40?>
41--EXPECT--
42array(2) {
43  ["address"]=>
44  string(21) "/tmp/test-server.sock"
45  ["port"]=>
46  int(0)
47}
48array(2) {
49  ["address"]=>
50  string(21) "/tmp/test-client.sock"
51  ["port"]=>
52  int(0)
53}
54DONE
55