From 676a194367c52b2240a1d0efe896219e995c3b58 Mon Sep 17 00:00:00 2001 From: svcscm Date: Thu, 17 Jul 2014 18:24:13 -0700 Subject: [PATCH] Fix Redis::sRandMember() Summary: Don't require a second parameter which is originally optional. Also, it shouldn't always return an array. Closes: #3213 Closes #3217 Created from: https://github.com/facebook/hhvm/pull/3217 Reviewed By: @swtaarrs Differential Revision: D1442294 --- hphp/system/php/redis/Redis.php | 16 ++++++++++++++-- hphp/test/slow/ext_redis/srandmember.php | 12 ++++++++++++ hphp/test/slow/ext_redis/srandmember.php.expect | 7 +++++++ 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 hphp/test/slow/ext_redis/srandmember.php create mode 100644 hphp/test/slow/ext_redis/srandmember.php.expect diff --git a/hphp/system/php/redis/Redis.php b/hphp/system/php/redis/Redis.php index e67cc34a034..371729250f2 100644 --- a/hphp/system/php/redis/Redis.php +++ b/hphp/system/php/redis/Redis.php @@ -366,6 +366,20 @@ class Redis { return $this->processBooleanResponse(); } + /* Sets ---------------------------------------------------------------- */ + + public function sRandMember($key, $count = null) { + $args = [$key]; + if ($count !== null) { + $args[] = $count; + } + $this->processArrayCommand('SRANDMEMBER', $args); + if ($count !== null) { + return $this->processVectorResponse(true); + } + return $this->processStringResponse(); + } + /* zSets --------------------------------------------------------------- */ public function zAdd($key, $score, $value/*, $scoreN, $valueN */) { @@ -834,8 +848,6 @@ class Redis { 'sgetmembers' => [ 'alias' => 'smembers' ], 'smove' => [ 'format' => 'kkv', 'return' => '1' ], 'spop' => [ 'format' => 'k', 'return' => 'Serialized' ], - 'srandmember' => [ 'format' => 'kl', 'return' => 'Serialized', - 'default' => [ 1 => 1 ] ], 'srem' => [ 'vararg' => self::VAR_KEY_FIRST_AND_SERIALIZE, 'return' => 'Long' ], 'sremove' => [ 'alias' => 'srem' ], diff --git a/hphp/test/slow/ext_redis/srandmember.php b/hphp/test/slow/ext_redis/srandmember.php new file mode 100644 index 00000000000..410f6d8d614 --- /dev/null +++ b/hphp/test/slow/ext_redis/srandmember.php @@ -0,0 +1,12 @@ +setOption(Redis::OPT_PREFIX, GetTestKeyName(__FILE__) . ':'); +$r->delete('foo'); +$r->sAdd('foo', 'bar'); + +var_dump($r->srandmember('foo')); +var_dump($r->srandmember('foo', 0)); +var_dump($r->srandmember('foo', 1)); diff --git a/hphp/test/slow/ext_redis/srandmember.php.expect b/hphp/test/slow/ext_redis/srandmember.php.expect new file mode 100644 index 00000000000..02c1406c68f --- /dev/null +++ b/hphp/test/slow/ext_redis/srandmember.php.expect @@ -0,0 +1,7 @@ +string(3) "bar" +array(0) { +} +array(1) { + [0] => + string(3) "bar" +} -- 2.11.4.GIT