def __init__(self, path, user, server, print_log, debug, reply_debug): """ Create a cached instance of a connection to the frontend user: username to connect as server: frontend server to connect to print_log: pring a logging message to stdout on every operation debug: print out all RPC traffic """ if not user and utils.is_in_container(): user = GLOBAL_CONFIG.get_config_value('SSP', 'user', default=None) if not user: user = getpass.getuser() if not server: if 'AUTOTEST_WEB' in os.environ: server = os.environ['AUTOTEST_WEB'] else: server = GLOBAL_CONFIG.get_config_value('SERVER', 'hostname', default=DEFAULT_SERVER) self.server = server self.user = user self.print_log = print_log self.debug = debug self.reply_debug = reply_debug headers = {'AUTHORIZATION': self.user} rpc_server = rpc_client_lib.add_protocol(server) + path if debug: print 'SERVER: %s' % rpc_server print 'HEADERS: %s' % headers self.proxy = rpc_client_lib.get_proxy(rpc_server, headers=headers)
def get_autotest_server(web_server=None): if not web_server: if 'AUTOTEST_WEB' in os.environ: web_server = os.environ['AUTOTEST_WEB'] else: web_server = GLOBAL_CONFIG.get_config_value( 'SERVER', 'hostname', default=DEFAULT_SERVER) web_server = rpc_client_lib.add_protocol(web_server) return web_server
def get_log_url(cls, afe_hostname, logdir): """Return a URL to job results. The URL is constructed from a base URL determined by the global config, plus the relative path of the job's log directory. @param afe_hostname Hostname for autotest frontend @param logdir Relative path of the results log directory. @return A URL to the requested results log. """ return cls._LOG_URL_PATTERN % ( rpc_client_lib.add_protocol(afe_hostname), logdir, )
def link_job(job_id, instance_server=None): """Returns an url to the job on cautotest. @param job_id: A string, representing the job id. @param instance_server: The instance server. Eg: cautotest, cautotest-cq, localhost. @returns: An url to the job on cautotest. """ if not job_id: return 'Job did not run, or was aborted prematurely' if not instance_server: instance_server = global_config.global_config.get_config_value( 'SERVER', 'hostname', default='localhost') instance_server = rpc_client_lib.add_protocol(instance_server) return _job_view % (instance_server, job_id)
def verify_test_results(job_id, expected_results): """Verify the test results with the expected results. @param job_id: id of the running jobs. For suite job, it is suite_job_id. @param expected_results: A dictionary of test name to test result. @raise TestPushException: If verify fails. """ print 'Comparing test results...' test_views = site_utils.get_test_views_from_tko(job_id, TKO) summary = test_push_common.summarize_push(test_views, expected_results, _IGNORED_TESTS) # Test link to log can be loaded. job_name = '%s-%s' % (job_id, getpass.getuser()) log_link = URL_PATTERN % (rpc_client_lib.add_protocol(URL_HOST), job_name) try: urllib2.urlopen(log_link).read() except urllib2.URLError: summary.append('Failed to load page for link to log: %s.' % log_link) if summary: raise TestPushException('\n'.join(summary))
def verify_test_results(job_id, expected_results): """Verify the test results with the expected results. @param job_id: id of the running jobs. For suite job, it is suite_job_id. @param expected_results: A dictionary of test name to test result. @raise TestPushException: If verify fails. """ print 'Comparing test results...' test_views = site_utils.get_test_views_from_tko(job_id, TKO) mismatch_errors = [] extra_test_errors = [] found_keys = set() for test_name, test_status in test_views.items(): print "%s%s" % (test_name.ljust(30), test_status) # platform_InstallTestImage test may exist in old builds. if re.search('platform_InstallTestImage_SERVER_JOB$', test_name): continue test_found = False for key, val in expected_results.items(): if re.search(key, test_name): test_found = True found_keys.add(key) if val != test_status: error = ('%s Expected: [%s], Actual: [%s]' % (test_name, val, test_status)) mismatch_errors.append(error) if not test_found: extra_test_errors.append(test_name) missing_test_errors = set(expected_results.keys()) - found_keys for exception in IGNORE_MISSING_TESTS: try: missing_test_errors.remove(exception) except KeyError: pass summary = [] if mismatch_errors: summary.append(('Results of %d test(s) do not match expected ' 'values:') % len(mismatch_errors)) summary.extend(mismatch_errors) summary.append('\n') if extra_test_errors: summary.append('%d test(s) are not expected to be run:' % len(extra_test_errors)) summary.extend(extra_test_errors) summary.append('\n') if missing_test_errors: summary.append('%d test(s) are missing from the results:' % len(missing_test_errors)) summary.extend(missing_test_errors) summary.append('\n') # Test link to log can be loaded. job_name = '%s-%s' % (job_id, getpass.getuser()) log_link = URL_PATTERN % (rpc_client_lib.add_protocol(URL_HOST), job_name) try: urllib2.urlopen(log_link).read() except urllib2.URLError: summary.append('Failed to load page for link to log: %s.' % log_link) if summary: raise TestPushException('\n'.join(summary))