Example #1
0
 def testJournalWriteAlertDB4(self):
     ''' Test writing of Alert log queue after reading from DB '''
     # This test does not work with duplicate checking -- probably don't want it to 
     keep_ADC = self.force_env('TEAL_ALERT_DUPLICATE_CHECK', 'No')
     self.teal = Teal('data/journal_test/events_002.conf','stderr',msgLevel=self.msglevel)
     # Events
     je = Journal('DB test input EVENTS', file='data/journal_test/events_002.json')
     je.insert_in_db(truncate=True, no_delay=True)
     # Alerts
     ja = Journal('DB test input ALERTS', file='data/journal_test/alerts_002.json')
     ja.insert_in_db(truncate=False, no_delay=True)
     # Check events
     jedb = Journal('Read DB test EVENTS')
     jedb.select_from_db('event')
     self.assertTrue(je.deep_match(jedb, ignore_delay=True, ignore_times=False, ignore_rec_id=False))
     # Check alerts
     jadb = Journal('Read DB test ALERTS')
     jadb.select_from_db('alert')
     self.assertTrue(ja.deep_match(jadb, ignore_delay=True, ignore_times=False, ignore_rec_id=False))
     # Now insert into the Delivery Queue and make sure all come out 
     jadb.inject_queue(get_service(SERVICE_ALERT_DELIVERY_Q), progress_cb=None, fail_on_invalid=False, no_delay=True)
     listeners = get_service(SERVICE_ALERT_DELIVERY).listeners
     for listener in listeners:
         name = listener.get_name()
         if name == 'Journal':
             j_out_all = listener.journal
     self.assertTrue(j_out_all.wait_for_entries(6))
     self.assertTrue(j_out_all.deep_match(jadb, ignore_delay=True, ignore_times=True))
     self.teal.shutdown()
     self.restore_env('TEAL_ALERT_DUPLICATE_CHECK', keep_ADC)
     return
Example #2
0
 def _add_journal(self, json_file):
     ''' Load the alert DB from the journal JSON file '''
     self.teal = Teal('data/tllsalert_test/test.conf','stderr',msgLevel=self.msglevel)
     # Alerts
     ja = Journal('temp_journal', file=json_file)
     ja.insert_in_db(truncate=False, no_delay=True)
     self.teal.shutdown()
Example #3
0
 def inject_new_entries(self,exp_json='data/restart_test/three_events_one_fromq.json',exp_num=3):
     ''' Verify that events still flow through TEAL after startup
     '''
     # Now make sure we start getting new events
     j_inj = Journal('After restart','data/restart_test/three_events_one.json')
     j_inj.insert_in_db(use_rec_ids=False, no_delay=True)
     registry.get_service(registry.SERVICE_NOTIFIER).post()
     j_exp = Journal('Inject New Entries', exp_json)
     j_act = self.find_analyzer().journal
     self.assertTrue(j_act.wait_for_entries(exp_num))
     self.assertTrue(j_act.deep_match(j_exp, ignore_delay=True))   
Example #4
0
 def testJournalWriteEventDB1(self):
     ''' Test writing to Event log DB basic
     '''
     self.teal = Teal('data/journal_test/events_001.conf','stderr',msgLevel=self.msglevel)
     j = Journal('DB test journal to write', file='data/journal_test/events_001.json')
     j.insert_in_db(truncate=True, no_delay=True)
     jdb = Journal('DB test journal to read')
     jdb.select_from_db('event')
     self.assertTrue(j.deep_match(jdb, ignore_delay=True, ignore_times=False, ignore_rec_id=False))
     #p rint j
     #p rint jdb
     self.teal.shutdown()
     return
