Ejemplo n.º 1
0
    def testStateOtherStatesIM(self):
        '''test alert state NEW in memory'''
        self.teal = Teal('data/alert_test/test.conf', 'stderr', msgLevel=self.msglevel, commit_alerts=False, commit_checkpoints=False)

        j_in_dq = Journal('j_in_DQ', 'data/alert_test/inject_DQ_alerts.json')
        tq = ListenableQueue('test LQ')
        ql = CheckAlertStateListener(7)
        tq.register_listener(ql)
        j_in_dq.inject_queue(tq, progress_cb=None, fail_on_invalid=False, no_delay=True)
        ql.my_event.wait()
        self.assertEquals(ql.count, 7)
        ta1 = ql.alerts[0]
        am = get_service(SERVICE_ALERT_MGR)
        # TODO: Should not be hardcoded rec ids after this 
        self.assertRaisesTealError(AlertMgrError, 'Operation not allowed on duplicate alert', am.close, 5)
        self.assertRaisesTealError(AlertMgrError, 'Operation not allowed on duplicate alert', am.close, 6)
        self.assertRaisesTealError(AlertMgrError, 'Current alert state does not allow this operation', am.reopen, ta1.rec_id)
        am.close(ta1.rec_id)
        self.assertEquals(ta1.state, ALERT_STATE_CLOSED)
        self.assertRaisesTealError(AlertMgrError, 'Current alert state does not allow this operation', am.close, ta1.rec_id)
        self.assertRaisesTealError(AlertMgrError, 'Alert with specified record id not found', am.close, 23456)
        self.assertEquals(ql.alerts[1].state, ALERT_STATE_OPEN)
        self.assertEquals(ql.alerts[2].state, ALERT_STATE_OPEN)
        self.assertEquals(ql.alerts[3].state, ALERT_STATE_OPEN)
        self.assertEquals(ql.alerts[4].state, ALERT_STATE_CLOSED)
        self.assertEquals(ql.alerts[5].state, ALERT_STATE_CLOSED)
        self.assertEquals(ql.alerts[6].state, ALERT_STATE_OPEN)
        # reopen it 
        self.assertRaisesTealError(AlertMgrError, 'Alert with specified record id not found', am.reopen, 23456)
        self.assertRaisesTealError(AlertMgrError, 'Operation not allowed on duplicate alert', am.reopen, 5)
        self.assertRaisesTealError(AlertMgrError, 'Operation not allowed on duplicate alert', am.reopen, 6)
        am.reopen(ta1.rec_id)
        self.assertEquals(ta1.state, ALERT_STATE_OPEN)
        self.assertEquals(ql.alerts[1].state, ALERT_STATE_OPEN)
        self.assertEquals(ql.alerts[2].state, ALERT_STATE_OPEN)
        self.assertEquals(ql.alerts[3].state, ALERT_STATE_OPEN)
        self.assertEquals(ql.alerts[4].state, ALERT_STATE_OPEN)
        self.assertEquals(ql.alerts[5].state, ALERT_STATE_OPEN)
        self.assertEquals(ql.alerts[6].state, ALERT_STATE_OPEN)
        am.close(3)
        self.assertEquals(ta1.state, ALERT_STATE_OPEN)
        self.assertEquals(ql.alerts[1].state, ALERT_STATE_OPEN)
        self.assertEquals(ql.alerts[2].state, ALERT_STATE_CLOSED)
        self.assertEquals(ql.alerts[3].state, ALERT_STATE_OPEN)
        self.assertEquals(ql.alerts[4].state, ALERT_STATE_OPEN)
        self.assertEquals(ql.alerts[5].state, ALERT_STATE_OPEN)
        self.assertEquals(ql.alerts[6].state, ALERT_STATE_OPEN)
        am.reopen(3)
        self.assertEquals(ta1.state, ALERT_STATE_OPEN)
        self.assertEquals(ql.alerts[1].state, ALERT_STATE_OPEN)
        self.assertEquals(ql.alerts[2].state, ALERT_STATE_OPEN)
        self.assertEquals(ql.alerts[3].state, ALERT_STATE_OPEN)
        self.assertEquals(ql.alerts[4].state, ALERT_STATE_OPEN)
        self.assertEquals(ql.alerts[5].state, ALERT_STATE_OPEN)
        self.assertEquals(ql.alerts[6].state, ALERT_STATE_OPEN)
        self.teal.shutdown()
        return
Ejemplo n.º 2
0
 def testJournalQueue(self):
     ''' Test injecting a Journal containing optional fields through a queue'''
     lq = ListenableQueue('test journal queue')
     j = Journal('test journal', file='data/journal_test/data_sample_002_NEW.json')
     j_rec = Journal('j_rec')
     lq.register_listener(j_rec)
     j.inject_queue(lq)
     while len(j) != len(j_rec):
         # p rint ('waiting for queue to process %s of %s' % (str(len(j_rec)), str(len(j))))
         sleep(1.0)
     #p rint j
     #p rint j_rec
     self.assertTrue(j.deep_match(j))
     self.assertTrue(j.deep_match(j_rec, ignore_delay=True))
     return
