Beispiel #1
0
def do_fixup(plan):
    # single file, no merge, simple rename
    if len(plan.pickle_files) == 1:
        dst = join(plan.log_d, '.'.join((PICKLE_NAME, plan.func, "p")))
        os.rename(plan.pickle_files[0], dst)
        print("@RENAME: %s => %s" % (plan.pickle_files[0], dst))
    # scattered to multiple files, merge them all
    else:
        pathbin = PathBin(plan.log_d).load_from_pickle(plan.func, plan.pickle_files[0])
        print("@MERGE: %s " % plan.pickle_files[0])
        assert(pathbin)
        for pickle in plan.pickle_files[1:]:
            tempbin = PathBin(plan.log_d).load_from_pickle(plan.func, pickle)
            print("@MERGE: %s " % pickle)
            assert(tempbin)
            pathbin.merge(tempbin)
        pathbin.save_as_pickle()

        # remove temp. pickle files
        for pickle in plan.pickle_files:
            os.remove(pickle)
    return 0
Beispiel #2
0
def do_fixup(plan):
    # single file, no merge, simple rename
    if len(plan.pickle_files) == 1:
        dst = join(plan.log_d, '.'.join((PICKLE_NAME, plan.func, "p")))
        os.rename(plan.pickle_files[0], dst)
        print("@RENAME: %s => %s" % (plan.pickle_files[0], dst))
    # scattered to multiple files, merge them all
    else:
        pathbin = PathBin(plan.log_d).load_from_pickle(plan.func,
                                                       plan.pickle_files[0])
        print("@MERGE: %s " % plan.pickle_files[0])
        assert (pathbin)
        for pickle in plan.pickle_files[1:]:
            tempbin = PathBin(plan.log_d).load_from_pickle(plan.func, pickle)
            print("@MERGE: %s " % pickle)
            assert (tempbin)
            pathbin.merge(tempbin)
        pathbin.save_as_pickle()

        # remove temp. pickle files
        for pickle in plan.pickle_files:
            os.remove(pickle)
    return 0
Beispiel #3
0
 def load_pathbin_from_pickle(self, func, pkl_name):
     if not self.pathbin:
         self.pathbin = PathBin("", verbose=False)
     self.pathbin.load_from_pickle(func, pkl_name)
     return
Beispiel #4
0
 def load_pathbin(self, log_d):
     self.pathbin = PathBin(log_d, verbose=False)
     self.pathbin = self.pathbin.load_pickle()
     return self if self.pathbin is not None else None
Beispiel #5
0
class BaseChecker(object):
    def __init__(self, pathbin=None):
        self.pathbin = pathbin
        self.results = []
        self.avg = RangeSetVector()
        self.avg_distance = 0
        self.colors = []

    def load_pathbin(self, log_d):
        self.pathbin = PathBin(log_d, verbose=False)
        self.pathbin = self.pathbin.load_pickle()
        return self if self.pathbin is not None else None

    def load_pathbin_from_pickle(self, func, pkl_name):
        if not self.pathbin:
            self.pathbin = PathBin("", verbose=False)
        self.pathbin.load_from_pickle(func, pkl_name)
        return

    def get_rtn_paths(self, func):
        return self.pathbin[func]

    def get_rtn_paths_list(self, funcs):
        rtn_paths_list = []
        for func in funcs:
            rtn_paths = self.pathbin[func]
            rtn_paths_list.append(rtn_paths)
        return rtn_paths_list

    def check(self, funcs):
        rvs = self._build_vector(funcs)
        self.avg = calc_average_rsv(rvs)
        self.avg_distance = 0
        for (n, rv) in enumerate(rvs):
            distance = rv.distance(self.avg)
            self.results.append([distance, rv])
            self.avg_distance += distance
        self.avg_distance /= float(n + 1)
        self.results.sort(reverse=True)
        self._build_color_table()

    def _build_color_table(self):
        r4 = (self.results[-1][0] -
              self.avg_distance) / 2.0 + self.avg_distance
        r3 = self.avg_distance
        r2 = (self.results[0][0] - self.avg_distance) / 2.0 + self.avg_distance
        r1 = self.results[0][0]
        self.colors = [(r4, Color.OKGREEN, 'O'), (r3, Color.OKBLUE, 'o'),
                       (r2, Color.WARNING, '?'), (r1, Color.FAIL, 'X')]

    def _get_color_code(self, result):
        distance = result[0]
        for (l, c) in enumerate(self.colors):
            if distance <= c[0]:
                return (c[1], c[2], l)
        assert (0)

    def __repr__(self):
        return "'%s'" % self

    def __str__(self):
        return "%s" % self.results
