def _add_series(server_params, project, time_intervals, signature_hash, signature_props, mysql_debug, verbose): with JobsModel(project) as jm: jm.DEBUG = mysql_debug if verbose: print(signature_hash) jm.set_series_signature(signature_hash, signature_props) for time_interval in time_intervals: pc = PerfherderClient(protocol=server_params.scheme, host=server_params.netloc) series = pc.get_performance_series(project, signature_hash, time_interval=time_interval) jm.store_performance_series(time_interval, "talos_data", str(signature_hash), series)
def _add_series(server_params, project, time_intervals, signature_hash, signature_props, mysql_debug, verbose): with JobsModel(project) as jm: jm.DEBUG = mysql_debug if verbose: print(signature_hash) jm.set_series_signature(signature_hash, signature_props) for time_interval in time_intervals: pc = PerfherderClient(protocol=server_params.scheme, host=server_params.netloc) series = pc.get_performance_series(project, signature_hash, time_interval=time_interval) jm.store_performance_series(time_interval, 'talos_data', str(signature_hash), series)
def handle(self, *args, **options): if options['server']: server_params = urlparse(options['server']) server_protocol = server_params.scheme server_host = server_params.netloc else: server_protocol = settings.TREEHERDER_REQUEST_PROTOCOL server_host = settings.TREEHERDER_REQUEST_HOST if not options['project']: raise CommandError("Must specify at least one project with " "--project") pc = PerfherderClient(protocol=server_protocol, host=server_host) option_collection_hash = pc.get_option_collection_hash() # print csv header print ','.join([ "project", "platform", "signature", "series", "testrun_id", "push_timestamp", "change", "percent change", "t-value", "revision" ]) for project in options['project']: if options['signature']: signatures = [options['signature']] signature_data = {} else: signature_data = pc.get_performance_signatures( project, time_interval=options['time_interval']) signatures = [] signatures_to_ignore = set() # if doing everything, only handle summary series for (signature, properties) in signature_data.iteritems(): signatures.append(signature) if 'subtest_signatures' in properties: # Don't alert on subtests which have a summary signatures_to_ignore.update( properties['subtest_signatures']) signatures = [ signature for signature in signatures if signature not in signatures_to_ignore ] for signature in signatures: series = pc.get_performance_series( project, signature, time_interval=options['time_interval']) series_properties = signature_data.get(signature) if not series_properties: series_properties = pc.get_performance_signature_properties( project, signature) if series_properties.get('subtest_signatures') is not None: meanvar = 'geomean' else: meanvar = 'mean' perf_data = [] for (result_set_id, timestamp, mean) in zip(series['result_set_id'], series['push_timestamp'], series[meanvar]): perf_data.append( PerfDatum(timestamp, mean, testrun_id=result_set_id)) ta = TalosAnalyzer() ta.addData(perf_data) for r in ta.analyze_t(): if r.state == 'regression': resultsets = pc.get_resultsets(project, id=r.testrun_id) if len(resultsets): revision = resultsets[0]['revision'] else: revision = '' initial_value = r.historical_stats['avg'] new_value = r.forward_stats['avg'] if initial_value != 0: pct_change = 100.0 * abs(new_value - initial_value ) / float(initial_value) else: pct_change = 0.0 delta = (new_value - initial_value) print ','.join( map(lambda v: str(v), [ project, series_properties['machine_platform'], signature, self._get_series_description( option_collection_hash, series_properties), r.testrun_id, r.push_timestamp, delta, pct_change, r.t, revision[0:12] ]))
def handle(self, *args, **options): if options['server']: server_params = urlparse(options['server']) server_protocol = server_params.scheme server_host = server_params.netloc else: server_protocol = settings.TREEHERDER_REQUEST_PROTOCOL server_host = settings.TREEHERDER_REQUEST_HOST if not options['project']: raise CommandError("Must specify at least one project with " "--project") pc = PerfherderClient(protocol=server_protocol, host=server_host) option_collection_hash = pc.get_option_collection_hash() # print csv header print ','.join(["project", "signature", "series", "testrun_id", "push_timestamp", "change", "percent change", "t-value", "revision"]) for project in options['project']: if options['signature']: signatures = [options['signature']] signature_data = {} else: signature_data = pc.get_performance_signatures( project, time_interval=options['time_interval']) signatures = [] # if doing everything, only handle summary series for (signature, properties) in signature_data.iteritems(): if 'subtest_signatures' in properties: signatures.append(signature) for signature in signatures: series = pc.get_performance_series( project, signature, time_interval=options['time_interval']) series_properties = signature_data.get(signature) if not series_properties: series_properties = pc.get_performance_signature_properties( project, signature) if series_properties.get('subtest_signatures') is not None: meanvar = 'geomean' else: meanvar = 'mean' perf_data = [] for (result_set_id, timestamp, mean) in zip( series['result_set_id'], series['push_timestamp'], series[meanvar]): perf_data.append(PerfDatum(timestamp, mean, testrun_id=result_set_id)) ta = TalosAnalyzer() ta.addData(perf_data) for r in ta.analyze_t(): if r.state == 'regression': resultsets = pc.get_resultsets(project, id=r.testrun_id) if len(resultsets): revision = resultsets[0]['revision'] else: revision = '' initial_value = r.historical_stats['avg'] new_value = r.forward_stats['avg'] if initial_value != 0: pct_change = 100.0 * abs(new_value - initial_value) / float(initial_value) else: pct_change = 0.0 delta = (new_value - initial_value) print ','.join(map(lambda v: str(v), [project, signature, self._get_series_description( option_collection_hash, series_properties), r.testrun_id, r.push_timestamp, delta, pct_change, r.t, revision[0:12]]))