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