def test_update_job(self):
     """Check Database._update_job()"""
     db = MemoryDatabase(Job)
     db._connect(None)
     db._create_tables()
     make_test_jobs(db.conn)
     job = list(db._get_all_jobs_in_state('INCOMING'))[0]
     job._metadata['runner_id'] = 'new-SGE-ID'
     db._update_job(job._metadata, 'INCOMING')
     # Get a fresh copy of the job from the database
     newjob = list(db._get_all_jobs_in_state('INCOMING'))[0]
     self.assert_(job is not newjob)
     self.assertEqual(newjob._metadata['runner_id'], 'new-SGE-ID')
    def test_order_by(self):
        """Test Database._get_all_jobs_in_state() order_by parameter"""
        db = MemoryDatabase(Job)
        db._connect(None)
        db._create_tables()
        make_test_jobs(db.conn)
        jobs = list(db._get_all_jobs_in_state('RUNNING'))
        # Jobs should come out in the same order they were inserted
        self.assertEqual([x._metadata['name'] for x in jobs], ['job2', 'job3'])

        jobs = list(db._get_all_jobs_in_state('RUNNING',
                                              order_by='submit_time'))
        # Jobs should be sorted by submit time
        self.assertEqual([x._metadata['name'] for x in jobs], ['job3', 'job2'])
 def test_change_job_state(self):
     """Check Database._change_job_state()"""
     db = MemoryDatabase(Job)
     db._connect(None)
     db._create_tables()
     make_test_jobs(db.conn)
     job = list(db._get_all_jobs_in_state('INCOMING'))[0]
     # side effect: should update _metadata
     job._metadata['runner_id'] = 'new-SGE-ID'
     db._change_job_state(job._metadata, 'INCOMING', 'FAILED')
     jobs = list(db._get_all_jobs_in_state('INCOMING'))
     self.assertEqual(len(jobs), 0)
     jobs = list(db._get_all_jobs_in_state('FAILED'))
     self.assertEqual(len(jobs), 1)
     self.assertEqual(jobs[0]._metadata['runner_id'], 'new-SGE-ID')
 def test_get_jobs(self):
     """Check Database._get_all_jobs_in_state()"""
     db = MemoryDatabase(Job)
     db._connect(None)
     db._create_tables()
     make_test_jobs(db.conn)
     jobs = list(db._get_all_jobs_in_state('INCOMING'))
     self.assertEqual(len(jobs), 1)
     self.assertEqual(jobs[0]._metadata['name'], 'job1')
     self.assertEqual(jobs[0]._metadata['runner_id'], 'SGE-job-1')
     jobs = list(db._get_all_jobs_in_state('RUNNING'))
     self.assertEqual(len(jobs), 2)
     jobs = list(db._get_all_jobs_in_state('INCOMING', name='job1'))
     self.assertEqual(len(jobs), 1)
     jobs = list(db._get_all_jobs_in_state('INCOMING', name='job2'))
     self.assertEqual(len(jobs), 0)
     jobs = list(db._get_all_jobs_in_state('INCOMING',
                                           after_time='expire_time'))
     self.assertEqual(len(jobs), 0)
     jobs = list(db._get_all_jobs_in_state('RUNNING',
                                           after_time='expire_time'))
     self.assertEqual(len(jobs), 1)
     self.assertEqual(jobs[0]._metadata['name'], 'job3')
     jobs = list(db._get_all_jobs_in_state('COMPLETED',
                                           after_time='expire_time'))
     self.assertEqual(len(jobs), 0)