Exemplo n.º 1
0
    def __init__(self, suite, config, initial_oldest_ctime, start_tag):
        self.config = config
        self.initial_oldest_ctime = initial_oldest_ctime
        self.start_tag = start_tag

        title = 'suite ' + suite + ' run-time dependency graph'
        # create output directory if necessary
        odir = config['visualization']['runtime graph']['directory']
        # raises OSError:
        mkdir_p(odir)

        self.file = os.path.join(odir, 'runtime-graph.dot')
        self.graph = CGraph(title, config['visualization'])
        self.finalized = False
        self.cutoff = config['visualization']['runtime graph']['cutoff']
Exemplo n.º 2
0
    def __init__(self, suite, config, initial_oldest_ctime, start_tag ):
        self.config = config
        self.initial_oldest_ctime = initial_oldest_ctime
        self.start_tag = start_tag

        title = 'suite ' + suite + ' run-time dependency graph'
        # create output directory if necessary
        odir = config['visualization']['runtime graph']['directory']
        # raises OSError:
        mkdir_p( odir )

        self.file = os.path.join( odir, 'runtime-graph.dot' )
        self.graph = CGraph( title, config['visualization'] )
        self.finalized = False
        self.cutoff = config['visualization']['runtime graph']['cutoff']
Exemplo n.º 3
0
class rGraph( object ):
    def __init__(self, suite, config, initial_oldest_ctime, start_tag ):
        self.config = config
        self.initial_oldest_ctime = initial_oldest_ctime
        self.start_tag = start_tag

        title = 'suite ' + suite + ' run-time dependency graph'
        # create output directory if necessary
        odir = config['visualization']['runtime graph']['directory']
        # raises OSError:
        mkdir_p( odir )

        self.file = os.path.join( odir, 'runtime-graph.dot' )
        self.graph = CGraph( title, config['visualization'] )
        self.finalized = False
        self.cutoff = config['visualization']['runtime graph']['cutoff']

    def update( self, task, oldest_ctime=None, oldest_async_tag=None ):
        if self.finalized:
            return
        if task.is_cycling:
            self.update_cycling( task, oldest_ctime )
        else:
            self.update_async( task, oldest_async_tag )

    def update_cycling( self, task, oldest ):
        # stop if all tasks are more than cutoff hours beyond suite start time
        if self.start_tag:
            st = ct( self.start_tag )
        else:
            st = ct( self.initial_oldest_ctime )

        ot = ct( oldest )
        delta1 = ot.subtract( st )
        delta2 = datetime.timedelta( 0, 0, 0, 0, 0, self.cutoff, 0 )
        if delta1 >= delta2:
            self.finalize()
            return
        # ignore task if its ctime more than configured hrs beyond suite start time?
        st = st
        tt = ct( task.c_time )
        delta1 = tt.subtract(st)
        if delta1 >= delta2:
            return
        for id in task.get_resolved_dependencies():
            l = id
            r = task.id
            self.graph.add_edge( l,r,False )
            self.write()

    def update_async( self, task, oldest ):
        # stop if all tasks are beyond the first tag
        ot = oldest
        if ot > 1:
            self.finalize()
            return
        # ignore tasks beyond the first tag
        tt = int( task.tag )
        if tt > 1:
            return
        for id in task.get_resolved_dependencies():
            l = id
            r = task.id
            self.graph.add_edge( l,r,False )
            self.write()

    def write( self ):
        #print "Writing graph", self.file
        self.graph.write( self.file )

    def finalize( self ):
        #if self.finalized:
        #    return
        #print "Finalizing graph", self.file
        self.write()
        self.finalized = True
Exemplo n.º 4
0
class rGraph(object):
    def __init__(self, suite, config, initial_oldest_ctime, start_tag):
        self.config = config
        self.initial_oldest_ctime = initial_oldest_ctime
        self.start_tag = start_tag

        title = 'suite ' + suite + ' run-time dependency graph'
        # create output directory if necessary
        odir = config['visualization']['runtime graph']['directory']
        # raises OSError:
        mkdir_p(odir)

        self.file = os.path.join(odir, 'runtime-graph.dot')
        self.graph = CGraph(title, config['visualization'])
        self.finalized = False
        self.cutoff = config['visualization']['runtime graph']['cutoff']

    def update(self, task, oldest_ctime=None, oldest_async_tag=None):
        if self.finalized:
            return
        if task.is_cycling():
            self.update_cycling(task, oldest_ctime)
        else:
            self.update_async(task, oldest_async_tag)

    def update_cycling(self, task, oldest):
        # stop if all tasks are more than cutoff hours beyond suite start time
        if self.start_tag:
            st = ct(self.start_tag)
        else:
            st = ct(self.initial_oldest_ctime)

        ot = ct(oldest)
        delta1 = ot.subtract(st)
        delta2 = datetime.timedelta(0, 0, 0, 0, 0, self.cutoff, 0)
        if delta1 >= delta2:
            self.finalize()
            return
        # ignore task if its ctime more than configured hrs beyond suite start time?
        st = st
        tt = ct(task.c_time)
        delta1 = tt.subtract(st)
        if delta1 >= delta2:
            return
        for id in task.get_resolved_dependencies():
            l = id
            r = task.id
            self.graph.add_edge(l, r, False)
            self.write()

    def update_async(self, task, oldest):
        # stop if all tasks are beyond the first tag
        ot = oldest
        if ot > 1:
            self.finalize()
            return
        # ignore tasks beyond the first tag
        tt = int(task.tag)
        if tt > 1:
            return
        for id in task.get_resolved_dependencies():
            l = id
            r = task.id
            self.graph.add_edge(l, r, False)
            self.write()

    def write(self):
        #print "Writing graph", self.file
        self.graph.write(self.file)

    def finalize(self):
        #if self.finalized:
        #    return
        #print "Finalizing graph", self.file
        self.write()
        self.finalized = True