You've already forked qlg.tsgz.moe
Init Repo
This commit is contained in:
71
vendor/swoole/tests/swoole_server/addListener.phpt
vendored
Executable file
71
vendor/swoole/tests/swoole_server/addListener.phpt
vendored
Executable file
@ -0,0 +1,71 @@
|
||||
--TEST--
|
||||
swoole_server:
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$simple_tcp_server = __DIR__ . "/../include/api/swoole_server/opcode_server.php";
|
||||
|
||||
$port1 = get_one_free_port();
|
||||
|
||||
$pm = new ProcessManager;
|
||||
$pm->parentFunc = function ($pid)
|
||||
{
|
||||
$cli = new \swoole_client(SWOOLE_SOCK_UDP, SWOOLE_SOCK_ASYNC);
|
||||
|
||||
$cli->on("connect", function (\swoole_client $cli) {
|
||||
assert($cli->isConnected() === true);
|
||||
$cli->send("test");
|
||||
});
|
||||
|
||||
$cli->on("receive", function(\swoole_client $cli, $data){
|
||||
$i = $cli->getpeername();
|
||||
assert($i !== false);
|
||||
$cli->send('shutdown');
|
||||
$cli->close();
|
||||
});
|
||||
|
||||
$cli->on("close", function(\swoole_client $cli) {
|
||||
echo "SUCCESS\n";
|
||||
});
|
||||
|
||||
$r = $cli->connect(UDP_SERVER_HOST, UDP_SERVER_PORT, 1);
|
||||
assert($r);
|
||||
Swoole\Event::wait();
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm)
|
||||
{
|
||||
$serv = new \swoole_server(UDP_SERVER_HOST, UDP_SERVER_PORT, SWOOLE_BASE, SWOOLE_SOCK_UDP);
|
||||
$serv->set(["worker_num" => 1, 'log_file' => '/dev/null']);
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on("Packet", function (\swoole_server $serv, $data, $clientInfo)
|
||||
{
|
||||
if (trim($data) == 'shutdown')
|
||||
{
|
||||
$serv->shutdown();
|
||||
return;
|
||||
}
|
||||
$serv->sendto($clientInfo['address'], $clientInfo['port'], $data);
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
86
vendor/swoole/tests/swoole_server/addProcess.phpt
vendored
Executable file
86
vendor/swoole/tests/swoole_server/addProcess.phpt
vendored
Executable file
@ -0,0 +1,86 @@
|
||||
--TEST--
|
||||
swoole_server: addProcess
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$port = get_one_free_port();
|
||||
|
||||
$pm = new ProcessManager;
|
||||
$pm->parentFunc = function ($pid) use ($port)
|
||||
{
|
||||
$cli = new \swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
|
||||
|
||||
$cli->on("connect", function (\swoole_client $cli) {
|
||||
assert($cli->isConnected() === true);
|
||||
$cli->send("test");
|
||||
});
|
||||
|
||||
$cli->on("receive", function(\swoole_client $cli, $data){
|
||||
assert($data == 'test');
|
||||
$cli->send('shutdown');
|
||||
$cli->close();
|
||||
});
|
||||
|
||||
$cli->on("close", function(\swoole_client $cli) {
|
||||
echo "SUCCESS\n";
|
||||
});
|
||||
|
||||
$cli->on("error", function(\swoole_client $cli) {
|
||||
echo "error\n";
|
||||
});
|
||||
|
||||
$r = $cli->connect(TCP_SERVER_HOST, $port, 1);
|
||||
assert($r);
|
||||
Swoole\Event::wait();
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm, $port)
|
||||
{
|
||||
$serv = new \swoole_server(TCP_SERVER_HOST, $port);
|
||||
$process = new \Swoole\Process(function ($process) use ($serv)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
$msg = json_decode($process->read(), true);
|
||||
$serv->send($msg['fd'], $msg['data']);
|
||||
}
|
||||
});
|
||||
$serv->set([
|
||||
"worker_num" => 1,
|
||||
'log_file' => '/dev/null',
|
||||
]);
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on("Receive", function (\swoole_server $serv, $fd, $rid, $data) use ($process)
|
||||
{
|
||||
if (trim($data) == 'shutdown')
|
||||
{
|
||||
$serv->shutdown();
|
||||
return;
|
||||
}
|
||||
else {
|
||||
$process->write(json_encode(['fd' => $fd, 'data' => $data]));
|
||||
}
|
||||
});
|
||||
$serv->addProcess($process);
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
77
vendor/swoole/tests/swoole_server/bigPipeMessage.phpt
vendored
Executable file
77
vendor/swoole/tests/swoole_server/bigPipeMessage.phpt
vendored
Executable file
@ -0,0 +1,77 @@
|
||||
--TEST--
|
||||
swoole_server: send big pipe message
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
$port = get_one_free_port();
|
||||
|
||||
const N = 800000;
|
||||
|
||||
$pm = new ProcessManager;
|
||||
$pm->parentFunc = function ($pid) use ($port)
|
||||
{
|
||||
$cli = new \swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
|
||||
|
||||
$cli->on("connect", function (\swoole_client $cli) {
|
||||
$cli->send("test");
|
||||
});
|
||||
|
||||
$cli->on("receive", function(\swoole_client $cli, $data){
|
||||
echo $data;
|
||||
$cli->close();
|
||||
});
|
||||
|
||||
$cli->on("close", function(\swoole_client $cli) {
|
||||
|
||||
});
|
||||
|
||||
$cli->on("error", function(\swoole_client $cli) {
|
||||
|
||||
});
|
||||
|
||||
$cli->connect(TCP_SERVER_HOST, $port, 1);
|
||||
Swoole\Event::wait();
|
||||
Swoole\Process::kill($pid);
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm, $port)
|
||||
{
|
||||
$serv = new \swoole_server(TCP_SERVER_HOST, $port);
|
||||
$serv->set([
|
||||
"worker_num" => 2,
|
||||
'log_file' => '/dev/null',
|
||||
]);
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on("pipeMessage", function ($serv, $worker_id, $data)
|
||||
{
|
||||
if (is_array($data) and strlen($data['data']) == N)
|
||||
{
|
||||
$serv->send($data['fd'], "OK\n");
|
||||
}
|
||||
});
|
||||
$serv->on("receive", function ($serv, $fd, $rid, $data)
|
||||
{
|
||||
$data = str_repeat("A", N);
|
||||
$serv->sendMessage(array('data' => $data, 'fd' => $fd), 1 - $serv->worker_id);
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECT--
|
||||
OK
|
55
vendor/swoole/tests/swoole_server/big_udp_packet.phpt
vendored
Executable file
55
vendor/swoole/tests/swoole_server/big_udp_packet.phpt
vendored
Executable file
@ -0,0 +1,55 @@
|
||||
--TEST--
|
||||
swoole_server: send big udp packet to server
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
|
||||
//最大长度:65535 - UDP包头 8字节 + IP包头 20字节 = 65507
|
||||
const N = 65507;
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
$port = get_one_free_port();
|
||||
|
||||
$pm = new ProcessManager;
|
||||
|
||||
$pm->parentFunc = function ($pid) use ($port)
|
||||
{
|
||||
$client = new swoole_client(SWOOLE_SOCK_UDP, SWOOLE_SOCK_SYNC);
|
||||
if (!$client->connect('127.0.0.1', $port))
|
||||
{
|
||||
exit("connect failed\n");
|
||||
}
|
||||
$client->send(str_repeat('A', N));
|
||||
$data = $client->recv();
|
||||
assert(strlen($data) == N);
|
||||
swoole_process::kill($pid);
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm, $port)
|
||||
{
|
||||
$serv = new swoole_server("127.0.0.1", $port, SWOOLE_BASE, SWOOLE_SOCK_UDP);
|
||||
$serv->set(['worker_num' => 1, 'log_file' => '/dev/null']);
|
||||
$serv->on("workerStart", function ($serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on('packet', function ($serv, $data, $client)
|
||||
{
|
||||
$serv->sendto($client['address'], $client['port'], str_repeat('B', strlen($data)));
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECT--
|
37
vendor/swoole/tests/swoole_server/bind.phpt
vendored
Executable file
37
vendor/swoole/tests/swoole_server/bind.phpt
vendored
Executable file
@ -0,0 +1,37 @@
|
||||
--TEST--
|
||||
swoole_server: bind
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$simple_tcp_server = __DIR__ . "/../include/api/swoole_server/opcode_server.php";
|
||||
$port = get_one_free_port();
|
||||
|
||||
start_server($simple_tcp_server, TCP_SERVER_HOST, $port);
|
||||
|
||||
suicide(2000);
|
||||
usleep(500 * 1000);
|
||||
|
||||
makeTcpClient(TCP_SERVER_HOST, $port, function(\swoole_client $cli) use($port) {
|
||||
$r = $cli->send(opcode_encode("bind", [2, 42]));
|
||||
assert($r !== false);
|
||||
}, function(\swoole_client $cli, $recv) {
|
||||
list($op, $binded) = opcode_decode($recv);
|
||||
assert($binded);
|
||||
swoole_event_exit();
|
||||
echo "SUCCESS";
|
||||
});
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
38
vendor/swoole/tests/swoole_server/bug_11000_01.phpt
vendored
Executable file
38
vendor/swoole/tests/swoole_server/bug_11000_01.phpt
vendored
Executable file
@ -0,0 +1,38 @@
|
||||
--TEST--
|
||||
swoole_server: bug_11000_01
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$port = get_one_free_port();
|
||||
|
||||
$serv = new \swoole_server(TCP_SERVER_HOST, $port);
|
||||
$process = new \Swoole\Process(function ($process) use ($serv) {
|
||||
$s = $serv->stats();
|
||||
assert($s and is_array($s) and count($s) > 1);
|
||||
$serv->shutdown();
|
||||
});
|
||||
|
||||
$serv->set([
|
||||
"worker_num" => 1,
|
||||
'log_file' => '/dev/null',
|
||||
]);
|
||||
|
||||
$serv->on("Receive", function (\swoole_server $serv, $fd, $rid, $data) use ($process) {
|
||||
|
||||
});
|
||||
|
||||
$serv->addProcess($process);
|
||||
$serv->start();
|
||||
|
||||
?>
|
||||
--EXPECT--
|
91
vendor/swoole/tests/swoole_server/connections.phpt
vendored
Executable file
91
vendor/swoole/tests/swoole_server/connections.phpt
vendored
Executable file
@ -0,0 +1,91 @@
|
||||
--TEST--
|
||||
swoole_server: connection iterator
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
const N = 10;
|
||||
|
||||
global $count;
|
||||
$count = 0;
|
||||
$port = get_one_free_port();
|
||||
|
||||
$pm = new ProcessManager;
|
||||
$pm->parentFunc = function ($pid) use ($port)
|
||||
{
|
||||
global $count;
|
||||
for ($i = 0; $i < N; $i++)
|
||||
{
|
||||
$cli = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
|
||||
$cli->on("connect", function (swoole_client $cli)
|
||||
{
|
||||
|
||||
});
|
||||
$cli->on("receive", function (swoole_client $cli, $data)
|
||||
{
|
||||
assert($data == "OK");
|
||||
global $count;
|
||||
$count ++;
|
||||
$cli->close();
|
||||
});
|
||||
$cli->on("error", function (swoole_client $cli)
|
||||
{
|
||||
echo "error\n";
|
||||
});
|
||||
$cli->on("close", function (swoole_client $cli)
|
||||
{
|
||||
|
||||
});
|
||||
$cli->connect("127.0.0.1", $port, 0.1);
|
||||
}
|
||||
swoole_event::wait();
|
||||
assert($count == N);
|
||||
swoole_process::kill($pid);
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm, $port)
|
||||
{
|
||||
$serv = new swoole_server("127.0.0.1", $port, SWOOLE_BASE);
|
||||
$serv->set(array(
|
||||
"worker_num" => 1,
|
||||
'log_file' => '/dev/null',
|
||||
));
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on('connect', function (swoole_server $serv, $fd, $rid)
|
||||
{
|
||||
global $count;
|
||||
$count++;
|
||||
if ($count == N)
|
||||
{
|
||||
$serv->defer(function () use ($serv)
|
||||
{
|
||||
foreach ($serv->connections as $fd)
|
||||
{
|
||||
$serv->send($fd, "OK");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
$serv->on('receive', function (swoole_server $serv, $fd, $rid, $data)
|
||||
{
|
||||
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECT--
|
93
vendor/swoole/tests/swoole_server/dispatch_by_stream.phpt
vendored
Executable file
93
vendor/swoole/tests/swoole_server/dispatch_by_stream.phpt
vendored
Executable file
@ -0,0 +1,93 @@
|
||||
--TEST--
|
||||
swoole_server: dispatch_mode = 7 [stream]
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$port = get_one_free_port();
|
||||
|
||||
$pm = new ProcessManager;
|
||||
$pm->parentFunc = function ($pid) use ($port)
|
||||
{
|
||||
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
|
||||
if (!$client->connect('127.0.0.1', 9501, 0.5, 0))
|
||||
{
|
||||
echo "Over flow. errno=" . $client->errCode;
|
||||
die("\n");
|
||||
}
|
||||
|
||||
$data = array(
|
||||
'name' => __FILE__,
|
||||
'sid' => 1000236,
|
||||
'content' => str_repeat('A', 8192 * rand(1, 3)),
|
||||
);
|
||||
|
||||
$_serialize_data = serialize($data). "\r\n\r\n";;
|
||||
|
||||
$chunk_size = 2048;
|
||||
$len = strlen($_serialize_data);
|
||||
$chunk_num = intval($len / $chunk_size) + 1;
|
||||
for ($i = 0; $i < $chunk_num; $i++)
|
||||
{
|
||||
if ($len < ($i + 1) * $chunk_size)
|
||||
{
|
||||
$sendn = $len - ($i * $chunk_size);
|
||||
}
|
||||
else
|
||||
{
|
||||
$sendn = $chunk_size;
|
||||
}
|
||||
$client->send(substr($_serialize_data, $i * $chunk_size, $sendn));
|
||||
usleep(10000);
|
||||
}
|
||||
echo $client->recv();
|
||||
swoole_process::kill($pid);
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm, $port)
|
||||
{
|
||||
$serv = new swoole_server("127.0.0.1", 9501, SWOOLE_BASE);
|
||||
$serv->set(array(
|
||||
'package_eof' => "\r\n\r\n",
|
||||
'open_eof_check' => true,
|
||||
'open_eof_split' => true,
|
||||
'dispatch_mode' => 3,
|
||||
'package_max_length' => 1024 * 1024 * 2, //2M
|
||||
"worker_num" => 1,
|
||||
'log_file' => '/dev/null',
|
||||
"reload_async" => true,
|
||||
));
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on('receive', function (swoole_server $serv, $fd, $rid, $data)
|
||||
{
|
||||
$_data = unserialize(rtrim($data));
|
||||
if ($_data and is_array($_data) and $_data['sid'] == 1000236)
|
||||
{
|
||||
$serv->send($fd, "SUCCESS");
|
||||
}
|
||||
else
|
||||
{
|
||||
$serv->send($fd, "ERROR");
|
||||
}
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
103
vendor/swoole/tests/swoole_server/dispatch_mode_1.phpt
vendored
Executable file
103
vendor/swoole/tests/swoole_server/dispatch_mode_1.phpt
vendored
Executable file
@ -0,0 +1,103 @@
|
||||
--TEST--
|
||||
swoole_server: dispatch_mode = 1
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
const REQ_N = 10000;
|
||||
const CLIENT_N = 16;
|
||||
const WORKER_N = 4;
|
||||
|
||||
global $stats;
|
||||
$stats = array();
|
||||
$count = 0;
|
||||
$port = get_one_free_port();
|
||||
|
||||
$pm = new ProcessManager;
|
||||
$pm->parentFunc = function ($pid) use ($port)
|
||||
{
|
||||
global $count, $stats;
|
||||
for ($i = 0; $i < CLIENT_N; $i++)
|
||||
{
|
||||
$cli = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
|
||||
$cli->set([
|
||||
'package_eof' => "\r\n\r\n",
|
||||
'open_eof_split' => true,
|
||||
]);
|
||||
$cli->count = 0;
|
||||
$cli->on("connect", function (swoole_client $cli)
|
||||
{
|
||||
for ($i = 0; $i < REQ_N; $i++)
|
||||
{
|
||||
$cli->send("hello world\r\n\r\n");
|
||||
}
|
||||
});
|
||||
$cli->on("receive", function (swoole_client $cli, $data)
|
||||
{
|
||||
global $stats;
|
||||
$wid = trim($data);
|
||||
if (isset($stats[$wid]))
|
||||
{
|
||||
$stats[$wid]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
$stats[$wid] = 1;
|
||||
}
|
||||
$cli->count++;
|
||||
if ($cli->count == REQ_N)
|
||||
{
|
||||
$cli->close();
|
||||
}
|
||||
});
|
||||
$cli->on("error", function (swoole_client $cli)
|
||||
{
|
||||
echo "error\n";
|
||||
});
|
||||
$cli->on("close", function (swoole_client $cli)
|
||||
{
|
||||
|
||||
});
|
||||
$cli->connect("127.0.0.1", $port, 0.1);
|
||||
}
|
||||
swoole_event::wait();
|
||||
swoole_process::kill($pid);
|
||||
foreach ($stats as $s)
|
||||
{
|
||||
assert($s == REQ_N * CLIENT_N / WORKER_N);
|
||||
}
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm, $port)
|
||||
{
|
||||
$serv = new swoole_server("127.0.0.1", $port, SWOOLE_PROCESS);
|
||||
$serv->set(array(
|
||||
"worker_num" => WORKER_N,
|
||||
'dispatch_mode' => 1,
|
||||
'package_eof' => "\r\n\r\n",
|
||||
'open_eof_split' => true,
|
||||
'log_file' => '/dev/null',
|
||||
));
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on('receive', function (swoole_server $serv, $fd, $rid, $data)
|
||||
{
|
||||
$serv->send($fd, $serv->worker_id . "\r\n\r\n");
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECT--
|
105
vendor/swoole/tests/swoole_server/dispatch_mode_3.phpt
vendored
Executable file
105
vendor/swoole/tests/swoole_server/dispatch_mode_3.phpt
vendored
Executable file
@ -0,0 +1,105 @@
|
||||
--TEST--
|
||||
swoole_server: dispatch_mode = 3
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
const REQ_N = 10000;
|
||||
const CLIENT_N = 16;
|
||||
const WORKER_N = 16;
|
||||
|
||||
global $stats;
|
||||
$stats = array();
|
||||
$count = 0;
|
||||
$port = get_one_free_port();
|
||||
|
||||
$pm = new ProcessManager;
|
||||
$pm->parentFunc = function ($pid) use ($port)
|
||||
{
|
||||
global $count, $stats;
|
||||
for ($i = 0; $i < CLIENT_N; $i++)
|
||||
{
|
||||
$cli = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
|
||||
$cli->set([
|
||||
'package_eof' => "\r\n\r\n",
|
||||
'open_eof_split' => true,
|
||||
]);
|
||||
$cli->count = 0;
|
||||
$cli->on("connect", function (swoole_client $cli)
|
||||
{
|
||||
for ($i = 0; $i < REQ_N; $i++)
|
||||
{
|
||||
$cli->send("hello world\r\n\r\n");
|
||||
}
|
||||
});
|
||||
$cli->on("receive", function (swoole_client $cli, $data)
|
||||
{
|
||||
global $stats;
|
||||
$wid = trim($data);
|
||||
if (isset($stats[$wid]))
|
||||
{
|
||||
$stats[$wid]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
$stats[$wid] = 1;
|
||||
}
|
||||
$cli->count++;
|
||||
if ($cli->count == REQ_N)
|
||||
{
|
||||
$cli->close();
|
||||
}
|
||||
});
|
||||
$cli->on("error", function (swoole_client $cli)
|
||||
{
|
||||
echo "error\n";
|
||||
});
|
||||
$cli->on("close", function (swoole_client $cli)
|
||||
{
|
||||
|
||||
});
|
||||
$cli->connect("127.0.0.1", $port, 0.1);
|
||||
}
|
||||
swoole_event::wait();
|
||||
swoole_process::kill($pid);
|
||||
assert($stats[10] < 500);
|
||||
assert($stats[5] < 500);
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm, $port)
|
||||
{
|
||||
$serv = new swoole_server("127.0.0.1", $port, SWOOLE_PROCESS);
|
||||
$serv->set(array(
|
||||
"worker_num" => WORKER_N,
|
||||
'dispatch_mode' => 3,
|
||||
'package_eof' => "\r\n\r\n",
|
||||
'open_eof_split' => true,
|
||||
'log_file' => '/dev/null',
|
||||
));
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on('receive', function (swoole_server $serv, $fd, $rid, $data)
|
||||
{
|
||||
if ($serv->worker_id == 10 or $serv->worker_id == 5)
|
||||
{
|
||||
usleep(5000);
|
||||
}
|
||||
$serv->send($fd, $serv->worker_id . "\r\n\r\n");
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECT--
|
105
vendor/swoole/tests/swoole_server/eof_protocol.phpt
vendored
Executable file
105
vendor/swoole/tests/swoole_server/eof_protocol.phpt
vendored
Executable file
@ -0,0 +1,105 @@
|
||||
--TEST--
|
||||
swoole_server: (eof protocol) recv 100k packet
|
||||
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
require_once __DIR__ . '/../include/api/swoole_server/TestServer.php';
|
||||
|
||||
class EofServer extends TestServer
|
||||
{
|
||||
protected $show_lost_package = true;
|
||||
function onReceive($serv, $fd, $reactor_id, $data)
|
||||
{
|
||||
$pkg = unserialize(rtrim($data));
|
||||
if ($pkg['index'] % 1000 == 0)
|
||||
{
|
||||
//echo "#{$pkg['index']} recv package. sid={$pkg['sid']}, length=" . strlen($data) . ", md5=".md5($data)."\n";
|
||||
}
|
||||
if (!isset($pkg['index']))
|
||||
{
|
||||
exit("error packet");
|
||||
}
|
||||
if ($pkg['index'] > self::PKG_NUM)
|
||||
{
|
||||
echo "invalid index #{$pkg['index']}\n";
|
||||
}
|
||||
$this->index[$pkg['index']] = true;
|
||||
}
|
||||
function onWorkerStart($serv, $wid)
|
||||
{
|
||||
global $pm;
|
||||
$pm->wakeup();
|
||||
}
|
||||
}
|
||||
|
||||
$pm = new ProcessManager;
|
||||
$pm->parentFunc = function ($pid)
|
||||
{
|
||||
$client = new swoole_client(SWOOLE_SOCK_TCP);
|
||||
if (!$client->connect('127.0.0.1', 9501, 2.0))
|
||||
{
|
||||
exit("connect failed\n");
|
||||
}
|
||||
$bytes = 0;
|
||||
$pkg_bytes = 0;
|
||||
|
||||
for ($i = 0; $i < TestServer::PKG_NUM; $i++)
|
||||
{
|
||||
$len = rand(1000, 1024 * 128 - 8);
|
||||
$sid = rand(10000, 99999);
|
||||
|
||||
$array['index'] = $i;
|
||||
$array['sid'] = $sid;
|
||||
$array['len'] = $len;
|
||||
$array['data'] = str_repeat('A', $len);
|
||||
$pkt = serialize($array) . "\r\n\r\n";
|
||||
$pkg_bytes += strlen($pkt);
|
||||
|
||||
// if ($i % 1000 == 0 or $i > 99000)
|
||||
// {
|
||||
// echo "#{$i} send package. sid={$sid}, length=" . ($len + 10) . ", total bytes={$pkg_bytes}\n";
|
||||
// }
|
||||
if (!$client->send($pkt))
|
||||
{
|
||||
break;
|
||||
}
|
||||
$bytes += strlen($pkt);
|
||||
}
|
||||
$recv = $client->recv();
|
||||
echo $recv;
|
||||
|
||||
// echo "send ".TestServer::PKG_NUM." packet sucess, send $bytes bytes\n";
|
||||
$client->close();
|
||||
swoole_process::kill($pid);
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm)
|
||||
{
|
||||
$serv = new EofServer();
|
||||
$serv->set([
|
||||
'log_file' => '/dev/null',
|
||||
'package_eof' => "\r\n\r\n",
|
||||
'open_eof_split' => true,
|
||||
'worker_num' => 1,
|
||||
'package_max_length' => 1024 * 1024 * 2,
|
||||
]);
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
//$pm->runParentFunc();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECTF--
|
||||
end
|
||||
Total count=100000, bytes=%d
|
92
vendor/swoole/tests/swoole_server/eof_server.phpt
vendored
Executable file
92
vendor/swoole/tests/swoole_server/eof_server.phpt
vendored
Executable file
@ -0,0 +1,92 @@
|
||||
--TEST--
|
||||
swoole_server: eof server
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$port = get_one_free_port();
|
||||
|
||||
$pm = new ProcessManager;
|
||||
$pm->parentFunc = function ($pid) use ($port)
|
||||
{
|
||||
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
|
||||
if (!$client->connect('127.0.0.1', 9501, 0.5, 0))
|
||||
{
|
||||
echo "Over flow. errno=" . $client->errCode;
|
||||
die("\n");
|
||||
}
|
||||
|
||||
$data = array(
|
||||
'name' => __FILE__,
|
||||
'sid' => 1000236,
|
||||
'content' => str_repeat('A', 8192 * rand(1, 3)),
|
||||
);
|
||||
|
||||
$_serialize_data = serialize($data). "\r\n\r\n";;
|
||||
|
||||
$chunk_size = 2048;
|
||||
$len = strlen($_serialize_data);
|
||||
$chunk_num = intval($len / $chunk_size) + 1;
|
||||
for ($i = 0; $i < $chunk_num; $i++)
|
||||
{
|
||||
if ($len < ($i + 1) * $chunk_size)
|
||||
{
|
||||
$sendn = $len - ($i * $chunk_size);
|
||||
}
|
||||
else
|
||||
{
|
||||
$sendn = $chunk_size;
|
||||
}
|
||||
$client->send(substr($_serialize_data, $i * $chunk_size, $sendn));
|
||||
usleep(10000);
|
||||
}
|
||||
echo $client->recv();
|
||||
swoole_process::kill($pid);
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm, $port)
|
||||
{
|
||||
$serv = new swoole_server("127.0.0.1", 9501, SWOOLE_BASE);
|
||||
$serv->set(array(
|
||||
'package_eof' => "\r\n\r\n",
|
||||
'open_eof_check' => true,
|
||||
'open_eof_split' => true,
|
||||
'dispatch_mode' => 3,
|
||||
'package_max_length' => 1024 * 1024 * 2, //2M
|
||||
"worker_num" => 1,
|
||||
'log_file' => '/dev/null',
|
||||
));
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on('receive', function (swoole_server $serv, $fd, $rid, $data)
|
||||
{
|
||||
$_data = unserialize(rtrim($data));
|
||||
if ($_data and is_array($_data) and $_data['sid'] == 1000236)
|
||||
{
|
||||
$serv->send($fd, "SUCCESS");
|
||||
}
|
||||
else
|
||||
{
|
||||
$serv->send($fd, "ERROR");
|
||||
}
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
43
vendor/swoole/tests/swoole_server/exist.phpt
vendored
Executable file
43
vendor/swoole/tests/swoole_server/exist.phpt
vendored
Executable file
@ -0,0 +1,43 @@
|
||||
--TEST--
|
||||
swoole_server: exist
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
|
||||
/**
|
||||
|
||||
* Time: 下午4:34
|
||||
*/
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$simple_tcp_server = __DIR__ . "/../include/api/swoole_server/opcode_server.php";
|
||||
$port = get_one_free_port();
|
||||
|
||||
start_server($simple_tcp_server, TCP_SERVER_HOST, $port);
|
||||
|
||||
suicide(2000);
|
||||
usleep(500 * 1000);
|
||||
|
||||
makeTcpClient(TCP_SERVER_HOST, $port, function(\swoole_client $cli) {
|
||||
$r = $cli->send(opcode_encode("exist", [2]));
|
||||
assert($r !== false);
|
||||
}, function(\swoole_client $cli, $recv) {
|
||||
list($op, $data) = opcode_decode($recv);
|
||||
assert($data === true);
|
||||
|
||||
swoole_event_exit();
|
||||
echo "SUCCESS";
|
||||
});
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
63
vendor/swoole/tests/swoole_server/getClientInfo.phpt
vendored
Executable file
63
vendor/swoole/tests/swoole_server/getClientInfo.phpt
vendored
Executable file
@ -0,0 +1,63 @@
|
||||
--TEST--
|
||||
swoole_server: get client info
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
|
||||
/**
|
||||
|
||||
* Time: 下午4:34
|
||||
*/
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$simple_tcp_server = __DIR__ . "/../include/api/swoole_server/opcode_server.php";
|
||||
$port = get_one_free_port();
|
||||
|
||||
start_server($simple_tcp_server, TCP_SERVER_HOST, $port);
|
||||
|
||||
suicide(2000);
|
||||
usleep(500 * 1000);
|
||||
|
||||
makeTcpClient(TCP_SERVER_HOST, $port, function(\swoole_client $cli) {
|
||||
$r = $cli->send(opcode_encode("getClientInfo", [2]));
|
||||
assert($r !== false);
|
||||
}, function(\swoole_client $cli, $recv) {
|
||||
list($op, $data) = opcode_decode($recv);
|
||||
assert(is_array($data) && $data);
|
||||
/**
|
||||
*
|
||||
array(8) {
|
||||
["server_fd"]=>
|
||||
int(3)
|
||||
["socket_type"]=>
|
||||
int(1)
|
||||
["server_port"]=>
|
||||
int(49749)
|
||||
["remote_port"]=>
|
||||
int(49758)
|
||||
["remote_ip"]=>
|
||||
string(9) "127.0.0.1"
|
||||
["from_id"]=>
|
||||
int(1)
|
||||
["connect_time"]=>
|
||||
int(1496842883)
|
||||
["last_time"]=>
|
||||
int(1496842884)
|
||||
}
|
||||
*/
|
||||
swoole_event_exit();
|
||||
echo "SUCCESS";
|
||||
});
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
42
vendor/swoole/tests/swoole_server/getClientList.phpt
vendored
Executable file
42
vendor/swoole/tests/swoole_server/getClientList.phpt
vendored
Executable file
@ -0,0 +1,42 @@
|
||||
--TEST--
|
||||
swoole_server: get client list
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
|
||||
/**
|
||||
|
||||
* Time: 下午4:34
|
||||
*/
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$simple_tcp_server = __DIR__ . "/../include/api/swoole_server/opcode_server.php";
|
||||
$port = get_one_free_port();
|
||||
|
||||
start_server($simple_tcp_server, TCP_SERVER_HOST, $port);
|
||||
|
||||
suicide(2000);
|
||||
usleep(500 * 1000);
|
||||
|
||||
makeTcpClient(TCP_SERVER_HOST, $port, function(\swoole_client $cli) {
|
||||
$r = $cli->send(opcode_encode("getClientList", []));
|
||||
assert($r !== false);
|
||||
}, function(\swoole_client $cli, $recv) {
|
||||
list($op, $data) = opcode_decode($recv);
|
||||
assert(is_array($data) && count($data) === 1);
|
||||
swoole_event_exit();
|
||||
echo "SUCCESS";
|
||||
});
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
42
vendor/swoole/tests/swoole_server/getLastError.phpt
vendored
Executable file
42
vendor/swoole/tests/swoole_server/getLastError.phpt
vendored
Executable file
@ -0,0 +1,42 @@
|
||||
--TEST--
|
||||
swoole_server: get last error
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
|
||||
/**
|
||||
|
||||
* Time: 下午4:34
|
||||
*/
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$simple_tcp_server = __DIR__ . "/../include/api/swoole_server/opcode_server.php";
|
||||
$port = get_one_free_port();
|
||||
|
||||
start_server($simple_tcp_server, TCP_SERVER_HOST, $port);
|
||||
|
||||
suicide(2000);
|
||||
usleep(500 * 1000);
|
||||
|
||||
makeTcpClient(TCP_SERVER_HOST, $port, function(\swoole_client $cli) {
|
||||
$r = $cli->send(opcode_encode("getLastError", []));
|
||||
assert($r !== false);
|
||||
}, function(\swoole_client $cli, $recv) {
|
||||
list($op, $data) = opcode_decode($recv);
|
||||
assert($data === 0);
|
||||
swoole_event_exit();
|
||||
echo "SUCCESS";
|
||||
});
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
78
vendor/swoole/tests/swoole_server/getSocket.phpt
vendored
Executable file
78
vendor/swoole/tests/swoole_server/getSocket.phpt
vendored
Executable file
@ -0,0 +1,78 @@
|
||||
--TEST--
|
||||
swoole_server:
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$port = get_one_free_port();
|
||||
|
||||
$pm = new ProcessManager;
|
||||
$pm->parentFunc = function ($pid) use ($port)
|
||||
{
|
||||
$cli = new \swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
|
||||
|
||||
$cli->on("connect", function (\swoole_client $cli) {
|
||||
assert($cli->isConnected() === true);
|
||||
$cli->send("test");
|
||||
});
|
||||
|
||||
$cli->on("receive", function(\swoole_client $cli, $data){
|
||||
assert($data == 'Socket');
|
||||
$cli->send('shutdown');
|
||||
$cli->close();
|
||||
});
|
||||
|
||||
$cli->on("close", function(\swoole_client $cli) {
|
||||
echo "SUCCESS\n";
|
||||
});
|
||||
|
||||
$cli->on("error", function(\swoole_client $cli) {
|
||||
echo "error\n";
|
||||
});
|
||||
|
||||
$r = $cli->connect(TCP_SERVER_HOST, $port, 1);
|
||||
assert($r);
|
||||
Swoole\Event::wait();
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm, $port)
|
||||
{
|
||||
$serv = new \swoole_server(TCP_SERVER_HOST, $port);
|
||||
$socket = $serv->getSocket();
|
||||
$serv->set([
|
||||
"worker_num" => 1,
|
||||
'log_file' => '/dev/null',
|
||||
]);
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on("Receive", function (\swoole_server $serv, $fd, $rid, $data) use ($socket)
|
||||
{
|
||||
if (trim($data) == 'shutdown')
|
||||
{
|
||||
$serv->shutdown();
|
||||
return;
|
||||
}
|
||||
else {
|
||||
$serv->send($fd, get_resource_type($socket));
|
||||
}
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
44
vendor/swoole/tests/swoole_server/heartbeat.phpt
vendored
Executable file
44
vendor/swoole/tests/swoole_server/heartbeat.phpt
vendored
Executable file
@ -0,0 +1,44 @@
|
||||
--TEST--
|
||||
swoole_server: heart beat false
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
|
||||
/**
|
||||
|
||||
* Time: 下午4:34
|
||||
*/
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$simple_tcp_server = __DIR__ . "/../include/api/swoole_server/opcode_server.php";
|
||||
$port = get_one_free_port();
|
||||
|
||||
start_server($simple_tcp_server, TCP_SERVER_HOST, $port);
|
||||
|
||||
suicide(2000);
|
||||
usleep(500 * 1000);
|
||||
|
||||
makeTcpClient(TCP_SERVER_HOST, $port, function(\swoole_client $cli) {
|
||||
$r = $cli->send(opcode_encode("heartbeat", [false]));
|
||||
assert($r !== false);
|
||||
}, function(\swoole_client $cli, $recv) {
|
||||
list($op, $data) = opcode_decode($recv);
|
||||
// TODO
|
||||
// var_dump($data);
|
||||
|
||||
swoole_event_exit();
|
||||
echo "SUCCESS";
|
||||
});
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
44
vendor/swoole/tests/swoole_server/heartbeat_true.phpt
vendored
Executable file
44
vendor/swoole/tests/swoole_server/heartbeat_true.phpt
vendored
Executable file
@ -0,0 +1,44 @@
|
||||
--TEST--
|
||||
swoole_server: heart beat (true)
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
|
||||
/**
|
||||
|
||||
* Time: 下午4:34
|
||||
*/
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$simple_tcp_server = __DIR__ . "/../include/api/swoole_server/opcode_server.php";
|
||||
$port = get_one_free_port();
|
||||
|
||||
start_server($simple_tcp_server, TCP_SERVER_HOST, $port);
|
||||
|
||||
suicide(2000);
|
||||
usleep(500 * 1000);
|
||||
|
||||
makeTcpClient(TCP_SERVER_HOST, $port, function(\swoole_client $cli) {
|
||||
$r = $cli->send(opcode_encode("heartbeat", [true]));
|
||||
assert($r !== false);
|
||||
}, function(\swoole_client $cli, $recv) {
|
||||
list($op, $data) = opcode_decode($recv);
|
||||
// TODO
|
||||
// var_dump($data);
|
||||
|
||||
swoole_event_exit();
|
||||
echo "SUCCESS";
|
||||
});
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
55
vendor/swoole/tests/swoole_server/heartbeat_with_base.phpt
vendored
Executable file
55
vendor/swoole/tests/swoole_server/heartbeat_with_base.phpt
vendored
Executable file
@ -0,0 +1,55 @@
|
||||
--TEST--
|
||||
swoole_server: heart beat with SWOOLE_BASE
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$port = get_one_free_port();
|
||||
|
||||
$pm = new ProcessManager;
|
||||
$pm->parentFunc = function ($pid) use ($port)
|
||||
{
|
||||
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
|
||||
if (!$client->connect('127.0.0.1', 9501, 5, 0))
|
||||
{
|
||||
echo "Over flow. errno=" . $client->errCode;
|
||||
die("\n");
|
||||
}
|
||||
$s1 = time();
|
||||
assert($client->recv() === '');
|
||||
$s2 = time();
|
||||
assert($s2 - $s1 > 1);
|
||||
swoole_process::kill($pid);
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm, $port)
|
||||
{
|
||||
$serv = new swoole_server("127.0.0.1", 9501, SWOOLE_BASE);
|
||||
$serv->set(array(
|
||||
'heartbeat_check_interval' => 1,
|
||||
'heartbeat_idle_time' => 2,
|
||||
));
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on('receive', function (swoole_server $serv, $fd, $rid, $data)
|
||||
{
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECT--
|
||||
|
59
vendor/swoole/tests/swoole_server/kill_task_worker_01.phpt
vendored
Executable file
59
vendor/swoole/tests/swoole_server/kill_task_worker_01.phpt
vendored
Executable file
@ -0,0 +1,59 @@
|
||||
--TEST--
|
||||
swoole_server: kill task worker [SWOOLE_BASE]
|
||||
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . "/../include/skipif.inc"; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . "/../include/swoole.inc";
|
||||
|
||||
const PROC_NAME = 'swoole_unittest_server_task_worker';
|
||||
$pm = new ProcessManager;
|
||||
|
||||
$pm->parentFunc = function ($pid) use ($pm) {
|
||||
for ($i = 0; $i < 5; $i++)
|
||||
{
|
||||
//杀死进程
|
||||
shell_exec("ps aux | grep \"" . PROC_NAME . "\" |grep -v grep| awk '{ print $2}' | xargs kill");
|
||||
//判断进程是否存在
|
||||
assert(intval(shell_exec("ps aux | grep \"" . PROC_NAME . "\" |grep -v grep| awk '{ print $2}'")) > 0);
|
||||
}
|
||||
$pm->kill();
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm)
|
||||
{
|
||||
$serv = new \swoole_server("127.0.0.1", 9503, SWOOLE_BASE);
|
||||
$serv->set(["worker_num" => 1, 'log_file' => '/dev/null', 'task_worker_num' => 1,]);
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv, $worker_id) use ($pm) {
|
||||
if ($worker_id = 1)
|
||||
{
|
||||
swoole_set_process_name(PROC_NAME);
|
||||
$pm->wakeup();
|
||||
}
|
||||
});
|
||||
$serv->on("Receive", function (\swoole_server $serv, $fd, $reactorId, $data)
|
||||
{
|
||||
});
|
||||
$serv->on('task', function (swoole_server $serv, $task_id, $worker_id, $data)
|
||||
{
|
||||
return array("code" => 0, 'message' => 'hello world', 'sid' => uniqid());
|
||||
});
|
||||
$serv->on('finish', function (swoole_server $serv, $fd, $rid, $data)
|
||||
{
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
|
||||
?>
|
||||
|
||||
--EXPECT--
|
59
vendor/swoole/tests/swoole_server/kill_task_worker_02.phpt
vendored
Executable file
59
vendor/swoole/tests/swoole_server/kill_task_worker_02.phpt
vendored
Executable file
@ -0,0 +1,59 @@
|
||||
--TEST--
|
||||
swoole_server: kill task worker [SWOOLE_PROCESS]
|
||||
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . "/../include/skipif.inc"; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . "/../include/swoole.inc";
|
||||
|
||||
const PROC_NAME = 'swoole_unittest_server_task_worker';
|
||||
$pm = new ProcessManager;
|
||||
|
||||
$pm->parentFunc = function ($pid) use ($pm) {
|
||||
for ($i = 0; $i < 5; $i++)
|
||||
{
|
||||
//杀死进程
|
||||
shell_exec("ps aux | grep \"" . PROC_NAME . "\" |grep -v grep| awk '{ print $2}' | xargs kill");
|
||||
//判断进程是否存在
|
||||
assert(intval(shell_exec("ps aux | grep \"" . PROC_NAME . "\" |grep -v grep| awk '{ print $2}'")) > 0);
|
||||
}
|
||||
$pm->kill();
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm)
|
||||
{
|
||||
$serv = new \swoole_server("127.0.0.1", 9503, SWOOLE_PROCESS);
|
||||
$serv->set(["worker_num" => 1, 'log_file' => '/dev/null', 'task_worker_num' => 1,]);
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv, $worker_id) use ($pm) {
|
||||
if ($worker_id = 1)
|
||||
{
|
||||
swoole_set_process_name(PROC_NAME);
|
||||
$pm->wakeup();
|
||||
}
|
||||
});
|
||||
$serv->on("Receive", function (\swoole_server $serv, $fd, $reactorId, $data)
|
||||
{
|
||||
});
|
||||
$serv->on('task', function (swoole_server $serv, $task_id, $worker_id, $data)
|
||||
{
|
||||
return array("code" => 0, 'message' => 'hello world', 'sid' => uniqid());
|
||||
});
|
||||
$serv->on('finish', function (swoole_server $serv, $fd, $rid, $data)
|
||||
{
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
|
||||
?>
|
||||
|
||||
--EXPECT--
|
52
vendor/swoole/tests/swoole_server/kill_worker_01.phpt
vendored
Executable file
52
vendor/swoole/tests/swoole_server/kill_worker_01.phpt
vendored
Executable file
@ -0,0 +1,52 @@
|
||||
--TEST--
|
||||
swoole_server: kill worker [SWOOLE_BASE]
|
||||
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . "/../include/skipif.inc"; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . "/../include/bootstrap.php";
|
||||
|
||||
const WORKER_PROC_NAME = 'swoole_unittest_server_event_worker';
|
||||
$pm = new ProcessManager;
|
||||
|
||||
$pm->parentFunc = function ($pid) use ($pm) {
|
||||
for ($i = 0; $i < 1; $i++)
|
||||
{
|
||||
//杀死进程
|
||||
shell_exec("ps aux | grep \"" . WORKER_PROC_NAME . "\" |grep -v grep| awk '{ print $2}' | xargs kill");
|
||||
//判断进程是否存在
|
||||
assert(intval(shell_exec("ps aux | grep \"" . WORKER_PROC_NAME . "\" |grep -v grep| awk '{ print $2}'")) > 0);
|
||||
}
|
||||
$pm->kill();
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm)
|
||||
{
|
||||
$serv = new \swoole_server("127.0.0.1", 9503, SWOOLE_BASE);
|
||||
$serv->set(["worker_num" => 2, 'log_file' => '/dev/null',]);
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv, $worker_id) use ($pm) {
|
||||
if ($worker_id == 0)
|
||||
{
|
||||
swoole_set_process_name(WORKER_PROC_NAME);
|
||||
$pm->wakeup();
|
||||
}
|
||||
});
|
||||
$serv->on("Receive", function (\swoole_server $serv, $fd, $reactorId, $data)
|
||||
{
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
|
||||
?>
|
||||
|
||||
--EXPECT--
|
52
vendor/swoole/tests/swoole_server/kill_worker_02.phpt
vendored
Executable file
52
vendor/swoole/tests/swoole_server/kill_worker_02.phpt
vendored
Executable file
@ -0,0 +1,52 @@
|
||||
--TEST--
|
||||
swoole_server: kill worker [SWOOLE_PROCESS]
|
||||
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . "/../include/skipif.inc"; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . "/../include/swoole.inc";
|
||||
|
||||
const WORKER_PROC_NAME = 'swoole_unittest_server_event_worker';
|
||||
$pm = new ProcessManager;
|
||||
|
||||
$pm->parentFunc = function ($pid) use ($pm) {
|
||||
for ($i = 0; $i < 5; $i++)
|
||||
{
|
||||
//杀死进程
|
||||
shell_exec("ps aux | grep \"" . WORKER_PROC_NAME . "\" |grep -v grep| awk '{ print $2}' | xargs kill");
|
||||
//判断进程是否存在
|
||||
assert(intval(shell_exec("ps aux | grep \"" . WORKER_PROC_NAME . "\" |grep -v grep| awk '{ print $2}'")) > 0);
|
||||
}
|
||||
$pm->kill();
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm)
|
||||
{
|
||||
$serv = new \swoole_server("127.0.0.1", 9503, SWOOLE_PROCESS);
|
||||
$serv->set(["worker_num" => 2, 'log_file' => '/dev/null',]);
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv, $worker_id) use ($pm) {
|
||||
if ($worker_id == 0)
|
||||
{
|
||||
swoole_set_process_name(WORKER_PROC_NAME);
|
||||
$pm->wakeup();
|
||||
}
|
||||
});
|
||||
$serv->on("Receive", function (\swoole_server $serv, $fd, $reactorId, $data)
|
||||
{
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
|
||||
?>
|
||||
|
||||
--EXPECT--
|
104
vendor/swoole/tests/swoole_server/length_protocol.phpt
vendored
Executable file
104
vendor/swoole/tests/swoole_server/length_protocol.phpt
vendored
Executable file
@ -0,0 +1,104 @@
|
||||
--TEST--
|
||||
swoole_server: (length protocol) recv 100k packet
|
||||
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
require_once __DIR__ . '/../include/api/swoole_server/TestServer.php';
|
||||
|
||||
class PkgServer extends TestServer
|
||||
{
|
||||
protected $show_lost_package = true;
|
||||
function onReceive($serv, $fd, $reactor_id, $data)
|
||||
{
|
||||
$header = unpack('Nlen/Nindex/Nsid', substr($data, 0, 12));
|
||||
if ($header['index'] % 1000 == 0)
|
||||
{
|
||||
//echo "#{$header['index']} recv package. sid={$header['sid']}, length=" . strlen($data) . ", bytes={$this->recv_bytes}\n";
|
||||
}
|
||||
if ($header['index'] > self::PKG_NUM)
|
||||
{
|
||||
echo "invalid index #{$header['index']}\n";
|
||||
}
|
||||
$this->index[$header['index']] = true;
|
||||
}
|
||||
|
||||
function onWorkerStart($serv, $wid)
|
||||
{
|
||||
global $pm;
|
||||
$pm->wakeup();
|
||||
}
|
||||
}
|
||||
|
||||
$pm = new ProcessManager;
|
||||
$pm->parentFunc = function ($pid)
|
||||
{
|
||||
$client = new swoole_client(SWOOLE_SOCK_TCP);
|
||||
if (!$client->connect('127.0.0.1', 9501))
|
||||
{
|
||||
exit("connect failed\n");
|
||||
}
|
||||
|
||||
$bytes = 0;
|
||||
$pkg_bytes = 0;
|
||||
|
||||
for ($i = 0; $i < TestServer::PKG_NUM; $i++)
|
||||
{
|
||||
$len = rand(1000, 1024 * 128 - 8);
|
||||
$sid = rand(10000, 99999);
|
||||
|
||||
$pkt = pack('NNN', $len + 8, $i, $sid);
|
||||
$pkt .= str_repeat('A', $len);
|
||||
|
||||
$pkg_bytes += strlen($pkt);
|
||||
|
||||
// if ($i % 1000 == 0)
|
||||
// {
|
||||
// echo "#{$i} send package. sid={$sid}, length=" . ($len + 10) . ", total bytes={$pkg_bytes}\n";
|
||||
// }
|
||||
if (!$client->send($pkt))
|
||||
{
|
||||
break;
|
||||
}
|
||||
$bytes += strlen($pkt);
|
||||
}
|
||||
|
||||
$recv = $client->recv();
|
||||
echo $recv;
|
||||
//echo "send ".TestServer::PKG_NUM." packet sucess, send $bytes bytes\n";
|
||||
$client->close();
|
||||
|
||||
swoole_process::kill($pid);
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm) {
|
||||
$serv = new PkgServer(true);
|
||||
$serv->set([
|
||||
'worker_num' => 1,
|
||||
//'dispatch_mode' => 1,
|
||||
'log_file' => '/dev/null',
|
||||
'open_length_check' => true,
|
||||
'package_max_length' => 1024 * 1024,
|
||||
'package_length_type' => 'N',
|
||||
'package_length_offset' => 0,
|
||||
'package_body_offset' => 4,
|
||||
'task_worker_num' => 0
|
||||
]);
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECTF--
|
||||
end
|
||||
Total count=100000, bytes=%d
|
27
vendor/swoole/tests/swoole_server/listen_fail.phpt
vendored
Executable file
27
vendor/swoole/tests/swoole_server/listen_fail.phpt
vendored
Executable file
@ -0,0 +1,27 @@
|
||||
--TEST--
|
||||
swoole_server:
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
//调高log_level
|
||||
Swoole\Async::set(['log_level' => 8]);
|
||||
try
|
||||
{
|
||||
$serv = new swoole_server('192.0.0.1', 80);
|
||||
}
|
||||
catch(swoole_exception $e)
|
||||
{
|
||||
assert($e->getCode() == 99);
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
72
vendor/swoole/tests/swoole_server/max_request.phpt
vendored
Executable file
72
vendor/swoole/tests/swoole_server/max_request.phpt
vendored
Executable file
@ -0,0 +1,72 @@
|
||||
--TEST--
|
||||
swoole_server: max_request
|
||||
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$pm = new ProcessManager;
|
||||
$counter = new swoole_atomic();
|
||||
|
||||
$pm->parentFunc = function ($pid)
|
||||
{
|
||||
$client = new \swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
|
||||
$client->set(["open_eof_check" => true, "package_eof" => "\r\n\r\n"]);
|
||||
$r = $client->connect("127.0.0.1", 9503, -1);
|
||||
if ($r === false)
|
||||
{
|
||||
echo "ERROR";
|
||||
exit;
|
||||
}
|
||||
for ($i = 0; $i < 4000; $i++)
|
||||
{
|
||||
$data = "PKG-$i" . str_repeat('A', rand(100, 20000)) . "\r\n\r\n";
|
||||
$client->send($data);
|
||||
$ret = $client->recv();
|
||||
assert($ret and strlen($ret) == strlen($data) + 8);
|
||||
}
|
||||
$client->close();
|
||||
global $counter;
|
||||
assert($counter->get() > 10);
|
||||
swoole_process::kill($pid);
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm)
|
||||
{
|
||||
$serv = new \swoole_server("127.0.0.1", 9503);
|
||||
$serv->set([
|
||||
"worker_num" => 4,
|
||||
'dispatch_mode' => 1,
|
||||
"open_eof_split" => true,
|
||||
"package_eof" => "\r\n\r\n",
|
||||
'max_request' => 200,
|
||||
'log_file' => '/dev/null',
|
||||
]);
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv) use ($pm)
|
||||
{
|
||||
global $counter;
|
||||
$counter->add(1);
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on("Receive", function (\swoole_server $serv, $fd, $reactorId, $data)
|
||||
{
|
||||
$serv->send($fd, "Server: $data");
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
|
||||
?>
|
||||
|
||||
--EXPECT--
|
53
vendor/swoole/tests/swoole_server/pid_file.phpt
vendored
Executable file
53
vendor/swoole/tests/swoole_server/pid_file.phpt
vendored
Executable file
@ -0,0 +1,53 @@
|
||||
--TEST--
|
||||
swoole_server: pid_file
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
const PID_FILE = __DIR__.'/test.pid';
|
||||
$port = 9508;
|
||||
|
||||
$pm = new ProcessManager;
|
||||
$pm->parentFunc = function ($pid) use ($port)
|
||||
{
|
||||
assert(is_file(PID_FILE));
|
||||
swoole_process::kill($pid);
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm, $port)
|
||||
{
|
||||
ini_set('swoole.display_errors', 'Off');
|
||||
$serv = new swoole_server("127.0.0.1", $port);
|
||||
$serv->set(array(
|
||||
"worker_num" => 1,
|
||||
'pid_file' => PID_FILE,
|
||||
'log_file' => '/dev/null',
|
||||
));
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on('receive', function (swoole_server $serv, $fd, $rid, $data)
|
||||
{
|
||||
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
clearstatcache();
|
||||
assert(!is_file(PID_FILE));
|
||||
?>
|
||||
|
||||
--EXPECT--
|
||||
|
42
vendor/swoole/tests/swoole_server/protect.phpt
vendored
Executable file
42
vendor/swoole/tests/swoole_server/protect.phpt
vendored
Executable file
@ -0,0 +1,42 @@
|
||||
--TEST--
|
||||
swoole_server: protect
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
|
||||
/**
|
||||
|
||||
* Time: 下午4:34
|
||||
*/
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$simple_tcp_server = __DIR__ . "/../include/api/swoole_server/opcode_server.php";
|
||||
$port = get_one_free_port();
|
||||
|
||||
start_server($simple_tcp_server, TCP_SERVER_HOST, $port);
|
||||
|
||||
suicide(2000);
|
||||
usleep(500 * 1000);
|
||||
|
||||
makeTcpClient(TCP_SERVER_HOST, $port, function(\swoole_client $cli) {
|
||||
$r = $cli->send(opcode_encode("protect", [2]));
|
||||
assert($r !== false);
|
||||
}, function(\swoole_client $cli, $recv) {
|
||||
list($op, $data) = opcode_decode($recv);
|
||||
assert($data === true);
|
||||
swoole_event_exit();
|
||||
echo "SUCCESS";
|
||||
});
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
42
vendor/swoole/tests/swoole_server/protect_false.phpt
vendored
Executable file
42
vendor/swoole/tests/swoole_server/protect_false.phpt
vendored
Executable file
@ -0,0 +1,42 @@
|
||||
--TEST--
|
||||
swoole_server: protect($fd, false)
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
|
||||
/**
|
||||
|
||||
* Time: 下午4:34
|
||||
*/
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$simple_tcp_server = __DIR__ . "/../include/api/swoole_server/opcode_server.php";
|
||||
$port = get_one_free_port();
|
||||
|
||||
start_server($simple_tcp_server, TCP_SERVER_HOST, $port);
|
||||
|
||||
suicide(2000);
|
||||
usleep(500 * 1000);
|
||||
|
||||
makeTcpClient(TCP_SERVER_HOST, $port, function(\swoole_client $cli) {
|
||||
$r = $cli->send(opcode_encode("protect", [2, false]));
|
||||
assert($r !== false);
|
||||
}, function(\swoole_client $cli, $recv) {
|
||||
list($op, $data) = opcode_decode($recv);
|
||||
assert($data === true);
|
||||
swoole_event_exit();
|
||||
echo "SUCCESS";
|
||||
});
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
42
vendor/swoole/tests/swoole_server/reload.phpt
vendored
Executable file
42
vendor/swoole/tests/swoole_server/reload.phpt
vendored
Executable file
@ -0,0 +1,42 @@
|
||||
--TEST--
|
||||
swoole_server: reload
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
|
||||
/**
|
||||
|
||||
* Time: 下午4:34
|
||||
*/
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$simple_tcp_server = __DIR__ . "/../include/api/swoole_server/opcode_server.php";
|
||||
$port = get_one_free_port();
|
||||
|
||||
start_server($simple_tcp_server, TCP_SERVER_HOST, $port);
|
||||
|
||||
suicide(2000);
|
||||
usleep(500 * 1000);
|
||||
|
||||
makeTcpClient(TCP_SERVER_HOST, $port, function(\swoole_client $cli) {
|
||||
$r = $cli->send(opcode_encode("reload", [2]));
|
||||
assert($r !== false);
|
||||
}, function(\swoole_client $cli, $recv) {
|
||||
list($op, $data) = opcode_decode($recv);
|
||||
assert($data === true);
|
||||
swoole_event_exit();
|
||||
echo "SUCCESS";
|
||||
});
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
78
vendor/swoole/tests/swoole_server/request_slowlog.phpt
vendored
Executable file
78
vendor/swoole/tests/swoole_server/request_slowlog.phpt
vendored
Executable file
@ -0,0 +1,78 @@
|
||||
--TEST--
|
||||
swoole_server: slowlog
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
//$port = get_one_free_port();
|
||||
|
||||
$port = 9501;
|
||||
$pm = new ProcessManager;
|
||||
|
||||
$pm->parentFunc = function ($pid) use ($port, $pm)
|
||||
{
|
||||
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC); //同步阻塞
|
||||
if (!$client->connect('127.0.0.1', $port, 3))
|
||||
{
|
||||
exit("connect failed\n");
|
||||
}
|
||||
echo $client->recv();
|
||||
assert($client->send("Request\n"));
|
||||
echo $client->recv();
|
||||
$pm->kill();
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm, $port)
|
||||
{
|
||||
$serv = new swoole_server("127.0.0.1", $port);
|
||||
$serv->set([
|
||||
'worker_num' => 1,
|
||||
'task_worker_num' => 1,
|
||||
'request_slowlog_file' => __DIR__ . '/slow.log',
|
||||
'trace_event_worker' => true,
|
||||
'request_slowlog_timeout' => 1,
|
||||
'trace_flags' => SWOOLE_TRACE_ALL,
|
||||
'log_level' => SWOOLE_LOG_WARNING,
|
||||
// 'log_file' => '/dev/null',
|
||||
]);
|
||||
$serv->on("workerStart", function ($serv, $wid) use ($pm) {
|
||||
$pm->wakeup();
|
||||
global $argv;
|
||||
if ($serv->taskworker) {
|
||||
swoole_set_process_name('php '.$argv[0].': task worker #'.$wid);
|
||||
} else {
|
||||
swoole_set_process_name('php '.$argv[0].': event worker #'.$wid);
|
||||
}
|
||||
});
|
||||
$serv->on('task', function (swoole_server $serv, $task_id, $worker_id, $data) {
|
||||
sleep(2);
|
||||
$serv->send($data[2], "Task Finish\n");
|
||||
});
|
||||
$serv->on('finish', function (swoole_server $serv, $fd, $rid, $data) {
|
||||
|
||||
});
|
||||
$serv->on('connect', function (swoole_server $serv, $fd) {
|
||||
$serv->task([str_repeat("A", 1024 * 1024 * 2), 'task', $fd]);
|
||||
});
|
||||
$serv->on('receive', function ($serv, $fd, $from_id, $data) {
|
||||
sleep(2);
|
||||
$serv->send($fd, "Hello World\n");
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECT--
|
||||
Task Finish
|
||||
Hello World
|
41
vendor/swoole/tests/swoole_server/sendMessage.phpt
vendored
Executable file
41
vendor/swoole/tests/swoole_server/sendMessage.phpt
vendored
Executable file
@ -0,0 +1,41 @@
|
||||
--TEST--
|
||||
swoole_server: send message
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
|
||||
/**
|
||||
|
||||
* Time: 下午4:34
|
||||
*/
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$simple_tcp_server = __DIR__ . "/../include/api/swoole_server/opcode_server.php";
|
||||
$port = get_one_free_port();
|
||||
|
||||
start_server($simple_tcp_server, TCP_SERVER_HOST, $port);
|
||||
|
||||
suicide(2000);
|
||||
usleep(500 * 1000);
|
||||
|
||||
makeTcpClient(TCP_SERVER_HOST, $port, function(\swoole_client $cli) use($port) {
|
||||
$r = $cli->send(opcode_encode("sendMessage", ["SUCCESS", 1]));
|
||||
assert($r !== false);
|
||||
}, function(\swoole_client $cli, $recv) {
|
||||
list($op, $msg) = opcode_decode($recv);
|
||||
echo $msg;
|
||||
swoole_event_exit();
|
||||
});
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
107
vendor/swoole/tests/swoole_server/sendMessage_02.phpt
vendored
Executable file
107
vendor/swoole/tests/swoole_server/sendMessage_02.phpt
vendored
Executable file
@ -0,0 +1,107 @@
|
||||
--TEST--
|
||||
swoole_server: send message [02]
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
$pm = new ProcessManager;
|
||||
|
||||
$pm->parentFunc = function ($pid) use ($pm)
|
||||
{
|
||||
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
|
||||
$client->set([
|
||||
'package_eof' => "\r\n",
|
||||
'open_eof_check' => true,
|
||||
'open_eof_split' => true,
|
||||
]);
|
||||
if (!$client->connect('127.0.0.1', 9501))
|
||||
{
|
||||
exit("connect failed\n");
|
||||
}
|
||||
$list = [];
|
||||
for ($i = 0; $i < 7; $i++)
|
||||
{
|
||||
$data = $client->recv();
|
||||
if ($data === false or $data === '')
|
||||
{
|
||||
echo "ERROR\n";
|
||||
break;
|
||||
}
|
||||
$list[] = intval($data);
|
||||
}
|
||||
sort($list);
|
||||
assert($list == range(0, 6));
|
||||
$pm->kill();
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm)
|
||||
{
|
||||
$serv = new swoole_server("127.0.0.1", 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP );
|
||||
$serv->set([
|
||||
'log_file' => '/dev/null',
|
||||
'worker_num' => 4,
|
||||
'task_worker_num' => 3,
|
||||
]);
|
||||
|
||||
$lock = new swoole\lock();
|
||||
|
||||
$process = new \Swoole\Process(function ($process) use ($serv) {
|
||||
while (true)
|
||||
{
|
||||
$r = $process->read();
|
||||
if (!$r)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
$cmd = json_decode($r, true);
|
||||
for ($i = 0; $i < ($serv->setting['worker_num'] + $serv->setting['task_worker_num']); $i++)
|
||||
{
|
||||
$serv->sendMessage(['worker_id' => $i, 'fd' => $cmd['fd']], $i);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$serv->addProcess($process);
|
||||
$serv->on("workerStart", function ($serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on('connect', function (swoole_server $serv, $fd) use ($process) {
|
||||
$process->write(json_encode(["fd" => $fd]));
|
||||
});
|
||||
$serv->on('receive', function ($serv, $fd, $from_id, $data) {
|
||||
|
||||
});
|
||||
|
||||
$serv->on('pipeMessage', function (swoole_server $serv, $worker_id, $data) use ($lock) {
|
||||
//$lock->lock();
|
||||
$serv->send($data['fd'], $data['worker_id']."\r\n");
|
||||
//$lock->unlock();
|
||||
});
|
||||
|
||||
$serv->on('task', function (swoole_server $serv, $task_id, $worker_id, $data)
|
||||
{
|
||||
|
||||
});
|
||||
|
||||
$serv->on('finish', function (swoole_server $serv, $fd, $rid, $data)
|
||||
{
|
||||
|
||||
});
|
||||
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECT--
|
43
vendor/swoole/tests/swoole_server/sendfile.phpt
vendored
Executable file
43
vendor/swoole/tests/swoole_server/sendfile.phpt
vendored
Executable file
@ -0,0 +1,43 @@
|
||||
--TEST--
|
||||
swoole_server: sendfile
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
|
||||
/**
|
||||
|
||||
* Time: 下午4:34
|
||||
*/
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$simple_tcp_server = __DIR__ . "/../include/api/swoole_server/opcode_server.php";
|
||||
$port = get_one_free_port();
|
||||
|
||||
start_server($simple_tcp_server, TCP_SERVER_HOST, $port);
|
||||
|
||||
suicide(2000);
|
||||
usleep(500 * 1000);
|
||||
|
||||
|
||||
makeTcpClient(TCP_SERVER_HOST, $port, function(\swoole_client $cli) {
|
||||
$r = $cli->send(opcode_encode("sendfile", [2, __FILE__]));
|
||||
assert($r !== false);
|
||||
}, function(\swoole_client $cli, $recv) {
|
||||
$len = unpack("N", substr($recv, 0, 4))[1];
|
||||
assert($len - 4 === strlen(substr($recv, 4)));
|
||||
swoole_event_exit();
|
||||
echo "SUCCESS";
|
||||
});
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
72
vendor/swoole/tests/swoole_server/sendfile_02.phpt
vendored
Executable file
72
vendor/swoole/tests/swoole_server/sendfile_02.phpt
vendored
Executable file
@ -0,0 +1,72 @@
|
||||
--TEST--
|
||||
swoole_server: sendfile [02]
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
$pm = new ProcessManager;
|
||||
$pm->parentFunc = function ($pid) use ($pm)
|
||||
{
|
||||
$client = new swoole_client(SWOOLE_SOCK_TCP , SWOOLE_SOCK_SYNC); //同步阻塞
|
||||
if (!$client->connect('127.0.0.1', 9501))
|
||||
{
|
||||
exit("connect failed\n");
|
||||
}
|
||||
|
||||
$socket = $client->getSocket();
|
||||
socket_set_option($socket, SOL_SOCKET, SO_SNDBUF, 65536);
|
||||
socket_set_option($socket, SOL_SOCKET, SO_RCVBUF, 65536);
|
||||
|
||||
$N = filesize(TEST_IMAGE);
|
||||
$bytes = 0;
|
||||
while($bytes < $N)
|
||||
{
|
||||
$n = rand(8192, 65536);
|
||||
$r = $client->recv($n);
|
||||
if (!$r)
|
||||
{
|
||||
break;
|
||||
}
|
||||
usleep(10000);
|
||||
$bytes += strlen($r);
|
||||
}
|
||||
assert($bytes == $N);
|
||||
$pm->kill();
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm)
|
||||
{
|
||||
$serv = new swoole_server("127.0.0.1", 9501, SWOOLE_BASE, SWOOLE_SOCK_TCP );
|
||||
$serv->set([
|
||||
'log_file' => '/dev/null',
|
||||
'kernel_socket_send_buffer_size' => 65536,
|
||||
]);
|
||||
$serv->on("workerStart", function ($serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on('connect', function (swoole_server $serv, $fd)
|
||||
{
|
||||
$serv->sendfile($fd, TEST_IMAGE);
|
||||
});
|
||||
$serv->on('receive', function ($serv, $fd, $from_id, $data)
|
||||
{
|
||||
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECT--
|
74
vendor/swoole/tests/swoole_server/sendfile_ssl.phpt
vendored
Executable file
74
vendor/swoole/tests/swoole_server/sendfile_ssl.phpt
vendored
Executable file
@ -0,0 +1,74 @@
|
||||
--TEST--
|
||||
swoole_server: sendfile with SSL
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$pm = new ProcessManager;
|
||||
|
||||
$pm->parentFunc = function ($pid) use ($pm) {
|
||||
$client = new swoole_client(SWOOLE_SOCK_TCP | SWOOLE_SSL, SWOOLE_SOCK_SYNC); //同步阻塞
|
||||
if (!$client->connect('127.0.0.1', 9501))
|
||||
{
|
||||
exit("connect failed\n");
|
||||
}
|
||||
|
||||
$socket = $client->getSocket();
|
||||
socket_set_option($socket, SOL_SOCKET, SO_SNDBUF, 65536);
|
||||
socket_set_option($socket, SOL_SOCKET, SO_RCVBUF, 65536);
|
||||
|
||||
$N = filesize(TEST_IMAGE);
|
||||
$bytes = 0;
|
||||
$data = '';
|
||||
while ($bytes < $N)
|
||||
{
|
||||
$n = rand(8192, 65536);
|
||||
$r = $client->recv($n);
|
||||
if (!$r)
|
||||
{
|
||||
break;
|
||||
}
|
||||
usleep(10000);
|
||||
$bytes += strlen($r);
|
||||
$data .= $r;
|
||||
}
|
||||
assert($bytes == $N);
|
||||
assert(md5_file(TEST_IMAGE) == md5($data));
|
||||
$pm->kill();
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm) {
|
||||
$serv = new swoole_server("127.0.0.1", 9501, SWOOLE_BASE, SWOOLE_SOCK_TCP | SWOOLE_SSL);
|
||||
$serv->set([
|
||||
//'log_file' => '/dev/null',
|
||||
'kernel_socket_send_buffer_size' => 65536,
|
||||
'ssl_cert_file' => dirname(__DIR__) . '/include/api/swoole_http_server/localhost-ssl/server.crt',
|
||||
'ssl_key_file' => dirname(__DIR__) . '/include/api/swoole_http_server/localhost-ssl/server.key',
|
||||
]);
|
||||
$serv->on("workerStart", function ($serv) use ($pm) {
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on('connect', function (swoole_server $serv, $fd) {
|
||||
$serv->sendfile($fd, TEST_IMAGE);
|
||||
});
|
||||
$serv->on('receive', function ($serv, $fd, $from_id, $data) {
|
||||
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECT--
|
42
vendor/swoole/tests/swoole_server/shutdown.phpt
vendored
Executable file
42
vendor/swoole/tests/swoole_server/shutdown.phpt
vendored
Executable file
@ -0,0 +1,42 @@
|
||||
--TEST--
|
||||
swoole_server: shutdown
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
|
||||
/**
|
||||
|
||||
* Time: 下午4:34
|
||||
*/
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$simple_tcp_server = __DIR__ . "/../include/api/swoole_server/opcode_server.php";
|
||||
$port = get_one_free_port();
|
||||
|
||||
start_server($simple_tcp_server, TCP_SERVER_HOST, $port);
|
||||
|
||||
suicide(2000);
|
||||
usleep(500 * 1000);
|
||||
|
||||
makeTcpClient(TCP_SERVER_HOST, $port, function(\swoole_client $cli) {
|
||||
$r = $cli->send(opcode_encode("shutdown", [2]));
|
||||
assert($r !== false);
|
||||
}, function(\swoole_client $cli, $recv) {
|
||||
list($op, $data) = opcode_decode($recv);
|
||||
assert($data === true);
|
||||
swoole_event_exit();
|
||||
echo "SUCCESS";
|
||||
});
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
78
vendor/swoole/tests/swoole_server/slow_client.phpt
vendored
Executable file
78
vendor/swoole/tests/swoole_server/slow_client.phpt
vendored
Executable file
@ -0,0 +1,78 @@
|
||||
--TEST--
|
||||
swoole_server: send big pipe message
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
$port = get_one_free_port();
|
||||
|
||||
const N = 1024 * 1024 * 1;
|
||||
|
||||
$pm = new ProcessManager;
|
||||
|
||||
$pm->parentFunc = function ($pid) use ($port)
|
||||
{
|
||||
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC); //同步阻塞
|
||||
if (!$client->connect('127.0.0.1', $port))
|
||||
{
|
||||
exit("connect failed\n");
|
||||
}
|
||||
|
||||
$socket = $client->getSocket();
|
||||
socket_set_option($socket, SOL_SOCKET, SO_SNDBUF, 65536);
|
||||
socket_set_option($socket, SOL_SOCKET, SO_RCVBUF, 65536);
|
||||
|
||||
$bytes = 0;
|
||||
while($bytes < N)
|
||||
{
|
||||
$n = rand(8192, 65536);
|
||||
$r = $client->recv($n);
|
||||
if (!$r)
|
||||
{
|
||||
break;
|
||||
}
|
||||
usleep(10000);
|
||||
$bytes += strlen($r);
|
||||
}
|
||||
assert($bytes == N);
|
||||
swoole_process::kill($pid);
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm, $port)
|
||||
{
|
||||
$serv = new swoole_server("127.0.0.1", $port);
|
||||
$serv->set([
|
||||
'worker_num' => 1,
|
||||
'log_file' => '/dev/null',
|
||||
'kernel_socket_send_buffer_size' => 65536,
|
||||
]);
|
||||
$serv->on("workerStart", function ($serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on('connect', function (swoole_server $serv, $fd)
|
||||
{
|
||||
$_send_data = str_repeat("A", N);
|
||||
$serv->send($fd, $_send_data);
|
||||
});
|
||||
$serv->on('receive', function ($serv, $fd, $from_id, $data)
|
||||
{
|
||||
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECT--
|
59
vendor/swoole/tests/swoole_server/stats.phpt
vendored
Executable file
59
vendor/swoole/tests/swoole_server/stats.phpt
vendored
Executable file
@ -0,0 +1,59 @@
|
||||
--TEST--
|
||||
swoole_server:
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
|
||||
/**
|
||||
|
||||
* Time: 下午4:34
|
||||
*/
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$simple_tcp_server = __DIR__ . "/../include/api/swoole_server/opcode_server.php";
|
||||
$port = get_one_free_port();
|
||||
|
||||
start_server($simple_tcp_server, TCP_SERVER_HOST, $port);
|
||||
|
||||
suicide(2000);
|
||||
usleep(500 * 1000);
|
||||
|
||||
makeTcpClient(TCP_SERVER_HOST, $port, function(\swoole_client $cli) {
|
||||
$r = $cli->send(opcode_encode("stats", []));
|
||||
assert($r !== false);
|
||||
}, function(\swoole_client $cli, $recv) {
|
||||
list($op, $data) = opcode_decode($recv);
|
||||
/**
|
||||
* array(7) {
|
||||
["start_time"]=>
|
||||
int(1496842485)
|
||||
["connection_num"]=>
|
||||
int(1)
|
||||
["accept_count"]=>
|
||||
int(2)
|
||||
["close_count"]=>
|
||||
int(1)
|
||||
["tasking_num"]=>
|
||||
int(0)
|
||||
["request_count"]=>
|
||||
int(0)
|
||||
["worker_request_count"]=>
|
||||
int(0)
|
||||
}
|
||||
*/
|
||||
swoole_event_exit();
|
||||
echo "SUCCESS";
|
||||
});
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
42
vendor/swoole/tests/swoole_server/stop.phpt
vendored
Executable file
42
vendor/swoole/tests/swoole_server/stop.phpt
vendored
Executable file
@ -0,0 +1,42 @@
|
||||
--TEST--
|
||||
swoole_server: stop
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
|
||||
/**
|
||||
|
||||
* Time: 下午4:34
|
||||
*/
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$simple_tcp_server = __DIR__ . "/../include/api/swoole_server/opcode_server.php";
|
||||
$port = get_one_free_port();
|
||||
|
||||
start_server($simple_tcp_server, TCP_SERVER_HOST, $port);
|
||||
|
||||
suicide(2000);
|
||||
usleep(500 * 1000);
|
||||
|
||||
makeTcpClient(TCP_SERVER_HOST, $port, function(\swoole_client $cli) {
|
||||
$r = $cli->send(opcode_encode("stop", [2]));
|
||||
assert($r !== false);
|
||||
}, function(\swoole_client $cli, $recv) {
|
||||
list($op, $data) = opcode_decode($recv);
|
||||
assert($data === true);
|
||||
swoole_event_exit();
|
||||
echo "SUCCESS";
|
||||
});
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
47
vendor/swoole/tests/swoole_server/task.phpt
vendored
Executable file
47
vendor/swoole/tests/swoole_server/task.phpt
vendored
Executable file
@ -0,0 +1,47 @@
|
||||
--TEST--
|
||||
swoole_server: task & finish
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$simple_tcp_server = __DIR__ . "/../include/api/swoole_server/tcp_task_server.php";
|
||||
$port = get_one_free_port();
|
||||
$closeServer = start_server($simple_tcp_server, TCP_SERVER_HOST, $port);
|
||||
|
||||
$cli = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
|
||||
|
||||
$cli->on("connect", function(swoole_client $cli) {
|
||||
assert($cli->isConnected() === true);
|
||||
$cli->send("Test swoole_server::task Interface.");
|
||||
});
|
||||
|
||||
$cli->on("receive", function(swoole_client $cli, $data){
|
||||
//echo "RECEIVE: $data\n";
|
||||
assert($data == "OK");
|
||||
$cli->close();
|
||||
assert($cli->isConnected() === false);
|
||||
});
|
||||
|
||||
$cli->on("error", function(swoole_client $cli) {
|
||||
echo "ERROR\n";
|
||||
});
|
||||
|
||||
$cli->on("close", function(swoole_client $cli) use($closeServer) {
|
||||
echo "SUCCESS";
|
||||
$closeServer();
|
||||
});
|
||||
|
||||
$cli->connect(TCP_SERVER_HOST, $port);
|
||||
?>
|
||||
--EXPECT--
|
||||
SUCCESS
|
93
vendor/swoole/tests/swoole_server/taskWaitMulti.phpt
vendored
Executable file
93
vendor/swoole/tests/swoole_server/taskWaitMulti.phpt
vendored
Executable file
@ -0,0 +1,93 @@
|
||||
--TEST--
|
||||
swoole_server: taskWaitMulti
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
$port = get_one_free_port();
|
||||
|
||||
$pm = new ProcessManager;
|
||||
$pm->parentFunc = function ($pid) use ($port)
|
||||
{
|
||||
$cli = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
|
||||
$cli->connect("127.0.0.1", $port, 0.5) or die("ERROR");
|
||||
|
||||
$cli->send("task-01") or die("ERROR");
|
||||
assert($cli->recv() == 'OK');
|
||||
$cli->send("task-02") or die("ERROR");
|
||||
assert($cli->recv() == 'OK');
|
||||
$cli->close();
|
||||
swoole_process::kill($pid);
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm, $port)
|
||||
{
|
||||
ini_set('swoole.display_errors', 'Off');
|
||||
$serv = new swoole_server("127.0.0.1", $port);
|
||||
$serv->set(array(
|
||||
"worker_num" => 1,
|
||||
'task_worker_num' => 1,
|
||||
'log_file' => '/dev/null',
|
||||
));
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on('receive', function (swoole_server $serv, $fd, $rid, $data)
|
||||
{
|
||||
if ($data == 'task-01')
|
||||
{
|
||||
$tasks[] = mt_rand(1000, 9999);
|
||||
$tasks[] = mt_rand(1000, 9999);
|
||||
$tasks[] = mt_rand(1000, 9999);
|
||||
$tasks[] = mt_rand(1000, 9999);
|
||||
$results = $serv->taskWaitMulti($tasks, 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
$tasks[] = mt_rand(1000, 9999);
|
||||
$tasks[] = mt_rand(1000, 9999);
|
||||
$tasks[] = mt_rand(1000, 9999);
|
||||
$tasks[] = mt_rand(1000, 9999);
|
||||
$tasks[] = 0;
|
||||
$results = $serv->taskWaitMulti($tasks, 0.2);
|
||||
}
|
||||
if (count($results) == 4)
|
||||
{
|
||||
$serv->send($fd, 'OK');
|
||||
}
|
||||
else
|
||||
{
|
||||
$serv->send($fd, 'ERR');
|
||||
}
|
||||
});
|
||||
|
||||
$serv->on('task', function (swoole_server $serv, $task_id, $worker_id, $data)
|
||||
{
|
||||
if ($data == 0)
|
||||
{
|
||||
usleep(300000);
|
||||
}
|
||||
return $data;
|
||||
});
|
||||
|
||||
$serv->on('finish', function (swoole_server $serv, $fd, $rid, $data)
|
||||
{
|
||||
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECT--
|
83
vendor/swoole/tests/swoole_server/task_callback.phpt
vendored
Executable file
83
vendor/swoole/tests/swoole_server/task_callback.phpt
vendored
Executable file
@ -0,0 +1,83 @@
|
||||
--TEST--
|
||||
swoole_server: task callback
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
$port = 9508;
|
||||
|
||||
$pm = new ProcessManager;
|
||||
$pm->parentFunc = function ($pid) use ($port)
|
||||
{
|
||||
$cli = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
|
||||
$cli->set(['open_eof_check' => true, "package_eof" => "\r\n\r\n"]);
|
||||
// $cli->set(['open_eof_split' => true, 'package_eof' => "\r\n\r\n"]);
|
||||
$cli->connect("127.0.0.1", $port, 0.5) or die("ERROR");
|
||||
|
||||
$cli->send("task-01") or die("ERROR");
|
||||
|
||||
$res = json_decode(trim($cli->recv()), true);
|
||||
assert($res['code'] == 0);
|
||||
assert($res['message'] == 'hello world');
|
||||
|
||||
echo "SUCCESS\n";
|
||||
|
||||
$res = json_decode(trim($cli->recv()), true);
|
||||
assert($res['code'] == 0);
|
||||
assert($res['message'] == 'hello world');
|
||||
echo "SUCCESS\n";
|
||||
|
||||
swoole_process::kill($pid);
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm, $port)
|
||||
{
|
||||
ini_set('swoole.display_errors', 'Off');
|
||||
$serv = new swoole_server("127.0.0.1", $port);
|
||||
$serv->set(array(
|
||||
"worker_num" => 1,
|
||||
'task_worker_num' => 2,
|
||||
'log_file' => '/dev/null',
|
||||
));
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on('receive', function (swoole_server $serv, $fd, $rid, $data)
|
||||
{
|
||||
$serv->task(['type' => 'array', 'value' => $data], -1, function ($serv, $taskId, $data) use ($fd) {
|
||||
$serv->send($fd, json_encode($data)."\r\n\r\n");
|
||||
});
|
||||
$serv->task(['type' => 'array', 'value' => $data, 'worker_id' => 0], 0, function ($serv, $taskId, $data) use ($fd) {
|
||||
$serv->send($fd, json_encode($data)."\r\n\r\n");
|
||||
});
|
||||
});
|
||||
|
||||
$serv->on('task', function (swoole_server $serv, $task_id, $worker_id, $data)
|
||||
{
|
||||
return array("code" => 0, 'message' => 'hello world', 'sid' => uniqid());
|
||||
});
|
||||
|
||||
$serv->on('finish', function (swoole_server $serv, $fd, $rid, $data)
|
||||
{
|
||||
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
|
||||
--EXPECT--
|
||||
SUCCESS
|
||||
SUCCESS
|
76
vendor/swoole/tests/swoole_server/task_max_request.phpt
vendored
Executable file
76
vendor/swoole/tests/swoole_server/task_max_request.phpt
vendored
Executable file
@ -0,0 +1,76 @@
|
||||
--TEST--
|
||||
swoole_server: task_max_request
|
||||
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
const N = 4000;
|
||||
|
||||
$counter1 = new swoole_atomic();
|
||||
$counter2 = new swoole_atomic();
|
||||
$counter3 = new swoole_atomic();
|
||||
|
||||
swoole_unittest_fork(function() {
|
||||
|
||||
$serv = new \swoole_server("127.0.0.1", 9503);
|
||||
$serv->set([
|
||||
"worker_num" => 1,
|
||||
'task_max_request' => 200,
|
||||
'task_worker_num' => 4,
|
||||
'log_file' => '/dev/null',
|
||||
]);
|
||||
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv)
|
||||
{
|
||||
if (!$serv->taskworker) {
|
||||
for($i = 0; $i< N; $i++) {
|
||||
$serv->task(array('type' => 'php', 'data' => RandStr::gen(100)));
|
||||
}
|
||||
} else {
|
||||
//Task 进程启动数量
|
||||
global $counter3;
|
||||
$counter3->add(1);
|
||||
}
|
||||
});
|
||||
|
||||
$serv->on("Receive", function (\swoole_server $serv, $fd, $reactorId, $data)
|
||||
{
|
||||
$serv->send($fd, "Server: $data");
|
||||
});
|
||||
|
||||
$serv->on('Task', function ($swooleServer, $task_id, $workerId, $data)
|
||||
{
|
||||
global $counter1;
|
||||
$counter1->add(1);
|
||||
return json_encode($data);
|
||||
});
|
||||
|
||||
$serv->on('Finish', function (swoole_server $swooleServer, $workerId, $task_data)
|
||||
{
|
||||
global $counter2;
|
||||
$counter2->add(1);
|
||||
if ($counter2->get() == N) {
|
||||
$swooleServer->shutdown();
|
||||
}
|
||||
});
|
||||
|
||||
$serv->start();
|
||||
});
|
||||
|
||||
swoole_unittest_wait();
|
||||
assert($counter1->get() == 4000);
|
||||
assert($counter2->get() == 4000);
|
||||
assert($counter2->get() > 15);
|
||||
?>
|
||||
|
||||
--EXPECT--
|
84
vendor/swoole/tests/swoole_server/task_queue.phpt
vendored
Executable file
84
vendor/swoole/tests/swoole_server/task_queue.phpt
vendored
Executable file
@ -0,0 +1,84 @@
|
||||
--TEST--
|
||||
swoole_server: task queue
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
$port = 9508;
|
||||
const N = 2048;
|
||||
|
||||
$pm = new ProcessManager;
|
||||
$pm->parentFunc = function ($pid) use ($port, $pm)
|
||||
{
|
||||
$cli = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
|
||||
$cli->connect("127.0.0.1", $port, 10) or die("ERROR");
|
||||
$cli->send("task-01") or die("ERROR");
|
||||
echo $cli->recv();
|
||||
$cli->close();
|
||||
$pm->kill();
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm, $port)
|
||||
{
|
||||
ini_set('swoole.display_errors', 'Off');
|
||||
$serv = new swoole_server("127.0.0.1", $port, SWOOLE_BASE);
|
||||
$serv->set(array(
|
||||
"worker_num" => 1,
|
||||
'task_worker_num' => 1,
|
||||
'log_file' => '/dev/null',
|
||||
));
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on('receive', function (swoole_server $serv, $fd, $rid, $data)
|
||||
{
|
||||
for ($i = 0; $i < 2048; $i++)
|
||||
{
|
||||
$data = array('id' => $i, 'fd' => $fd, 'data' => RandStr::getBytes(rand(2048, 4096)));
|
||||
if ($serv->task($data) === false)
|
||||
{
|
||||
$serv->send($fd, "ERROR\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$serv->on('task', function (swoole_server $serv, $task_id, $worker_id, $data)
|
||||
{
|
||||
if ($task_id == 0)
|
||||
{
|
||||
sleep(1);
|
||||
}
|
||||
if ($task_id != $data['id'])
|
||||
{
|
||||
echo "ERROR, $task_id, {$data['id']}\n";
|
||||
}
|
||||
if ($data['id'] == N - 1)
|
||||
{
|
||||
$serv->send($data['fd'], "OK");
|
||||
}
|
||||
});
|
||||
|
||||
$serv->on('finish', function (swoole_server $serv, $fd, $rid, $data)
|
||||
{
|
||||
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
|
||||
--EXPECT--
|
||||
OK
|
158
vendor/swoole/tests/swoole_server/taskwait.phpt
vendored
Executable file
158
vendor/swoole/tests/swoole_server/taskwait.phpt
vendored
Executable file
@ -0,0 +1,158 @@
|
||||
--TEST--
|
||||
swoole_server: taskwait
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
$port = get_one_free_port();
|
||||
|
||||
$pm = new ProcessManager;
|
||||
$pm->parentFunc = function ($pid) use ($port)
|
||||
{
|
||||
$cli = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
|
||||
$cli->connect("127.0.0.1", $port, 0.5) or die("ERROR");
|
||||
|
||||
$cli->send("array-01") or die("ERROR");
|
||||
assert($cli->recv() == 'OK');
|
||||
$cli->send("array-02") or die("ERROR");
|
||||
assert($cli->recv() == 'OK');
|
||||
$cli->send("string-01") or die("ERROR");
|
||||
assert($cli->recv() == 'OK');
|
||||
$cli->send("string-02") or die("ERROR");
|
||||
assert($cli->recv() == 'OK');
|
||||
$cli->send("timeout") or die("ERROR");
|
||||
assert($cli->recv() == 'OK');
|
||||
|
||||
swoole_process::kill($pid);
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm, $port)
|
||||
{
|
||||
ini_set('swoole.display_errors', 'Off');
|
||||
$serv = new swoole_server("127.0.0.1", $port);
|
||||
$serv->set(array(
|
||||
"worker_num" => 1,
|
||||
'task_worker_num' => 1,
|
||||
'log_file' => '/dev/null',
|
||||
));
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on('receive', function (swoole_server $serv, $fd, $rid, $data)
|
||||
{
|
||||
if ($data == 'array-01')
|
||||
{
|
||||
$res = $serv->taskwait(['type' => 'array', 'value' => $data]);
|
||||
if (!empty($res['name']))
|
||||
{
|
||||
$serv->send($fd, 'OK');
|
||||
}
|
||||
else
|
||||
{
|
||||
$serv->send($fd, 'ERR');
|
||||
}
|
||||
}
|
||||
elseif ($data == 'array-02')
|
||||
{
|
||||
$res = $serv->taskwait(['type' => 'string', 'value' => $data]);
|
||||
if ($res == "hello world\n")
|
||||
{
|
||||
$serv->send($fd, 'OK');
|
||||
}
|
||||
else
|
||||
{
|
||||
$serv->send($fd, 'ERR');
|
||||
}
|
||||
}
|
||||
elseif ($data == 'string-01')
|
||||
{
|
||||
$res = $serv->taskwait('array');
|
||||
if (!empty($res['name']))
|
||||
{
|
||||
$serv->send($fd, 'OK');
|
||||
}
|
||||
else
|
||||
{
|
||||
$serv->send($fd, 'ERR');
|
||||
}
|
||||
}
|
||||
elseif ($data == 'string-02')
|
||||
{
|
||||
$res = $serv->taskwait('string');
|
||||
if ($res == "hello world\n")
|
||||
{
|
||||
$serv->send($fd, 'OK');
|
||||
}
|
||||
else
|
||||
{
|
||||
$serv->send($fd, 'ERR');
|
||||
}
|
||||
}
|
||||
elseif ($data == 'timeout')
|
||||
{
|
||||
$res = $serv->taskwait('timeout', 0.2);
|
||||
if ($res === false)
|
||||
{
|
||||
$res = $serv->taskwait('string', 0.2);
|
||||
if ($res === "hello world\n")
|
||||
{
|
||||
$serv->send($fd, 'OK');
|
||||
return;
|
||||
}
|
||||
}
|
||||
$serv->send($fd, 'ERR');
|
||||
}
|
||||
});
|
||||
|
||||
$serv->on('task', function (swoole_server $serv, $task_id, $worker_id, $data)
|
||||
{
|
||||
if (is_array($data))
|
||||
{
|
||||
if ($data['type'] == 'array')
|
||||
{
|
||||
return array('name' => 'rango', 'year' => 1987);
|
||||
}
|
||||
else
|
||||
{
|
||||
return "hello world\n";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($data == 'array')
|
||||
{
|
||||
return array('name' => 'rango', 'year' => 1987);
|
||||
}
|
||||
elseif ($data == 'string')
|
||||
{
|
||||
return "hello world\n";
|
||||
}
|
||||
elseif ($data == 'timeout')
|
||||
{
|
||||
usleep(300000);
|
||||
return "task timeout\n";
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$serv->on('finish', function (swoole_server $serv, $fd, $rid, $data)
|
||||
{
|
||||
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECT--
|
53
vendor/swoole/tests/swoole_server/unsock_dgram.phpt
vendored
Executable file
53
vendor/swoole/tests/swoole_server/unsock_dgram.phpt
vendored
Executable file
@ -0,0 +1,53 @@
|
||||
--TEST--
|
||||
swoole_server: unix socket dgram server
|
||||
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
parent_child(function ($pid)
|
||||
{
|
||||
usleep(100000);
|
||||
$client = new \swoole_client(SWOOLE_SOCK_UNIX_DGRAM, SWOOLE_SOCK_SYNC);
|
||||
$r = $client->connect(UNIXSOCK_SERVER_PATH, 0, -1);
|
||||
if ($r === false)
|
||||
{
|
||||
echo "ERROR";
|
||||
exit;
|
||||
}
|
||||
$client->send("SUCCESS");
|
||||
echo $client->recv();
|
||||
$client->close();
|
||||
}, function ()
|
||||
{
|
||||
$serv = new \swoole_server(UNIXSOCK_SERVER_PATH, 0, SWOOLE_PROCESS, SWOOLE_UNIX_DGRAM);
|
||||
$serv->set(["worker_num" => 1, 'log_file' => '/dev/null', 'daemonize' => true]);
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv)
|
||||
{
|
||||
swoole_timer_after(1000, function () use ($serv)
|
||||
{
|
||||
@unlink(UNIXSOCK_SERVER_PATH);
|
||||
$serv->shutdown();
|
||||
});
|
||||
});
|
||||
$serv->on("packet", function (\swoole_server $serv, $data, $addr)
|
||||
{
|
||||
$serv->send($addr['address'], 'SUCCESS');
|
||||
});
|
||||
$serv->start();
|
||||
});
|
||||
?>
|
||||
|
||||
--EXPECT--
|
||||
SUCCESS
|
||||
|
||||
|
59
vendor/swoole/tests/swoole_server/unsock_stream.phpt
vendored
Executable file
59
vendor/swoole/tests/swoole_server/unsock_stream.phpt
vendored
Executable file
@ -0,0 +1,59 @@
|
||||
--TEST--
|
||||
swoole_server: unix socket dgram server
|
||||
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$pm = new ProcessManager;
|
||||
|
||||
$pm->parentFunc = function ($pid)
|
||||
{
|
||||
$client = new \swoole_client(SWOOLE_SOCK_UNIX_STREAM, SWOOLE_SOCK_SYNC);
|
||||
$r = $client->connect(UNIXSOCK_SERVER_PATH, 0, -1);
|
||||
if ($r === false)
|
||||
{
|
||||
echo "ERROR";
|
||||
exit;
|
||||
}
|
||||
$client->send("SUCCESS");
|
||||
echo $client->recv();
|
||||
$client->close();
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm)
|
||||
{
|
||||
$serv = new \swoole_server(UNIXSOCK_SERVER_PATH, 0, SWOOLE_BASE, SWOOLE_SOCK_UNIX_STREAM);
|
||||
$serv->set(["worker_num" => 1, ]);
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
swoole_timer_after(1000, function () use ($serv)
|
||||
{
|
||||
@unlink(UNIXSOCK_SERVER_PATH);
|
||||
$serv->shutdown();
|
||||
});
|
||||
});
|
||||
$serv->on("Receive", function (\swoole_server $serv, $fd, $reactorId, $data)
|
||||
{
|
||||
$serv->send($fd, 'SUCCESS');
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
|
||||
?>
|
||||
|
||||
--EXPECT--
|
||||
SUCCESS
|
78
vendor/swoole/tests/swoole_server/use_process.phpt
vendored
Executable file
78
vendor/swoole/tests/swoole_server/use_process.phpt
vendored
Executable file
@ -0,0 +1,78 @@
|
||||
--TEST--
|
||||
swoole_server: user process
|
||||
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$pm = new ProcessManager;
|
||||
|
||||
const SIZE = 8192* 5;
|
||||
|
||||
$pm->parentFunc = function ($pid)
|
||||
{
|
||||
$client = new \swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
|
||||
$client->set(["open_eof_check" => true, "package_eof" => "\r\n\r\n"]);
|
||||
$r = $client->connect("127.0.0.1", 9503, -1);
|
||||
if ($r === false)
|
||||
{
|
||||
echo "ERROR";
|
||||
exit;
|
||||
}
|
||||
$client->send("SUCCESS");
|
||||
for($i=0; $i < 20; $i++) {
|
||||
$ret = $client->recv();
|
||||
assert(strlen($ret) == SIZE +4);
|
||||
}
|
||||
$client->close();
|
||||
swoole_process::kill($pid);
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm)
|
||||
{
|
||||
$serv = new \swoole_server("127.0.0.1", 9503);
|
||||
$serv->set(["worker_num" => 1, 'log_file' => '/dev/null']);
|
||||
|
||||
$proc = new swoole\process(function ($process) use ($serv){
|
||||
//echo posix_getpid()."\n";
|
||||
while(true) {
|
||||
$data = json_decode($process->read(), true);
|
||||
//var_dump(SIZE);
|
||||
for($i=0; $i < 10; $i++) {
|
||||
$serv->send($data['fd'], str_repeat('A', SIZE)."\r\n\r\n");
|
||||
//echo "user process send ok\n";
|
||||
}
|
||||
}
|
||||
}, false, true);
|
||||
|
||||
$serv->addProcess($proc);
|
||||
$serv->on("WorkerStart", function (\swoole_server $serv) use ($pm)
|
||||
{
|
||||
$pm->wakeup();
|
||||
});
|
||||
$serv->on("Receive", function (\swoole_server $serv, $fd, $reactorId, $data) use ($proc)
|
||||
{
|
||||
$proc->write(json_encode(['fd' => $fd]));
|
||||
for($i=0; $i < 10; $i++) {
|
||||
$serv->send($fd, str_repeat('A', SIZE)."\r\n\r\n");
|
||||
//echo "worker send ok\n";
|
||||
}
|
||||
});
|
||||
$serv->start();
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
|
||||
?>
|
||||
|
||||
--EXPECT--
|
Reference in New Issue
Block a user