Beispiel #1
0
 /**
  * @return CommittedJob|null
  */
 public function get()
 {
     if ($job = $this->redis->get($this->key)) {
         if ($array = Encoder::decode($job)) {
             return CommittedJob::jsonUnserialize($array);
         }
     }
     return null;
 }
Beispiel #2
0
 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();
 }
Beispiel #3
0
 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();
 }
Beispiel #4
0
 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']);
 }
Beispiel #5
0
 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();
 }
Beispiel #7
0
 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);
 }
Beispiel #8
0
 /**
  * @param string $event
  */
 public function addEvent($event)
 {
     $this->redis->rpush($this->key, Encoder::encode(Event::now($event)));
 }