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}
def test_getTimeStamp_1(self): pUtils.getTimeStamp() pUtils.getTimeStamp(0,True) pUtils.getTimeStamp(0,False) pUtils.getTimeStamp(1,True) pUtils.getTimeStamp(1,False)
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
### 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: