Esempio n. 1
0
    def _get_file_content(master, builder, test_type, build_number,
                          name):  # pragma: no cover
        """Return content of the file that matches builder and file name.

    Args:
        builder: builder name
        test_type: type of the test
        build_number: build number, or 'latest'
        name: file name
    """

        files = TestFile.get_files(master,
                                   builder,
                                   test_type,
                                   build_number,
                                   name,
                                   load_data=True,
                                   limit=1)
        if not files:
            logging.info(
                ("File not found, master %s, builder: %s, test_type: %s, "
                 "build_number: %s, name: %s."), master, builder, test_type,
                build_number, name)
            return None, None

        return files[0].data, files[0].date
Esempio n. 2
0
 def _get_last_upload_date(master_name, builder, test_type):
     build_number = None
     files = TestFile.get_files(
         master_name, builder, test_type, build_number, "full_results.json", load_data=False, limit=1
     )
     if files:
         return files[0].date
     else:
         return None
Esempio n. 3
0
 def _get_last_upload_date(master_name, builder, test_type):
     build_number = None
     files = TestFile.get_files(master_name,
                                builder,
                                test_type,
                                build_number,
                                'full_results.json',
                                load_data=False,
                                limit=1)
     if files:
         return files[0].date
     else:
         return None
Esempio n. 4
0
    def _get_aggregate_file(cls, master, builder, test_type, filename,
                            deprecated_master):  # pragma: no cover
        files = TestFile.get_files(master, builder, test_type, None, filename)
        if files:
            return files[0]

        if deprecated_master:
            files = TestFile.get_files(deprecated_master, builder, test_type,
                                       None, filename)
            if files:
                deprecated_file = files[0]
                # Change the master so it gets saved out with the new master name.
                deprecated_file.master = master
                return deprecated_file

        record = TestFile()
        record.master = master
        record.builder = builder
        record.test_type = test_type
        record.build_number = None
        record.name = filename
        record.data = ""
        return record
Esempio n. 5
0
    def _get_file_list(self,
                       master,
                       builder,
                       test_type,
                       build_number,
                       name,
                       before,
                       limit,
                       callback_name=None):  # pragma: no cover
        """Get and display a list of files that matches builder and file name.

    Args:
        builder: builder name
        test_type: type of the test
        name: file name
    """

        files = TestFile.get_files(master,
                                   builder,
                                   test_type,
                                   build_number,
                                   name,
                                   before,
                                   load_data=False,
                                   limit=limit)
        if not files:
            logging.info(
                ("File not found, master: %s, builder: %s, test_type: %s, "
                 "build_number: %s, name: %s."), master, builder, test_type,
                build_number, name)
            self.response.out.write("File not found")
            return

        template_values = {
            "admin": users.is_current_user_admin(),
            "master": master,
            "builder": builder,
            "test_type": test_type,
            "build_number": build_number,
            "name": name,
            "files": files,
        }
        if callback_name:
            json = template.render("templates/showfilelist.jsonp",
                                   template_values)
            self._serve_json(_replace_jsonp_callback(json, callback_name),
                             files[0].date)
            return
        self.response.out.write(
            template.render("templates/showfilelist.html", template_values))
Esempio n. 6
0
  def _get_aggregate_file(cls, master, builder, test_type, filename,
        deprecated_master):  # pragma: no cover
    files = TestFile.get_files(master, builder, test_type, None, filename)
    if files:
      return files[0]

    if deprecated_master:
      files = TestFile.get_files(
          deprecated_master, builder, test_type, None, filename)
      if files:
        deprecated_file = files[0]
        # Change the master so it gets saved out with the new master name.
        deprecated_file.master = master
        return deprecated_file

    record = TestFile()
    record.master = master
    record.builder = builder
    record.test_type = test_type
    record.build_number = None
    record.name = filename
    record.data = ""
    return record
