Skip to content

Commit e92108d

Browse files
committed
Merge pull request #6 from gabelimon/TOOLING-255-make-pause-quieter
TOOLING-255: Fail more quietly
2 parents e3de7d3 + 478d72a commit e92108d

3 files changed

Lines changed: 65 additions & 18 deletions

File tree

Tests/Integration/PauseTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public function testPause()
6565
$this->assertFalse($this->pauser->pause('upgrade:test'));
6666

6767
// Pause non-existent queue
68-
$this->assertFalse($this->pauser->pause('upgrade:test2'));
68+
$this->assertTrue($this->pauser->pause('upgrade:test2'));
6969
}
7070

7171
public function testResume()
@@ -79,10 +79,10 @@ public function testResume()
7979

8080
// Resume non-paused queue
8181
Resque::enqueue('upgrade:test4', 'test');
82-
$this->assertFalse($this->pauser->resume('upgrade:test4'));
82+
$this->assertTrue($this->pauser->resume('upgrade:test4'));
8383

8484
// Resume non-existent queue
85-
$this->assertFalse($this->pauser->resume('upgrade:idontexist'));
85+
$this->assertTrue($this->pauser->resume('upgrade:idontexist'));
8686
}
8787

8888
public function testIsPaused()

Tests/Unit/JobPauserTest.php

Lines changed: 42 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,14 @@ public function setUp()
2424
'sadd',
2525
'srem',
2626
'getPrefix',
27+
'llen',
2728
'rename',
2829
'sismember',
2930
))
3031
->getMock();
3132
}
3233

