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,22 @@
--TEST--
swoole_http_client: connect_host_not_found
--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_http_client/connect_host_not_found.php';
// 实际期望输出error
?>
--EXPECT--
error

View File

@ -0,0 +1,21 @@
--TEST--
swoole_http_client: connect_port_not_listen
--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_http_client/connect_port_not_listen.php';
?>
--EXPECT--
error

View File

@ -0,0 +1,48 @@
--TEST--
swoole_http_client: content length
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
$makeDone = function($n, $f) {
return function() use(&$n, $f) {
$n--;
if ($n === 0) {
$f();
}
};
};
$done = $makeDone(2, $closeServer);
$data = ['value' => RandStr::gen(rand(0, 1024))];
testExecute(HTTP_SERVER_HOST, $port, null, $data, function ($httpClient) use ($data, $done)
{
echo "SUCCESS\n";
$done();
});
testExecute(HTTP_SERVER_HOST, $port, "POST", $data, function ($httpClient) use ($data, $done)
{
echo "SUCCESS\n";
$done();
});
?>
--EXPECT--
SUCCESS
SUCCESS

View File

@ -0,0 +1,47 @@
--TEST--
swoole_http_client: setCookies
--SKIPIF--
<?php require __DIR__ . '/../include/skipif.inc'; ?>
--FILE--
<?php
require_once __DIR__ . '/../include/bootstrap.php';
require_once __DIR__ . '/../include/swoole.inc';
$pm = new ProcessManager;
$pm->parentFunc = function ($pid)
{
$cli = new swoole_http_client('127.0.0.1', 9501);
$cookies = array('a' => 1, 'b' => '++');
$cli->setCookies($cookies);
$cli->setHeaders(array('User-Agent' => "swoole"));
$cli->on('close', function ($cli)
{
echo "close\n";
});
$cli->on('error', function ($cli)
{
echo "error\n";
});
$cli->get('/cookies', function ($cli) use ($cookies)
{
assert($cli->statusCode == 200);
$ret = json_decode($cli->body, true);
assert($ret);
assert(is_array($ret));
assert(arrayEqual($ret, $cookies, false));
$cli->close();
});
swoole_event::wait();
swoole_process::kill($pid);
};
$pm->childFunc = function () use ($pm)
{
include __DIR__ . "/../include/api/http_server.php";
};
$pm->childFirst();
$pm->run();
?>
--EXPECT--
close

View File

@ -0,0 +1,42 @@
--TEST--
swoole_http_client: download file
--SKIPIF--
<?php require __DIR__ . '/../include/skipif.inc'; ?>
--FILE--
<?php
require_once __DIR__ . '/../include/bootstrap.php';
require_once __DIR__ . '/../include/swoole.inc';
$pm = new ProcessManager;
$pm->parentFunc = function ($pid)
{
$cli = new swoole_http_client('127.0.0.1', 9501);
$cli->on('close', function ($cli)
{
echo "close\n";
});
$cli->on('error', function ($cli)
{
echo "error\n";
});
$cli->download('/get_file', __DIR__.'/tmpfile', function ($cli)
{
assert($cli->statusCode == 200);
assert(md5_file($cli->downloadFile) == md5_file(TEST_IMAGE));
$cli->close();
unlink(__DIR__ . '/tmpfile');
});
swoole_event::wait();
swoole_process::kill($pid);
};
$pm->childFunc = function () use ($pm)
{
include __DIR__ . "/../include/api/http_server.php";
};
$pm->childFirst();
$pm->run();
?>
--EXPECT--
close

View File

@ -0,0 +1,33 @@
--TEST--
swoole_http_client: execute without method and content
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
$httpClient = new \swoole_http_client("115.239.210.27", "80");
$httpClient->setData("null");
$r = $httpClient->execute("/", function(\swoole_http_client $httpClient) {
echo "SUCCESS";
$httpClient->close();
});
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,29 @@
--TEST--
swoole_http_client: get
--SKIPIF--
<?php require __DIR__ . '/../include/skipif.inc'; ?>
--FILE--
<?php
require_once __DIR__ . '/../include/bootstrap.php';
require_once __DIR__ . '/../include/swoole.inc';
$pm = new ProcessManager;
$pm->parentFunc = function ($pid)
{
echo file_get_contents("http://127.0.0.1:9501/");
swoole_process::kill($pid);
};
$pm->childFunc = function () use ($pm)
{
include __DIR__ . "/../include/api/http_server.php";
};
$pm->childFirst();
$pm->run();
?>
Done
--EXPECTREGEX--
swoole
Done.*
--CLEAN--

