コード例 #1
0
ファイル: jobGraphTest.py プロジェクト: Duke-GCB/toil
class JobGraphTest(ToilTest):
    
    def setUp(self):
        super(JobGraphTest, self).setUp()
        self.jobStorePath = self._getTestJobStorePath()
        parser = ArgumentParser()
        Job.Runner.addToilOptions(parser)
        options = parser.parse_args(args=[self.jobStorePath])
        self.toil = Toil(options)
        self.assertEquals( self.toil, self.toil.__enter__() )

    def tearDown(self):
        self.toil.__exit__(None, None, None)
        self.toil._jobStore.destroy()
        self.assertFalse(os.path.exists(self.jobStorePath))
        super(JobGraphTest, self).tearDown()
    
    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 = JobGraph(command=command, memory=memory, cores=cores, disk=disk, preemptable=preemptable,
                     jobStoreID=jobStoreID, remainingRetryCount=remainingRetryCount,
                     predecessorNumber=predecessorNumber, jobName='testJobGraph', unitName='noName')
        
        #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 = JobGraph(command=command, memory=memory, cores=cores, disk=disk,
                      preemptable=preemptable,
                      jobStoreID=jobStoreID, remainingRetryCount=remainingRetryCount,
                      predecessorNumber=predecessorNumber, jobName='testJobGraph', unitName='noName')
        self.assertEquals(j, j2)
        #Change an attribute and check not equal
        j.predecessorsFinished = {"1", "2"}
        self.assertNotEquals(j, j2)
コード例 #2
0
class JobWrapperTest(ToilTest):
    
    def setUp(self):
        super(JobWrapperTest, self).setUp()
        self.jobStorePath = self._getTestJobStorePath()
        parser = ArgumentParser()
        Job.Runner.addToilOptions(parser)
        options = parser.parse_args(args=[self.jobStorePath])
        self.toil = Toil(options)
        self.assertEquals( self.toil, self.toil.__enter__() )

    def tearDown(self):
        self.toil.__exit__(None, None, None)
        self.toil._jobStore.deleteJobStore()
        self.assertFalse(os.path.exists(self.jobStorePath))
        super(JobWrapperTest, self).tearDown()
    
    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)
コード例 #3
0
class JobDescriptionTest(ToilTest):
    
    def setUp(self):
        super().setUp()
        self.jobStorePath = self._getTestJobStorePath()
        parser = ArgumentParser()
        Job.Runner.addToilOptions(parser)
        options = parser.parse_args(args=[self.jobStorePath])
        self.toil = Toil(options)
        self.assertEqual( self.toil, self.toil.__enter__() )

    def tearDown(self):
        self.toil.__exit__(None, None, None)
        self.toil._jobStore.destroy()
        self.assertFalse(os.path.exists(self.jobStorePath))
        super().tearDown()
    @travis_test
    def testJobDescription(self):       
        """
        Tests the public interface of a JobDescription.
        """ 
    
        command = "by your command"
        memory = 2^32
        disk = 2^32
        cores = "1"
        preemptable = 1
        
        j = JobDescription(command=command, requirements={"memory": memory, "cores": cores, "disk": disk, "preemptable": preemptable},
                           jobName='testJobGraph', unitName='noName')
        
        #Check attributes
        self.assertEqual(j.command, command)
        self.assertEqual(j.memory, memory)
        self.assertEqual(j.disk, disk)
        self.assertEqual(j.cores, int(cores))
        self.assertEqual(j.preemptable, bool(preemptable))
        self.assertEqual(type(j.jobStoreID), TemporaryID)
        self.assertEqual(list(j.successorsAndServiceHosts()), [])
        self.assertEqual(list(j.allSuccessors()), [])
        self.assertEqual(list(j.serviceHostIDsInBatches()), [])
        self.assertEqual(list(j.services), [])
        self.assertEqual(list(j.nextSuccessors()), [])
        self.assertEqual(sum((len(level) for level in j.stack)), 0)
        self.assertEqual(j.predecessorsFinished, set())
        self.assertEqual(j.logJobStoreFileID, None)
        
        #Check equals function (should be based on object identity and not contents)
        j2 = JobDescription(command=command, requirements={"memory": memory, "cores": cores, "disk": disk, "preemptable": preemptable},
                            jobName='testJobGraph', unitName='noName')
        self.assertNotEqual(j, j2)
        
        ###TODO test other functionality
        
        
    @travis_test
    def testJobDescriptionSequencing(self):
        j = JobDescription(command='command', requirements={},  jobName='unimportant')
        
        j.addChild('child')
        j.addFollowOn('followOn')
        
        # With a command, nothing should be ready to run
        self.assertEqual(list(j.nextSuccessors()), [])
        
        # With command cleared, child should be ready to run
        j.command = None
        self.assertEqual(list(j.nextSuccessors()), ['child'])
        
        # Without the child, the follow-on should be ready to run
        j.filterSuccessors(lambda jID: jID != 'child')
        self.assertEqual(list(j.nextSuccessors()), ['followOn'])
        
        # Without the follow-on, we should return None, to be distinct from an
        # empty list. Nothing left to do!
        j.filterSuccessors(lambda jID: jID != 'followOn')
        self.assertEqual(j.nextSuccessors(), None)