def testI(self): JobState.register("jobClassID10","Processing",8,2,"myWorkflowID") #retries=racer=0 self.assertEqual(JobState.general("jobClassID10"),{'Retries': 0, 'CacheDirLocation': None, 'MaxRacers': 2, 'Racers': 0, 'State': 'register', 'MaxRetries': 8, 'JobType': 'Processing'}) JobState.createFailure("jobClassID10") #retries=1, racer=0 self.assertEqual(JobState.general("jobClassID10"),{'Retries': 1, 'CacheDirLocation': None, 'MaxRacers': 2, 'Racers': 0, 'State': 'register', 'MaxRetries': 8, 'JobType': 'Processing'}) JobState.createFailure("jobClassID10") #retries=2, racer=0 self.assertEqual(JobState.general("jobClassID10"),{'Retries': 2, 'CacheDirLocation': None, 'MaxRacers': 2, 'Racers': 0, 'State': 'register', 'MaxRetries': 8, 'JobType': 'Processing'}) JobState.create("jobClassID10","cacheDir/location/10somewhere") #retries=2, racer=0 self.assertEqual(JobState.general("jobClassID10"),{'Retries': 2, 'CacheDirLocation': 'cacheDir/location/10somewhere', 'MaxRacers': 2, 'Racers': 0, 'State': 'create', 'MaxRetries': 8, 'JobType': 'Processing'}) JobState.inProgress("jobClassID10") #retries=2, racer=0 self.assertEqual(JobState.general("jobClassID10"),{'Retries': 2, 'CacheDirLocation': 'cacheDir/location/10somewhere', 'MaxRacers': 2, 'Racers': 0, 'State': 'inProgress', 'MaxRetries': 8, 'JobType': 'Processing'}) JobState.submitFailure("jobClassID10") #retries=3, racer=0 self.assertEqual(JobState.general("jobClassID10"),{'Retries': 3, 'CacheDirLocation': 'cacheDir/location/10somewhere', 'MaxRacers': 2, 'Racers': 0, 'State': 'inProgress', 'MaxRetries': 8, 'JobType': 'Processing'}) JobState.submit("jobClassID10") #retries=3, racer=1 self.assertEqual(JobState.general("jobClassID10"),{'Retries': 3, 'CacheDirLocation': 'cacheDir/location/10somewhere', 'MaxRacers': 2, 'Racers': 1, 'State': 'inProgress', 'MaxRetries': 8, 'JobType': 'Processing'}) JobState.submitFailure("jobClassID10") #retries=4, racer=1 self.assertEqual(JobState.general("jobClassID10"),{'Retries': 4, 'CacheDirLocation': 'cacheDir/location/10somewhere', 'MaxRacers': 2, 'Racers': 1, 'State': 'inProgress', 'MaxRetries': 8, 'JobType': 'Processing'}) JobState.submit("jobClassID10") #retries=4, racer=2 self.assertEqual(JobState.general("jobClassID10"),{'Retries': 4, 'CacheDirLocation': 'cacheDir/location/10somewhere', 'MaxRacers': 2, 'Racers': 2, 'State': 'inProgress', 'MaxRetries': 8, 'JobType': 'Processing'}) # on purpose we introduce an error: try: JobState.submit("jobClassID10") except ProdException, ex: print('>>>Test succeeded for exception 1/1 in testH of JobState_t.py\n')
def handleError(self,payload): jobId = payload generalInfo=JobState.general(jobId) delay=int(self.args['DelayFactor'])*(int(generalInfo['Retries']+1)) delay=convertSeconds(delay) logging.debug(">CreateFailureHandler<: re-creating with delay "+\ " (h:m:s) "+str(delay)) try: JobState.createFailure(jobId) logging.debug(">CreateFailureHandler<: Registered "+\ "a create failure,"\ "publishing a create event") self.publishEvent("CreateJob",(jobId),delay) except ProdException,ex: if(ex["ErrorNr"]==3013): logging.debug(">CreateFailureHandler<: Registered "+\ "a create failure "+ \ "Maximum number of retries reached!" +\ " Submitting a general failure and cleanup job event ") JobState.failed(jobId) self.publishEvent("FailureCleanup",(jobId)) self.publishEvent("GeneralJobFailure",(jobId))