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)
Exemple #2
0
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
Exemple #3
0
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)
Exemple #6
0
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)
Exemple #8
0
def get_pending_jobs(scan_id):
    with session_query() as session:
        scan = Scan.load(scan_id, session)
        return scan.get_pending_jobs_taskid()
Exemple #9
0
def _set_status(scan_id, code):
    with session_transaction() as session:
        scan = Scan.load(scan_id, session)
        scan.status = code
        session.commit()
Exemple #10
0
def get_nbjobs(scan_id):
    with session_query() as session:
        scan = Scan.load(scan_id, session)
        return scan.nb_jobs
Exemple #11
0
def error(scan_id, code):
    with session_transaction() as session:
        scan = Scan.load(scan_id, session)
        scan.status = code