Init Repo

This commit is contained in:
root
2019-09-06 23:53:10 +08:00
commit f0ef89dfbb
7905 changed files with 914138 additions and 0 deletions

View File

@ -0,0 +1,108 @@
--TEST--
swoole_client: eof protocol [sync]
--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;
$port = get_one_free_port();
$pm->parentFunc = function ($pid) use ($port)
{
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
$client->set(['open_eof_check' => true, "package_eof" => "\r\n\r\n"]);
if (!$client->connect('127.0.0.1', $port, 5, 0))
{
echo "Over flow. errno=" . $client->errCode;
die("\n");
}
$client->send("recv\r\n\r\n");
//小包
for ($i = 0; $i < 1000; $i++)
{
$pkg = $client->recv();
assert($pkg and strlen($pkg) <= 2048);
}
echo "SUCCESS\n";
//慢速发送
for ($i = 0; $i < 100; $i++)
{
$pkg = $client->recv();
assert($pkg and strlen($pkg) <= 8192);
}
echo "SUCCESS\n";
//大包
for ($i = 0; $i < 1000; $i++)
{
$pkg = $client->recv();
assert($pkg != false);
$_pkg = unserialize($pkg);
assert(is_array($_pkg));
assert($_pkg['i'] == $i);
assert($_pkg['data'] <= 256 * 1024);
}
echo "SUCCESS\n";
$client->close();
swoole_process::kill($pid);
};
$pm->childFunc = function () use ($pm, $port)
{
$serv = new swoole_server("127.0.0.1", $port, 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
'socket_buffer_size' => 256 * 1024 * 1024,
'send_yield' => true,
"worker_num" => 1,
'log_file' => '/tmp/swoole.log',
));
$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 < 1000; $i++)
{
$serv->send($fd, str_repeat('A', rand(100, 2000)) . "\r\n\r\n");
}
//慢速发送
for ($i = 0; $i < 100; $i++)
{
$serv->send($fd, str_repeat('A', rand(1000, 2000)));
usleep(rand(10000, 50000));
$serv->send($fd, str_repeat('A', rand(2000, 4000)) . "\r\n\r\n");
}
//大包
for ($i = 0; $i < 1000; $i++)
{
$serv->send($fd, serialize(['i' => $i, 'data' => str_repeat('A', rand(20000, 256 * 1024))]) . "\r\n\r\n");
}
});
$serv->start();
};
$pm->childFirst();
$pm->run();
?>
--EXPECT--
SUCCESS
SUCCESS
SUCCESS

View File

@ -0,0 +1,74 @@
--TEST--
swoole_client_sync: eof timeout
--SKIPIF--
<?php require __DIR__ . '/../include/skipif.inc'; ?>
--FILE--
<?php
require_once __DIR__ . '/../include/bootstrap.php';
require_once __DIR__ . '/../include/swoole.inc';
require_once __DIR__ . '/../include/lib/curl.php';
$pm = new ProcessManager;
ini_set("swoole.display_errors", "Off");
$pm->parentFunc = function ($pid)
{
$cli = new Swoole\Client(SWOOLE_SOCK_TCP);
$cli->set(['open_eof_check' => true, "package_eof" => "\r\n\r\n"]);
if (!$cli->connect('127.0.0.1', 9502, 0.5))
{
fail:
echo "ERROR\n";
swoole_process::kill($pid);
return;
}
//no eof, should be timeout here
if (!$cli->send("hello"))
{
goto fail;
}
$ret = $cli->recv();
if (!$ret)
{
goto fail;
}
echo "OK\n";
swoole_process::kill($pid);
};
$pm->childFunc = function () use ($pm)
{
$http = new swoole_http_server("127.0.0.1", 9501, SWOOLE_BASE);
$port2 = $http->listen('127.0.0.1', 9502, SWOOLE_SOCK_TCP);
$port2->set(['open_eof_check' => true, "package_eof" => "\r\n\r\n"]);
$port2->on('Receive', function ($serv, $fd, $rid, $data)
{
$serv->send($fd, "Swoole: $data\r\n\r\n");
});
$http->set(array(
//'log_file' => '/dev/null'
));
$http->on("WorkerStart", function (\swoole_server $serv)
{
/**
* @var $pm ProcessManager
*/
global $pm;
$pm->wakeup();
});
$http->on('request', function (swoole_http_request $request, swoole_http_response $response)
{
$response->end("OK\n");
});
$http->start();
};
$pm->childFirst();
$pm->run();
?>
--EXPECT--
ERROR

View File

