From aed592188f3c15a5d28d8298ab7f79c926c559b5 Mon Sep 17 00:00:00 2001 From: Igor Adamski Date: Mon, 4 Feb 2019 11:55:27 +0100 Subject: [PATCH] test failing docker --- golem/verificator/blender_verifier.py | 17 +++++------- golem/verificator/rendering_verifier.py | 7 ----- .../golem/verificator/test_blenderverifier.py | 27 +++++++++++++------ 3 files changed, 26 insertions(+), 25 deletions(-) diff --git a/golem/verificator/blender_verifier.py b/golem/verificator/blender_verifier.py index 084b3f19a7..791b97b9f8 100644 --- a/golem/verificator/blender_verifier.py +++ b/golem/verificator/blender_verifier.py @@ -1,6 +1,7 @@ -import logging +from datetime import datetime from typing import Type +import logging import numpy import os import json @@ -10,7 +11,7 @@ from .rendering_verifier import FrameRenderingVerifier from twisted.internet.defer import Deferred -logger = logging.getLogger("apps.blender") +logger = logging.getLogger(__name__) # FIXME #2086 @@ -37,8 +38,8 @@ def _get_part_size(self, subtask_info): numpy.float32(subtask_info['resolution'][1])))) return subtask_info['resolution'][0], res_y - # pylint: disable-msg=too-many-arguments - def _verify_with_reference(self, verification_data): + def start_verification(self, verification_data): + self.time_started = datetime.utcnow() self.verification_data = verification_data try: @@ -106,12 +107,8 @@ def failure(exc): timeout=self.timeout) def error(e): - logger.warning( - "Verification exception %s, accepting task as it's likely not " - "providers fault", - e, - ) - self.finished.callback(True) + logger.warning("Verification process exception %s", e) + self.finished.errback(e) def callback(*_): with open(os.path.join(dir_mapping.output, 'verdict.json'), 'r') \ diff --git a/golem/verificator/rendering_verifier.py b/golem/verificator/rendering_verifier.py index 8aa0a5f532..81bc8d2748 100644 --- a/golem/verificator/rendering_verifier.py +++ b/golem/verificator/rendering_verifier.py @@ -1,7 +1,4 @@ import logging -import math -from datetime import datetime -from collections import Callable from .core_verifier import CoreVerifier from .imgrepr import load_img from .verifier import SubtaskVerificationState @@ -18,10 +15,6 @@ def __init__(self, verification_data): self.results = verification_data["results"] self.state = SubtaskVerificationState.WAITING - def start_verification(self, verification_data): - self.time_started = datetime.utcnow() - return self._verify_with_reference(verification_data) - @staticmethod def check_size(file_, res_x, res_y): img = load_img(file_) diff --git a/tests/golem/verificator/test_blenderverifier.py b/tests/golem/verificator/test_blenderverifier.py index 6a91a3e5c9..c14b1888d6 100644 --- a/tests/golem/verificator/test_blenderverifier.py +++ b/tests/golem/verificator/test_blenderverifier.py @@ -91,7 +91,7 @@ def setUp(self): self.subtask_info['script_filepath'] self.subtask_info['ctd']['subtask_id'] = self.subtask_info['subtask_id'] - def _test_image(self, results, expected_result): + def _test_image(self, results, exception_regex=None): verification_data = {} verification_data['subtask_info'] = self.subtask_info verification_data['results'] = [] @@ -111,25 +111,36 @@ def _test_image(self, results, expected_result): verification_data['paths'] = os.path.dirname(self.resources[0]) verifier = BlenderVerifier(verification_data, DockerTaskThread) - d = verifier._verify_with_reference(verification_data) + d = verifier.start_verification(verification_data) - if expected_result: + if not exception_regex: sync_wait(d, self.TIMEOUT) else: - with self.assertRaisesRegex(Exception, 'result negative'): + with self.assertRaisesRegex(Exception, exception_regex): sync_wait(d, self.TIMEOUT) def test_bad_image(self): - self._test_image(['very_bad_image.png'], False) + self._test_image(['very_bad_image.png'], 'Verification result negative') def test_good_image(self): - self._test_image(['GolemTask_10001.png'], True) + self._test_image(['GolemTask_10001.png']) def test_subsampled_image(self): - self._test_image(['almost_good_image.png'], False) + self._test_image( + ['almost_good_image.png'], + 'Verification result negative', + ) def test_multiple_frames_in_subtask(self): self.subtask_info['all_frames'] = [1, 2] self.subtask_info['frames'] = [1, 2] self.subtask_info['ctd']['extra_data']['frames'] = [1, 2] - self._test_image(['GolemTask_10001.png', 'GolemTask_10002.png'], True) + self._test_image(['GolemTask_10001.png', 'GolemTask_10002.png']) + + def test_docker_error(self): + # Set na invalid param so that Docker computation fails inside + self.subtask_info['frames'] = None + self._test_image( + ['GolemTask_10001.png'], + 'Subtask computation failed with exit code 1', + )