def test_scan_cancel(self): scanid = scan_ctrl.new(self.scanid, self.userid, 10) for code in IrmaScanStatus.label.keys(): scan_ctrl.error(scanid, code) with session_query() as session: scan = Scan.load(scanid, session) self.assertEqual(scan.status, code)
def flush(scan_id): with session_transaction() as session: scan = Scan.load(scan_id, session) if scan.status == IrmaScanStatus.flushed: return for job in scan.jobs: session.delete(job) scan.status = IrmaScanStatus.flushed
def check_finished(scan_id): with session_transaction() as session: scan = Scan.load(scan_id, session) if scan.status == IrmaScanStatus.processed: return True if scan.finished(): scan.status = IrmaScanStatus.processed return True return False
def test_scan_new_status(self): # test we have corrects fields scanid = scan_ctrl.new(self.scanid, self.userid, 10) with session_query() as session: scan = Scan.load(scanid, session) self.assertIsNotNone(scan.timestamp) self.assertEqual(scan.status, IrmaScanStatus.empty) self.assertEqual(scan.nb_files, 10) self.assertIsNotNone(scan.nb_jobs)
def test_scan_launched(self): scan_id = scan_ctrl.new(self.scanid, self.userid, 10) for i in xrange(0, 10): for probe in ['probe1', 'probe2']: job_ctrl.new(scan_id, "file-{0}".format(i), probe, 1) scan_ctrl.launched(scan_id) with session_query() as session: scan = Scan.load(scan_id, session) self.assertEqual(scan.status, IrmaScanStatus.launched) self.assertEqual(scan.nb_files, 10) self.assertEqual(scan.nb_jobs, 20)
def progress(scan_id): with session_query() as session: scan = Scan.load(scan_id, session) if IrmaScanStatus.is_error(scan.status): status_str = IrmaScanStatus.label[scan.status] raise IrmaValueError(status_str) status = IrmaScanStatus.label[scan.status] progress_details = None if scan.status == IrmaScanStatus.launched: (total, finished, success) = scan.progress() progress_details = {} progress_details['total'] = total progress_details['finished'] = finished progress_details['successful'] = success return (status, progress_details)
def test_scan_job_error(self): scan_id = scan_ctrl.new(self.scanid, self.userid, 10) job_ids = [] for i in xrange(0, 10): for probe in ['probe1', 'probe2']: job_ids.append(job_ctrl.new(scan_id, "file-{0}".format(i), probe, 1)) scan_ctrl.launched(scan_id) shuffle(job_ids) for job_id in job_ids: job_ctrl.error(job_id) self.assertTrue(scan_ctrl.check_finished(scan_id)) with session_query() as session: scan = Scan.load(scan_id, session) self.assertEqual(scan.status, IrmaScanStatus.processed) self.assertEqual(scan.nb_files, 10) self.assertEqual(scan.nb_jobs, 20)
def get_pending_jobs(scan_id): with session_query() as session: scan = Scan.load(scan_id, session) return scan.get_pending_jobs_taskid()
def _set_status(scan_id, code): with session_transaction() as session: scan = Scan.load(scan_id, session) scan.status = code session.commit()
def get_nbjobs(scan_id): with session_query() as session: scan = Scan.load(scan_id, session) return scan.nb_jobs
def error(scan_id, code): with session_transaction() as session: scan = Scan.load(scan_id, session) scan.status = code