HEX
Server: Apache/2.4.41 (Amazon) OpenSSL/1.0.2k-fips PHP/5.6.40
System: Linux ip-172-31-40-18 4.14.146-93.123.amzn1.x86_64 #1 SMP Tue Sep 24 00:45:23 UTC 2019 x86_64
User: apache (48)
PHP: 5.6.40
Disabled: NONE
Upload Files
File: //usr/share/pear/test/memcached/tests/touch_binary.phpt
--TEST--
Touch in binary mode
--SKIPIF--
<?php if (!extension_loaded("memcached")) print "skip";
	  if (Memcached::LIBMEMCACHED_VERSION_HEX < 0x01000016) die ('skip too old libmemcached');
?>
--FILE--
<?php

function resolve_to_constant ($code)
{
	$refl = new ReflectionClass ('memcached');
	$c = $refl->getConstants ();
	
	foreach ($c as $name => $value) {
		if (strpos ($name, 'RES_') === 0 && $value == $code)
			return $name;
	}
}

function status_print ($op, $mem, $expected)
{
	$code = $mem->getResultcode();

	if ($code == $expected)
		echo "${op} status code as expected" . PHP_EOL;
	else {
		$expected = resolve_to_constant ($expected);
		$code = resolve_to_constant ($code);
		
		echo "${op} status code mismatch, expected ${expected} but got ${code}" . PHP_EOL;
	}
}

include dirname (__FILE__) . '/config.inc';
$mem = memc_get_instance (array (Memcached::OPT_BINARY_PROTOCOL => true));

$key = uniqid ('touch_t_');

$mem->get($key);
status_print ('get', $mem, Memcached::RES_NOTFOUND);

$mem->set ($key, 1);
status_print ('set', $mem, Memcached::RES_SUCCESS);

$mem->get($key);
status_print ('get', $mem, Memcached::RES_SUCCESS);

$mem->touch ($key, 10);
status_print ('touch', $mem, Memcached::RES_SUCCESS);

$mem->get($key);
status_print ('get', $mem, Memcached::RES_SUCCESS);

$mem->get($key);
status_print ('get', $mem, Memcached::RES_SUCCESS);

echo "OK\n";

?>
--EXPECT--
get status code as expected
set status code as expected
get status code as expected
touch status code as expected
get status code as expected
get status code as expected
OK