Exemple #1
0
 def testGetViaEvent(self):
     '''Test getting via an event'''
     esm1 = Metadata(META_TYPE_EVENT, ['metadata_test/event_metadata_05.xml'])
     unregister_service(SERVICE_EVENT_METADATA)
     register_service(SERVICE_EVENT_METADATA, esm1)
     event_id = 'idvalue1'
     event_comp = 'TST'
     e1 = teal.Event.fromDict({EVENT_ATTR_REC_ID:1, 
                        EVENT_ATTR_EVENT_ID:event_id, 
                        EVENT_ATTR_SRC_COMP: 'TST', 
                        EVENT_ATTR_TIME_OCCURRED: datetime.now()})  
     meta_dict2 = e1.get_metadata()
     self.assertEqual(meta_dict2[META_EVENT_ID], event_id)
     self.assertEqual(meta_dict2[META_EVENT_COMP], event_comp)
     self.assertEqual(meta_dict2[META_EVENT_MSG], 'This is test message 1')
     return
Exemple #2
0
 def testRegisterDuplicateService(self):
     ''' Test a service cannot be overridden'''
     registry.register_service(SERVICE_REGISTRY_TEST, self)
     self.assertRaises(ValueError, registry.register_service, SERVICE_REGISTRY_TEST, self)
     self.assertRaises(DuplicateKeyError, registry.register_service, SERVICE_REGISTRY_TEST, self)
     registry.unregister_service(SERVICE_REGISTRY_TEST)
Exemple #3
0
 def testUnregisterService(self):
     ''' Test unregister_service successful'''
     self.assertTrue(SERVICE_REGISTRY_TEST not in registry.registry)
     registry.register_service(SERVICE_REGISTRY_TEST, self)
     registry.unregister_service(SERVICE_REGISTRY_TEST)
     self.assertTrue(SERVICE_REGISTRY_TEST not in registry.registry)
Exemple #4
0
 def testGetService(self):
     ''' Test get_service successful'''
     self.assertTrue(SERVICE_REGISTRY_TEST not in registry.registry)
     registry.register_service(SERVICE_REGISTRY_TEST, self)
     self.assertEquals(registry.get_service(SERVICE_REGISTRY_TEST), self)
     registry.unregister_service(SERVICE_REGISTRY_TEST)
