Exemple #1
0
 def test_get_scan(self):
     scan_id = "scan_id"
     Scan.get_scan(scan_id, self.user_id, self.session)
     self.session.query.assert_called_once_with(Scan)
     m_filter = self.session.query(Scan).filter
     m_filter.assert_called_once()
     m_filter().one.assert_called_once()
Exemple #2
0
def new(frontend_scan_id, user, session):
    try:
        scan = Scan.get_scan(frontend_scan_id, user.id, session)
    except IrmaDatabaseResultNotFound:
        scan = Scan(frontend_scan_id, user.id)
        session.add(scan)
        session.commit()
    log.debug("scanid %s: user_id %s id %s", frontend_scan_id, user.id,
              scan.id)
    return scan
Exemple #3
0
def new(frontend_scan_id, user, nb_files, session):
    try:
        scan = Scan.get_scan(frontend_scan_id, user.id, session)
        scan.nb_files += nb_files
        scan.update(['nb_files'], session)
    except IrmaDatabaseResultNotFound:
        scan = Scan(frontend_scan_id, user.id, nb_files)
        scan.save(session)
    session.commit()
    log.debug("scanid %s: user_id %s nb_files %s id %s", frontend_scan_id,
              user.id, nb_files, scan.id)
    return scan
Exemple #4
0
 def test_nb_files(self):
     with patch('brain.models.sqlobjects.Scan.files',
                new_callable=PropertyMock) as mock_files:
         mock_files.return_value = {}
         scan = Scan(self.frontend_scanid, self.user_id)
         self.assertEqual(scan.nb_files, 0)
         mock_files.assert_called_once()
 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 #6
0
 def test001___init__(self):
     scan = Scan(self.frontend_scanid, self.user_id, self.nb_files)
     self.assertEqual(scan.scan_id, self.frontend_scanid)
     self.assertEqual(scan.user_id, self.user_id)
     self.assertEqual(scan.nb_files, self.nb_files)
     self.assertEqual(scan.status, IrmaScanStatus.empty)
     self.assertIsNotNone(scan.timestamp)
Exemple #7
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
 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)
Exemple #9
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
Exemple #10
0
def scan_flush(scan_id):
    try:
        log.info("scan %s: flush requested", scan_id)
        with session_transaction() as session:
            user = User.get_by_rmqvhost(session)
            scan = Scan.get_scan(scan_id, user.id, session)
            scan_ctrl.flush(scan, session)
    except Exception as e:
        log.exception(type(e).__name__ + " : " + str(e))
        return
Exemple #11
0
def scan_flush(scan_id):
    try:
        log.info("scan %s: flush requested", scan_id)
        with session_transaction() as session:
            user = User.get_by_rmqvhost(session)
            scan = Scan.get_scan(scan_id, user.id, session)
            scan_ctrl.flush(scan, session)
    except Exception as e:
        log.exception(e)
        return
Exemple #12
0
def new(frontend_scan_id, user, session):
    try:
        scan = Scan.get_scan(frontend_scan_id, user.id, session)
    except IrmaDatabaseResultNotFound:
        scan = Scan(frontend_scan_id, user.id)
        session.add(scan)
        session.commit()
    log.debug("scanid %s: user_id %s id %s",
              frontend_scan_id, user.id, scan.id)
    return scan
Exemple #13
0
def scan_cancel(frontend_scan_id):
    try:
        with session_transaction() as session:
            user = User.get_by_rmqvhost(session)
            scan = Scan.get_scan(frontend_scan_id, user.id, session)
            res = scan_ctrl.cancel(scan, session)
            return IrmaTaskReturn.success(res)
    except Exception as e:
        log.exception(e)
        return IrmaTaskReturn.error("cancel error on brain")
Exemple #14
0
def scan_cancel(frontend_scan_id):
    try:
        with session_transaction() as session:
            user = User.get_by_rmqvhost(session)
            scan = Scan.get_scan(frontend_scan_id, user.id, session)
            res = scan_ctrl.cancel(scan, session)
            return IrmaTaskReturn.success(res)
    except Exception as e:
        log.exception(e)
        return IrmaTaskReturn.error("cancel error on brain")
