예제 #1
0
    def test_spooler_task_introspection(self):
        with self.patcher as uwsgi_mock:
            uwsgi_mock.opt = {'spooler': '/tmp/spooler'}

            s_task = spooler_and_task_introspection('a', 1)
            message = s_task.get_message_content()
            manage_spool_request(message)

            new_message = uwsgi_mock.spool.call_args_list[-1][0][0]
            manage_spool_request(new_message)

        self.storage.assert_called_with('a', 1)
        self.assertEqual(2, self.storage.call_count)
예제 #2
0
    def test_spooler_task_execution(self):
        with self.patcher as uwsgi_mock:
            uwsgi_mock.opt = {'spooler': '/tmp/spooler'}
            uwsgi_mock.SPOOL_OK = SPOOL_OK

            s_task = spooler_task(0, '1')
            message = s_task.get_message_content()

            self.assertEqual(message[b'priority'], b'10')
            uwsgi_mock.spool.assert_called_with(message)
            manage_spool_request(message)

        self.storage.assert_called_once_with(0, '1')
예제 #3
0
    def test_spooler_task_execution(self):
        with self.patcher as uwsgi_mock:
            uwsgi_mock.opt = {'spooler': '/tmp/spooler'}
            uwsgi_mock.SPOOL_OK = SPOOL_OK

            s_task = spooler_task(0, '1')
            message = s_task.get_message_content()

            self.assertEqual(message['priority'], 10)
            uwsgi_mock.spool.assert_called_with(message)
            manage_spool_request(message)

        self.storage.assert_called_once_with(0, '1')
예제 #4
0
    def test_spooler_task_large_args_in_body(self):
        large_arg = 'b' * 64 * 1024
        with self.patcher as uwsgi_mock:
            uwsgi_mock.opt = {'spooler': '/tmp/spooler'}
            s_task = spooler_task('a', large_arg)
            message = s_task.get_message_content()

            expected_args = s_task._encode_message({
                'args': serialize(()),
                'kwargs': serialize({}),
            })

            self.assertEqual(message[b'args'], expected_args[b'args'])
            self.assertEqual(message[b'kwargs'], expected_args[b'kwargs'])
            manage_spool_request(message)

        self.storage.assert_called_once_with('a', large_arg)
예제 #5
0
    def test_spooler_retry_on_exception(self):
        with self.patcher as uwsgi_mock:
            uwsgi_mock.opt = {'spooler': '/tmp/spooler'}
            uwsgi_mock.SPOOL_OK = SPOOL_OK

            s_task = spooler_retry_task(666, 777)
            message = s_task.get_message_content()
            self.assertFalse(message.get('at'))

            uwsgi_mock.spool.assert_called_with(message)
            manage_spool_request(message)
            self.storage.assert_called_once_with(666, 777)

            new_message = uwsgi_mock.spool.call_args_list[-1][0][0]
            self.assertTrue(new_message.get('at'))

            manage_spool_request(message)

        self.assertEqual(2, self.storage.call_count)
예제 #6
0
    def test_spooler_retry_on_exception(self):
        with self.patcher as uwsgi_mock:
            uwsgi_mock.opt = {'spooler': '/tmp/spooler'}
            uwsgi_mock.SPOOL_OK = SPOOL_OK

            s_task = spooler_retry_task(666, 777)
            message = s_task.get_message_content()
            self.assertFalse(message.get('at'))

            uwsgi_mock.spool.assert_called_with(message)
            manage_spool_request(message)
            self.storage.assert_called_once_with(666, 777)

            new_message = uwsgi_mock.spool.call_args_list[-1][0][0]
            self.assertTrue(new_message.get('at'))

            manage_spool_request(message)

        self.assertEqual(2, self.storage.call_count)
예제 #7
0
    def test_task_working_directory_changed(self):
        current_dir = os.getcwd()

        with self.patcher as uwsgi_mock:
            uwsgi_mock.opt = {'spooler': SPOOLER_DIR}

            s_task = spooler_task_with_cwd_changed()
            message = s_task.get_message_content()
            os.chdir(SPOOLER_DIR)
            manage_spool_request(message)
            self.assertTrue(self.storage.called)
            self.storage.reset_mock()

            os.chdir(current_dir)

            s_task = spooler_task_with_cwd_not_changed()
            message = s_task.get_message_content()
            os.chdir(SPOOLER_DIR)
            manage_spool_request(message)
            self.assertTrue(self.storage.called)
            self.storage.reset_mock()

        os.chdir(current_dir)