Ejemplo n.º 3
0
 def testAnalyzerBasicA(self):
     '''Test basic Analyzer creation using a Sample analyzer asynch'''
     inQ1 = ListenableQueue('inQ1')
     outQ1 = ListenableQueue('outQ1')
     outQL1 = SampleQueueListenerT('outQL1')
     outQ1.register_listener(outQL1)
     SimpleEventAnalyzerAllAlert('TestAnalyzer1', inQ1, outQ1, number=3)
     right_now = datetime.now()
     te1 = teal.Event.fromDict({EVENT_ATTR_REC_ID:1, EVENT_ATTR_EVENT_ID:'E1', EVENT_ATTR_TIME_OCCURRED: right_now})
     inQ1.put_nowait(te1)
     time.sleep(2)
     self.assertEqual(len(outQL1.notifications), 1)
     alert = outQL1.notifications[0]
     self.assertEquals(alert.get_rec_id(), 1)
     self.assertEquals(alert.alert_id, 'Alert 01')
     return
Ejemplo n.º 4
0
    def testStateOtherStatesDB(self):
        '''test alert state NEW in memory'''
        self.prepare_db()
        self.teal = Teal('data/alert_test/test.conf', 'stderr', msgLevel=self.msglevel, commit_alerts=True, commit_checkpoints=False)

        j_in_dq = Journal('j_in_DQ', 'data/alert_test/inject_DQ_alerts.json')
        tq = ListenableQueue('test LQ')
        ql = CheckAlertStateListener(7)
        tq.register_listener(ql)
        j_in_dq.inject_queue(tq, progress_cb=None, fail_on_invalid=False, no_delay=True)
        ql.my_event.wait()
        self.assertEquals(ql.count, 7)
        ta1 = ql.alerts[0]
        am = get_service(SERVICE_ALERT_MGR)
        self.assertEquals(ta1.state, ALERT_STATE_OPEN)
        # TODO: Really should query to get the recid to use for hardcoded ones in rest of this test case
        self.assertRaisesTealError(AlertMgrError, 'Operation not allowed on duplicate alert', am.close, 5)
        self.assertRaisesTealError(AlertMgrError, 'Operation not allowed on duplicate alert', am.close, 6)
        self.assertRaisesTealError(AlertMgrError, 'Current alert state does not allow this operation', am.reopen, ta1.rec_id)
        am.close(ta1.rec_id)
        # Get duplicates of this one        
        self.assertRaisesTealError(AlertMgrError, 'Current alert state does not allow this operation', am.close, ta1.rec_id)
        self.assertRaisesTealError(AlertMgrError, 'Alert with specified record id not found', am.close, 23456)
        # Note that in memory won't be updated ... only in DB
        # so lets get it from the DB
        dbi = get_service(SERVICE_DB_INTERFACE)
        event_cnxn, cursor =_get_connection(dbi)
        self.assert_alert_closed(dbi, cursor, ta1.rec_id)
        self.assert_alert_open(dbi, cursor, 2)
        self.assert_alert_open(dbi, cursor, 3)
        self.assert_alert_open(dbi, cursor, 4)
        self.assert_alert_closed(dbi, cursor, 5)
        self.assert_alert_closed(dbi, cursor, 6)
        self.assert_alert_open(dbi, cursor, 7)
        self.assertRaisesTealError(AlertMgrError, 'Alert with specified record id not found', am.reopen, 23456)
        self.assertRaisesTealError(AlertMgrError, 'Operation not allowed on duplicate alert', am.reopen, 5)
        self.assertRaisesTealError(AlertMgrError, 'Operation not allowed on duplicate alert', am.reopen, 6)
        # reopen it 
        am.reopen(ta1.rec_id)
        event_cnxn, cursor =_get_connection(dbi, event_cnxn)
        self.assert_alert_open(dbi, cursor, ta1.rec_id)
        self.assert_alert_open(dbi, cursor, 2)
        self.assert_alert_open(dbi, cursor, 3)
        self.assert_alert_open(dbi, cursor, 4)
        self.assert_alert_open(dbi, cursor, 5)
        self.assert_alert_open(dbi, cursor, 6)
        self.assert_alert_open(dbi, cursor, 7)
        am.close(3)
        event_cnxn, cursor =_get_connection(dbi, event_cnxn)
        self.assert_alert_open(dbi, cursor, ta1.rec_id)
        self.assert_alert_open(dbi, cursor, 2)
        self.assert_alert_closed(dbi, cursor, 3)
        self.assert_alert_open(dbi, cursor, 4)
        self.assert_alert_open(dbi, cursor, 5)
        self.assert_alert_open(dbi, cursor, 6)
        self.assert_alert_open(dbi, cursor, 7)
        am.reopen(3)
        event_cnxn, cursor =_get_connection(dbi, event_cnxn)
        self.assert_alert_open(dbi, cursor, ta1.rec_id)
        self.assert_alert_open(dbi, cursor, 2)
        self.assert_alert_open(dbi, cursor, 3)
        self.assert_alert_open(dbi, cursor, 4)
        self.assert_alert_open(dbi, cursor, 5)
        self.assert_alert_open(dbi, cursor, 6)
        self.assert_alert_open(dbi, cursor, 7)
        event_cnxn.close()
        self.teal.shutdown()
        return