Example #1
0
def createManifest(manifestFileName, inDirectoryFullPath):

    fileNameList = os.listdir(inDirectoryFullPath)

    d = {}
    dc = {}
    d["checksumDict"] = dc
    for fileName in fileNameList:
        if fileName == manifestFileName:
            continue
        fileFullPath = os.path.join(inDirectoryFullPath, fileName)
        t = pUtils.getFileSha1(fileFullPath)
        dc[fileName] = t

    d["meta-data"] = {}
    d["meta-data"]["timeStamp_utc"] = pUtils.getTimeStamp()
    d["meta-data"]["name"] = os.path.basename(inDirectoryFullPath)

    fileFullPath = os.path.join(inDirectoryFullPath, manifestFileName)
    pUtils.quickFileWrite(fileFullPath, json.dumps(d))

    return {"retCode": 0, "errMsg": None}
Example #2
0
 def test_getTimeStamp_1(self):
     pUtils.getTimeStamp()
     pUtils.getTimeStamp(0,True)
     pUtils.getTimeStamp(0,False)
     pUtils.getTimeStamp(1,True)
     pUtils.getTimeStamp(1,False)
Example #3
0
    def __init__(self,siteID,configData,limitDict,dbConfig,rcData,guiApi = None):
    
        ###   Start of init of object variables   ###
        self.j = 0
        self.i = 0
        self.lastTestEntered = ''
        self.allTestResult = True
        self.cycleTestResult = True
        self.isException = False
        
        self.siteID = siteID
        self.configData = configData
        self.limitDict = limitDict
        self.dbConfig = dbConfig
        self.rcData = rcData
        self.guiApi = guiApi
        
        self.configurationManager = ConfigurationManager(self.configData,self.guiApi)
        self.limitManager = LimitManager(limitDict) 
        self.dbApi = DatabaseApi(dbConfig)
        self.routeController = RouteController(self.rcData,self.dbApi)  
        
        self.stationID = socket.gethostname()
        self.testRunID = self.configurationManager.getTestRunID()
        
        
        self.testSuiteID = self.configurationManager.getTestSuiteID()
        self.testSequenceID =  self.configurationManager.getTestSequenceID()
        self.testStationRootFolder = self.configurationManager.getTestStationRootFolder()
        self.isMemoryOnly = self.configurationManager.getIsMemoryOnly()
        self.isStopOnFail = self.configurationManager.getIsStopOnFail()
        self.wholeCycles = self.configurationManager.getWholeCycles()
        self.customResultWindow = self.configurationManager.getCustomResultWindow()
    
        self.isRouteControllerEnable = self.configurationManager.getIsRouteControlEnable()
        self.isSkipBeginningRCcheck = self.configurationManager.getIsSkipBeginningRCcheck()
        self.isDatabaseEnable = self.configurationManager.getIsDatabaseEnable()    
        
        #Init clean reusable variables from guiApi (e.g. queues)
        self.guiApi.sendMessage({'command':'init'})
        #Wait so that the gui receives and handles the message
        sleep(1)
        
        ###   End of init of object variables   ###
        
        
        if  self.configurationManager.getIsAutomaticSNdialog():
            self.automaticSNdialog()
        
        for commName, comm in self.configurationManager.configData['communicators'].items():
            if 'isDefault' in comm and comm['isDefault']:
                if 'isShowInUI' not in comm or comm['isShowInUI']==True:
                    guiApi.sendMessage({'command':'addConsole',
                                        'consoleID':commName,
                                        'title':commName,
                                      })
                defaultCommName = commName
                break
        
        t = self.configurationManager.configData['communicators'].keys()
        t.sort()
        
        for commName in t:
            if commName==defaultCommName: continue
            
            comm = self.configurationManager.configData['communicators'][commName]
            if 'isShowInUI' not in comm or comm['isShowInUI']==True:
                guiApi.sendMessage({'command':'addConsole',
                                    'consoleID':commName,
                                    'title':commName,
                                  })
            
                
        for self.j in range(self.wholeCycles):

            try:
    
                self.i = 0
                self.commDict = {} #Initializes just in case something crashes when initializing the drivers
                self.testSuite = None #Initializes just in case something crashes before getting to it
                
                if self.cycleTestResult==False: self.allTestResult = False
                self.cycleTestResult = True
                
                self.startTimestamp = pUtils.getTimeStamp()
                self.crashLogFullPath = os.path.join(os.environ['MTP_TESTSTATION'],'crashLogs','crashLog_'+self.startTimestamp+'.log')
                self.limitManager.clearTestMeasurementList()
                
                ###   Start of Network Verifications   ###
                if self.isDatabaseEnable:
                    if not self.isDatabaseReachable():
                        self.guiApi.sendMessage(
                            {'command':'pDialog',
                             'buttonTextList':['OK'],
                             'msg':'Unable to reach the database',
                             'imageFileName':'networkProblem.png'})
                        
                        self.guiApi.waitForDialogReturn()
                        raise Exception("Unable to reach the database")

                ###   End of Network Verifications   ###
              
                if self.isMemoryOnly==False:
                    self.testRunFolder = self.configurationManager.initTestRunFolder(self.startTimestamp)
                
                if self.isRouteControllerEnable and (not self.isSkipBeginningRCcheck):

                    SN = self.configurationManager.getSN()
                    dependencyDict = self.configurationManager.getDependencyDict()
                    if self.routeController.isOkToTest(SN,self.testSequenceID,dependencyDict)!=True:
                        self.guiApi.sendMessage({'command':'pDialog',
                                                 'msg':'This unit is not routed to this station. Or a subcomponent has not been tested'
                                                })
                        self.guiApi.waitForDialogReturn()
                        self.lastTestEntered = 'RoutingException'
                        raise Exception ('RoutingException')
               
                try:
                    self.commDict = self.configurationManager.initCommunicators()
                except Exception,e:
                    print 'Failed communicator init'
                    self.commDict = self.configurationManager.getCommDict()
                    self.lastTestEntered = 'CommunicatorsInit'
                    print 'commDict='+str(self.commDict)
                    raise Exception('Failed communicator init:'+str(e))
                
                exec('from MTP.testSuites.'+self.testSuiteID+' import '+self.testSuiteID)
                exec('self.testSuite = '+self.testSuiteID+'(self.configurationManager,self.limitManager)')
                
                try:
                    self.configurationManager.startCommunicatorsByConfig()
                except Exception,e:
                    print 'Failed to startCommunicatorsByConfig'
                    self.commDict = self.configurationManager.getCommDict()
                    self.lastTestEntered = 'startCommunicatorsByConfig'
                    print 'commDict='+str(self.commDict)
                    raise Exception('Failed startCommunicatorsByConfig:'+str(e))
                
                for test in self.configData['testSequence']:
                    if test['cycles']==0: continue
                    
                    self.lastTestEntered = test['testName']
                    
                    for self.i in range(test['cycles']):
                    
                        self.logAll('Start of '+test['testName']+' '+str(self.j)+','+str(self.i),0)
                        
                        testStartTimestamp = pUtils.getTimeStamp()
                        try:
                            exec('measurementDict = self.testSuite.'+test['testName']+'()')
                        except Exception,e:
                            exceptionMsg =  type(e).__name__+':'+ str(e)
                            self.logAll('EXCEPTION:'+exceptionMsg,0)
                            measurementDict = {'EXCEPTION':sanitizeString(exceptionMsg)[0]}
                        
                            
                        testEndTimestamp = pUtils.getTimeStamp()
                        
                        testResult = self.limitManager.checkLimits(test['testName']+'_'+str(self.i),measurementDict,testStartTimestamp,testEndTimestamp)
                        
                        if testResult == False:
                            self.cycleTestResult = False
                            self.allTestResult = False
                        
                        self.logAll('Result of '+test['testName']+' '+str(self.j)+','+str(self.i)+' '+('PASS' if testResult else 'FAIL'),0 )
                        
                        if self.isStopOnFail and testResult==False:
                          break
                    
                    if self.isStopOnFail and testResult==False:
                        break