View File

@ -0,0 +1,28 @@
--TEST--
swoole_http_client: get_with_query
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
testHttpGet(HTTP_SERVER_HOST, $port, $_SERVER, function() use($closeServer) {
echo "SUCCESS";$closeServer();
});
suicide(1000, SIGKILL, $closeServer);
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,30 @@
--TEST--
swoole_http_client: get_without_query_string
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
testHttpGet(HTTP_SERVER_HOST, $port, [], function () use ($closeServer)
{
echo "SUCCESS";
$closeServer();
});
suicide(1000, SIGTERM, $closeServer);
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,35 @@
--TEST--
swoole_http_client: get
--SKIPIF--
<?php require __DIR__ . '/../include/skipif.inc'; ?>
--FILE--
<?php
require_once __DIR__ . '/../include/bootstrap.php';
require_once __DIR__ . '/../include/swoole.inc';
$pm = new ProcessManager;
$pm->parentFunc = function ($pid)
{
$cli = new swoole_http_client('127.0.0.1', 9501);
$cli->setHeaders(['Host' => 'localhost']);
$cli->set(['http_proxy_host' => HTTP_PROXY_HOST, 'http_proxy_port' => HTTP_PROXY_PORT]);
$cli->get('/get?json=true', function ($cli)
{
assert($cli->statusCode == 200);
$ret = json_decode($cli->body, true);
assert(is_array($ret) and $ret['json'] == 'true');
$cli->close();
});
swoole_event::wait();
swoole_process::kill($pid);
};
$pm->childFunc = function () use ($pm)
{
include __DIR__ . "/../include/api/http_server.php";
};
$pm->childFirst();
$pm->run();
?>
--EXPECT--

View File

@ -0,0 +1,24 @@
--TEST--
swoole_http_client: connect 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';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_client/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
require_once __DIR__ . '/../include/api/swoole_http_client/http_request_connect_timeout.php';
?>
--EXPECT--

View File

@ -0,0 +1,98 @@
--TEST--
swoole_http_client: keepalive
--SKIPIF--
<?php require __DIR__ . '/../include/skipif.inc'; ?>
--FILE--
<?php
require_once __DIR__ . '/../include/bootstrap.php';
require_once __DIR__ . '/../include/swoole.inc';
$pm = new ProcessManager;
$pm->parentFunc = function ($pid)
{
echo file_get_contents("http://127.0.0.1:9501/keep");
echo file_get_contents("http://127.0.0.1:9501/notkeep");
swoole_process::kill($pid);
};
$pm->childFunc = function () use ($pm)
{
$http = new swoole_http_server("127.0.0.1", 9501, SWOOLE_BASE);
$http->set(array(
'worker_num' => 1,
'log_file' => '/dev/null'
));
$http->on("WorkerStart", function (\swoole_server $serv)
{
/**
* @var $pm ProcessManager
*/
global $pm;
if ($pm)
{
$pm->wakeup();
}
});
$http->on('request', function ($request, swoole_http_response $response) use ($http)
{
$route = $request->server['request_uri'];
if ($route == '/info')
{
$response->end($request->header['connection']);
return;
}
elseif ($route == '/keep')
{
$cli = new swoole_http_client('127.0.0.1', 9501);
$cli->set(array(
'keep_alive' => 1,
));
$cli->setHeaders(array('User-Agent' => "swoole"));
$cli->on('close', function ($cli) use ($response)
{
});
$cli->on('error', function ($cli) use ($response)
{
echo "error";
$response->end("error");
});
$cli->get('/info', function ($cli) use ($response)
{
$response->end($cli->body . "\n");
$cli->close();
});
$http->cli = $cli;
}
elseif ($route == '/notkeep')
{
$cli = new swoole_http_client('127.0.0.1', 9501);
$cli->set(array(
'keep_alive' => 0,
));
$cli->setHeaders(array('User-Agent' => "swoole"));
$cli->on('close', function ($cli) use ($response)
{
});
$cli->on('error', function ($cli) use ($response)
{
echo "error";
$response->end("error");
});
$cli->get('/info', function ($cli) use ($response)
{
$response->end($cli->body . "\n");
});
}
});
$http->start();
};
$pm->childFirst();
$pm->run();
?>
Done
--EXPECTREGEX--
keep-alive
closed
Done.*
--CLEAN--

