def __init__(self, base_dir=None, wa_dirs=".*", platform=None, kernel_repo_path=None, parse_traces=True, use_cached_trace_metrics=True): self._log = logging.getLogger('WaResultsCollector') if base_dir: base_dir = os.path.expanduser(base_dir) if not isinstance(wa_dirs, basestring): raise ValueError( 'If base_dir is provided, wa_dirs should be a regexp') regex = wa_dirs wa_dirs = self._list_wa_dirs(base_dir, regex) if not wa_dirs: raise ValueError( "Couldn't find any WA results matching '{}' in {}".format( regex, base_dir)) else: if not hasattr(wa_dirs, '__iter__'): raise ValueError( 'if base_dir is not provided, wa_dirs should be a list of paths' ) wa_dirs = [os.path.expanduser(p) for p in wa_dirs] self.platform = platform self.parse_traces = parse_traces if not self.parse_traces: self._log.warning("Trace parsing disabled") self.use_cached_trace_metrics = use_cached_trace_metrics df = pd.DataFrame() df_list = [] for wa_dir in wa_dirs: self._log.info("Reading wa_dir %s", wa_dir) df_list.append(self._read_wa_dir(wa_dir)) df = df.append(df_list) kernel_refs = {} if kernel_repo_path: for sha1 in df['kernel_sha1'].unique(): ref = Git.find_shortest_symref(kernel_repo_path, sha1) if ref: kernel_refs[sha1] = ref common_prefix = os.path.commonprefix(kernel_refs.values()) for sha1, ref in kernel_refs.iteritems(): kernel_refs[sha1] = ref[len(common_prefix):] df['kernel'] = df['kernel_sha1'].replace(kernel_refs) self.results_df = df
def __init__(self, base_dir=None, wa_dirs=".*", platform=None, kernel_repo_path=None, parse_traces=True, use_cached_trace_metrics=True): self._log = logging.getLogger('WaResultsCollector') if base_dir: base_dir = os.path.expanduser(base_dir) if not isinstance(wa_dirs, basestring): raise ValueError( 'If base_dir is provided, wa_dirs should be a regexp') regex = wa_dirs wa_dirs = self._list_wa_dirs(base_dir, regex) if not wa_dirs: raise ValueError("Couldn't find any WA results matching '{}' in {}" .format(regex, base_dir)) else: if not hasattr(wa_dirs, '__iter__'): raise ValueError( 'if base_dir is not provided, wa_dirs should be a list of paths') wa_dirs = [os.path.expanduser(p) for p in wa_dirs] self.platform = platform self.parse_traces = parse_traces if not self.parse_traces: self._log.warning("Trace parsing disabled") self.use_cached_trace_metrics = use_cached_trace_metrics df = pd.DataFrame() for wa_dir in wa_dirs: df = df.append(self._read_wa_dir(wa_dir)) kernel_refs = {} if kernel_repo_path: for sha1 in df['kernel_sha1'].unique(): ref = Git.find_shortest_symref(kernel_repo_path, sha1) if ref: kernel_refs[sha1] = ref common_prefix = os.path.commonprefix(kernel_refs.values()) for sha1, ref in kernel_refs.iteritems(): kernel_refs[sha1] = ref[len(common_prefix):] df['kernel'] = df['kernel_sha1'].replace(kernel_refs) self.results_df = df