Beispiel #6
0
 def load_pathbin_from_pickle(self, func, pkl_name):
     if not self.pathbin:
         self.pathbin = PathBin("", verbose=False)
     self.pathbin.load_from_pickle(func, pkl_name)
     return
Beispiel #7
0
 def load_pathbin(self, log_d):
     self.pathbin = PathBin(log_d, verbose=False)
     self.pathbin = self.pathbin.load_pickle()
     return self if self.pathbin is not None else None
Beispiel #8
0
class BaseChecker(object):
    def __init__(self, pathbin = None):
        self.pathbin = pathbin
        self.results = []
        self.avg = RangeSetVector()
        self.avg_distance = 0
        self.colors = []


    def load_pathbin(self, log_d):
        self.pathbin = PathBin(log_d, verbose=False)
        self.pathbin = self.pathbin.load_pickle()
        return self if self.pathbin is not None else None

    def load_pathbin_from_pickle(self, func, pkl_name):
        if not self.pathbin:
            self.pathbin = PathBin("", verbose=False)
        self.pathbin.load_from_pickle(func, pkl_name)
        return

    def get_rtn_paths(self, func):
        return self.pathbin[func]

    def get_rtn_paths_list(self, funcs):
        rtn_paths_list = []
        for func in funcs:
            rtn_paths = self.pathbin[func]
            rtn_paths_list.append(rtn_paths)
        return rtn_paths_list

    def check(self, funcs):
        rvs = self._build_vector(funcs)
        self.avg = calc_average_rsv(rvs)
        self.avg_distance = 0
        for (n, rv) in enumerate(rvs):
            distance = rv.distance(self.avg)
            self.results.append([distance, rv])
            self.avg_distance += distance
        self.avg_distance /= float(n+1)
        self.results.sort(reverse=True)
        self._build_color_table()

    def _build_color_table(self):
        r4 = (self.results[-1][0] - self.avg_distance) / 2.0 + self.avg_distance
        r3 = self.avg_distance
        r2 = (self.results[0][0] - self.avg_distance) / 2.0 + self.avg_distance
        r1 = self.results[0][0]
        self.colors = [(r4, Color.OKGREEN, 'O'),
                       (r3, Color.OKBLUE,  'o'), 
                       (r2, Color.WARNING, '?'), 
                       (r1, Color.FAIL,    'X')]
                       
    def _get_color_code(self, result):
        distance = result[0]
        for (l, c) in enumerate(self.colors):
            if distance <= c[0]:
                return (c[1], c[2], l)
        assert(0)
        
    def __repr__(self):
        return "'%s'" % self

    def __str__(self):
        return "%s"  % self.results
Beispiel #9
0
def do_pickle(plan):
    pathbin = PathBin(plan.log_d, plan.get_pickle_name())
    pathbin.parse_file(plan.fss, plan.start, plan.end)
    pathbin.save_as_pickle()
    return 0
Beispiel #10
0
def do_pickle(plan):
    pathbin = PathBin(plan.log_d, plan.get_pickle_name())
    pathbin.parse_file(plan.fss, plan.start, plan.end)
    pathbin.save_as_pickle()
    return 0