View File

@ -0,0 +1,27 @@
--TEST--
swoole_http_client: method_get
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
testMethod(HTTP_SERVER_HOST, $port, "DELETE", null, function() use($closeServer) {
echo "SUCCESS";$closeServer();
});
suicide(1000, SIGTERM, $closeServer);
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,27 @@
--TEST--
swoole_http_client: method_delete_with_payload
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
testMethod(HTTP_SERVER_HOST, $port, "DELETE", "payload", function() use($closeServer) {
echo "SUCCESS";$closeServer();
});
suicide(1000, SIGTERM, $closeServer);
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,27 @@
--TEST--
swoole_http_client: method_get
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
testMethod(HTTP_SERVER_HOST, $port, "GET", null, function() use($closeServer) {
echo "SUCCESS";$closeServer();
});
suicide(1000, SIGTERM, $closeServer);
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,27 @@
--TEST--
swoole_http_client: method_get_with_payload
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
testMethod(HTTP_SERVER_HOST, $port, "GET", "payload", function() use($closeServer) {
echo "SUCCESS";$closeServer();
});
suicide(1000, SIGTERM, $closeServer);
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,41 @@
--TEST--
swoole_http_client: HEAD method
--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_http_client/simple_http_client.php';
$cli = new swoole_http_client('jd.com');
$cli->set(array(
'timeout' => 3,
));
$cli->on('close', function ($cli)
{
});
$cli->on('error', function ($cli)
{
echo "error\n";
});
$cli->setMethod('HEAD');
$cli->get('/', function ($cli)
{
assert($cli->statusCode == 302);
$cli->close();
});
swoole_event::wait();
?>
--EXPECT--

View File

@ -0,0 +1,28 @@
--TEST--
swoole_http_client: method_patch
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
testMethod(HTTP_SERVER_HOST, $port, "PATCH", null, function() use($closeServer) {
echo "SUCCESS";$closeServer();
});
suicide(1000, SIGTERM, $closeServer);
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,28 @@
--TEST--
swoole_http_client: method_patch_with_payload
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
testMethod(HTTP_SERVER_HOST, $port, "PATCH", "payload", function() use($closeServer) {
echo "SUCCESS";$closeServer();
});
suicide(1000, SIGTERM, $closeServer);
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,28 @@
--TEST--
swoole_http_client: method_post
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
testMethod(HTTP_SERVER_HOST, $port, "POST", null, function() use($closeServer) {
echo "SUCCESS";$closeServer();
});
suicide(1000, SIGTERM, $closeServer);
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,28 @@
--TEST--
swoole_http_client: method_post_with_payload
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
testMethod(HTTP_SERVER_HOST, $port, "POST", "payload", function() use($closeServer) {
echo "SUCCESS";$closeServer();
});
suicide(1000, SIGTERM, $closeServer);
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,28 @@
--TEST--
swoole_http_client: method_put
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
testMethod(HTTP_SERVER_HOST, $port, "PATCH", null, function() use($closeServer) {
echo "SUCCESS";$closeServer();
});
suicide(1000, SIGTERM, $closeServer);
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,28 @@
--TEST--
swoole_http_client: method_put_with_payload
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
testMethod(HTTP_SERVER_HOST, $port, "PATCH", "put", function() use($closeServer) {
echo "SUCCESS";$closeServer();
});
suicide(1000, SIGTERM, $closeServer);
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,49 @@
--TEST--
swoole_http_client: post
--SKIPIF--
<?php require __DIR__ . '/../include/skipif.inc'; ?>
--FILE--
<?php
require_once __DIR__ . '/../include/bootstrap.php';
require_once __DIR__ . '/../include/swoole.inc';
$pm = new ProcessManager;
$pm->parentFunc = function ($pid)
{
$cli = new swoole_http_client('127.0.0.1', 9501);
$cli->set(array(
'timeout' => 0.3,
));
$cli->setHeaders(array('User-Agent' => "swoole"));
$cli->on('close', function ($cli)
{
echo "close\n";
});
$cli->on('error', function ($cli)
{
echo "error\n";
});
$data = array('name' => "rango");
$cli->post('/post', $data, function ($cli) use ($data)
{
assert($cli->statusCode == 200);
$ret = json_decode($cli->body, true);
assert($ret);
assert(is_array($ret));
assert(arrayEqual($ret, $data, false));
$cli->close();
});
swoole_event::wait();
swoole_process::kill($pid);
};
$pm->childFunc = function () use ($pm)
{
include __DIR__ . "/../include/api/http_server.php";
};
$pm->childFirst();
$pm->run();
?>
--EXPECT--
close

