def testA(self): """instantiate""" document = Document() document[u'pset_tweak_details'] = {} document[u'pset_tweak_details'][u'process'] = {} document[u'pset_tweak_details'][u'process'][ u'RandomNumberGeneratorService'] = {} document[u'pset_tweak_details'][u'process'][ u'RandomNumberGeneratorService'][u'seed1'] = {} document[u'pset_tweak_details'][u'process'][ u'RandomNumberGeneratorService'][u'seed2'] = {} document[u'pset_tweak_details'][u'process'][ u'RandomNumberGeneratorService'][u'seed3'] = {} document = self.database.commitOne(document)[0] seeder = ReproducibleSeeding(CouchUrl=self.testInit.couchUrl, CouchDBName=self.testInit.couchDbName, ConfigCacheDoc=document[u'id']) job = Job("testjob") seeder(job) baggage = job.getBaggage() seed1 = getattr(baggage.process.RandomNumberGeneratorService, "seed1", None) self.assertTrue(seed1 != None)
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 testA(self): """instantiate""" document = Document() document[u'pset_tweak_details'] = {} document[u'pset_tweak_details'][u'process'] = {} document[u'pset_tweak_details'][u'process'][u'RandomNumberGeneratorService'] = {} document[u'pset_tweak_details'][u'process'][u'RandomNumberGeneratorService'][u'seed1'] = {} document[u'pset_tweak_details'][u'process'][u'RandomNumberGeneratorService'][u'seed2'] = {} document[u'pset_tweak_details'][u'process'][u'RandomNumberGeneratorService'][u'seed3'] = {} document = self.database.commitOne(document)[0] seeder = ReproducibleSeeding(CouchUrl = self.testInit.couchUrl, CouchDBName = self.testInit.couchDbName, ConfigCacheDoc = document[u'id']) job = Job("testjob") seeder(job) baggage = job.getBaggage() seed1 = getattr(baggage.process.RandomNumberGeneratorService, "seed1", None) self.failUnless(seed1 != None)
class JobTest(unittest.TestCase): """ _JobTest_ Testcase for the Job class Instantiate a dummy Job object with a dummy Subscription and a dummy Fileset full of random files as input """ def setUp(self): """ _setUp_ Initial Setup for the Job Testcase """ self.inputFiles = [] for i in range(1, 1000): lfn = "/store/data/%s/%s/file.root" % (random.randint( 1000, 9999), random.randint(1000, 9999)) size = random.randint(1000, 2000) events = 1000 run = random.randint(0, 2000) lumi = random.randint(0, 8) file = File(lfn=lfn, size=size, events=events, checksums={"cksum": "1"}) file.addRun(Run(run, *[lumi])) self.inputFiles.append(file) self.dummyJob = Job(files=self.inputFiles) return def tearDown(self): """ No tearDown method for this Testcase """ pass def testGetFilesList(self): """ _testGetFilesList_ Verify that the Job::getFiles(type = "list") method returns the same files in the same order that they were passed in. """ assert self.dummyJob.getFiles() == self.inputFiles, \ "ERROR: Initial fileset does not match Job fileset" return def testGetFilesSet(self): """ _testGetFilesSet_ Verify that the Job::getFiles(type = "set") method returns the correct input files in the form of a set. """ assert self.dummyJob.getFiles(type = "set") == set(self.inputFiles), \ "ERROR: getFiles(type = 'set') does not work correctly." return def testGetFilesLFN(self): """ _testGetFilesLFN_ Verify that the Job::getFiles(type = "lfn") method returns the same files in the same order that they were passed in. """ jobLFNs = self.dummyJob.getFiles(type="lfn") goldenLFNs = [] for file in self.inputFiles: goldenLFNs.append(file["lfn"]) assert len(goldenLFNs) == len(jobLFNs), \ "ERROR: Job has different number of files than input" for jobLFN in jobLFNs: assert jobLFN in goldenLFNs, \ "ERROR: LFN missing from job." return def testAddFile(self): """ _testAddFile_ Verify that the Job::addFile() method works properly. """ dummyFileAddFile = File("/tmp/dummyFileAddFileTest", 1234, 1, 2) self.dummyJob.addFile(dummyFileAddFile) assert dummyFileAddFile in self.dummyJob.getFiles(), \ "ERROR: Couldn't add file to Job - addFile method error" return def testChangeState(self): """ _testChangeState_ Verify that the Job::changeState() method updates the state and the state time. """ currentTime = time.time() self.dummyJob.changeState("created") assert self.dummyJob["state_time"] > currentTime - 1 and \ self.dummyJob["state_time"] < currentTime + 1, \ "ERROR: State time not updated on state change" assert self.dummyJob["state"] == "created", \ "ERROR: Couldn't change Job state - changeState method error" def testChangeOutcome(self): """ _testChangeOutcome_ Verify that the Job::changeOutcome() method changes the final outcome of the job. """ self.dummyJob.changeOutcome("success") assert self.dummyJob["outcome"] == "success", \ "ERROR: Job outcome failed to update." return def testGetBaggage(self): """ test that setting/accessing the Job Baggage ConfigSection works """ setattr(self.dummyJob.baggage, "baggageContents", {"key": "value"}) try: baggage = self.dummyJob.getBaggage() except Exception, ex: msg = "Error calling Job.getBaggage()\n" msg += str(ex) self.fail(msg) self.failUnless(hasattr(baggage, "baggageContents"))
class JobTest(unittest.TestCase): """ _JobTest_ Testcase for the Job class Instantiate a dummy Job object with a dummy Subscription and a dummy Fileset full of random files as input """ def setUp(self): """ _setUp_ Initial Setup for the Job Testcase """ self.inputFiles = [] for i in range(1,1000): lfn = "/store/data/%s/%s/file.root" % (random.randint(1000, 9999), random.randint(1000, 9999)) size = random.randint(1000, 2000) events = 1000 run = random.randint(0, 2000) lumi = random.randint(0, 8) file = File(lfn = lfn, size = size, events = events, checksums = {"cksum": "1"}) file.addRun(Run(run, *[lumi])) self.inputFiles.append(file) self.dummyJob = Job(files = self.inputFiles) return def tearDown(self): """ No tearDown method for this Testcase """ pass def testGetFilesList(self): """ _testGetFilesList_ Verify that the Job::getFiles(type = "list") method returns the same files in the same order that they were passed in. """ assert self.dummyJob.getFiles() == self.inputFiles, \ "ERROR: Initial fileset does not match Job fileset" return def testGetFilesSet(self): """ _testGetFilesSet_ Verify that the Job::getFiles(type = "set") method returns the correct input files in the form of a set. """ assert self.dummyJob.getFiles(type = "set") == set(self.inputFiles), \ "ERROR: getFiles(type = 'set') does not work correctly." return def testGetFilesLFN(self): """ _testGetFilesLFN_ Verify that the Job::getFiles(type = "lfn") method returns the same files in the same order that they were passed in. """ jobLFNs = self.dummyJob.getFiles(type = "lfn") goldenLFNs = [] for file in self.inputFiles: goldenLFNs.append(file["lfn"]) assert len(goldenLFNs) == len(jobLFNs), \ "ERROR: Job has different number of files than input" for jobLFN in jobLFNs: assert jobLFN in goldenLFNs, \ "ERROR: LFN missing from job." return def testAddFile(self): """ _testAddFile_ Verify that the Job::addFile() method works properly. """ dummyFileAddFile = File("/tmp/dummyFileAddFileTest", 1234, 1, 2) self.dummyJob.addFile(dummyFileAddFile) assert dummyFileAddFile in self.dummyJob.getFiles(), \ "ERROR: Couldn't add file to Job - addFile method error" return def testChangeState(self): """ _testChangeState_ Verify that the Job::changeState() method updates the state and the state time. """ currentTime = time.time() self.dummyJob.changeState("created") assert self.dummyJob["state_time"] > currentTime - 1 and \ self.dummyJob["state_time"] < currentTime + 1, \ "ERROR: State time not updated on state change" assert self.dummyJob["state"] == "created", \ "ERROR: Couldn't change Job state - changeState method error" def testChangeOutcome(self): """ _testChangeOutcome_ Verify that the Job::changeOutcome() method changes the final outcome of the job. """ self.dummyJob.changeOutcome("success") assert self.dummyJob["outcome"] == "success", \ "ERROR: Job outcome failed to update." return def testGetBaggage(self): """ test that setting/accessing the Job Baggage ConfigSection works """ self.dummyJob.addBaggageParameter("baggageContents", True) self.dummyJob.addBaggageParameter("trustPUSitelists", False) self.dummyJob.addBaggageParameter("skipPileupEvents", 20000) baggage = self.dummyJob.getBaggage() self.assertTrue(getattr(baggage, "baggageContents")) self.assertFalse(getattr(baggage, "trustPUSitelists")) self.assertEqual(getattr(baggage, "skipPileupEvents"), 20000) self.assertFalse(hasattr(baggage, "IDontExist"))