Example #5
0
    def testDemo1DB(self):
        '''Test demo flow by injecting into DB'''
        self.prepare_db()
        keep_var = self.force_env('TEAL_TEST_POOL_TIMERS_OFF', 'YES')
        self.teal = Teal('data/teal_test/configurationtest_05_semaphore_auto.conf', 'stderr', 
                         msgLevel=self.msglevel)

        j_in = Journal('j_in', file='data/demo/data_sample_demo_NEW_001.json')
        j_out_eq = Journal('j_out_eq')
        j_out_aaq = Journal('j_out_aaq')
        j_out_dq = Journal('j_out_dq')
        j_out_lis = Journal('j_out_lis')
        q_out_eq = registry.get_service(SERVICE_EVENT_Q)
        q_out_aaq = registry.get_service(SERVICE_ALERT_ANALYZER_Q)
        q_out_dq = registry.get_service(SERVICE_ALERT_DELIVERY_Q)
        q_out_eq.register_listener(j_out_eq)
        q_out_dq.register_listener(j_out_dq)
        q_out_aaq.register_listener(j_out_aaq)
        listeners = get_service(SERVICE_ALERT_DELIVERY).listeners
        for listener in listeners:
            if listener.get_name() == 'outputJournal':
                j_out_lis = listener.journal
        try:
            j_in.insert_in_db(progress_cb=None, truncate=False, use_rec_ids=True, no_delay=False, post=True)
        except:
            print 'INSERTION FAILED'
            q_out_eq.unregister_listener(j_out_eq)
            q_out_dq.unregister_listener(j_out_dq)
            q_out_aaq.unregister_listener(j_out_aaq)
            raise
       
        # Yes, only 2: Flush can't be injected to connector, so pool does not get closed, so last event
        # Does not get turned into an alert!
        self.assertTrue(j_out_lis.wait_for_entries(2))

        # Note these connector ('C') versions have one less alert
        #     The analyzer is being run in historic mode (see configuration) if that was 
        #     changed to runtime then the pool would time out and the last alert would be journaled
        j_exp_aaq = Journal('j_exp_aaq', 'data/teal_test/data_sample_demo_NEW_001_AAQ_Result_C.json')
        self.assertTrue(j_out_aaq.deep_match(j_exp_aaq, ignore_delay=True, ignore_times=True))
        j_exp_dq = Journal('j_exp_dq', 'data/teal_test/data_sample_demo_NEW_001_DQ_Result_C.json')
        self.assertTrue(j_out_dq.deep_match(j_exp_dq, ignore_delay=True, ignore_times=True))
        j_exp_lis = Journal('j_exp_lis', 'data/teal_test/data_sample_demo_NEW_001_LIS_Result_C.json')
        self.assertTrue(j_out_lis.deep_match(j_exp_lis, ignore_delay=True, ignore_times=True))

        q_out_eq.unregister_listener(j_out_eq)
        q_out_dq.unregister_listener(j_out_dq)
        q_out_aaq.unregister_listener(j_out_aaq)
        
        self.teal.shutdown()
        self.restore_env('TEAL_TEST_POOL_TIMERS_OFF', keep_var)
Example #6
0
 def testJournalWriteEventDB3(self):
     ''' Test reading from event DB with a subset of fields 
     '''
     self.teal = Teal('data/journal_test/events_001.conf','stderr',msgLevel=self.msglevel)
     j = Journal('DB test journal to write', file='data/journal_test/events_001.json')
     j.insert_in_db(truncate=True, use_rec_ids=False, no_delay=True)
     jdb = Journal('DB test journal to read')
     jdb.select_from_db('event', event_fields=[EVENT_ATTR_REC_ID, EVENT_ATTR_EVENT_ID])
     jexp = Journal('DB expected', 'data/journal_test/events_004.json')
     self.assertTrue(jexp.deep_match(jdb, ignore_delay=True, ignore_times=False, ignore_rec_id=True))
     #p rint j
     #p rint jdb
     self.teal.shutdown()
     return
Example #7
0
 def add_entries_before_restart(self, stop_teal=True):
     ''' Add events to TEAL and make sure they are processed
     '''
     self.start_teal('now')     
     # Insert a set of events and process them
     j_act = self.find_analyzer().journal
     j_inj = Journal('Pre-populate','data/restart_test/three_events_one.json')
     j_inj.insert_in_db(no_delay=True, truncate=True)   # Truncate is testing that we handle the ckpt table being destroyed
     registry.get_service(registry.SERVICE_NOTIFIER).post()
     self.assertTrue(j_act.wait_for_entries(3))
     j_exp = Journal('Expected', 'data/restart_test/three_events_one_fromq.json')
     self.assertTrue(j_act.deep_match(j_exp, ignore_delay=True))        
     # Stop this instance of TEAL if requested otherwise it is up
     # to the caller to stop it
     if stop_teal:
         self.stop_teal()
