def test_log_this_with_extra_payload(self, mock_log): logger = DBEventLogger() @logger.log_this_with_extra_payload def test_func(arg1, add_extra_log_payload, karg1=1): time.sleep(0.1) add_extra_log_payload(foo="bar") return arg1 * karg1 with app.test_request_context(): result = test_func(1, karg1=2) # pylint: disable=no-value-for-parameter payload = mock_log.call_args[1] self.assertEqual(result, 2) self.assertEqual( payload["records"], [ { "foo": "bar", "path": "/", "karg1": 2, "object_ref": test_func.__qualname__, } ], ) self.assertGreaterEqual(payload["duration_ms"], 100)
def test_log_this_decorator(self, mock_log): logger = DBEventLogger() @logger.log_this def test_func(): time.sleep(0.05) return 1 with app.test_request_context(): result = test_func() self.assertEqual(result, 1) assert mock_log.call_args[1]["duration_ms"] >= 50
def test_log_manually_decorator(self, mock_log): logger = DBEventLogger() @logger.log_manually def test_func(arg1, update_log_payload, karg1=1): time.sleep(0.1) update_log_payload(foo="bar") return arg1 * karg1 with app.test_request_context(): result = test_func(1, karg1=2) # pylint: disable=no-value-for-parameter self.assertEqual(result, 2) # should contain only manual payload self.assertEqual(mock_log.call_args[1]["records"], [{ "foo": "bar" }]) assert mock_log.call_args[1]["duration_ms"] >= 100
def test_log_this(self, mock_log): logger = DBEventLogger() @logger.log_this def test_func(): time.sleep(0.05) return 1 with app.test_request_context("/superset/dashboard/1/?myparam=foo"): result = test_func() payload = mock_log.call_args[1] self.assertEqual(result, 1) self.assertEqual( payload["records"], [{ "myparam": "foo", "path": "/superset/dashboard/1/", "url_rule": "/superset/dashboard/<dashboard_id_or_slug>/", "object_ref": test_func.__qualname__, }], ) self.assertGreaterEqual(payload["duration_ms"], 50)
BaseTemplateProcessor, ) from superset.stats_logger import DummyStatsLogger from superset.typing import CacheConfig from superset.utils.log import DBEventLogger from superset.utils.logging_configurator import DefaultLoggingConfigurator logger = logging.getLogger(__name__) if TYPE_CHECKING: from flask_appbuilder.security.sqla import models # pylint: disable=unused-import from superset.models.core import Database # pylint: disable=unused-import # Realtime stats logger, a StatsD implementation exists STATS_LOGGER = DummyStatsLogger() EVENT_LOGGER = DBEventLogger() SUPERSET_LOG_VIEW = True BASE_DIR = os.path.abspath(os.path.dirname(__file__)) if "SUPERSET_HOME" in os.environ: DATA_DIR = os.environ["SUPERSET_HOME"] else: DATA_DIR = os.path.join(os.path.expanduser("~"), ".superset") # --------------------------------------------------------- # Superset specific config # --------------------------------------------------------- VERSION_INFO_FILE = os.path.join(BASE_DIR, "static", "version_info.json") PACKAGE_JSON_FILE = os.path.join(BASE_DIR, "static", "assets", "package.json")
def setup_event_logger(self) -> None: _event_logger["event_logger"] = get_event_logger_from_cfg_value( self.superset_app.config.get("EVENT_LOGGER", DBEventLogger()))
security_manager_class=custom_sm, update_perms=False, # Run `superset init` to update FAB's perms ) security_manager = appbuilder.sm results_backend = app.config.get("RESULTS_BACKEND") results_backend_use_msgpack = app.config.get("RESULTS_BACKEND_USE_MSGPACK") # Merge user defined feature flags with default feature flags _feature_flags = app.config.get("DEFAULT_FEATURE_FLAGS") or {} _feature_flags.update(app.config.get("FEATURE_FLAGS") or {}) # Event Logger event_logger = get_event_logger_from_cfg_value( app.config.get("EVENT_LOGGER", DBEventLogger())) def get_feature_flags(): GET_FEATURE_FLAGS_FUNC = app.config.get("GET_FEATURE_FLAGS_FUNC") if GET_FEATURE_FLAGS_FUNC: return GET_FEATURE_FLAGS_FUNC(deepcopy(_feature_flags)) return _feature_flags def is_feature_enabled(feature): """Utility function for checking whether a feature is turned on""" return get_feature_flags().get(feature) # Flask-Compress
def setup_event_logger(self): _event_logger["event_logger"] = get_event_logger_from_cfg_value( self.flask_app.config.get("EVENT_LOGGER", DBEventLogger()))
def test_correct_config_object(self): # test that assignment of concrete AbstractBaseClass impl returns # unmodified object obj = DBEventLogger() res = get_event_logger_from_cfg_value(obj) self.assertIs(obj, res)