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
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
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
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