Example #4
0
   
   ###  End all threads from Communicator instances   ###
   for commName,comm in self.commDict.iteritems():
       if commName=='default': continue
       print 'Signaling END to Communicator:'+commName
       comm.signalEndPollingThread()
   for commName,comm in self.commDict.iteritems():
       if commName=='default': continue
       print 'Waiting for communicator to END:'+commName
       comm.waitForPollinThreadToEnd()
       print '   ...DONE'
       comm.flushLogFileBuffer()
       self.filePointerDictionary['logFile_'+commName] = 'log/'+commName+'.log'
 
   try:
       self.endTimestamp = pUtils.getTimeStamp()
       
       selfStatsFullPath = os.path.join(self.testRunFolder,'selfStats.json')
       
       try:
           selfStats_json = json.dumps(self.configurationManager.selfStats)
       except Exception, e:
           selfStats_json = str(e) +'<...>'+ str(self.configurationManager.selfStats)
       
       pUtils.quickFileWrite(selfStatsFullPath,selfStats_json)
       self.filePointerDictionary['selfStats'] = selfStatsFullPath
       
       SN = self.configurationManager.getSN()
       self.testRunSummary = [SN,self.siteID,self.stationID,self.testSequenceID,self.startTimestamp,self.endTimestamp,self.lastTestEntered,self.cycleTestResult]
       self.testMeasurementList = self.limitManager.testMeasurementList
       if self.testSuite: