Пример #1
0
def test_core_agent_permissions_invalid_uses_default():
    ScoutConfig.set(core_agent_permissions="THIS IS INVALID")
    config = ScoutConfig()
    try:
        assert 0o700 == config.core_agent_permissions()
    finally:
        ScoutConfig.reset_all()
Пример #2
0
def test_boolean_conversion_from_python(original, converted):
    ScoutConfig.set(monitor=original)
    config = ScoutConfig()
    try:
        assert config.value("monitor") is converted
    finally:
        ScoutConfig.reset_all()
Пример #3
0
def test_list_conversion_from_python(original, converted):
    ScoutConfig.set(disabled_instruments=original)
    config = ScoutConfig()
    try:
        assert config.value("disabled_instruments") == converted
    finally:
        ScoutConfig.reset_all()
Пример #4
0
def test_get_config_value_from_python():
    ScoutConfig.set(socket_path="/set/from/python")
    config = ScoutConfig()
    try:
        assert config.value("socket_path") == "/set/from/python"
    finally:
        ScoutConfig.reset_all()
Пример #5
0
def test_float_conversion_from_python(original, converted):
    ScoutConfig.set(shutdown_timeout_seconds=original)
    config = ScoutConfig()
    try:
        assert config.value("shutdown_timeout_seconds") == converted
    finally:
        ScoutConfig.reset_all()
Пример #6
0
def test_core_agent_permissions_custom():
    ScoutConfig.set(core_agent_permissions=770)
    config = ScoutConfig()
    try:
        assert 0o770 == config.core_agent_permissions()
    finally:
        ScoutConfig.reset_all()
Пример #7
0
def test_ignore():
    ScoutConfig.set(ignore=["/health"])

    assert ignore_path("/health")
    assert ignore_path("/health/foo")
    assert not ignore_path("/users")

    ScoutConfig.reset_all()
Пример #8
0
def test_env_outranks_python():
    os.environ["SCOUT_SOCKET_PATH"] = "/set/in/env"
    ScoutConfig.set(socket_path="/set/from/python")
    config = ScoutConfig()
    try:
        assert config.value("socket_path") == "/set/in/env"
    finally:
        del os.environ["SCOUT_SOCKET_PATH"]
        ScoutConfig.reset_all()
Пример #9
0
def test_ignore_multiple_prefixes():
    ScoutConfig.set(ignore=["/health", "/api"])

    assert ignore_path("/health")
    assert ignore_path("/health/foo")
    assert ignore_path("/api")
    assert ignore_path("/api/foo")
    assert not ignore_path("/users")

    ScoutConfig.reset_all()
Пример #10
0
def test_override_triple():
    ScoutConfig.set(core_agent_triple="unknown-linux-musl")
    config = ScoutConfig()
    try:
        assert re.match(
            r"scout_apm_core-v.*-unknown-linux-musl",
            config.value("core_agent_full_name"),
        )
    finally:
        ScoutConfig.reset_all()
Пример #11
0
def test_log_config():
    # Include configs in various layers to exercise all code paths.
    os.environ["SCOUT_CORE_AGENT_DOWNLOAD"] = "False"
    ScoutConfig.set(core_agent_launch=False)
    config = ScoutConfig()
    try:
        # Logging the config doesn't crash.
        config.log()
    finally:
        del os.environ["SCOUT_CORE_AGENT_DOWNLOAD"]
        ScoutConfig.reset_all()
Пример #12
0
def test_override_triple(caplog):
    triple = "unknown-unknown-linux-musl"
    ScoutConfig.set(core_agent_triple=triple)
    config = ScoutConfig()
    try:
        full_name = config.value("core_agent_full_name")
    finally:
        ScoutConfig.reset_all()

    assert full_name.endswith(triple)
    assert caplog.record_tuples == []
Пример #13
0
def test_override_triple_invalid(recwarn):
    bad_triple = "badtriple"
    ScoutConfig.set(core_agent_triple=bad_triple)
    config = ScoutConfig()
    try:
        full_name = config.value("core_agent_full_name")
    finally:
        ScoutConfig.reset_all()

    assert full_name.endswith(bad_triple)
    assert len(recwarn) == 1
    warning = recwarn.pop(Warning)
    assert str(warning.message) == "Invalid value for core_agent_triple: badtriple"
def core_agent_manager(core_agent_dir):
    # Shorten path to socket to prevent core-agent from failing with:
    #   Error opening listener on socket: Custom { kind: InvalidInput,
    #   error: StringError("path must be shorter than SUN_LEN") }
    socket_path = "{}/test.sock".format(core_agent_dir)
    ScoutConfig.set(core_agent_dir=core_agent_dir, socket_path=socket_path)
    AgentContext.build()
    core_agent_manager = CoreAgentManager()
    try:
        yield core_agent_manager
    finally:
        assert not is_running(core_agent_manager)
        ScoutConfig.reset_all()
Пример #15
0
def test_get_derived_config_value():
    ScoutConfig.set(core_agent_version="v1.1.8")
    config = ScoutConfig()
    try:
        assert re.match(
            r"/tmp/scout_apm_core/scout_apm_core"
            r"-v1\.1\.8"
            r"-(x86_64|i686|unknown)"
            r"-(unknown-linux-gnu|apple-darwin|unknown)"
            r"/core-agent\.sock",
            config.value("socket_path"),
        )
    finally:
        ScoutConfig.reset_all()
Пример #16
0
def test_override_triple_invalid(caplog):
    bad_triple = "badtriple"
    ScoutConfig.set(core_agent_triple=bad_triple)
    config = ScoutConfig()
    try:
        full_name = config.value("core_agent_full_name")
    finally:
        ScoutConfig.reset_all()

    assert full_name.endswith(bad_triple)
    assert caplog.record_tuples == [(
        "scout_apm.core.config",
        logging.WARNING,
        "Invalid value for core_agent_triple: badtriple",
    )]
Пример #17
0
def test_install_all_installs_only_enabled_instruments():
    # Disable all instruments except the last one.
    ScoutConfig.set(
        disabled_instruments=InstrumentManager.DEFAULT_INSTRUMENTS[:-1])
    AgentContext.build()

    try:
        with patch(
                "scout_apm.core.instrument_manager.InstrumentManager.install"
        ) as install:
            # Only the last instrument is installed.
            InstrumentManager().install_all()
            install.assert_called_once_with("{}.{}".format(
                InstrumentManager.INSTRUMENT_NAMESPACE,
                InstrumentManager.DEFAULT_INSTRUMENTS[-1],
            ))
    finally:
        ScoutConfig.reset_all()
Пример #18
0
def test_log_config(caplog):
    # Include configs in various layers to exercise all code paths.
    os.environ["SCOUT_CORE_AGENT_DOWNLOAD"] = "False"
    ScoutConfig.set(core_agent_launch=False, key="abcdefghij")
    config = ScoutConfig()
    try:
        # Logging the config doesn't crash.
        config.log()
    finally:
        del os.environ["SCOUT_CORE_AGENT_DOWNLOAD"]
        ScoutConfig.reset_all()

    assert caplog.record_tuples[0] == (
        "scout_apm.core.config",
        logging.DEBUG,
        "Configuration Loaded:",
    )
    assert (
        "scout_apm.core.config",
        logging.DEBUG,
        "Python   : core_agent_launch = False",
    ) in caplog.record_tuples
    assert "abcdefghij" not in pprint.pformat(caplog.record_tuples)
Пример #19
0
def test_core_agent_permissions_custom_str():
    scout_config.set(core_agent_permissions="770")
    try:
        assert scout_config.core_agent_permissions() == 0o770
    finally:
        ScoutConfig.reset_all()
Пример #20
0
def test_core_agent_permissions_invalid_uses_default():
    scout_config.set(core_agent_permissions="THIS IS INVALID")
    try:
        assert scout_config.core_agent_permissions() == 0o700
    finally:
        ScoutConfig.reset_all()