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'; $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_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_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_pop_jobs_off_the_queue(Redis $redis, Worker $worker, MetroFactory $factory, RegisterWorkerTransaction $workerTransaction) { $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')); $factory->createRegisterWorkerTransaction($worker, ['my-queue', 'your-queue'])->willReturn($workerTransaction); $workerTransaction->execute()->shouldBeCalled(); # TODO $redis->rpoplpush("queue:my-queue:pending", "queue:my-queue:processing")->willReturn(null); $redis->rpoplpush("queue:your-queue:pending", "queue:your-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->pop(['my-queue', 'your-queue'], $worker); $job->shouldHaveType(CommittedJob::class); $job->getId()->shouldReturn($jobId); $job->getQueueId()->shouldReturn('my-queue'); $job->getImplementation()->shouldReturn('StdClass'); }