33-
public function createDataProvider()
34+
public function pauseDataProvider()
3435
{
3536
return array(
3637
array(true, true),
@@ -39,10 +40,10 @@ public function createDataProvider()
3940
}
4041

4142
/**
42-
* @dataProvider createDataProvider
43+
* @dataProvider pauseDataProvider
4344
* @param bool $saddSuccess
4445
*/
45-
public function testCreate($saddSuccess, $returnSuccess)
46+
public function testPause($saddSuccess, $returnSuccess)
4647
{
4748
$this->redisMock
4849
->expects($this->once())
@@ -54,22 +55,32 @@ public function testCreate($saddSuccess, $returnSuccess)
5455
$this->assertEquals($returnSuccess, $pauser->pause('upgrade:test'));
5556
}
5657

57-
public function removeDataProvider()
58+
public function resumeDataProvider()
5859
{
5960
return array(
60-
array(true, true),
61-
array(false, false),
61+
array(true, true, true),
62+
array(true, false, false),
63+
array(false, true, true),
64+
array(false, false, true),
6265
);
6366
}
6467

6568
/**
66-
* @dataProvider removeDataProvider
69+
* @dataProvider resumeDataProvider
70+
* @param bool $isPaused
6771
* @param bool $sremSuccess
72+
* @param bool $returnSuccess
6873
*/
69-
public function testRemove($sremSuccess, $returnSuccess)
74+
public function testResume($isPaused, $sremSuccess, $returnSuccess)
7075
{
7176
$this->redisMock
7277
->expects($this->once())
78+
->method('sismember')
79+
->with($this->equalTo('pauses'))
80+
->willReturn($isPaused);
81+
82+
$this->redisMock
83+
->expects($isPaused ? $this->once() : $this->never())
7384
->method('srem')
7485
->with($this->equalTo('pauses'), $this->equalTo('upgrade:test2'))
7586
->willReturn($sremSuccess);
@@ -81,20 +92,29 @@ public function testRemove($sremSuccess, $returnSuccess)
8192
public function renameDataprovider()
8293
{
8394
return array(
84-
array(true, true),
85-
array(false, false),
95+
array(1, true, true),
96+
array(1, false, false),
97+
array(0, true, true),
98+
array(0, false, true),
8699
);
87100
}
88101

89102
/**
90103
* @dataProvider renameDataProvider
104+
* @param int $queueLength
91105
* @param bool $renameSuccess
92106
* @param bool $expectedResult
93107
*/
94-
public function testRenameToTemp($renameSuccess, $expectedResult)
108+
public function testRenameToTemp($queueLength, $renameSuccess, $expectedResult)
95109
{
96110
$this->redisMock
97111
->expects($this->once())
112+
->method('llen')
113+
->with($this->equalTo('queue:upgrade:test3'))
114+
->willReturn($queueLength);
115+
116+
$this->redisMock
117+
->expects($queueLength ? $this->once() : $this->never())
98118
->method('rename')
99119
->with($this->equalTo('queue:upgrade:test3'), $this->equalTo('resqueFaker:temp:upgrade:test3'))
100120
->willReturn($renameSuccess);
@@ -105,13 +125,20 @@ public function testRenameToTemp($renameSuccess, $expectedResult)
105125

106126
/**
107127
* @dataProvider renameDataProvider Reuses the renaming provider because the cases are the same
128+
* @param int $queueLength
108129
* @param bool $renameSuccess
109130
* @param bool $expectedResult
110131
*/
111-
public function testRenameBackFromTemp($renameSuccess, $expectedResult)
132+
public function testRenameBackFromTemp($queueLength, $renameSuccess, $expectedResult)
112133
{
113134
$this->redisMock
114135
->expects($this->once())
136+
->method('llen')
137+
->with($this->equalTo('temp:upgrade:test3'))
138+
->willReturn($queueLength);
139+
140+
$this->redisMock
141+
->expects($queueLength ? $this->once() : $this->never())
115142
->method('rename')
116143
->with($this->equalTo('temp:upgrade:test3'), $this->equalTo('resqueFaker:queue:upgrade:test3'))
117144
->willReturn($renameSuccess);
@@ -120,7 +147,7 @@ public function testRenameBackFromTemp($renameSuccess, $expectedResult)
120147
$this->assertEquals($expectedResult, $pauser->renameBackFromTemp('upgrade:test3'));
121148
}
122149

123-
public function existsDataProvider()
150+
public function isPausedDataProvider()
124151
{
125152
return array(
126153
array(true, true),
@@ -129,11 +156,11 @@ public function existsDataProvider()
129156
}
130157

131158
/**
132-
* @dataProvider existsDataProvider
159+
* @dataProvider isPausedDataProvider
133160
* @param bool $existsSuccess
134161
* @param bool $expectedResult
135162
*/
136-
public function testExists($existsSuccess, $expectedResult)
163+
public function testIsPaused($existsSuccess, $expectedResult)
137164
{
138165
$this->redisMock
139166
->expects($this->once())

src/JobPauser.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ public function pause($queue)
4646
*/
4747
public function resume($queue)
4848
{
49+
if (!$this->isPaused($queue)) {
50+
return true;
51+
}
4952
return $this->redis->srem(self::$pausedSetName, $queue);
5053
}
5154

@@ -58,6 +61,9 @@ public function resume($queue)
5861
*/
5962
public function renameToTemp($queue, $queuePrefix = 'queue:')
6063
{
64+
if ($this->queueIsEmpty($queuePrefix . $queue)) {
65+
return true;
66+
}
6167
return $this->redis->rename(
6268
$queuePrefix . $queue,
6369
$this->resqueRedisPrefix . self::$tempQueuePrefix . $queue
@@ -73,6 +79,9 @@ public function renameToTemp($queue, $queuePrefix = 'queue:')
7379
*/
7480
public function renameBackFromTemp($queue, $queuePrefix = 'queue:')
7581
{
82+
if ($this->queueIsEmpty(self::$tempQueuePrefix . $queue)) {
83+
return true;
84+
}
7685
return $this->redis->rename(
7786
self::$tempQueuePrefix . $queue,
7887
$this->resqueRedisPrefix . $queuePrefix . $queue
@@ -105,4 +114,15 @@ public function isPaused($queue)
105114
{
106115
return (bool)$this->redis->sismember(self::$pausedSetName, $queue);
107116
}
117+
118+
/**
119+
* Check if a queue has anything in it which is the same as an existence check
120+
*
121+
* @param $queue
122+
* @return bool
123+
*/
124+
public function queueIsEmpty($queue)
125+
{
126+
return $this->redis->llen($queue) === 0;
127+
}
108128
}

0 commit comments

Comments
 (0)