View File

@ -0,0 +1,28 @@
--TEST--
swoole_http_client: post_with_body
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
testPost(HTTP_SERVER_HOST, $port, $_SERVER, function() use($closeServer) {
echo "SUCCESS";$closeServer();
});
suicide(1000, SIGTERM, $closeServer);
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,49 @@
--TEST--
swoole_http_client: post with empty content
--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)
{
$cli = new swoole_http_client('127.0.0.1', 9501);
$cli->on('close', function ($cli)
{
echo "close\n";
});
$cli->on('error', function ($cli)
{
echo "error\n";
});
@$cli->post('/post', '', function ($cli)
{
assert($cli->statusCode == 200);
assert($cli->body == 'null');
$cli->close();
});
swoole_event::wait();
swoole_process::kill($pid);
};
$pm->childFunc = function () use ($pm)
{
include __DIR__ . "/../include/api/http_server.php";
};
$pm->childFirst();
$pm->run();
?>
--EXPECT--
close

View File

@ -0,0 +1,62 @@
--TEST--
swoole_http_client: post without content-length
--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)
{
$cli = new swoole_http_client('127.0.0.1', 9501);
$cli->on('close', function ($cli)
{
echo "close\n";
});
$cli->post('/post', '{}', function ($cli)
{
assert($cli->statusCode == 200);
assert(strlen($cli->body) > 0);
});
swoole_event::wait();
swoole_process::kill($pid);
};
$pm->childFunc = function () use ($pm)
{
$serv = new \swoole_server('127.0.0.1', 9501, SWOOLE_BASE, SWOOLE_SOCK_TCP);
$serv->set(['open_http_protocol' => true]);
$serv->on('workerStart', function (\swoole_server $serv)
{
/**
* @var $pm ProcessManager
*/
global $pm;
$pm->wakeup();
});
$serv->on('receive', function (swoole_server $serv, $fd, $rid, $data)
{
$serv->send($fd,
"HTTP/1.1 200 OK\r\nContent-Type: application/json; charset=UTF-8\r\nConnection: close\r\n\r\n{\"msg\":\"对不起,错误的请求数据.\",\"result\":2}");
$serv->close($fd);
});
$serv->start();
};
$pm->childFirst();
$pm->run();
?>
--EXPECT--
close

View File

@ -0,0 +1,44 @@
--TEST--
swoole_http_client: recursive_get
--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_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
$cli = new \swoole_http_client("127.0.0.1", 80);
$cli->on("error", function() { /*echo "ERROR";*/ swoole_event_exit(); });
$cli->on("close", function() { /*echo "CLOSE";*/ swoole_event_exit(); });
$i = 0;
function get()
{
global $cli, $i, $closeServer;
++$i;
if ($i > 10)
{
echo "SUCCESS\n";
$cli->close();
$closeServer();
}
else
{
$cli->get("/", __FUNCTION__);
}
}
get();
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,57 @@
--TEST--
swoole_http_client: request 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)
{
$cli = new swoole_http_client("127.0.0.1", 9502);
$cli->get('/', function ($c) {
assert($c->statusCode == -2);
assert($c->body == "");
});
swoole\event::wait();
};
$pm->childFunc = function () use ($pm)
{
$serv = new Swoole\Server("127.0.0.1", 9502, SWOOLE_BASE);
$serv->set(array(
'worker_num' => 1,
'log_file' => '/dev/null',
));
$serv->on('connect', function ($serv, $fd){
//echo "Client: Connect.\n";
});
$serv->on('receive', function ($serv, $fd, $rid, $data) {
sleep(1);
$serv->shutdown();
});
$serv->on('close', function ($serv, $fd) {
// echo "Client: Close.\n";
});
$serv->on('WorkerStart', function ($server) use ($pm) {
$pm->wakeup();
});
$serv->start();
};
$pm->childFirst();
$pm->run();
?>
--EXPECT--

View File

