Пример #1
0
def results_to_html(results_dict, cs_base_url, bucket, test_name, builder_name,
                    build_number):
    """Convert list of test results into html format."""

    test_rows_header, test_rows = create_test_table(results_dict, cs_base_url,
                                                    test_name)
    suite_rows_header, suite_rows, suite_row_footer = create_suite_table(
        results_dict)

    suite_table_values = {
        'table_id': 'suite-table',
        'table_headers': suite_rows_header,
        'table_row_blocks': suite_rows,
        'table_footer': suite_row_footer,
    }

    test_table_values = {
        'table_id': 'test-table',
        'table_headers': test_rows_header,
        'table_row_blocks': test_rows,
    }

    main_template = JINJA_ENVIRONMENT.get_template(
        os.path.join('template', 'main.html'))
    dest = google_storage_helper.unique_name(
        '%s_%s_%s' % (test_name, builder_name, build_number))

    result_details_link = google_storage_helper.get_url_link(
        dest, '%s/html' % bucket)

    return (main_template.render(  #  pylint: disable=no-member
        {'tb_values': [suite_table_values, test_table_values],
         'feedback_url': feedback_url(result_details_link)
        }), dest, result_details_link)
def results_to_html(results_dict, cs_base_url, bucket, test_name,
                    builder_name, build_number):
  """Convert list of test results into html format."""

  test_rows_header, test_rows = create_test_table(results_dict, cs_base_url,
                                                  test_name)
  suite_rows_header, suite_rows, suite_row_footer = create_suite_table(
      results_dict)

  suite_table_values = {
    'table_id': 'suite-table',
    'table_headers': suite_rows_header,
    'table_row_blocks': suite_rows,
    'table_footer': suite_row_footer,
  }

  test_table_values = {
    'table_id': 'test-table',
    'table_headers': test_rows_header,
    'table_row_blocks': test_rows,
  }

  main_template = JINJA_ENVIRONMENT.get_template(
      os.path.join('template', 'main.html'))
  dest = google_storage_helper.unique_name(
      '%s_%s_%s' % (test_name, builder_name, build_number))

  result_details_link = google_storage_helper.get_url_link(
      dest, '%s/html' % bucket)

  return (main_template.render(  #  pylint: disable=no-member
      {'tb_values': [suite_table_values, test_table_values],
       'feedback_url': feedback_url(result_details_link)
      }), dest, result_details_link)
  def _SaveScreenshot(self, device, screenshot_host_dir, screenshot_device_file,
                      test_name, results):
    if screenshot_host_dir:
      screenshot_host_file = os.path.join(
          screenshot_host_dir,
          '%s-%s.png' % (
              test_name,
              time.strftime('%Y%m%dT%H%M%S-UTC', time.gmtime())))
      if device.FileExists(screenshot_device_file.name):
        try:
          device.PullFile(screenshot_device_file.name, screenshot_host_file)
        finally:
          screenshot_device_file.close()

        logging.info(
            'Saved screenshot for %s to %s.',
            test_name, screenshot_host_file)
        if self._test_instance.gs_results_bucket:
          link = google_storage_helper.upload(
              google_storage_helper.unique_name(
                  'screenshot', device=device),
              screenshot_host_file,
              bucket=('%s/screenshots' %
                      self._test_instance.gs_results_bucket))
          for result in results:
            result.SetLink('post_test_screenshot', link)
  def _SaveScreenshot(self, device, screenshot_host_dir, screenshot_device_file,
                      test_name, results):
    if screenshot_host_dir:
      screenshot_host_file = os.path.join(
          screenshot_host_dir,
          '%s-%s.png' % (
              test_name,
              time.strftime('%Y%m%dT%H%M%S-UTC', time.gmtime())))
      if device.FileExists(screenshot_device_file.name):
        try:
          device.PullFile(screenshot_device_file.name, screenshot_host_file)
        finally:
          screenshot_device_file.close()

        logging.info(
            'Saved screenshot for %s to %s.',
            test_name, screenshot_host_file)
        if self._test_instance.gs_results_bucket:
          link = google_storage_helper.upload(
              google_storage_helper.unique_name(
                  'screenshot', device=device),
              screenshot_host_file,
              bucket=('%s/screenshots' %
                      self._test_instance.gs_results_bucket))
          for result in results:
            result.SetLink('post_test_screenshot', link)
Пример #5
0
def upload_screenshot_set(json_path, test_name, bucket, builder_name,
                          build_number):
    screenshot_set = ui_screenshot_set(json_path)
    if not screenshot_set:
        return None
    dest = google_storage_helper.unique_name(
        'screenshots_%s_%s_%s' % (test_name, builder_name, build_number),
        suffix='.json')
    with tempfile.NamedTemporaryFile(suffix='.json') as temp_file:
        temp_file.write(screenshot_set)
        temp_file.flush()
        return google_storage_helper.upload(name=dest,
                                            filepath=temp_file.name,
                                            bucket='%s/json' % bucket,
                                            content_type='application/json',
                                            authenticated_link=True)
