Ejemplo n.º 1
3
    def __init__(self):
        Archiver.__init__(self)

        self.host = settings.DATABASES['default']['HOST']
        self.cnn = pg.connect(dbname = settings.BENCHMARK_DB_NAME
                            , host   = self.host
                            , port   = int(settings.DATABASES['default']['PORT'])
                            , user   = settings.DATABASES['default']['USER']
                            , passwd = settings.DATABASES['default']['PASSWORD']
                             )
                             
        if self.cnn == None:
            raise LookupError, "Failed to connect to Benchmark database."
Ejemplo n.º 2
3
class BenchTestCase(NellTestCase):

    """
    This class extends the unittest.TestCase class in order to include
    measurments of perfomance time of desired test.
    """

    def __init__(self, *args, **kws):
        super(BenchTestCase, self).__init__(*args, **kws)

        self.archiver    = Archiver() if settings.BENCHMARK_DB_NAME is None else dbArchiver(self.__class__.__name__)
        self.elapsedTime = 0.0
        self.startTime   = 0.0
        self.stopTime    = 0.0

    def startTimer(self):
        """
        Records start time, and calls stub method for marking start
        of test. Used in conjunction with the following function to
        time portions of a test.
        """
     
        #self.getTestStartInfo()
        self.onStartTest()
        self.archiver.onStartTest()
        
        self.startTime = time.time()

        # save for posterity.
        self.saveValue("start_time", self.startTime)

        return self.startTime

    def stopTimer(self):
        """
        Records stop time and elapsed time, and calls stub method
        for marking end of test.
        """
        
        self.stopTime    = time.time() 
        self.elapsedTime = self.stopTime - self.startTime

        self.onEndTest()
        self.archiver.onEndTest()
        
        # save for posterity.
        self.saveValue("stop_time",    self.stopTime)
        self.saveValue("elapsed_time", self.elapsedTime)
        self.archiver.write()

        return self.stopTime

    def timeFunc(self, name, func, *args):
        """
        Calls a given function, and calculates its elapsed time.
        Used in conjunction with decorator timeIt to time an
        entire test.
        """
        
        # Save for posterity.
        self.saveValue("name", name)

        startTime = self.startTimer()
        func(self, *args)
        stopTime  = self.stopTimer()

        return stopTime - startTime
        
    def onStartTest(self):
        pass

    def onEndTest(self):
        pass 
        
    def assertTimeInRange(self, min, max):
        self.assertTimeLessThen(max)
        self.assertTimeGreaterThen(min)

    def assertTimeGreaterThen(self, minTime):
        if self.elapsedTime < minTime:
            raise self.failureException, \
                  ('time passed: %f less then min time: %f' % \
                   (self.elapsedTime, minTime))

    def assertTimeLessThen(self, maxTime):
        if self.elapsedTime > maxTime:
            raise self.failureException, \
                  ('time passed: %f greater then max time: %f' % \
                   (self.elapsedTime, maxTime))

    def assertTimeNotAboveAvg(self, avgRange):
        if self.getAvgElapsedTime() > avgRange:
            raise self.failureException, \
                  ('time passed: %f above average of %f by too much.' % \
                   (self.elapsedTime, 0.0))

    def getElapsedTime(self):
        return self.elapsedTime

    def getAvgElapsedTime(self):
        return self.archiver.getAvgElapsedTime()

    def getTestStartInfo(self):
        os.system("top b n 1 > startTop.txt")
        f = open("startTop.txt",'r')
        self.startTopLines = f.readlines()
        f.close()

    def getTestStopInfo(self):
        os.system("top b n 1 > stopTop.txt")
        f = open("stopTop.txt",'r')
        self.stopTopLines = f.readlines()
        f.close()

    def saveValue(self, name, value):
        self.archiver.setValue(name, value)
Ejemplo n.º 3
0
    def get_instrument_values(self,inst_id=None,position=None,ts=None):
        """ given an instrument id and either a position name or timestamp
        return a list of (pvname,values) tuples for all PVs in that instrument.
        returns list_of_pv_values
        where list_of_pv_values is a list of (pvname,values)

        Note that the values returned may be None, meaning 'unknown'
        """
        if position is not None:
            try:
                pos_id,pos_name,ts,a = self.get_positions(inst_id=inst_id,name=position)[0]
            except IndexError:
                ts = None

        if ts is None:
            return ([], 0)

        pvs = [i['pvname'] for i in self.inst_pvs.select(where="inst=%i" % inst_id)]

        data = dict.fromkeys(pvs,None)

        a = Archiver()

        for pvname in pvs:
            for d in a.get_data(pvname,ts-3600.0,ts)[0]:
                if d[0] <= ts:  data[pvname] = d[1]

        a.db.close()
        
        pvnames = data.keys()
        pvnames.sort()
        vals = [(p,data[p]) for p in pvnames]
        return vals,ts
Ejemplo n.º 4
0
    def __init__(self, kase):
        Archiver.__init__(self)

        self.cnn = CNN
        if self.cnn == None:
            raise LookupError, "Failed to connect to Benchmark database."

        self.kase = kase
Ejemplo n.º 5
0
    def __init__(self, *args, **kws):
        super(BenchTestCase, self).__init__(*args, **kws)

        self.archiver    = Archiver() if settings.BENCHMARK_DB_NAME is None else dbArchiver(self.__class__.__name__)
        self.elapsedTime = 0.0
        self.startTime   = 0.0
        self.stopTime    = 0.0