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)
 def test_count_jobs(self):
     """Check Database._count_all_jobs_in_state()"""
     db = MemoryDatabase(Job)
     db._connect(None)
     db._create_tables()
     make_test_jobs(db.conn)
     self.assertEqual(db._count_all_jobs_in_state('INCOMING'), 1)
     self.assertEqual(db._count_all_jobs_in_state('RUNNING'), 2)
     self.assertEqual(db._count_all_jobs_in_state('EXPIRED'), 0)
 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_create_tables(self):
     """Make sure that Database._create_tables() makes tables and indexes"""
     db = MemoryDatabase(Job)
     db._connect(None)
     db._create_tables()
     c = db.conn.cursor()
     c.execute('DROP INDEX state_index')
     for bad_index in ('GARBAGE', 'state', 'name_index'):
         self.assertRaises(sqlite3.OperationalError, c.execute,
                           'DROP INDEX ' + bad_index)
     c.execute('DROP TABLE jobs')
     self.assertRaises(sqlite3.OperationalError, c.execute,
                       'DROP TABLE GARBAGE')
     db.conn.commit()
    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')
Exemple #7
0
def setup_webservice(archive='30d', expire='90d'):
    tmpdir = tempfile.mkdtemp()
    incoming = os.path.join(tmpdir, 'incoming')
    preprocessing = os.path.join(tmpdir, 'preprocessing')
    failed = os.path.join(tmpdir, 'failed')
    os.mkdir(incoming)
    os.mkdir(preprocessing)
    os.mkdir(failed)
    db = MemoryDatabase(MyJob)
    db.add_field(MySQLField('testfield', 'TEXT'))
    conf = Config(StringIO(basic_config \
                           % (incoming, preprocessing, failed, archive,
                              expire)))
    web = WebService(conf, db)
    db._create_tables()
    return db, conf, web, tmpdir