def load(self, jobStoreID): self._checkJobStoreId(jobStoreID) # Load a valid version of the job jobFile = self._getJobFileName(jobStoreID) with open(jobFile, 'r') as fileHandle: job = JobWrapper.fromDict(pickler.load(fileHandle)) # The following cleans up any issues resulting from the failure of the # job during writing by the batch system. if os.path.isfile(jobFile + ".new"): logger.warn("There was a .new file for the job: %s", jobStoreID) os.remove(jobFile + ".new") job.setupJobAfterFailure(self.config) return job
def testJob(self): """ Tests functions of a job. """ command = "by your command" memory = 2^32 disk = 2^32 cores = 1 jobStoreID = 100 remainingRetryCount = 5 predecessorNumber = 0 updateID = 1000 j = JobWrapper(command, memory, cores, disk, jobStoreID, remainingRetryCount, updateID, predecessorNumber) #Check attributes # self.assertEquals(j.command, command) self.assertEquals(j.memory, memory) self.assertEquals(j.disk, disk) self.assertEquals(j.cores, cores) self.assertEquals(j.jobStoreID, jobStoreID) self.assertEquals(j.remainingRetryCount, remainingRetryCount) self.assertEquals(j.predecessorNumber, predecessorNumber) self.assertEquals(j.updateID, updateID) self.assertEquals(j.stack, []) self.assertEquals(j.predecessorsFinished, set()) self.assertEquals(j.logJobStoreFileID, None) #Check equals function j2 = JobWrapper(command, memory, cores, disk, jobStoreID, remainingRetryCount, updateID, predecessorNumber) self.assertEquals(j, j2) #Change an attribute and check not equal j.predecessorsFinished = set(("1", "2")) self.assertNotEquals(j, j2)
def testJob(self): """ Tests functions of a job. """ command = "by your command" memory = 2 ^ 32 disk = 2 ^ 32 cores = 1 preemptable = 1 jobStoreID = 100 remainingRetryCount = 5 predecessorNumber = 0 j = JobWrapper(command, memory, cores, disk, preemptable, jobStoreID, remainingRetryCount, predecessorNumber) #Check attributes # self.assertEquals(j.command, command) self.assertEquals(j.memory, memory) self.assertEquals(j.disk, disk) self.assertEquals(j.cores, cores) self.assertEquals(j.preemptable, preemptable) self.assertEquals(j.jobStoreID, jobStoreID) self.assertEquals(j.remainingRetryCount, remainingRetryCount) self.assertEquals(j.predecessorNumber, predecessorNumber) self.assertEquals(j.stack, []) self.assertEquals(j.predecessorsFinished, set()) self.assertEquals(j.logJobStoreFileID, None) #Check equals function j2 = JobWrapper(command, memory, cores, disk, preemptable, jobStoreID, remainingRetryCount, predecessorNumber) self.assertEquals(j, j2) #Change an attribute and check not equal j.predecessorsFinished = {"1", "2"} self.assertNotEquals(j, j2)
def create(self, command, memory, cores, disk, predecessorNumber=0): #The absolute path to the job directory. absJobDir = tempfile.mkdtemp(prefix="job", dir=self._getTempSharedDir()) #Sub directory to put temporary files associated with the job in os.mkdir(os.path.join(absJobDir, "g")) #Make the job job = JobWrapper(command=command, memory=memory, cores=cores, disk=disk, jobStoreID=self._getRelativePath(absJobDir), remainingRetryCount=self._defaultTryCount( ), predecessorNumber=predecessorNumber) #Write job file to disk self.update(job) return job
def create(self, command, memory, cores, disk, preemptable, predecessorNumber=0): jobStoreID = self._newID() job = JobWrapper(jobStoreID=jobStoreID, command=command, memory=memory, cores=cores, disk=disk, remainingRetryCount=self._defaultTryCount(), logJobStoreFileID=None, preemptable=preemptable, predecessorNumber=predecessorNumber) self._writeString(jobStoreID, cPickle.dumps(job)) return job