Exemple #15
0
def scan_flush(frontend_scan_id):
    try:
        log.info("scan_id %s: scan flush requested", frontend_scan_id)
        with session_transaction() as session:
            user = User.get_by_rmqvhost(session)
            scan = Scan.get_scan(frontend_scan_id, user.id, session)
            scan_ctrl.flush(scan, session)
    except Exception as e:
        log.exception(e)
        return
Exemple #16
0
def files_flush(files, scan_id):
    try:
        with session_transaction() as session:
            user = User.get_by_rmqvhost(session)
            scan = Scan.get_scan(scan_id, user.id, session)
            ftpuser = scan.user.ftpuser
            log.debug("Flushing files %s", files)
            ftp_ctrl.flush(ftpuser, files)
    except Exception as e:
        log.exception(type(e).__name__ + " : " + str(e))
        return
 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 #18
0
def scan_cancel(scan_id):
    try:
        log.info("scan %s: cancel", scan_id)
        with session_transaction() as session:
            user = User.get_by_rmqvhost(session)
            scan = Scan.get_scan(scan_id, user.id, session)
            res = scan_ctrl.cancel(scan, session)
            return IrmaTaskReturn.success(res)
    except Exception as e:
        log.exception(type(e).__name__ + " : " + str(e))
        return IrmaTaskReturn.error("cancel error on brain")
Exemple #19
0
def files_flush(files, scan_id):
    try:
        with session_transaction() as session:
            user = User.get_by_rmqvhost(session)
            scan = Scan.get_scan(scan_id, user.id, session)
            ftpuser = scan.user.ftpuser
            log.debug("Flushing files %s", files)
            ftp_ctrl.flush(ftpuser, files)
    except Exception as e:
        log.exception(e)
        return
Exemple #20
0
 def setUp(self):
     self.session = MagicMock()
     self.name = "user"
     self.rmqvhost = "vhost"
     self.ftpuser = "******"
     self.user = User(self.name, self.rmqvhost, self.ftpuser)
     self.frontend_scanid = "frontend_scanid"
     self.nb_files = randint(50, 100)
     self.scan = Scan(frontend_scanid=self.frontend_scanid,
                      user_id=self.user.id)
     self.scan.user = self.user
Exemple #21
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 #23
0
 def test_get_scan_multiple_found(self):
     self.session.query.side_effect = MultipleResultsFound
     with self.assertRaises(IrmaDatabaseError):
         Scan.get_scan("whatever", self.user_id, self.session)
Exemple #24
0
 def test_get_scan_not_found(self):
     self.session.query.side_effect = NoResultFound
     with self.assertRaises(IrmaDatabaseResultNotFound):
         Scan.get_scan("whatever", self.user_id, self.session)
Exemple #25
0
def error(scan_id, code):
    with session_transaction() as session:
        scan = Scan.load(scan_id, session)
        scan.status = code
Exemple #26
0
def new(frontend_scan_id, user_id, nb_files):
    with session_transaction() as session:
        scan = Scan(frontend_scan_id, user_id, nb_files)
        scan.save(session)
        session.commit()
        return scan.id
Exemple #27
0
def get_scan_id(frontend_scan_id, user_id):
    with session_query() as session:
        scan = Scan.get_scan(frontend_scan_id, user_id, session)
        return scan.id
Exemple #28
0
def get_nbjobs(scan_id):
    with session_query() as session:
        scan = Scan.load(scan_id, session)
        return scan.nb_jobs
Exemple #29
0
def _set_status(scan_id, code):
    with session_transaction() as session:
        scan = Scan.load(scan_id, session)
        scan.status = code
        session.commit()
Exemple #30
0
def get_pending_jobs(scan_id):
    with session_query() as session:
        scan = Scan.load(scan_id, session)
        return scan.get_pending_jobs_taskid()