Skip to content

Commit 9750316

Browse files
author
Eugene Leonovich
committed
Improve integration tests
1 parent 74faee7 commit 9750316

File tree

3 files changed

+90
-54
lines changed

3 files changed

+90
-54
lines changed

tests/Integration/QueueTest.php

Lines changed: 73 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,27 @@ public static function setUpBeforeClass()
2525

2626
public static function tearDownAfterClass()
2727
{
28-
self::$client->close();
28+
self::$client->disconnect();
2929
self::$client = null;
3030
}
3131

3232
protected function setUp()
3333
{
34+
$name = preg_replace('/^test([^\s]+).*$/', '\1', $this->getName());
35+
$name = strtolower($name);
36+
3437
$tubeType = $this->getTubeType();
35-
$tubeName = uniqid(sprintf('t_%s_', $tubeType));
38+
$tubeName = sprintf('t_%s_%s', $tubeType, $name);
39+
40+
self::$client->evaluate('create_tube(...)', [$tubeName, $tubeType]);
41+
42+
$ann = $this->getAnnotations();
43+
if (!empty($ann['method']['eval'])) {
44+
foreach ($ann['method']['eval'] as $eval) {
45+
self::$client->evaluate(str_replace('%tube_name%', $tubeName, $eval));
46+
}
47+
}
3648

37-
self::$client->call('queue._create_tube', [$tubeName, $tubeType]);
3849
$this->queue = new Queue(self::$client, $tubeName);
3950
}
4051

@@ -50,10 +61,7 @@ public function testPut($data)
5061
{
5162
$task = $this->queue->put($data);
5263

53-
$this->assertTaskInstance($task);
54-
$this->assertNotNull($task->getId());
55-
$this->assertSame(States::READY, $task->getType());
56-
$this->assertSame($data, $task->getData());
64+
$this->assertTask($task, 0, States::READY, $data);
5765
}
5866

5967
public function provideTaskData()
@@ -69,20 +77,24 @@ public function provideTaskData()
6977
];
7078
}
7179

80+
/**
81+
* @eval queue.tube['%tube_name%']:put('peek_0')
82+
*/
7283
public function testPeek()
7384
{
74-
$task = $this->queue->put('foo');
75-
$peekedTask = $this->queue->peek($task->getId());
85+
$task = $this->queue->peek(0);
7686

77-
$this->assertEquals($task, $peekedTask);
87+
$this->assertTask($task, 0, States::READY, 'peek_0');
7888
}
7989

90+
/**
91+
* @eval queue.tube['%tube_name%']:put('take')
92+
*/
8093
public function testTake()
8194
{
82-
$task = $this->queue->put('foo');
83-
$takenTask = $this->queue->take();
95+
$task = $this->queue->take();
8496

85-
$this->assertSimilar($task, $takenTask, States::TAKEN);
97+
$this->assertTask($task, 0, States::TAKEN, 'take');
8698
}
8799

88100
public function testTakeNone()
@@ -94,46 +106,72 @@ public function testTakeNone()
94106
$this->assertNull($task);
95107
}
96108

109+
/**
110+
* @eval queue.tube['%tube_name%']:put('release_0')
111+
* @eval queue.tube['%tube_name%']:take()
112+
*/
97113
public function testRelease()
98114
{
99-
$task = $this->queue->put('foo');
100-
$takenTask = $this->queue->take();
101-
$releasedTask = $this->queue->release($takenTask->getId());
115+
$task = $this->queue->release(0);
102116

103-
$this->assertEquals($task, $releasedTask);
117+
$this->assertTask($task, 0, States::READY, 'release_0');
104118
}
105119

120+
/**
121+
* @eval queue.tube['%tube_name%']:put('ack_0')
122+
* @eval queue.tube['%tube_name%']:take()
123+
*/
106124
public function testAck()
107125
{
108-
$task = $this->queue->put('foo');
109-
$takenTask = $this->queue->take();
110-
$doneTask = $this->queue->ack($takenTask->getId());
126+
$task = $this->queue->ack(0);
111127

112-
$this->assertSimilar($task, $doneTask, States::DONE);
128+
$this->assertTask($task, 0, States::DONE, 'ack_0');
113129
}
114130

131+
/**
132+
* @eval queue.tube['%tube_name%']:put('delete_0')
133+
*/
115134
public function testDelete()
116135
{
117-
$task = $this->queue->put('foo');
118-
$deletedTask = $this->queue->delete($task->getId());
136+
$task = $this->queue->delete(0);
119137

120-
$this->assertSimilar($task, $deletedTask, States::DONE);
138+
$this->assertTask($task, 0, States::DONE, 'delete_0');
121139
}
122140

123-
public function testBuryKick()
141+
/**
142+
* @eval queue.tube['%tube_name%']:put('bury_0')
143+
*/
144+
public function testBury()
124145
{
125-
$task = $this->queue->put('foo');
126-
$buriedTask = $this->queue->bury($task->getId());
146+
$task = $this->queue->bury(0);
127147

128-
$this->assertSimilar($task, $buriedTask, States::BURIED);
148+
$this->assertTask($task, 0, States::BURIED, 'bury_0');
149+
}
129150

