Esempio n. 1
0
            last_good = yield release_worker.FindRunWorkflow(
                build_id, test.name)
        except release_worker.FindRunError, e:
            yield heartbeat('Could not find last good run for %s' % test.name)
        else:
            ref_image = last_good['image'] or None
            ref_log = last_good['log'] or None
            ref_url = last_good['url'] or None

        yield heartbeat('Uploading data for %s' % test.name)
        yield release_worker.ReportRunWorkflow(build_id,
                                               release_name,
                                               release_number,
                                               test.name,
                                               image_path=test.image_path,
                                               log_path=test.log_path,
                                               url=test.url,
                                               ref_image=ref_image,
                                               ref_log=ref_log,
                                               ref_url=ref_url,
                                               run_failed=test.run_failed)


class DiffMyImages(workers.WorkflowItem):
    """Workflow for diffing set of images generated outside of Depicted.

    Args:
        release_url: URL of the newest and best version of the page.
        tests: List of Test objects to test.
        upload_build_id: Optional. Build ID of the site being compared. When
            supplied a new release will be cut for this build comparing it
                                                   image_path)
            except (process_worker.TimeoutError, OSError), e:
                failure_reason = str(e)
            else:
                capture_failed = returncode != 0
                failure_reason = 'returncode=%s' % returncode

            # Don't upload bad captures, but always upload the error log.
            if capture_failed:
                image_path = None

            yield heartbeat('Reporting capture status to server')
            yield release_worker.ReportRunWorkflow(build_id,
                                                   release_name,
                                                   release_number,
                                                   run_name,
                                                   image_path=image_path,
                                                   log_path=log_path,
                                                   baseline=baseline,
                                                   run_failed=capture_failed)

            if capture_failed:
                raise CaptureFailedError(FLAGS.capture_task_max_attempts,
                                         failure_reason)
        finally:
            shutil.rmtree(output_path, True)


def register(coordinator):
    """Registers this module as a worker with the given coordinator."""
    assert FLAGS.phantomjs_binary
    assert FLAGS.phantomjs_script