Exemple #5
0
    def init_configurable_environment(self, run_mode):
        ''' Initialize the configurable environment (including directory paths other than config) used within TEAL
        
        Order of priority:
         * Environment variable
         * Configuration File
         * Default value 
         
        Directory paths are set into special registry entries.   Other environment settings will be pushed out 
        environment.
        '''
        # set default values
        teal_root_dir = os.path.join(os.sep,'opt','teal')
        teal_data_dir = None
        teal_log_dir = os.path.join(os.sep,'var','log','teal')
        
        self.event_not_analyzed_log_method = get_logger().warning
        tmp_event_q_not_analyzed_log_level = 'warning'
        tmp_shutdown_mode = SHUTDOWN_MODE_DEFERRED

        # Get configuration environment stanza options and process
        cf_reg = registry.get_service(SERVICE_CONFIGURATION)
        entries = cf_reg.get_active_sections(CONFIG_ENVIRONMENT, run_mode, name_required=False, singleton=True)
        if len(entries) != 0:
            section = entries[0][0]

            # iterate through the options
            for opt_name, opt_value in cf_reg.items(section):
                if opt_name == TEAL_ROOT_DIR:
                    teal_root_dir = opt_value
                elif opt_name == TEAL_DATA_DIR:
                    teal_data_dir = opt_value
                elif opt_name == TEAL_LOG_DIR:
                    teal_log_dir = opt_value
                elif opt_name == TEAL_CONF_DIR:
                    raise ConfigurationError('Option \'{0}\' is not allowed in the \'{1}\' stanza'.format(TEAL_CONF_DIR, CONFIG_ENVIRONMENT))
                elif opt_name == TEAL_EVENT_Q_NOT_ANALYZED_LOG_LEVEL:
                    tmp_event_q_not_analyzed_log_level = opt_value
                elif opt_name == TEAL_SHUTDOWN_MODE:
                    tmp_shutdown_mode = opt_value
                else:
                    # see if already set
                    if os.environ.get(opt_name, None) is None:
                        # Set it in the python environment
                        os.environ[opt_name] = opt_value
                
        # Now see if the dirs are overridden in the environment 
        root_dir = os.environ.get(TEAL_ROOT_DIR, teal_root_dir)
        abs_root_dir = os.path.abspath(root_dir)
        self.test_dir(abs_root_dir)
        
        # Default data dir is relative to the root dir
        if teal_data_dir is None:
            teal_data_dir = os.path.join(root_dir,'data')
               
        data_dir = os.environ.get(TEAL_DATA_DIR, teal_data_dir)
        abs_data_dir = os.path.abspath(data_dir)
        self.test_dir(abs_data_dir)
        
        log_dir =  os.environ.get(TEAL_LOG_DIR, teal_log_dir)
        abs_log_dir = os.path.abspath(log_dir)
        self.test_dir(abs_log_dir, stat.S_IRUSR|S_IWUSR)
        
        # Log them in the registry for usage throughout the framework
        registry.register_service(TEAL_ROOT_DIR, abs_root_dir)
        os.environ[TEAL_ROOT_DIR] = abs_root_dir
        registry.register_service(TEAL_DATA_DIR, abs_data_dir)
        os.environ[TEAL_DATA_DIR] = abs_data_dir
        registry.register_service(TEAL_LOG_DIR, abs_log_dir)
        os.environ[TEAL_LOG_DIR] = abs_log_dir
        
        # See if the Event Q not analyzed log level overridden
        tmp_event_q_not_analyzed_log_level = os.environ.get(TEAL_EVENT_Q_NOT_ANALYZED_LOG_LEVEL, tmp_event_q_not_analyzed_log_level)
        if tmp_event_q_not_analyzed_log_level == 'debug':
            self.event_not_analyzed_log_method = get_logger().debug
        elif tmp_event_q_not_analyzed_log_level == 'info':
            self.event_not_analyzed_log_method = get_logger().info
        elif tmp_event_q_not_analyzed_log_level == 'warning':
            self.event_not_analyzed_log_method = get_logger().warning
        elif tmp_event_q_not_analyzed_log_level == 'error':
            self.event_not_analyzed_log_method = get_logger().error
        elif tmp_event_q_not_analyzed_log_level == 'critical':
            self.event_not_analyzed_log_method = get_logger().critical
        else:
            raise ConfigurationError('A value of \'{0}\' is not supported for option \'{1}\' in the \'{2}\'stanza'.format(tmp_event_q_not_analyzed_log_level, TEAL_EVENT_Q_NOT_ANALYZED_LOG_LEVEL, CONFIG_ENVIRONMENT))

        # Shutdown mode processing
        if run_mode == RUN_MODE_HISTORIC:
            tmp_shutdown_mode = SHUTDOWN_MODE_DEFERRED
        else:
            tmp_shutdown_mode = os.environ.get(TEAL_SHUTDOWN_MODE, tmp_shutdown_mode)
            if tmp_shutdown_mode != SHUTDOWN_MODE_DEFERRED and tmp_shutdown_mode != SHUTDOWN_MODE_IMMEDIATE:
                raise ConfigurationError('A value of \'{0}\' is not supported for environment variable \'{1}\''.format(tmp_shutdown_mode, TEAL_SHUTDOWN_MODE))
        registry.unregister_service(SERVICE_SHUTDOWN_MODE)          
        registry.register_service(SERVICE_SHUTDOWN_MODE, tmp_shutdown_mode)