1--TEST--
2swoole_server/task: kill task worker [SWOOLE_BASE]
3--SKIPIF--
4<?php
5require __DIR__ . '/../../include/skipif.inc';
6skip_if_darwin();
7skip_if_in_valgrind();
8?>
9--FILE--
10<?php
11require __DIR__ . '/../../include/bootstrap.php';
12use Swoole\Server;
13const PROC_NAME = 'swoole_unittest_server_task_worker';
14$pm = new SwooleTest\ProcessManager;
15
16$pm->parentFunc = function ($pid) use ($pm) {
17    for ($i = 0; $i < 5; $i++)
18    {
19        //杀死进程
20        kill_process_by_name(PROC_NAME);
21        usleep(10000);
22        //判断进程是否存在
23        Assert::assert(get_process_pid_by_name(PROC_NAME) > 0);
24    }
25    $cli = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
26    $cli->connect('127.0.0.1', $pm->getFreePort(), 10) or die("ERROR");
27    $cli->send("task-01") or die("ERROR");
28    Assert::same($cli->recv(), "task-01");
29    $cli->close();
30    $pm->kill();
31};
32
33$pm->childFunc = function () use ($pm)
34{
35    $serv = new Server('127.0.0.1', $pm->getFreePort(), SWOOLE_BASE);
36    $serv->set(["worker_num" => 1, 'log_file' => TEST_LOG_FILE, 'task_worker_num' => 1,]);
37    $serv->on("WorkerStart", function (Server $serv, $worker_id) use ($pm) {
38        if ($worker_id = 1) {
39            swoole_set_process_name(PROC_NAME);
40            $pm->wakeup();
41        }
42    });
43    $serv->on("Receive", function (Server $serv, $fd, $reactorId, $data)
44    {
45        $serv->task(['fd' => $fd, 'data' => $data]);
46    });
47    $serv->on('task', function (Server $serv, $task_id, $worker_id, $data)
48    {
49        $serv->send($data['fd'], $data['data']);
50    });
51    $serv->on('finish', function (Server $serv, $fd, $rid, $data)
52    {
53    });
54    $serv->start();
55};
56
57$pm->childFirst();
58$pm->run();
59
60?>
61--EXPECT--
62