Esempio n. 7
0
  def _get_file_content(master, builder, test_type, build_number,
        name):  # pragma: no cover
    """Return content of the file that matches builder and file name.

    Args:
        builder: builder name
        test_type: type of the test
        build_number: build number, or 'latest'
        name: file name
    """

    files = TestFile.get_files(
        master, builder, test_type, build_number, name, load_data=True, limit=1)
    if not files:
      logging.info(("File not found, master %s, builder: %s, test_type: %s, "
                    "build_number: %s, name: %s."),
                   master, builder, test_type, build_number, name)
      return None, None

    return files[0].data, files[0].date
Esempio n. 8
0
  def _get_file_list(self, master, builder, test_type, build_number, name,
      before, limit, callback_name=None):  # pragma: no cover
    """Get and display a list of files that matches builder and file name.

    Args:
        builder: builder name
        test_type: type of the test
        name: file name
    """

    files = TestFile.get_files(
        master, builder, test_type, build_number, name, before,
        load_data=False, limit=limit)
    if not files:
      logging.info(("File not found, master: %s, builder: %s, test_type: %s, "
                    "build_number: %s, name: %s."),
                   master, builder, test_type, build_number, name)
      self.response.out.write("File not found")
      return

    template_values = {
        "admin": users.is_current_user_admin(),
        "master": master,
        "builder": builder,
        "test_type": test_type,
        "build_number": build_number,
        "name": name,
        "files": files,
    }
    if callback_name:
      json = template.render("templates/showfilelist.jsonp", template_values)
      self._serve_json(
          _replace_jsonp_callback(json, callback_name), files[0].date)
      return
    self.response.out.write(template.render("templates/showfilelist.html",
                                            template_values))
Esempio n. 9
0
  def post(self):
    if not self.request.body:
      logging.error('Missing request payload')
      self.response.set_status(400)
      return

    try:
      payload = json.loads(self.request.body)
    except ValueError:
      logging.error('Failed to parse request payload as JSON')
      self.response.set_status(400)
      return

    # Retrieve test json from datastore based on task parameters.
    master = payload.get('master')
    builder = payload.get('builder')
    build_number = payload.get('build_number')
    test_type = payload.get('test_type')
    step_name = payload.get('step_name')
    if (not master or not builder or build_number is None or not test_type or
        not step_name):
      logging.error(
          'Missing required parameters: (master=%s, builder=%s, '
          'build_number=%s, test_type=%s, step_name=%s)' %
          (master, builder, build_number, test_type, step_name))
      self.response.set_status(400)
      return

    files = TestFile.get_files(
        master, builder, test_type, build_number, 'full_results.json',
        load_data=True, limit=1)
    if not files:
      logging.error('Failed to find full_results.json for (%s, %s, %s, %s)' % (
                    master, builder, build_number, test_type))
      self.response.set_status(404)
      return
    file_json = JsonResults.load_json(files[0].data)

    # Create a proto event and send it to event_mon.
    event = event_mon.Event('POINT')
    test_results = event.proto.test_results
    test_results.master_name = master
    test_results.builder_name = builder
    test_results.build_number = int(build_number)
    test_results.test_type = test_type
    test_results.step_name = step_name
    if 'interrupted' in file_json:
      test_results.interrupted = file_json['interrupted']
    if 'version' in file_json:
      test_results.version = file_json['version']
    if 'seconds_since_epoch' in file_json:
      test_results.usec_since_epoch = long(
          float(file_json['seconds_since_epoch']) * 1000 * 1000)

    def convert_test_result_type(json_val):
      self.num_test_results.increment({
          'result_type': json_val, 'master': master, 'builder': builder,
          'test_type': test_type})
      try:
        return (event_mon.protos.chrome_infra_log_pb2.TestResultsEvent.
                TestResultType.Value(json_val.upper().replace('+', '_')))
      except ValueError:
        return event_mon.protos.chrome_infra_log_pb2.TestResultsEvent.UNKNOWN

    tests = util.flatten_tests_trie(
        file_json.get('tests', {}), file_json.get('path_delimiter', '/'))
    for name, test in tests.iteritems():
      test_result = test_results.tests.add()
      test_result.test_name = name
      test_result.actual.extend(
          convert_test_result_type(res) for res in test['actual'])
      test_result.expected.extend(
          convert_test_result_type(res) for res in test['expected'])

    event.send()