1--TEST--
2swoole_server/task: task_ipc_mode = 3
3--SKIPIF--
4<?php require __DIR__ . '/../../include/skipif.inc'; ?>
5--FILE--
6<?php
7require __DIR__ . '/../../include/bootstrap.php';
8$pm = new SwooleTest\ProcessManager;
9$pm->parentFunc = function ($pid) use ($pm) {
10    go(function () use ($pm) {
11        echo httpGetBody("http://127.0.0.1:{$pm->getFreePort()}");
12    });
13    Swoole\Event::wait();
14    $pm->kill();
15};
16$pm->childFunc = function () use ($pm) {
17    $server = new swoole_http_server('127.0.0.1', $pm->getFreePort(), SERVER_MODE_RANDOM);
18    $server->set([
19        'log_file' => '/dev/null',
20        'open_tcp_nodelay' => true,
21        'task_worker_num' => 4,
22        'task_ipc_mode' => 3,
23        'dispatch_mode' => 2
24    ]);
25    $server->on('workerStart', function () use ($pm) {
26        $pm->wakeup();
27    });
28    $server->on('request', function (swoole_http_request $request, swoole_http_response $response) use ($server) {
29        $response->detach();
30        $server->task($response->fd);
31    });
32    $server->on('task', function ($server, $task_id, $worker_id, string $fd) {
33        $response = swoole_http_response::create($fd);
34        $response->end("Hello Swoole!\n");
35    });
36    $server->on('finish', function () { });
37    $server->on('close', function () { });
38    $server->start();
39};
40$pm->childFirst();
41$pm->run();
42?>
43--EXPECT--
44Hello Swoole!
45