From effefcee34aa38d00ae7120381c56083b58e086d Mon Sep 17 00:00:00 2001 From: Daniele Alessandri Date: Wed, 7 Mar 2012 12:30:39 +0100 Subject: [PATCH] New command: TIME (Redis v2.6-dev). --- lib/Predis/Commands/ServerTime.php | 43 +++++++++++ lib/Predis/Profiles/ServerVersionNext.php | 1 + tests/Predis/Commands/ServerTimeTest.php | 74 +++++++++++++++++++ .../Predis/Profiles/ServerVersionNextTest.php | 1 + 4 files changed, 119 insertions(+) create mode 100644 lib/Predis/Commands/ServerTime.php create mode 100644 tests/Predis/Commands/ServerTimeTest.php diff --git a/lib/Predis/Commands/ServerTime.php b/lib/Predis/Commands/ServerTime.php new file mode 100644 index 00000000..5d224064 --- /dev/null +++ b/lib/Predis/Commands/ServerTime.php @@ -0,0 +1,43 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Predis\Commands; + +/** + * @link http://redis.io/commands/time + * @author Daniele Alessandri + */ +class ServerTime extends Command +{ + /** + * {@inheritdoc} + */ + public function getId() + { + return 'TIME'; + } + + /** + * {@inheritdoc} + */ + protected function canBeHashed() + { + return false; + } + + /** + * {@inheritdoc} + */ + public function parseResponse($data) + { + return $data instanceof \Iterator ? iterator_to_array($data) : $data; + } +} diff --git a/lib/Predis/Profiles/ServerVersionNext.php b/lib/Predis/Profiles/ServerVersionNext.php index cec4547c..0f4128a6 100644 --- a/lib/Predis/Profiles/ServerVersionNext.php +++ b/lib/Predis/Profiles/ServerVersionNext.php @@ -51,6 +51,7 @@ class ServerVersionNext extends ServerVersion24 /* remote server control commands */ 'info' => 'Predis\Commands\ServerInfoV26x', + 'time' => 'Predis\Commands\ServerTime', )); } } diff --git a/tests/Predis/Commands/ServerTimeTest.php b/tests/Predis/Commands/ServerTimeTest.php new file mode 100644 index 00000000..38ea31bd --- /dev/null +++ b/tests/Predis/Commands/ServerTimeTest.php @@ -0,0 +1,74 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Predis\Commands; + +use \PHPUnit_Framework_TestCase as StandardTestCase; + +/** + * @group commands + * @group realm-server + */ +class ServerTimeTest extends CommandTestCase +{ + /** + * {@inheritdoc} + */ + protected function getExpectedCommand() + { + return 'Predis\Commands\ServerTime'; + } + + /** + * {@inheritdoc} + */ + protected function getExpectedId() + { + return 'TIME'; + } + + /** + * @group disconnected + */ + public function testFilterArguments() + { + $arguments = array(); + $expected = array(); + + $command = $this->getCommand(); + $command->setArguments($arguments); + + $this->assertSame($expected, $command->getArguments()); + } + + /** + * @group disconnected + */ + public function testParseResponse() + { + $expected = array(1331114908, 453990); + $command = $this->getCommand(); + + $this->assertSame($expected, $command->parseResponse($expected)); + } + + /** + * @group connected + */ + public function testReturnsServerTime() + { + $redis = $this->getClient(); + + $this->assertInternalType('array', $time = $redis->time()); + $this->assertInternalType('string', $time[0]); + $this->assertInternalType('string', $time[1]); + } +} diff --git a/tests/Predis/Profiles/ServerVersionNextTest.php b/tests/Predis/Profiles/ServerVersionNextTest.php index 76679bd2..af597a7c 100644 --- a/tests/Predis/Profiles/ServerVersionNextTest.php +++ b/tests/Predis/Profiles/ServerVersionNextTest.php @@ -168,6 +168,7 @@ class ServerVersionNextTest extends ServerVersionTestCase 127 => 'eval', 128 => 'evalsha', 129 => 'script', + 130 => 'time', ); } }