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
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
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
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
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))
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
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
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))
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()