make socket test less flakey (hopefully)
I keep seeing problems with this test. Lets see if opening less sockets helps? The last few have failed on `socket_get_option($s, SOL_SOCKET, SO_TYPE)` which this does't fix though...
Esse commit está contido em:
@@ -1,12 +1,5 @@
|
||||
<?php
|
||||
|
||||
function VS($x, $y) {
|
||||
var_dump($x === $y);
|
||||
if ($x !== $y) { echo "Failed: $y\n"; echo "Got: $x\n";
|
||||
var_dump(debug_backtrace()); }
|
||||
}
|
||||
function VERIFY($x) { VS($x != false, true); }
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
// so we run on different range of ports every time
|
||||
@@ -26,144 +19,84 @@ function bind_random_port($socket, $address) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
function get_client_server() {
|
||||
$server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
$port = bind_random_port($server, "127.0.0.1");
|
||||
var_dump($port != 0);
|
||||
var_dump(socket_listen($server));
|
||||
|
||||
$client = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
var_dump(socket_connect($client, "127.0.0.1", $port));
|
||||
|
||||
$s = socket_accept($server);
|
||||
return array($client, $s);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
VERIFY(socket_create(AF_INET, SOCK_STREAM, SOL_TCP));
|
||||
$s = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
var_dump($s);
|
||||
|
||||
$port = get_random_port();
|
||||
socket_create_listen($port);
|
||||
|
||||
VERIFY(socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $fds));
|
||||
VS(count($fds), 2);
|
||||
var_dump(socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $fds));
|
||||
var_dump(count($fds));
|
||||
|
||||
var_dump(socket_get_option($s, SOL_SOCKET, SO_TYPE), SOCK_STREAM);
|
||||
|
||||
$s = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
VS(socket_get_option($s, SOL_SOCKET, SO_TYPE), SOCK_STREAM);
|
||||
var_dump(socket_connect($s, "facebook.com", 80));
|
||||
var_dump(socket_getpeername($s, $address));
|
||||
var_dump(!empty($address));
|
||||
var_dump(socket_getsockname($s, $address));
|
||||
var_dump(!empty($address));
|
||||
|
||||
$s = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
VERIFY(socket_connect($s, "facebook.com", 80));
|
||||
VERIFY(socket_getpeername($s, $address));
|
||||
VERIFY(!empty($address));
|
||||
|
||||
$s = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
VERIFY(socket_connect($s, "facebook.com", 80));
|
||||
VERIFY(socket_getsockname($s, $address));
|
||||
VERIFY(!empty($address));
|
||||
|
||||
$s = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
VERIFY(socket_set_block($s));
|
||||
|
||||
$s = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
VERIFY(socket_set_nonblock($s));
|
||||
|
||||
$s = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
VERIFY(socket_set_option($s, SOL_SOCKET, SO_RCVTIMEO,
|
||||
var_dump(socket_set_block($s));
|
||||
var_dump(socket_set_nonblock($s));
|
||||
var_dump(socket_set_option($s, SOL_SOCKET, SO_RCVTIMEO,
|
||||
array("sec" => 1, "usec" => 0)));
|
||||
|
||||
$s = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
VERIFY(socket_connect($s, "facebook.com", 80));
|
||||
|
||||
$s = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
$port = bind_random_port($s, "127.0.0.1");
|
||||
VERIFY($port != 0);
|
||||
VERIFY(socket_listen($s));
|
||||
|
||||
$server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
$port = bind_random_port($server, "127.0.0.1");
|
||||
VERIFY($port != 0);
|
||||
VERIFY(socket_listen($server));
|
||||
|
||||
$client = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
VERIFY(socket_connect($client, "127.0.0.1", $port));
|
||||
|
||||
$s = socket_accept($server);
|
||||
VERIFY(socket_write($client, "testing"));
|
||||
|
||||
list($client, $s) = get_client_server();
|
||||
var_dump(socket_write($client, "hello world"));
|
||||
// this could fail with shorter returns, but it never does...
|
||||
VS(socket_read($s, 100), "testing");
|
||||
|
||||
|
||||
$server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
$port = bind_random_port($server, "127.0.0.1");
|
||||
VERIFY($port != 0);
|
||||
VERIFY(socket_listen($server));
|
||||
|
||||
$client = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
VERIFY(socket_connect($client, "127.0.0.1", $port));
|
||||
|
||||
$s = socket_accept($server);
|
||||
var_dump(socket_read($s, 100));
|
||||
|
||||
list($client, $s) = get_client_server();
|
||||
$reads = array($s);
|
||||
VS(socket_select($reads, $ignore1, $ignore2, 1, 0), 0);
|
||||
|
||||
VERIFY(socket_write($client, "testing"));
|
||||
var_dump(socket_select($reads, $ignore1, $ignore2, 1, 0));
|
||||
var_dump(socket_write($client, "next select will be 1"));
|
||||
$reads = array($s);
|
||||
VS(socket_select($reads, $ignore1, $ignore2, 1, 0), 1);
|
||||
var_dump(socket_select($reads, $ignore1, $ignore2, 1, 0));
|
||||
|
||||
for ($i = 0; $i < 20; $i++) {
|
||||
$port = get_random_port();
|
||||
$server = socket_server("127.0.0.1", $port);
|
||||
if ($server !== false) break;
|
||||
}
|
||||
VERIFY($server !== false);
|
||||
list($client, $s) = get_client_server();
|
||||
$text = "send/recv";
|
||||
var_dump(socket_send($client, $text, 4, 0));
|
||||
var_dump(socket_recv($s, $buffer, 100, 0));
|
||||
var_dump($buffer);
|
||||
|
||||
$client = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
VERIFY(socket_connect($client, "127.0.0.1", $port));
|
||||
|
||||
$s = socket_accept($server);
|
||||
|
||||
$reads = array($s);
|
||||
VS(socket_select($reads, $ignore1, $ignore2, 1, 0), 0);
|
||||
|
||||
VERIFY(socket_write($client, "testing"));
|
||||
$reads = array($s);
|
||||
VS(socket_select($reads, $ignore1, $ignore2, 1, 0), 1);
|
||||
|
||||
$server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
$port = bind_random_port($server, "127.0.0.1");
|
||||
VERIFY($port != 0);
|
||||
VERIFY(socket_listen($server));
|
||||
|
||||
$client = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
VERIFY(socket_connect($client, "127.0.0.1", $port));
|
||||
|
||||
$s = socket_accept($server);
|
||||
$text = "testing";
|
||||
VERIFY(socket_send($client, $text, 4, 0));
|
||||
|
||||
VERIFY(socket_recv($s, $buffer, 100, 0));
|
||||
VS($buffer, "test");
|
||||
|
||||
$server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
$port = bind_random_port($server, "127.0.0.1");
|
||||
VERIFY($port != 0);
|
||||
VERIFY(socket_listen($server));
|
||||
|
||||
$client = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
VERIFY(socket_connect($client, "127.0.0.1", $port));
|
||||
|
||||
$s = socket_accept($server);
|
||||
$text = "testing";
|
||||
VERIFY(socket_sendto($client, $text, 4, 0, "127.0.0.1", $port));
|
||||
|
||||
VERIFY(socket_recvfrom($s, $buffer, 100, 0, $name, $vport));
|
||||
VS($buffer, "test");
|
||||
list($client, $s) = get_client_server();
|
||||
$text = "more specific";
|
||||
var_dump(socket_sendto($client, $text, 4, 0, "127.0.0.1", $port));
|
||||
var_dump(socket_recvfrom($s, $buffer, 100, 0, $name, $vport));
|
||||
var_dump($buffer);
|
||||
|
||||
$s = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
$port = bind_random_port($s, "127.0.0.1");
|
||||
VERIFY($port != 0);
|
||||
VERIFY(socket_listen($s));
|
||||
VERIFY(socket_shutdown($s));
|
||||
var_dump($port != 0);
|
||||
var_dump(socket_listen($s));
|
||||
var_dump(socket_shutdown($s));
|
||||
|
||||
$s = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
$port = bind_random_port($s, "127.0.0.1");
|
||||
VERIFY($port != 0);
|
||||
VERIFY(socket_listen($s));
|
||||
socket_close($s);
|
||||
var_dump($port != 0);
|
||||
var_dump(socket_listen($s));
|
||||
var_dump(socket_close($s));
|
||||
|
||||
$s = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
socket_bind($s, "127.0.0.1", 80);
|
||||
if (socket_last_error($s) == 13) {
|
||||
VS(socket_strerror(13), "Permission denied");
|
||||
var_dump(socket_strerror(13) == "Permission denied");
|
||||
socket_clear_error($s);
|
||||
}
|
||||
VS(socket_last_error($s), 0);
|
||||
var_dump(socket_last_error($s));
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
resource(4) of type (stream)
|
||||
bool(true)
|
||||
int(2)
|
||||
int(1)
|
||||
int(1)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
@@ -9,43 +14,31 @@ bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
int(11)
|
||||
string(11) "hello world"
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
int(0)
|
||||
int(21)
|
||||
int(1)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
int(4)
|
||||
int(4)
|
||||
string(4) "send"
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
int(4)
|
||||
int(4)
|
||||
string(4) "more"
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
NULL
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
int(0)
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário