コード例 #1
0
 def test_valid_json_nested_multi_result_test(self) -> None:
     self._do_test(
         MultiTaskResult(TaskResultStatus.FAILURE, "failure message", [
             TaskResult(TaskResultStatus.INFO, "test message"),
             MultiTaskResult(TaskResultStatus.SUCCESS, "success message", [
                 TaskResult(TaskResultStatus.WARNING, "warning message"),
                 MultiTaskResult(TaskResultStatus.UNKNOWN, "unknown message", [
                     TaskResult(TaskResultStatus.FAILURE, "failure 2 message")
                 ])
             ])
         ]))
コード例 #2
0
 def setUp(self):
     self.result1 = mock.MagicMock()
     self.result1.status = TaskResultStatus.SUCCESS
     self.result1.message = "m1"
     self.result2 = mock.MagicMock()
     self.result2.status = TaskResultStatus.FAILURE
     self.result2.message = "m2"
     self.multi_result = MultiTaskResult(TaskResultStatus.INFO, "msg",
                                         [self.result1, self.result2])
コード例 #3
0
def task_result_decoder(obj):
    if 'status' in obj and 'message' in obj:
        status = TaskResultStatus[obj['status']]
        message = obj['message']

        if 'results' in obj and isinstance(obj['results'], Iterable):
            return MultiTaskResult(status, message, obj['results'])
        else:
            return TaskResult(status, message)
    return obj
コード例 #4
0
 async def validate(self,
                    response: aiohttp.ClientResponse) -> BaseTaskResult:
     if response.status == 200:
         return self._result_builder.of_results(
             await response.json(loads=self._deserializer.loads))
     else:
         r = MultiTaskResult(
             TaskResultStatus.FAILURE,
             f'Call to external checklist [{response.real_url}] failed. See subtasks for details.',
             [TaskResult(TaskResultStatus.INFO, await response.text())])
         return r
コード例 #5
0
    def test_dumps_and_get_lines_produces_same_results(self):
        msg1 = 'message1'
        result1 = TaskResult(TaskResultStatus.SUCCESS, msg1)

        msg2 = 'message2'
        result2 = TaskResult(TaskResultStatus.INFO, msg2)

        msg_multi = 'multi message'
        status_multi = TaskResultStatus.FAILURE
        multi = MultiTaskResult(status_multi, msg_multi, [result1, result2])
        self.assertEqual(self.serializer.dumps(multi),
                         '\n'.join(self.serializer.get_lines(multi)))
コード例 #6
0
    def test_multi_result(self):
        msg1 = 'unknown_message'
        result1 = TaskResult(TaskResultStatus.SUCCESS, msg1)

        msg2 = 'unknown_message'
        result2 = TaskResult(TaskResultStatus.INFO, msg2)

        msg_multi = 'multi message'
        status_multi = TaskResultStatus.FAILURE
        multi = MultiTaskResult(status_multi, msg_multi, [result1, result2])
        self.writer.write(multi)

        self.serializer.get_lines.assert_valled_once_with(multi)
コード例 #7
0
    def test_multi_result(self):
        msg1 = 'message1'
        result1 = TaskResult(TaskResultStatus.SUCCESS, msg1)

        msg2 = 'message2'
        result2 = TaskResult(TaskResultStatus.INFO, msg2)

        msg_multi = 'multi message'
        status_multi = TaskResultStatus.FAILURE
        multi = MultiTaskResult(status_multi, msg_multi, [result1, result2])

        self.assertEqual(
            self.serializer.dumps(multi), f'{{"status": "FAILURE", "message": "{msg_multi}", "results": [' +
            f'{{"status": "SUCCESS", "message": "{msg1}"}}, {{"status": "INFO", "message": "{msg2}"}}]}}')
コード例 #8
0
    def test_multi_result(self):
        msg1 = 'unknown_message'
        result1 = TaskResult(TaskResultStatus.SUCCESS, msg1)

        msg2 = 'unknown_message'
        result2 = TaskResult(TaskResultStatus.INFO, msg2)

        msg_multi = 'multi message'
        status_multi = TaskResultStatus.FAILURE
        multi = MultiTaskResult(status_multi, msg_multi, [result1, result2])

        self.assertCountEqual(list(self.serializer.get_lines(multi)), [
            f'[FAILURE ] {msg_multi}',
            f'    [SUCCESS ] {msg1}',
            f'    [INFO    ] {msg2}',
        ])
コード例 #9
0
    def test_defaults(self):
        msg1 = 'message1'
        result1 = TaskResult(TaskResultStatus.SUCCESS, msg1)

        msg2 = 'message2'
        result2 = TaskResult(TaskResultStatus.INFO, msg2)

        msg_multi = 'multi message'
        status_multi = TaskResultStatus.FAILURE
        multi = MultiTaskResult(status_multi, msg_multi, [result1, result2])
        self.writer.write(multi)

        writer = LoggingOutputWriter()
        with self.assertLogs(
                level=logging.DEBUG,
                logger=LoggingOutputWriter.DEFAULT_LOGGER_NAME) as logger:
            writer.write(multi)
            self.assertListEqual(logger.output, [
                'DEBUG:checklist.result:[FAILURE ] multi message',
                'DEBUG:checklist.result:    [SUCCESS ] message1',
                'DEBUG:checklist.result:    [INFO    ] message2',
            ])
コード例 #10
0
 def test_valid_json_simple_multi_result_test(self) -> None:
     self._do_test(
         MultiTaskResult(TaskResultStatus.FAILURE, "failure message", [
             TaskResult(TaskResultStatus.INFO, "test message"),
         ]))
コード例 #11
0
 async def test_error_http_request_with_error_results(self) -> None:
     res = TaskResult(TaskResultStatus.SUCCESS, 'test_message')
     await self._do_test(
         res,
         MultiTaskResult(TaskResultStatus.FAILURE, mock.ANY,
                         [TaskResult(TaskResultStatus.INFO, self._serializer.dumps(res))]))