def testPersist(self): """ _testPersist_ Verify that we're able to save and load the job package. """ package = JobPackage() for i in range(100): newJob = Job("Job%s" % i) newJob["id"] = i package[i] = newJob package.save(self.persistFile) assert os.path.exists(self.persistFile), \ "Error: Package file was never created." newPackage = JobPackage() newPackage.load(self.persistFile) # There is an extra key for the directory the package is stored in. assert len(newPackage.keys()) == 101, \ "Error: Wrong number of jobs in package." for i in range(100): job = newPackage[i] assert job["id"] == i, \ "Error: Jobs has wrong ID." assert job["name"] == "Job%d" % i, \ "Error: Job has wrong name." return
def testBaggage(self): """ _testBaggage_ Verify that job baggage is persisted with the package. """ package = JobPackage() for i in range(100): newJob = Job("Job%s" % i) newJob["id"] = i baggage = newJob.getBaggage() setattr(baggage, "thisJob", newJob["name"]) setattr(baggage, "seed1", 11111111) setattr(baggage, "seed2", 22222222) setattr(baggage, "seed3", 33333333) setattr(baggage, "seed4", 44444444) setattr(baggage, "seed5", 55555555) package[i] = newJob package.save(self.persistFile) assert os.path.exists(self.persistFile), \ "Error: Package file was never created." newPackage = JobPackage() newPackage.load(self.persistFile) # There is an extra key for the directory the package is stored in. assert len(newPackage.keys()) == 101, \ "Error: Wrong number of jobs in package." for i in range(100): job = newPackage[i] assert job["id"] == i, \ "Error: Jobs has wrong ID." assert job["name"] == "Job%d" % i, \ "Error: Job has wrong name." jobBaggage = job.getBaggage() assert jobBaggage.thisJob == "Job%d" % i, \ "Error: Job baggage has wrong name." assert jobBaggage.seed1 == 11111111, \ "Error: Job baggee has wrong value for seed1." assert jobBaggage.seed2 == 22222222, \ "Error: Job baggee has wrong value for seed2." assert jobBaggage.seed3 == 33333333, \ "Error: Job baggee has wrong value for seed3." assert jobBaggage.seed4 == 44444444, \ "Error: Job baggee has wrong value for seed4." assert jobBaggage.seed5 == 55555555, \ "Error: Job baggee has wrong value for seed5." return
def loadJobDefinition(): """ _loadJobDefinition_ Load the job package and pull out the indexed job, return WMBS Job instance Although this will create a JobReport, it won't necessarily bring it back. Report names are dependent on the retry_count, but if it fails unpacking the job it doesn't know the retry_count and will create the wrong file """ sandboxLoc = locateWMSandbox() package = JobPackage() packageLoc = os.path.join(sandboxLoc, "JobPackage.pcl") try: package.load(packageLoc) except Exception as ex: msg = "Failed to load JobPackage:%s\n" % packageLoc msg += str(ex) createErrorReport(exitCode=11001, errorType="JobPackageError", errorDetails=msg) raise BootstrapException(msg) try: import WMSandbox.JobIndex except ImportError as ex: msg = "Failed to import WMSandbox.JobIndex module\n" msg += str(ex) createErrorReport(exitCode=11002, errorType="JobIndexError", errorDetails=msg) raise BootstrapException(msg) index = WMSandbox.JobIndex.jobIndex try: job = package[index] except Exception as ex: msg = "Failed to extract Job %i\n" % (index) msg += str(ex) createErrorReport(exitCode=11003, errorType="JobExtractionError", errorDetails=msg) raise BootstrapException(msg) diagnostic = """ Job Index = %s Job Instance = %s """ % (index, job) logging.info(diagnostic) return job
def loadJobDefinition(): """ _loadJobDefinition_ Load the job package and pull out the indexed job, return WMBS Job instance Although this will create a JobReport, it won't necessarily bring it back. Report names are dependent on the retry_count, but if it fails unpacking the job it doesn't know the retry_count and will create the wrong file """ sandboxLoc = locateWMSandbox() package = JobPackage() packageLoc = os.path.join(sandboxLoc, "JobPackage.pcl") try: package.load(packageLoc) except Exception as ex: msg = "Failed to load JobPackage:%s\n" % packageLoc msg += str(ex) createErrorReport(exitCode = 11001, errorType = "JobPackageError", errorDetails = msg) raise BootstrapException(msg) try: import WMSandbox.JobIndex except ImportError as ex: msg = "Failed to import WMSandbox.JobIndex module\n" msg += str(ex) createErrorReport(exitCode = 11002, errorType = "JobIndexError", errorDetails = msg) raise BootstrapException(msg) index = WMSandbox.JobIndex.jobIndex try: job = package[index] except Exception as ex: msg = "Failed to extract Job %i\n" % (index) msg += str(ex) createErrorReport(exitCode = 11003, errorType = "JobExtractionError", errorDetails = msg) raise BootstrapException(msg) diagnostic = """ Job Index = %s Job Instance = %s """ % (index, job) logging.info(diagnostic) return job
def loadJobDefinition(): """ _loadJobDefinition_ Load the job package and pull out the indexed job, return WMBS Job instance Although this will create a JobReport, it won't necessarily bring it back. Report names are dependent on the retry_count, but if it fails unpacking the job it doesn't know the retry_count and will create the wrong file """ sandboxLoc = locateWMSandbox() package = JobPackage() packageLoc = os.path.join(sandboxLoc, "JobPackage.pcl") try: package.load(packageLoc) except Exception, ex: msg = "Failed to load JobPackage:%s\n" % packageLoc msg += str(ex) createErrorReport(exitCode = 11001, errorType = "JobPackageError", errorDetails = msg) raise BootstrapException, msg