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
예제 #2
0
    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