Viewing File: /opt/alt/tests/alt-php80-pecl-scoutapm_1.10.0-1.el8/tests/014-predis-support.phpt
--TEST--
Predis userland functions are supported
--SKIPIF--
<?php
if (!extension_loaded("scoutapm")) die("skip scoutapm extension required.");
if (shell_exec("which composer") === null) die("skip composer not found in path.");
$out = null;
$result = null;
exec("mkdir -p /tmp/scout_predis_test && cd /tmp/scout_predis_test && composer require -n predis/predis", $out, $result);
if ($result !== 0) {
die("skip composer failed: " . implode(", ", $out));
}
if (!getenv('CI')) {
require "/tmp/scout_predis_test/vendor/autoload.php";
// Check Redis is running & can connect to it
// Run with: docker run --rm --name redis -p 6379:6379 -d redis
$client = new \Predis\Client();
try {
$client->connect();
} catch (\Predis\Connection\ConnectionException $e) {
die("skip " . $e->getMessage());
}
}
?>
--FILE--
<?php
echo implode("\n", array_intersect(
[
'Predis\Client->append',
'Predis\Client->decr',
'Predis\Client->decrBy',
'Predis\Client->get',
'Predis\Client->getBit',
'Predis\Client->getRange',
'Predis\Client->getSet',
'Predis\Client->incr',
'Predis\Client->incrBy',
'Predis\Client->mGet',
'Predis\Client->mSet',
'Predis\Client->mSetNx',
'Predis\Client->set',
'Predis\Client->setBit',
'Predis\Client->setEx',
'Predis\Client->pSetEx',
'Predis\Client->setNx',
'Predis\Client->setRange',
'Predis\Client->strlen',
'Predis\Client->del',
],
scoutapm_list_instrumented_functions()
)) . "\n";
scoutapm_enable_instrumentation(true);
require "/tmp/scout_predis_test/vendor/autoload.php";
$client = new \Predis\Client();
// Simple operations
$client->set('foo', 'bar');
var_dump($client->get('foo'));
$client->append('foo', 'baz');
$client->del('foo');
$client->getSet('foo', 'bat');
$client->getRange('foo', 0, 2);
$client->setRange('foo', 0, 'qux');
$client->setEx('expire1', 1, 'value1');
$client->pSetEx('expire2', 1, 'value2');
$client->setNx('fuu', 'new');
$client->strlen('fuu');
// Increment/Decrement
$client->set('count', 0);
$client->incr('count');
$client->decr('count');
$client->incrBy('count', 2);
$client->decrBy('count', 2);
// Multi-operations
$client->mSet(['a' => 'a', 'b' => 'b']);
$client->mSetNx(['c' => 'c', 'd' => 'd']);
$client->mGet(['a', 'b', 'c', 'd']);
// Bit operations
$client->set('bit', 0);
$client->setBit('bit', 8, 1);
$client->getBit('bit', 8);
$calls = scoutapm_get_calls();
var_dump(array_column($calls, 'function'));
?>
--CLEAN--
<?php
shell_exec("rm -Rf /tmp/scout_predis_test");
?>
--EXPECTF--
Predis\Client->append
Predis\Client->decr
Predis\Client->decrBy
Predis\Client->get
Predis\Client->getBit
Predis\Client->getRange
Predis\Client->getSet
Predis\Client->incr
Predis\Client->incrBy
Predis\Client->mGet
Predis\Client->mSet
Predis\Client->mSetNx
Predis\Client->set
Predis\Client->setBit
Predis\Client->setEx
Predis\Client->pSetEx
Predis\Client->setNx
Predis\Client->setRange
Predis\Client->strlen
Predis\Client->del
string(%s) "bar"
array(%d) {
[%d]=>
string(%d) "Predis\Client->set"
[%d]=>
string(%d) "Predis\Client->get"
[%d]=>
string(%d) "Predis\Client->append"
[%d]=>
string(%d) "Predis\Client->del"
[%d]=>
string(%d) "Predis\Client->getSet"
[%d]=>
string(%d) "Predis\Client->getRange"
[%d]=>
string(%d) "Predis\Client->setRange"
[%d]=>
string(%d) "Predis\Client->setEx"
[%d]=>
string(%d) "Predis\Client->pSetEx"
[%d]=>
string(%d) "Predis\Client->setNx"
[%d]=>
string(%d) "Predis\Client->strlen"
[%d]=>
string(%d) "Predis\Client->set"
[%d]=>
string(%d) "Predis\Client->incr"
[%d]=>
string(%d) "Predis\Client->decr"
[%d]=>
string(%d) "Predis\Client->incrBy"
[%d]=>
string(%d) "Predis\Client->decrBy"
[%d]=>
string(%d) "Predis\Client->mSet"
[%d]=>
string(%d) "Predis\Client->mSetNx"
[%d]=>
string(%d) "Predis\Client->mGet"
[%d]=>
string(%d) "Predis\Client->set"
[%d]=>
string(%d) "Predis\Client->setBit"
[%d]=>
string(%d) "Predis\Client->getBit"
}
Back to Directory
File Manager
<