Skip to content

Commit c932e18

Browse files
committed
Mock redis for blpop tests as hhvm doesn't respect the timeout arg.
1 parent 380e0c7 commit c932e18

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

test/Resque/Tests/Reserver/BlockingListPopReserverTest.php

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,42 @@ public function testWaitAfterReservationAttemptReturnsTrue()
2222
$this->assertFalse($this->getReserver()->waitAfterReservationAttempt());
2323
}
2424

25+
public function testReserverWhenNoJobsEnqueuedReturnsNull()
26+
{
27+
$queues = array(
28+
'queue_1',
29+
'queue_2',
30+
'queue_3',
31+
);
32+
33+
$redisQueues = array(
34+
'queue:queue_1',
35+
'queue:queue_2',
36+
'queue:queue_3',
37+
);
38+
39+
// hhvm doesn't respect the timeout arg for blpop, so we need to mock this command
40+
// https://github.com/facebook/hhvm/issues/6286
41+
$redis = $this->getMockBuilder('\Resque_Redis')
42+
->disableOriginalConstructor()
43+
->setMethods(['__call'])
44+
->getMock();
45+
46+
$redis
47+
->expects($this->once())
48+
->method('__call')
49+
->with($this->equalTo('blpop'), $this->equalTo(array($redisQueues, 1)))
50+
->will($this->returnValue(null));
51+
52+
$originalRedis = Resque::$redis;
53+
54+
Resque::$redis = $redis;
55+
56+
$this->assertNull($this->getReserver($queues)->reserve());
57+
58+
Resque::$redis = $originalRedis;
59+
}
60+
2561
public function testReserveCallsBlpopWithTimeout()
2662
{
2763
$timeout = rand(1, 100);

0 commit comments

Comments
 (0)