1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
--TEST--
AMQPConnection parameter validation
--SKIPIF--
<?php
if (!extension_loaded("amqp")) print "skip AMQP extension is not loaded";
?>
--FILE--
<?php
$parameters = [
['login', 'setLogin', 'getLogin', [str_repeat('X', 1025), 'user']],
['password', 'setPassword', 'getPassword', [str_repeat('X', 1025), 'pass']],
['host', 'setHost', 'getHost', [str_repeat('X', 513), 'host']],
['vhost', 'setVhost', 'getVhost', [str_repeat('X', 513), 'vhost']],
['port', 'setPort', 'getPort', [-1, 65536, 1234]],
['timeout', 'setTimeout', 'getTimeout', [-1], 10],
['read_timeout', 'setReadTimeout', 'getReadTimeout', [-1, 20]],
['write_timeout', 'setWriteTimeout', 'getWriteTimeout', [-1, 30]],
['connect_timeout', null, 'getConnectTimeout', [-1, 40]],
['rpc_timeout', 'setRpcTimeout', 'getRpcTimeout', [-1, 50]],
['frame_max', null, 'getMaxFrameSize', [-1, PHP_INT_MAX + 1, 128]],
['channel_max', null, 'getMaxChannels', [-1, 257, 128]],
['heartbeat', null, 'getHeartbeatInterval', [-1, PHP_INT_MAX + 1, 250, 0]],
];
foreach ($parameters as $args) {
list($prop, $setter, $getter, $values) = $args;
foreach ($values as $value) {
try {
$con1 = new AMQPConnection([$prop => $value]);
echo $getter . " after constructor: ";
echo $con1->{$getter}();
echo PHP_EOL;
} catch (\Throwable $t) {
echo get_class($t);
echo ": ";
echo $t->getMessage();
echo PHP_EOL;
}
if ($setter === null) {
continue;
}
$con2 = new AMQPConnection();
try {
$con2->{$setter}($value);
echo $getter . " after setter: ";
echo $con2->{$getter}();
echo PHP_EOL;
} catch (\Throwable $t) {
echo get_class($t);
echo ": ";
echo $t->getMessage();
echo PHP_EOL;
}
}
}
?>
==DONE==
--EXPECTF--
AMQPConnectionException: Parameter 'login' exceeds 1024 character limit.
AMQPConnectionException: Parameter 'login' exceeds 1024 character limit.
getLogin after constructor: user
getLogin after setter: user
AMQPConnectionException: Parameter 'password' exceeds 1024 character limit.
AMQPConnectionException: Parameter 'password' exceeds 1024 character limit.
getPassword after constructor: pass
getPassword after setter: pass
AMQPConnectionException: Parameter 'host' exceeds 512 character limit.
AMQPConnectionException: Parameter 'host' exceeds 512 character limit.
getHost after constructor: host
getHost after setter: host
AMQPConnectionException: Parameter 'vhost' exceeds 512 character limit.
AMQPConnectionException: Parameter 'vhost' exceeds 512 characters limit.
getVhost after constructor: vhost
getVhost after setter: vhost
AMQPConnectionException: Parameter 'port' must be a valid port number between 1 and 65535.
AMQPConnectionException: Parameter 'port' must be a valid port number between 1 and 65535.
AMQPConnectionException: Parameter 'port' must be a valid port number between 1 and 65535.
AMQPConnectionException: Parameter 'port' must be a valid port number between 1 and 65535.
getPort after constructor: 1234
getPort after setter: 1234
Deprecated: AMQPConnection::__construct(): Parameter 'timeout' is deprecated; use 'read_timeout' instead in %s on line %d
AMQPConnectionException: Parameter 'timeout' must be greater than or equal to zero.
Deprecated: AMQPConnection::setTimeout(): AMQPConnection::setTimeout($timeout) method is deprecated; use AMQPConnection::setReadTimeout($timeout) instead in %s on line %d
AMQPConnectionException: Parameter 'timeout' must be greater than or equal to zero.
AMQPConnectionException: Parameter 'read_timeout' must be greater than or equal to zero.
AMQPConnectionException: Parameter 'readTimeout' must be greater than or equal to zero.
getReadTimeout after constructor: 20
getReadTimeout after setter: 20
AMQPConnectionException: Parameter 'write_timeout' must be greater than or equal to zero.
AMQPConnectionException: Parameter 'writeTimeout' must be greater than or equal to zero.
getWriteTimeout after constructor: 30
getWriteTimeout after setter: 30
AMQPConnectionException: Parameter 'connect_timeout' must be greater than or equal to zero.
getConnectTimeout after constructor: 40
AMQPConnectionException: Parameter 'rpc_timeout' must be greater than or equal to zero.
AMQPConnectionException: Parameter 'rpcTimeout' must be greater than or equal to zero.
getRpcTimeout after constructor: 50
getRpcTimeout after setter: 50
AMQPConnectionException: Parameter 'frame_max' is out of range.
AMQPConnectionException: Parameter 'frame_max' is out of range.
getMaxFrameSize after constructor: 128
AMQPConnectionException: Parameter 'channel_max' is out of range.
AMQPConnectionException: Parameter 'channel_max' is out of range.
getMaxChannels after constructor: 128
AMQPConnectionException: Parameter 'heartbeat' is out of range.
AMQPConnectionException: Parameter 'heartbeat' is out of range.
getHeartbeatInterval after constructor: 250
getHeartbeatInterval after constructor: 0
==DONE==
|