@ -0,0 +1,112 @@
--TEST--
swoole_client: length protocol [sync]
--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);
$client->set([
'open_length_check' => true,
'package_max_length' => 1024 * 1024,
'package_length_type' => 'N',
'package_length_offset' => 0,
'package_body_offset' => 4,
]);
if (!$client->connect('127.0.0.1', $port, 0.5, 0))
{
echo "Over flow. errno=" . $client->errCode;
die("\n");
}
$client->send("recv\r\n\r\n");
//小包
for ($i = 0; $i < 1000; $i++)
{
$pkg = $client->recv();
assert($pkg and strlen($pkg) <= 2048);
}
echo "SUCCESS\n";
//慢速发送
for ($i = 0; $i < 100; $i++)
{
$pkg = $client->recv();
assert($pkg and strlen($pkg) <= 8192);
}
echo "SUCCESS\n";
//大包
for ($i = 0; $i < 1000; $i++)
{
$pkg = $client->recv();
assert($pkg != false);
$_pkg = unserialize(substr($pkg, 4));
assert(is_array($_pkg));
assert($_pkg['i'] == $i);
assert($_pkg['data'] <= 256 * 1024);
}
echo "SUCCESS\n";
$client->close();
swoole_process::kill($pid);
};
$pm->childFunc = function () use ($pm, $port)
{
$serv = new swoole_server("127.0.0.1", $port, SWOOLE_BASE);
$serv->set(array(
'package_max_length' => 1024 * 1024 * 2, //2M
'socket_buffer_size' => 256 * 1024 * 1024,
"worker_num" => 1,
'log_file' => '/tmp/swoole.log',
));
$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 < 1000; $i++)
{
$data = str_repeat('A', rand(100, 2000));
$serv->send($fd, pack('N', strlen($data)) . $data);
}
//慢速发送
for ($i = 0; $i < 100; $i++)
{
$data = str_repeat('A', rand(3000, 6000));
$n = rand(1000, 2000);
$serv->send($fd, pack('N', strlen($data)). substr($data, 0, $n));
usleep(rand(10000, 50000));
$serv->send($fd, substr($data, $n));
}
//大包
for ($i = 0; $i < 1000; $i++)
{
$data = serialize(['i' => $i, 'data' => str_repeat('A', rand(20000, 256 * 1024))]);
$serv->send($fd, pack('N', strlen($data)) . $data);
}
});
$serv->start();
};
$pm->childFirst();
$pm->run();
?>
--EXPECT--
SUCCESS
SUCCESS
SUCCESS

View File

@ -0,0 +1,69 @@
--TEST--
swoole_client: length protocol 02 [sync]
--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_TCP, SWOOLE_SOCK_SYNC);
$client->set([
'open_length_check' => true,
'package_max_length' => 1024 * 1024,
'package_length_type' => 'N',
'package_length_offset' => 0,
'package_body_offset' => 0,
]);
if (!$client->connect('127.0.0.1', 9501, 0.5, 0))
{
echo "Over flow. errno=" . $client->errCode;
die("\n");
}
$int = rand(1000, 5000);
$data = json_encode(['data' => RandStr::gen($int), 'index' => 2, 'len' => $int]);
$client->send(pack('N', strlen($data) + 4) . $data);
$pkg = $client->recv();
assert($pkg != false and strlen($pkg) > 100);
swoole_process::kill($pid);
};
$pm->childFunc = function () use ($pm)
{
$serv = new swoole_server("127.0.0.1", 9501, SWOOLE_PROCESS);
$serv->set(array(
"worker_num" => 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' => 0,
));
$serv->on("WorkerStart", function (\swoole_server $serv) use ($pm)
{
$pm->wakeup();
});
$serv->on('receive', function (swoole_server $serv, $fd, $rid, $data)
{
$data = str_repeat('A', rand(100, 2000));
$serv->send($fd, pack('N', strlen($data) + 4) . $data);
});
$serv->start();
};
$pm->childFirst();
$pm->run();
?>
--EXPECT--

View File

@ -0,0 +1,53 @@
--TEST--
swoole_client: recv timeout
--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);
$r = $client->connect(TCP_SERVER_HOST, 9501, 0.5);
assert($r);
$client->send(pack('N', filesize(TEST_IMAGE)));
$data = @$client->recv();
assert($data == false);
assert($client->errCode == SOCKET_EAGAIN);
$pm->kill();
$client->close();
};
$pm->childFunc = function () use ($pm)
{
$serv = new \swoole_server(TCP_SERVER_HOST, 9501, SWOOLE_BASE, SWOOLE_SOCK_TCP);
$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)
{
//do nothing
});
$serv->start();
};
$pm->childFirst();
$pm->run();
?>
--EXPECT--