Example #8
0
 def testJournalWriteAlertDB3(self):
     ''' Test getting only some fields of an alert '''
     self.teal = Teal('data/journal_test/events_001.conf','stderr',msgLevel=self.msglevel)
     # Events
     je = Journal('DB test input EVENTS', file='data/journal_test/events_002.json')
     je.insert_in_db(truncate=True, no_delay=True)
     # Alerts
     ja = Journal('DB test input ALERTS', file='data/journal_test/alerts_002.json')
     ja.insert_in_db(truncate=False, no_delay=True)
     # Check alerts
     jadb = Journal('Read DB test ALERTS')
     jadb.select_from_db('alert', include_alert_assoc=False, alert_fields=[ALERT_ATTR_REC_ID, ALERT_ATTR_ALERT_ID, ALERT_ATTR_RECOMMENDATION])
     jaexp = Journal('DB test expected', 'data/journal_test/alerts_005.json')
     self.assertTrue(jaexp.deep_match(jadb, ignore_delay=True, ignore_times=False, ignore_rec_id=False))
     #p rint ja
     #p rint jadb
     self.teal.shutdown()
     return
Example #9
0
 def testJournalWriteAlertDB2(self):
     ''' Test getting alerts without associations '''
     self.teal = Teal('data/journal_test/events_001.conf','stderr',msgLevel=self.msglevel)
     # Events
     je = Journal('DB test input EVENTS', file='data/journal_test/events_002.json')
     je.insert_in_db(truncate=True, no_delay=True)
     # Alerts
     ja = Journal('DB test input ALERTS', file='data/journal_test/alerts_002.json')
     ja.insert_in_db(truncate=False, no_delay=True)
     # Check alerts
     jadb = Journal('Read DB test ALERTS')
     jadb.select_from_db('alert', include_alert_assoc=False)
     jaexp = Journal('DB test expected', 'data/journal_test/alerts_003.json')
     self.assertTrue(jaexp.deep_match(jadb, ignore_delay=True, ignore_times=False, ignore_rec_id=False))
     #p rint ja
     #p rint jadb
     self.teal.shutdown()
     return
Example #10
0
 def testRestartLastProc(self):
     ''' Verify lastproc mode by reading events that have been added after shutdown
     '''
     self.add_entries_before_restart()
     # Add a few more events so we process things
     self.start_teal_no_monitor()
     j_inj = Journal('Pre-populate','data/restart_test/three_events_one.json')
     j_inj.insert_in_db(use_rec_ids=False, no_delay=True)
     self.stop_teal()
     
     # Now start up in lastproc mode and see that we don't get entries ... not checkpoints so acts like Now
     self.start_teal('lastproc')
     j_act = self.find_analyzer().journal
     self.assertFalse(j_act.wait_for_entries(1,seconds=3, msg_mode='quiet'))
     #self.assertTrue(j_act.wait_for_entries(3))
     #j_exp = Journal('After restart','data/restart_test/three_events_one_fromq.json')        
     #self.assertTrue(j_act.deep_match(j_exp,ignore_delay=True))
     j_act.clear()
     
     # Make sure we start getting new entries
     self.inject_new_entries()
Example #11
0
 def testJournalWriteAlertDB1(self):
     ''' Test writing of Alert log DB basic '''
     self.teal = Teal('data/journal_test/events_001.conf','stderr',msgLevel=self.msglevel)
     # Events
     je = Journal('DB test input EVENTS', file='data/journal_test/events_002.json')
     je.insert_in_db(truncate=True, no_delay=True)
     # Alerts
     ja = Journal('DB test input ALERTS', file='data/journal_test/alerts_002.json')
     ja.insert_in_db(truncate=False, no_delay=True)
     # Check events
     jedb = Journal('Read DB test EVENTS')
     jedb.select_from_db('event')
     self.assertTrue(je.deep_match(jedb, ignore_delay=True, ignore_times=False, ignore_rec_id=False))
     #p rint je
     #p rint jedb
     # Check alerts
     jadb = Journal('Read DB test ALERTS')
     jadb.select_from_db('alert')
     self.assertTrue(ja.deep_match(jadb, ignore_delay=True, ignore_times=False, ignore_rec_id=False))
     #p rint ja
     #p rint jadb
     self.teal.shutdown()
     return