def results_to_html(results_dict, cs_base_url, bucket, test_name,
                    builder_name, build_number, local_output):
  """Convert list of test results into html format.

  Args:
    local_output: Whether this results file is uploaded to Google Storage or
        just a local file.
  """
  test_rows_header, test_rows = create_test_table(
      results_dict, cs_base_url, test_name)
  suite_rows_header, suite_rows, suite_row_footer = create_suite_table(
      results_dict)

  suite_table_values = {
    'table_id': 'suite-table',
    'table_headers': suite_rows_header,
    'table_row_blocks': suite_rows,
    'table_footer': suite_row_footer,
  }

  test_table_values = {
    'table_id': 'test-table',
    'table_headers': test_rows_header,
    'table_row_blocks': test_rows,
  }

  main_template = JINJA_ENVIRONMENT.get_template(
      os.path.join('template', 'main.html'))

  if local_output:
    html_render = main_template.render(  #  pylint: disable=no-member
        {
          'tb_values': [suite_table_values, test_table_values],
          'feedback_url': feedback_url(None),
        })
    return (html_render, None, None)
  else:
    dest = google_storage_helper.unique_name(
        '%s_%s_%s' % (test_name, builder_name, build_number))
    result_details_link = google_storage_helper.get_url_link(
        dest, '%s/html' % bucket)
    html_render = main_template.render(  #  pylint: disable=no-member
        {
          'tb_values': [suite_table_values, test_table_values],
          'feedback_url': feedback_url(result_details_link),
        })
    return (html_render, dest, result_details_link)
Пример #7
0
def results_to_html(results_dict, cs_base_url, bucket, test_name, builder_name,
                    build_number, local_output):
    """Convert list of test results into html format.

  Args:
    local_output: Whether this results file is uploaded to Google Storage or
        just a local file.
  """
    test_rows_header, test_rows = create_test_table(results_dict, cs_base_url,
                                                    test_name)
    suite_rows_header, suite_rows, suite_row_footer = create_suite_table(
        results_dict)

    suite_table_values = {
        'table_id': 'suite-table',
        'table_headers': suite_rows_header,
        'table_row_blocks': suite_rows,
        'table_footer': suite_row_footer,
    }

    test_table_values = {
        'table_id': 'test-table',
        'table_headers': test_rows_header,
        'table_row_blocks': test_rows,
    }

    main_template = JINJA_ENVIRONMENT.get_template(
        os.path.join('template', 'main.html'))

    if local_output:
        html_render = main_template.render(  #  pylint: disable=no-member
            {
              'tb_values': [suite_table_values, test_table_values],
              'feedback_url': feedback_url(None),
            })
        return (html_render, None, None)
    else:
        dest = google_storage_helper.unique_name(
            '%s_%s_%s' % (test_name, builder_name, build_number))
        result_details_link = google_storage_helper.get_url_link(
            dest, '%s/html' % bucket)
        html_render = main_template.render(  #  pylint: disable=no-member
            {
              'tb_values': [suite_table_values, test_table_values],
              'feedback_url': feedback_url(result_details_link),
            })
        return (html_render, dest, result_details_link)
def upload_screenshot_set(json_path, test_name, bucket, builder_name,
                          build_number):
  screenshot_set = ui_screenshot_set(json_path)
  if not screenshot_set:
    return None
  dest = google_storage_helper.unique_name(
    'screenshots_%s_%s_%s' % (test_name, builder_name, build_number),
    suffix='.json')
  with tempfile.NamedTemporaryFile(suffix='.json') as temp_file:
    temp_file.write(screenshot_set)
    temp_file.flush()
    return google_storage_helper.upload(
        name=dest,
        filepath=temp_file.name,
        bucket='%s/json' % bucket,
        content_type='application/json',
        authenticated_link=True)
Пример #9
0
 def _UploadTestArtifacts(self, device, test_artifacts_dir):
   # TODO(jbudorick): Reconcile this with the output manager once
   # https://codereview.chromium.org/2933993002/ lands.
   if test_artifacts_dir:
     with tempfile_ext.NamedTemporaryDirectory() as test_artifacts_host_dir:
       device.PullFile(test_artifacts_dir.name, test_artifacts_host_dir)
       with tempfile_ext.NamedTemporaryDirectory() as temp_zip_dir:
         zip_base_name = os.path.join(temp_zip_dir, 'test_artifacts')
         test_artifacts_zip = shutil.make_archive(
             zip_base_name, 'zip', test_artifacts_host_dir)
         link = google_storage_helper.upload(
             google_storage_helper.unique_name(
                 'test_artifacts', device=device),
             test_artifacts_zip,
             bucket='%s/test_artifacts' % (
                 self._test_instance.gs_test_artifacts_bucket))
         logging.info('Uploading test artifacts to %s.', link)
         return link
   return None
Пример #10
0
 def _UploadTestArtifacts(self, device, test_artifacts_dir):
   # TODO(jbudorick): Reconcile this with the output manager once
   # https://codereview.chromium.org/2933993002/ lands.
   if test_artifacts_dir:
     with tempfile_ext.NamedTemporaryDirectory() as test_artifacts_host_dir:
       device.PullFile(test_artifacts_dir.name, test_artifacts_host_dir)
       with tempfile_ext.NamedTemporaryDirectory() as temp_zip_dir:
         zip_base_name = os.path.join(temp_zip_dir, 'test_artifacts')
         test_artifacts_zip = shutil.make_archive(
             zip_base_name, 'zip', test_artifacts_host_dir)
         link = google_storage_helper.upload(
             google_storage_helper.unique_name(
                 'test_artifacts', device=device),
             test_artifacts_zip,
             bucket='%s/test_artifacts' % (
                 self._test_instance.gs_test_artifacts_bucket))
         logging.info('Uploading test artifacts to %s.', link)
         return link
   return None