예제 #1
0
    def test_metadata(self):
        def run_task(fn, a=()):
            fn(*a)
            self.worker(test_huey.dequeue())
            return test_huey.metadata()

        metadata = run_task(modify_state, ('k1', 'v1'))
        self.assertEqual(int(metadata[b('queuecmd_modify_state_executed')]), 1)
        self.assertEqual(int(metadata[b('tasks_executed')]), 1)
        self.assertEqual(metadata[b('queuecmd_modify_state_duration')],
                         metadata[b('tasks_duration')])

        metadata = run_task(modify_state, ('k1', 'v2'))
        self.assertEqual(int(metadata[b('queuecmd_modify_state_executed')]), 2)
        self.assertEqual(int(metadata[b('tasks_executed')]), 2)

        metadata = run_task(blow_up)
        self.assertEqual(int(metadata[b('queuecmd_blow_up_errors')]), 1)
        self.assertFalse(b('queuecmd_blow_up_executed') in metadata)
        self.assertEqual(int(metadata[b('tasks_executed')]), 2)
        self.assertEqual(int(metadata[b('tasks_errors')]), 1)

        metadata = run_task(retry_task, ('test', False))
        self.assertEqual(int(metadata[b('queuecmd_retry_task_errors')]), 1)
        self.assertFalse(b('queuecmd_retry_task_executed') in metadata)
        self.assertEqual(int(metadata[b('tasks_executed')]), 2)
        self.assertEqual(int(metadata[b('tasks_errors')]), 2)
        # Duration is recorded for errors.
        duration = metadata[b('queuecmd_retry_task_duration')]

        self.worker(test_huey.dequeue())
        metadata = test_huey.metadata()
        self.assertEqual(int(metadata[b('queuecmd_retry_task_errors')]), 1)
        self.assertEqual(int(metadata[b('queuecmd_retry_task_executed')]), 1)
        self.assertEqual(int(metadata[b('tasks_executed')]), 3)
        self.assertEqual(int(metadata[b('tasks_errors')]), 2)
        self.assertNotEqual(metadata[b('queuecmd_retry_task_duration')],
                            duration)

        # Scheduled, ready to run when dequeued -- runs like normal.
        modify_state.schedule(args=('k1', 'v3'), eta=datetime.date(2015, 1, 1))
        self.worker(test_huey.dequeue())
        metadata = test_huey.metadata()
        self.assertEqual(int(metadata[b('queuecmd_modify_state_executed')]), 3)
        self.assertEqual(int(metadata[b('tasks_executed')]), 4)

        # When task is put on schedule and not executed immediately, then
        # the `scheduled` metadata count is incremented.
        modify_state.schedule(args=('k1', 'v3'), eta=datetime.date(2030, 1, 1))
        self.worker(test_huey.dequeue())
        metadata = test_huey.metadata()
        self.assertEqual(int(metadata[b('queuecmd_modify_state_executed')]), 3)
        self.assertEqual(int(metadata[b('queuecmd_modify_state_scheduled')]),
                         1)
        self.assertEqual(int(metadata[b('tasks_executed')]), 4)
예제 #2
0
    def test_metadata(self):
        def run_task(fn, a=()):
            fn(*a)
            self.worker(test_huey.dequeue())
            return test_huey.metadata()

        metadata = run_task(modify_state, ('k1', 'v1'))
        self.assertEqual(int(metadata[b('queuecmd_modify_state_executed')]), 1)
        self.assertEqual(int(metadata[b('tasks_executed')]), 1)
        self.assertEqual(metadata[b('queuecmd_modify_state_duration')],
                         metadata[b('tasks_duration')])

        metadata = run_task(modify_state, ('k1', 'v2'))
        self.assertEqual(int(metadata[b('queuecmd_modify_state_executed')]), 2)
        self.assertEqual(int(metadata[b('tasks_executed')]), 2)

        metadata = run_task(blow_up)
        self.assertEqual(int(metadata[b('queuecmd_blow_up_errors')]), 1)
        self.assertFalse(b('queuecmd_blow_up_executed') in metadata)
        self.assertEqual(int(metadata[b('tasks_executed')]), 2)
        self.assertEqual(int(metadata[b('tasks_errors')]), 1)

        metadata = run_task(retry_task, ('test', False))
        self.assertEqual(int(metadata[b('queuecmd_retry_task_errors')]), 1)
        self.assertFalse(b('queuecmd_retry_task_executed') in metadata)
        self.assertEqual(int(metadata[b('tasks_executed')]), 2)
        self.assertEqual(int(metadata[b('tasks_errors')]), 2)
        # Duration is recorded for errors.
        duration = metadata[b('queuecmd_retry_task_duration')]

        self.worker(test_huey.dequeue())
        metadata = test_huey.metadata()
        self.assertEqual(int(metadata[b('queuecmd_retry_task_errors')]), 1)
        self.assertEqual(int(metadata[b('queuecmd_retry_task_executed')]), 1)
        self.assertEqual(int(metadata[b('tasks_executed')]), 3)
        self.assertEqual(int(metadata[b('tasks_errors')]), 2)
        self.assertNotEqual(metadata[b('queuecmd_retry_task_duration')], duration)

        # Scheduled, ready to run when dequeued -- runs like normal.
        modify_state.schedule(args=('k1', 'v3'), eta=datetime.date(2015, 1, 1))
        self.worker(test_huey.dequeue())
        metadata = test_huey.metadata()
        self.assertEqual(int(metadata[b('queuecmd_modify_state_executed')]), 3)
        self.assertEqual(int(metadata[b('tasks_executed')]), 4)

        # When task is put on schedule and not executed immediately, then
        # the `scheduled` metadata count is incremented.
        modify_state.schedule(args=('k1', 'v3'), eta=datetime.date(2030, 1, 1))
        self.worker(test_huey.dequeue())
        metadata = test_huey.metadata()
        self.assertEqual(int(metadata[b('queuecmd_modify_state_executed')]), 3)
        self.assertEqual(int(metadata[b('queuecmd_modify_state_scheduled')]), 1)
        self.assertEqual(int(metadata[b('tasks_executed')]), 4)
예제 #3
0
 def run_task(fn, a=()):
     fn(*a)
     self.worker(test_huey.dequeue())
     return test_huey.metadata()
예제 #4
0
 def run_task(fn, a=()):
     fn(*a)
     self.worker(test_huey.dequeue())
     return test_huey.metadata()