View File

@ -0,0 +1,66 @@
--TEST--
swoole_client: sync 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';
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);
$r = $client->connect(TCP_SERVER_HOST, $port, 0.5);
assert($r);
$client->send(pack('N', filesize(TEST_IMAGE)));
$ret = $client->sendfile(TEST_IMAGE);
assert($ret);
$data = $client->recv();
$client->send(pack('N', 8) . 'shutdown');
$client->close();
assert($data === md5_file(TEST_IMAGE));
};
$pm->childFunc = function () use ($pm, $port)
{
$serv = new \swoole_server(TCP_SERVER_HOST, $port, SWOOLE_BASE, SWOOLE_SOCK_TCP);
$serv->set([
"worker_num" => 1,
'log_file' => '/dev/null',
'open_length_check' => true,
'dispatch_mode' => 1,
'package_length_type' => 'N',
'package_length_offset' => 0,
'package_body_offset' => 4,
'package_max_length' => 2000000,
]);
$serv->on("WorkerStart", function (\swoole_server $serv) use ($pm)
{
$pm->wakeup();
});
$serv->on("Receive", function (\swoole_server $serv, $fd, $rid, $data)
{
if (substr($data, 4, 8) == 'shutdown')
{
$serv->shutdown();
return;
}
$serv->send($fd, md5(substr($data, 4)));
});
$serv->start();
};
$pm->childFirst();
$pm->run();
?>
--EXPECT--

View File

@ -0,0 +1,28 @@
--TEST--
swoole_client sync: connect 1 - 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';
/**
* Time: 上午10:06
*/
require_once __DIR__ . '/../include/swoole.inc';
$cli = new \swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
$r = @$cli->connect("11.11.11.11", 80, 0.5);
echo intval($r);
?>
--EXPECT--
0

View File

@ -0,0 +1,34 @@
--TEST--
swoole_client sync: connect 1 - 2
--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: 上午10:06
*/
require_once __DIR__ . '/../include/swoole.inc';
killself_in_syncmode(1000, SIGTERM);
$cli = new \swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
$r = $cli->connect(IP_BAIDU, 80);
assert($r);
$cli->close();
echo "SUCCESS";
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,40 @@
--TEST--
swoole_client sync: connect 1 - 3 nonblocking connect & select
--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: 上午10:06
*/
require_once __DIR__ . '/../include/swoole.inc';
killself_in_syncmode(1000, SIGTERM);
$cli = new \swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
$r = $cli->connect(IP_BAIDU, 80, 1);
assert($r);
$r = $w = $e = [$cli];
$n = swoole_client_select($r, $w, $e, 0);
assert($n === 1);
assert(count($w) === 1);
assert(count($e) === 0);
assert(count($r) === 0);
$cli->close();
echo "SUCCESS";
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,39 @@
--TEST--
swoole_client sync: send & recv
--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: 上午10:06
*/
require_once __DIR__ . '/../include/swoole.inc';
killself_in_syncmode(1000);
$cli = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
$r = $cli->connect(IP_BAIDU, 80);
assert($r);
$r = $cli->send("GET / HTTP/1.1\r\n\r\n");
assert($r === 18);
$r = $cli->recv();
assert($r !== false);
assert(substr($r, 0, 4) === "HTTP");
echo "SUCCESS";
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,35 @@
--TEST--
swoole_client: udp sync client send & recv
--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/simple_udp_server.php";
start_server($simple_tcp_server, UDP_SERVER_HOST, UDP_SERVER_PORT);
$client = new swoole_client(SWOOLE_SOCK_UDP);
$client->connect(UDP_SERVER_HOST, UDP_SERVER_PORT);
$data = "UdpSendto";
$client->send($data);
$message = $client->recv();
echo "FromServer:$message\n";
echo "SUCCESS";
?>
--EXPECTF--
FromServer:UdpSendto
SUCCESS

View File

@ -0,0 +1,33 @@
--TEST--
swoole_client: udp sync client sendto
--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/simple_udp_server.php";
start_server($simple_tcp_server, UDP_SERVER_HOST, UDP_SERVER_PORT);
$client = new swoole_client(SWOOLE_SOCK_UDP);
$client->connect(UDP_SERVER_HOST, UDP_SERVER_PORT);
$ret = $client->sendto(UDP_SERVER_HOST, UDP_SERVER_PORT, "TestUdpClientSendto");
$message = $client->recv();
echo "FromServer:{$message}\n";
echo "SUCCESS";
?>
--EXPECT--
FromServer:TestUdpClientSendto
SUCCESS