/** * @return CommittedJob|null */ public function get() { if ($job = $this->redis->get($this->key)) { if ($array = Encoder::decode($job)) { return CommittedJob::jsonUnserialize($array); } } return null; }
function it_can_be_executed(Redis $tx) { $id = '123'; $now = '2015-04-18T13:16:16.263400+0000'; $tx->watch("job:{$id}:txid")->shouldBeCalled(); $tx->zscore("queue:my-queue:failed", $id)->willReturn(1); $tx->multi()->shouldBeCalled(); $tx->zrem('queue:my-queue:failed', $id)->shouldBeCalled()->willReturn(0); $tx->lpush('queue:my-queue:pending', $id)->shouldBeCalled(); $tx->rpush("job:{$id}:history", Encoder::encode([$now, 'queued']))->shouldBeCalled(); $tx->incr("job:{$id}:tries")->shouldBeCalled(); $tx->incr("job:{$id}:txid")->shouldBeCalled(); $this->execute(); }
function it_can_be_executed(Redis $tx) { $id = '123'; $nowIso = '2015-04-18T13:16:16.263400+0000'; $nowTs = 1429362976.2634; $tx->watch("job:{$id}:txid")->shouldBeCalled(); $tx->zscore('queue:my-queue:succeeded', $id)->willReturn(null); $tx->multi()->shouldBeCalled(); $tx->lrem('queue:my-queue:processing', 1, $id)->shouldBeCalled()->willReturn(1); $tx->zadd('queue:my-queue:failed', $nowTs, $id)->shouldBeCalled(); $tx->rpush("job:{$id}:history", Encoder::encode([$nowIso, 'failed']))->shouldBeCalled(); $tx->incr("job:{$id}:txid")->shouldBeCalled(); $this->execute(); }
function it_can_tell_about_a_jobs_life(Redis $redis) { $id = '6db66951-c497-4d83-bfae-5fe78452e92b'; $now = '2015-04-18T13:16:16.263400+0000'; $history = [Encoder::encode([$now, 'queued'])]; $redis->lrange("job:{$id}:history", 0, -1)->willReturn($history); $redis->lrange("job:{$id}:log", 0, -1)->willReturn(['chunk 1', 'chunk 2']); $redis->lrange("job:{$id}:log", 2, -1)->willReturn(['chunk 3', 'chunk 4']); $history = $this->getHistory($id); $history[0]->dateTime()->shouldReturn('2015-04-18T13:16:16.263400+0000'); $history[0]->name()->shouldReturn('queued'); $this->getLog($id)->shouldReturn(['chunk 1', 'chunk 2']); $this->getLog($id, 2)->shouldReturn(['chunk 3', 'chunk 4']); }
function it_can_be_executed(Redis $redis) { $jobId = '6db66951-c497-4d83-bfae-5fe78452e92b'; $nowIso = '2015-04-18T13:16:16.263400+0000'; $job = Encoder::encode(new CommittedJob($jobId, 'my-queue', 'StdClass', 'arg1', 'arg2')); $redis->rpoplpush("queue:my-queue:pending", "queue:my-queue:processing")->willReturn($jobId); $redis->incr("job:{$jobId}:txid")->shouldBeCalled(); $redis->get("job:{$jobId}")->willReturn($job); $redis->rpush("job:{$jobId}:history", Encoder::encode([$nowIso, 'processing']))->shouldBeCalled(); $job = $this->execute(); $job->shouldHaveType(CommittedJob::class); $job->getId()->shouldReturn($jobId); $job->getQueueId()->shouldReturn('my-queue'); $job->getImplementation()->shouldReturn('StdClass'); }
function it_can_be_executed(Redis $tx) { $id = '123'; $nowTs = 1429362976.2634; $nowIso = '2015-04-18T13:16:16.263400+0000'; $expectedJob = $this->createJob(); $tx->watch("job:{$id}:txid")->shouldBeCalled(); $tx->multi()->shouldBeCalled(); $tx->sadd('queues', 'my-queue')->shouldBeCalled(); $tx->zadd('jobs', $nowTs, $id)->shouldBeCalled(); $tx->zrem('queue:my-queue:failed', $id)->shouldBeCalled()->willReturn(0); $tx->lpush('queue:my-queue:pending', $id)->shouldBeCalled(); $tx->setnx("job:{$id}", Encoder::encode($expectedJob))->shouldBeCalled(); $tx->incr("job:{$id}:tries")->shouldBeCalled(); $tx->rpush("job:{$id}:history", Encoder::encode([$nowIso, 'queued']))->shouldBeCalled(); $tx->incr("job:{$id}:txid")->shouldBeCalled(); $this->execute(); }
function it_can_remove_successful_jobs(Redis $redis, MetroFactory $factory, RemoveTransaction $transaction) { $id = '6db66951-c497-4d83-bfae-5fe78452e92b'; $job = new CommittedJob($id, 'my-queue', 'StdClass'); $redis->get("job:{$id}")->willReturn(Encoder::encode($job)); $factory->createRemoveTransaction($job)->willReturn($transaction); $transaction->execute()->shouldBeCalled(); $this->remove($id); }
/** * @param string $event */ public function addEvent($event) { $this->redis->rpush($this->key, Encoder::encode(Event::now($event))); }