@ -0,0 +1,53 @@
--TEST--
swoole_http_client: setHeaders & setCookies
--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_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
$cli = new \swoole_http_client(HTTP_SERVER_HOST, $port);
$cli->on("error", function() { /*echo "ERROR";*/ swoole_event_exit(); });
$cli->on("close", function() { /*echo "CLOSE";*/ swoole_event_exit(); });
function get() {
static $i = 0;
global $cli;
static $zval = [
"headers" => ["Connection" => "keep-alive"],
"cookies" => ['name' => 'rango', 'value' => 1234],
];
assert($cli->setCookies($zval["cookies"]));
if ($i++ > 10)
{
echo "SUCCESS\n";
$cli->close();
}
else
{
assert($zval["cookies"]['name'] == 'rango');
assert($zval["cookies"]['value'] == '1234');
$cli->get("/test", __FUNCTION__);
}
}
get();
suicide(1000, SIGKILL, $closeServer);
swoole_event_wait();
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,76 @@
--TEST--
swoole_http_client: set headers core 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';
$pm = new ProcessManager;
$pm->parentFunc = function ($pid)
{
global $cli;
$cli = new \swoole_http_client("127.0.0.1", 9990);
$cli->on("error", function() { /*echo "ERROR";*/ swoole_event_exit(); });
$cli->on("close", function() { /*echo "CLOSE";*/ swoole_event_exit(); });
function get() {
static $i = 0;
global $cli;
$cli->setHeaders([]);
if ($i > 10) {
echo "SUCCESS";
$cli->get('/shutdown', function($cli){
$cli->close();
});
} else {
$i++;
$cli->get("/lookup?topic=worker_test", __FUNCTION__);
}
}
swoole_timer_after(5000, function() { swoole_event_exit(); });
get();
Swoole\Event::wait();
};
$pm->childFunc = function () use ($pm)
{
$serv = new \swoole_http_server(TCP_SERVER_HOST, 9990, 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("Request", function (\swoole_http_request $request, \swoole_http_response $response) use ($serv)
{
$uri = $request->server["request_uri"];
if ($uri == '/shutdown')
{
$response->end("on");
$serv->shutdown();
return;
} else {
$response->end("SUCCESS");
}
});
$serv->start();
};
$pm->childFirst();
$pm->run();
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,82 @@
--TEST--
swoole_http_client: set headers core 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';
require_once __DIR__ . '/../include/swoole.inc';
$pm = new ProcessManager;
$pm->parentFunc = function ($pid)
{
global $cli;
$cli = new \swoole_http_client("127.0.0.1", 9990);
$cli->on("error", function() { /*echo "ERROR";*/ swoole_event_exit(); });
$cli->on("close", function() { /*echo "CLOSE";*/ swoole_event_exit(); });
function get() {
static $i;
global $cli;
static $zval = [
"headers" => ["Connection" => "keep-alive"],
"cookies" => [],
];
$cli->setHeaders($zval["headers"]);
if ($i > 10) {
echo "SUCCESS";
$cli->get('/shutdown', function($cli){
$cli->close();
});
} else {
$i++;
$cli->get("/lookup?topic=worker_test", __FUNCTION__);
}
}
swoole_timer_after(5000, function() { swoole_event_exit(); });
get();
swoole_event_wait();
};
$pm->childFunc = function () use ($pm)
{
$serv = new \swoole_http_server(TCP_SERVER_HOST, 9990, 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("Request", function (\swoole_http_request $request, \swoole_http_response $response) use ($serv)
{
$uri = $request->server["request_uri"];
if ($uri == '/shutdown')
{
$response->end("on");
$serv->shutdown();
return;
} else {
$response->end("SUCCESS");
}
});
$serv->start();
};
$pm->childFirst();
$pm->run();
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,28 @@
--TEST--
swoole_http_client: post big body
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
testBigBodyMethodNotSupport(HTTP_SERVER_HOST, $port, function() use($closeServer) {
$closeServer();
});
suicide(1000, SIGTERM, $closeServer);
?>
--EXPECT--
SUCCESS
close

View File

@ -0,0 +1,28 @@
--TEST--
swoole_http_client: test cookie
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
testCookie(HTTP_SERVER_HOST, $port, function() use($closeServer) {
echo "SUCCESS";$closeServer();
});
suicide(1000, SIGTERM, $closeServer);
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,28 @@
--TEST--
swoole_http_client: test header
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
testHeader(HTTP_SERVER_HOST, $port, function() use($closeServer) {
echo "SUCCESS";$closeServer();
});
suicide(1000, SIGTERM, $closeServer);
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,32 @@
--TEST--
swoole_http_client: test header coredump
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
set_error_handler(function($errno) {
assert($errno === 4096);
echo "ERROR";
});
testHeaderCore(HTTP_SERVER_HOST, $port, function() use($closeServer) {
echo "SUCCESS";$closeServer();
});
suicide(1000, SIGTERM, $closeServer);
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,32 @@
--TEST--
swoole_http_client: test 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';
require_once __DIR__ . '/../include/api/swoole_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
request(HTTP_SERVER_HOST, $port, "GET", "/", null,
["cookie_key" => "cookie_value"],
["header_key" => "header_value"],
function(swoole_http_client $cli) use($closeServer) {
assert($cli->body === "Hello World!");
echo "SUCCESS";$closeServer();
});
suicide(1000, SIGTERM, $closeServer);
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,27 @@
--TEST--
swoole_http_client: test twice send
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
testBigBodyMethodNotSupport2(HTTP_SERVER_HOST, $port, function() use($closeServer) {
$closeServer();
});
suicide(2500, SIGTERM, $closeServer);
?>
--EXPECT--
SUCCESSclose

View File

@ -0,0 +1,28 @@
--TEST--
swoole_http_client: test server[uri]
--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_http_client/simple_http_client.php';
$simple_http_server = __DIR__ . "/../include/api/swoole_http_server/simple_http_server.php";
$closeServer = start_server($simple_http_server, HTTP_SERVER_HOST, $port = get_one_free_port());
testUri(HTTP_SERVER_HOST, $port, function() use($closeServer) {
echo "SUCCESS";$closeServer();
});
suicide(1000, SIGTERM, $closeServer);
?>
--EXPECT--
SUCCESS

View File

@ -0,0 +1,89 @@
--TEST--
swoole_http_client: timeout
--SKIPIF--
<?php require __DIR__ . '/../include/skipif.inc'; ?>
--FILE--
<?php
require_once __DIR__ . '/../include/bootstrap.php';
require_once __DIR__ . '/../include/swoole.inc';
$pm = new ProcessManager;
$pm->parentFunc = function ($pid)
{
echo file_get_contents("http://127.0.0.1:9501/");
swoole_process::kill($pid);
};
$pm->childFunc = function () use ($pm)
{
$http = new swoole_http_server("127.0.0.1", 9501, SWOOLE_BASE);
$http->set(array(
'worker_num' => 2,
'task_worker_num' => 2,
'log_file' => '/dev/null',
));
$http->on("WorkerStart", function (\swoole_server $serv)
{
/**
* @var $pm ProcessManager
*/
global $pm;
if ($pm)
{
$pm->wakeup();
}
});
$http->on('request', function ($request, swoole_http_response $response)
{
$route = $request->server['request_uri'];
if ($route == '/info')
{
$response->end("111");
return;
}
else
{
$cli = new swoole_http_client('192.0.0.1', 9502);
$cli->setHeaders(array('User-Agent' => "swoole"));
$cli->on('close', function ($cli) use ($response)
{
echo "close\n";
});
$cli->on('error', function ($cli) use ($response)
{
echo "error\n";
$response->end("error\n");
});
$cli->post('/info', array('bat' => "man"), function ($cli) use ($response)
{
if ($cli->statusCode == 200)
{
$response->end($cli->body . "\n");
}
$cli->close();
});
}
});
$http->on('task', function (swoole_server $serv, $task_id, $worker_id, $data)
{
});
$http->on('finish', function (swoole_server $serv, $fd, $rid, $data)
{
});
$http->start();
};
$pm->childFirst();
$pm->run();
?>
Done
--EXPECTREGEX--
error
error
Done.*
--CLEAN--

View File

@ -0,0 +1,44 @@
--TEST--
swoole_http_client: upload file
--SKIPIF--
<?php require __DIR__ . '/../include/skipif.inc'; ?>
--FILE--
<?php
require_once __DIR__ . '/../include/bootstrap.php';
require_once __DIR__ . '/../include/swoole.inc';
$pm = new ProcessManager;
$pm->parentFunc = function ($pid)
{
$cli = new swoole_http_client('127.0.0.1', 9501);
$cli->on('close', function ($cli)
{
echo "close\n";
});
$cli->on('error', function ($cli)
{
echo "error\n";
});
$cli->addFile(TEST_IMAGE, 'test.jpg');
$cli->post('/upload_file', array('name' => 'rango'), function ($cli)
{
assert($cli->statusCode == 200);
$ret = json_decode($cli->body, true);
assert($ret and is_array($ret));
assert(md5_file(TEST_IMAGE) == $ret['md5']);
$cli->close();
});
swoole_event::wait();
swoole_process::kill($pid);
};
$pm->childFunc = function () use ($pm)
{
include __DIR__ . "/../include/api/http_server.php";
};
$pm->childFirst();
$pm->run();
?>
--EXPECT--
close

View File

@ -0,0 +1,81 @@
--TEST--
swoole_http_client: websocket client send 128 messages
--SKIPIF--
<?php require __DIR__ . '/../include/skipif.inc'; ?>
--FILE--
<?php
require_once __DIR__ . '/../include/bootstrap.php';
require_once __DIR__ . '/../include/swoole.inc';
const N = 128;
$pm = new ProcessManager;
$pm->parentFunc = function ($pid)
{
$cli = new swoole_http_client('127.0.0.1', 9501);
$cli->count = 0;
$cli->on('close', function ($cli)
{
echo "close\n";
});
$cli->on('error', function ($cli)
{
echo "error\n";
});
$cli->on('Message', function ($cli, $frame)
{
$cli->count++;
if ($cli->count == N)
{
echo "OK\n";
$cli->close();
}
});
$cli->upgrade('/websocket', function ($cli)
{
for ($i = 0; $i < N; $i++)
{
$cli->push(str_repeat('A', rand(8192, 65536)));
}
});
swoole_event::wait();
swoole_process::kill($pid);
};
$pm->childFunc = function () use ($pm)
{
$serv = new swoole_websocket_server("127.0.0.1", 9501);
$serv->set(['log_file' => '/dev/null']);
$serv->count = 0;
$serv->on('Open', function ($swoole_server, $req)
{
});
$serv->on("WorkerStart", function (\swoole_server $serv)
{
/**
* @var $pm ProcessManager
*/
global $pm;
$pm->wakeup();
});
$serv->on('Message', function ($serv, $frame)
{
$serv->count++;
if ($serv->count == N)
{
for ($i = 0; $i < N; $i++)
{
$serv->push($frame->fd, str_repeat('B', rand(8192, 65536)));
}
}
});
$serv->on('Close', function ($swoole_server, $fd)
{
});
$serv->start();
};
$pm->childFirst();
$pm->run();
?>
--EXPECT--
OK
close

View File

@ -0,0 +1,51 @@
--TEST--
swoole_http_client: websocket client with bad protocol
--SKIPIF--
<?php require __DIR__ . '/../include/skipif.inc'; ?>
--FILE--
<?php
require_once __DIR__ . '/../include/bootstrap.php';
require_once __DIR__ . '/../include/swoole.inc';
const N = 128;
$pm = new ProcessManager;
$pm->parentFunc = function ($pid)
{
$cli = new swoole_http_client('127.0.0.1', 9501);
$cli->count = 0;
$cli->on('close', function ($cli)
{
echo "close\n";
});
$cli->on('error', function ($cli)
{
echo "error\n";
});
$cli->on('Message', function ($cli, $frame)
{
});
$cli->upgrade('/websocket', function ($cli)
{
@$cli->push(str_repeat('A', rand(8192, 65536)));
assert(swoole_last_error() == 8504);
});
swoole_event::wait();
swoole_process::kill($pid);
};
$pm->childFunc = function () use ($pm)
{
$serv = new swoole_server("127.0.0.1", 9501);
$serv->set(['log_file' => '/dev/null']);
$serv->on('Receive', function ($serv, $fd, $rid, $data)
{
$serv->send($fd, "data");
});
$serv->start();
};
$pm->childFirst();
$pm->run();
?>
--EXPECT--
close

View File

@ -0,0 +1,63 @@
--TEST--
swoole_http_client: websocket client bug 1015
--SKIPIF--
<?php require __DIR__ . '/../include/skipif.inc'; ?>
--FILE--
<?php
require_once __DIR__ . '/../include/bootstrap.php';
require_once __DIR__ . '/../include/swoole.inc';
$pm = new ProcessManager;
$pm->parentFunc = function ($pid)
{
$cli = new swoole_http_client('127.0.0.1', 9501);
$cli->on('close', function ($cli)
{
echo "close\n";
});
$cli->on('error', function ($cli)
{
echo "error\n";
});
$cli->on('Message', function ($cli, $frame)
{
echo $frame->data;
$cli->close();
});
$cli->upgrade('/', function ($cli)
{
echo "CONNECTED\n";
});
swoole_event::wait();
swoole_process::kill($pid);
};
$pm->childFunc = function () use ($pm)
{
$ws = new swoole_server("127.0.0.1", 9501, SWOOLE_BASE);
$ws->set(array(
'log_file' => '/dev/null'
));
$ws->on("WorkerStart", function (\swoole_server $serv) {
/**
* @var $pm ProcessManager
*/
global $pm;
$pm->wakeup();
});
$ws->on('receive', function ($serv, $fd, $threadId, $data) {
$sendData = "HTTP/1.1 101 Switching Protocols\r\n";
$sendData .= "Upgrade: websocket\r\nConnection: Upgrade\r\nSec-Websocket-Accept: IFpdKwYy9wdo4gTldFLHFh3xQE0=\r\n";
$sendData .= "Sec-Websocket-Version: 13\r\nServer: swoole-http-server\r\n\r\n";
$sendData .= swoole_websocket_server::pack("hello world\n");
$serv->send($fd, $sendData);
});
$ws->start();
};
$pm->childFirst();
$pm->run();
?>
--EXPECT--
CONNECTED
hello world
close

View File

@ -0,0 +1,32 @@
--TEST--
swoole_http_client: failure of websocket client handshake
--SKIPIF--
<?php require __DIR__ . '/../include/skipif.inc'; ?>
--FILE--
<?php
require_once __DIR__ . '/../include/bootstrap.php';
require_once __DIR__ . '/../include/swoole.inc';
$cli = new swoole_http_client('127.0.0.1', 9999);
$cli->count = 0;
$cli->on('close', function ($cli)
{
echo "close\n";
});
$cli->on('error', function ($cli)
{
echo "error\n";
});
$cli->on('Message', function ($cli, $frame)
{
$cli->count++;
});
$cli->upgrade('/websocket', function ($cli)
{
@$cli->push(str_repeat('A', rand(8192, 65536)));
assert(swoole_last_error() == 8503);
});
swoole_event::wait();
?>
--EXPECT--
error