151+
/**
152+
* @eval queue.tube['%tube_name%']:put('kick_1')
153+
* @eval queue.tube['%tube_name%']:bury(0)
154+
*/
155+
public function testKickOne()
156+
{
130157
$count = $this->queue->kick(1);
131158

132159
$this->assertSame(1, $count);
160+
}
133161

134-
$peekedTask = $this->queue->peek($task->getId());
162+
/**
163+
* @eval queue.tube['%tube_name%']:put('kick_1')
164+
* @eval queue.tube['%tube_name%']:put('kick_2')
165+
* @eval queue.tube['%tube_name%']:put('kick_3')
166+
* @eval queue.tube['%tube_name%']:bury(0)
167+
* @eval queue.tube['%tube_name%']:bury(1)
168+
* @eval queue.tube['%tube_name%']:bury(2)
169+
*/
170+
public function testKickMany()
171+
{
172+
$count = $this->queue->kick(3);
135173

136-
$this->assertEquals($task, $peekedTask);
174+
$this->assertSame(3, $count);
137175
}
138176

139177
/**
@@ -162,15 +200,13 @@ protected function assertTaskInstance($task)
162200
$this->assertInstanceOf('Tarantool\Queue\Task', $task);
163201
}
164202

165-
protected function assertSimilar(Task $expectedTask, $actualTask, $expectedType = null)
203+
protected function assertTask($task, $expectedId, $expectedType, $expectedData)
166204
{
167-
$this->assertTaskInstance($actualTask);
168-
$this->assertSame($expectedTask->getId(), $actualTask->getId());
169-
$this->assertEquals($expectedTask->getData(), $actualTask->getData());
205+
$this->assertTaskInstance($task);
170206

171-
if (null !== $expectedType) {
172-
$this->assertSame($expectedType, $actualTask->getType());
173-
}
207+
$this->assertSame($expectedId, $task->getId());
208+
$this->assertSame($expectedType, $task->getType());
209+
$this->assertSame($expectedData, $task->getData());
174210
}
175211

176212
protected function getTubeType()

tests/Integration/Ttl.php

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44

55
trait Ttl
66
{
7+
/**
8+
* @eval queue.tube['%tube_name%']:put('ttr_1', { ttr = 1})
9+
*/
710
public function testTimeToRun()
811
{
9-
$this->queue->put('ttr_1', ['ttr' => 1]);
10-
1112
$task1 = $this->queue->take(.1);
1213
sleep(1);
1314
$task2 = $this->queue->take(.1);
@@ -17,21 +18,23 @@ public function testTimeToRun()
1718
$this->assertEquals($task1, $task2);
1819
}
1920

21+
/**
22+
* @eval queue.tube['%tube_name%']:put('ttl_1', { ttl = 1})
23+
*/
2024
public function testTimeToLive()
2125
{
22-
$this->queue->put('ttl_1', ['ttl' => 1]);
23-
2426
sleep(1);
2527
$task = $this->queue->take(.1);
2628

2729
$this->assertNull($task);
2830
}
2931

32+
/**
33+
* @eval queue.tube['%tube_name%']:put('pri_low', { pri = 2})
34+
* @eval queue.tube['%tube_name%']:put('pri_high', { pri = 1})
35+
*/
3036
public function testPriority()
3137
{
32-
$this->queue->put('pri_low', ['pri' => 2]);
33-
$this->queue->put('pri_high', ['pri' => 1]);
34-
3538
$task1 = $this->queue->take(.1);
3639
$this->queue->delete($task1->getId());
3740

@@ -42,9 +45,11 @@ public function testPriority()
4245
$this->assertSame('pri_low', $task2->getData());
4346
}
4447

48+
/**
49+
* @eval queue.tube['%tube_name%']:put('delay_1', { delay = 1})
50+
*/
4551
public function testDelay()
4652
{
47-
$this->queue->put('delay_1', ['delay' => 1]);
4853
$task = $this->queue->take(.1);
4954

5055
$this->assertNull($task);

tests/Integration/instance.lua

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,10 @@ box.schema.user.grant('guest', 'read,write,execute', 'universe')
1313
queue = require('queue')
1414
queue.start()
1515

16-
for _, tube_type in pairs({ 'fifo', 'fifottl', 'utube', 'utubettl' }) do
17-
local tube_name = 'queue_' .. tube_type
18-
if null == queue.tube[tube_name] then
19-
queue.create_tube(tube_name, tube_type, { temporary = true })
16+
function create_tube(tube_name, tube_type, opts)
17+
if null ~= queue.tube[tube_name] then
18+
queue.tube[tube_name]:drop()
2019
end
21-
end
22-
23-
-- https://github.com/tarantool/tarantool-php/issues/26
2420

25-
function queue._create_tube(tube_name, tube_type, opts)
26-
queue.create_tube(tube_name, tube_type, opts)
21+
return queue.create_tube(tube_name, tube_type, opts)
2722
end

0 commit comments

Comments
 (0)