Skip to content

Commit

Permalink
Merge pull request #241 from solarwinds/NH-67051-add-configure-tests
Browse files Browse the repository at this point in the history
NH-67051 Add configurator._configure_otel_components tests
  • Loading branch information
tammy-baylis-swi authored Nov 30, 2023
2 parents 40e18b5 + 989be75 commit 1715502
Show file tree
Hide file tree
Showing 3 changed files with 239 additions and 1 deletion.
100 changes: 99 additions & 1 deletion tests/unit/test_configurator/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,20 @@ def mock_apmconfig_enabled_reporter_settings(mocker):
)
return mock_apmconfig


@pytest.fixture(name="mock_apmconfig_experimental_otelcol_init")
def mock_apmconfig_experimental_otelcol_init(mocker):
mock_apmconfig = mocker.patch(
"solarwinds_apm.configurator.SolarWindsApmConfig"
)
mock_apmconfig.return_value = {
"experimental":
{
"otel_collector": True
}
}
return mock_apmconfig

# ==================================================================
# Configurator APM Python extension mocks
# ==================================================================
Expand Down Expand Up @@ -288,7 +302,7 @@ def mock_extension_status_code_invalid_protocol(mocker):
return get_extension_mocks(mocker, 2)

# ==================================================================
# Configurator APM Python other mocks
# Configurator APM Python configurator mocks
# ==================================================================

def add_fw_versions(input_dict):
Expand All @@ -302,6 +316,90 @@ def mock_fw_versions(mocker):
side_effect=add_fw_versions
)

@pytest.fixture(name="mock_config_inbound_processor")
def mock_config_inbound_processor(mocker):
return mocker.patch(
"solarwinds_apm.configurator.SolarWindsConfigurator._configure_inbound_metrics_span_processor"
)

@pytest.fixture(name="mock_config_otlp_processor")
def mock_config_otlp_processor(mocker):
return mocker.patch(
"solarwinds_apm.configurator.SolarWindsConfigurator._configure_otlp_metrics_span_processor"
)

@pytest.fixture(name="mock_config_traces_exp")
def mock_config_traces_exp(mocker):
return mocker.patch(
"solarwinds_apm.configurator.SolarWindsConfigurator._configure_traces_exporter"
)

@pytest.fixture(name="mock_config_metrics_exp")
def mock_config_metrics_exp(mocker):
return mocker.patch(
"solarwinds_apm.configurator.SolarWindsConfigurator._configure_metrics_exporter"
)

@pytest.fixture(name="mock_config_propagator")
def mock_config_propagator(mocker):
return mocker.patch(
"solarwinds_apm.configurator.SolarWindsConfigurator._configure_propagator"
)

@pytest.fixture(name="mock_config_response_propagator")
def mock_config_response_propagator(mocker):
return mocker.patch(
"solarwinds_apm.configurator.SolarWindsConfigurator._configure_response_propagator"
)

@pytest.fixture(name="mock_init_sw_reporter")
def mock_init_sw_reporter(mocker):
return mocker.patch(
"solarwinds_apm.configurator.SolarWindsConfigurator._initialize_solarwinds_reporter"
)

@pytest.fixture(name="mock_config_otel_components")
def mock_config_otel_components(mocker):
return mocker.patch(
"solarwinds_apm.configurator.SolarWindsConfigurator._configure_otel_components"
)

@pytest.fixture(name="mock_report_init")
def mock_report_init(mocker):
return mocker.patch(
"solarwinds_apm.configurator.SolarWindsConfigurator._report_init_event"
)


@pytest.fixture(name="mock_txn_name_manager_init")
def mock_txn_name_manager_init(mocker):
return mocker.patch(
"solarwinds_apm.configurator.SolarWindsTxnNameManager"
)

@pytest.fixture(name="mock_fwkv_manager_init")
def mock_fwkv_manager_init(mocker):
return mocker.patch(
"solarwinds_apm.configurator.SolarWindsFrameworkKvManager"
)

@pytest.fixture(name="mock_meter_manager_init")
def mock_meter_manager_init(mocker):
return mocker.patch(
"solarwinds_apm.configurator.SolarWindsMeterManager"
)

@pytest.fixture(name="mock_noop_meter_manager_init")
def mock_noop_meter_manager_init(mocker):
return mocker.patch(
"solarwinds_apm.configurator.NoopMeterManager"
)


# ==================================================================
# Configurator APM Python other mocks
# ==================================================================

@pytest.fixture(name="mock_apm_version")
def mock_apm_version(mocker):
return mocker.patch(
Expand Down
58 changes: 58 additions & 0 deletions tests/unit/test_configurator/test_configurator_configure.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# © 2023 SolarWinds Worldwide, LLC. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at:http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

from solarwinds_apm import configurator

class TestConfiguratorConfigure:
def test_configurator_configure(
mocker,
mock_txn_name_manager_init,
mock_fwkv_manager_init,
mock_apmconfig_enabled,
mock_meter_manager_init,
mock_noop_meter_manager_init,
mock_init_sw_reporter,
mock_config_otel_components,
mock_report_init,
):
test_configurator = configurator.SolarWindsConfigurator()
test_configurator._configure()

mock_txn_name_manager_init.assert_called_once()
mock_fwkv_manager_init.assert_called_once()
mock_apmconfig_enabled.assert_called_once()

mock_noop_meter_manager_init.assert_called_once()
mock_meter_manager_init.assert_not_called()

mock_init_sw_reporter.assert_called_once()
mock_config_otel_components.assert_called_once()
mock_report_init.assert_called_once()

def test_configurator_configure_experimental(
mocker,
mock_txn_name_manager_init,
mock_fwkv_manager_init,
mock_apmconfig_experimental_otelcol_init,
mock_meter_manager_init,
mock_noop_meter_manager_init,
mock_init_sw_reporter,
mock_config_otel_components,
mock_report_init,
):
test_configurator = configurator.SolarWindsConfigurator()
test_configurator._configure()

mock_txn_name_manager_init.assert_called_once()
mock_fwkv_manager_init.assert_called_once()
mock_apmconfig_experimental_otelcol_init.assert_called_once()

mock_meter_manager_init.assert_called_once()
mock_noop_meter_manager_init.assert_not_called()

mock_init_sw_reporter.assert_called_once()
mock_config_otel_components.assert_called_once()
mock_report_init.assert_called_once()
82 changes: 82 additions & 0 deletions tests/unit/test_configurator/test_configurator_configure_otel.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# © 2023 SolarWinds Worldwide, LLC. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at:http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

from solarwinds_apm import configurator

class TestConfiguratorConfigureOtelComponents:
def test_configure_otel_components_agent_enabled(
mocker,
mock_txn_name_manager,
mock_fwkv_manager,
mock_meter_manager,
mock_extension,
mock_apmconfig_enabled,

mock_config_inbound_processor,
mock_config_otlp_processor,
mock_config_traces_exp,
mock_config_metrics_exp,
mock_config_propagator,
mock_config_response_propagator,
):
test_configurator = configurator.SolarWindsConfigurator()
test_configurator._configure_otel_components(
mock_txn_name_manager,
mock_fwkv_manager,
mock_apmconfig_enabled,
mock_extension.Reporter,
mock_meter_manager,
)

mock_config_inbound_processor.assert_called_once_with(
mock_txn_name_manager,
mock_apmconfig_enabled,
)
mock_config_otlp_processor.assert_called_once_with(
mock_txn_name_manager,
mock_apmconfig_enabled,
mock_meter_manager,
)
mock_config_traces_exp.assert_called_once_with(
mock_extension.Reporter,
mock_txn_name_manager,
mock_fwkv_manager,
mock_apmconfig_enabled,
)
mock_config_metrics_exp.assert_called_once_with(mock_apmconfig_enabled)
mock_config_propagator.assert_called_once()
mock_config_response_propagator.assert_called_once()

def test_configure_otel_components_agent_disabled(
mocker,
mock_txn_name_manager,
mock_fwkv_manager,
mock_meter_manager,
mock_extension,
mock_apmconfig_disabled,

mock_config_inbound_processor,
mock_config_otlp_processor,
mock_config_traces_exp,
mock_config_metrics_exp,
mock_config_propagator,
mock_config_response_propagator,
):
test_configurator = configurator.SolarWindsConfigurator()
test_configurator._configure_otel_components(
mock_txn_name_manager,
mock_fwkv_manager,
mock_apmconfig_disabled,
mock_extension.Reporter,
mock_meter_manager,
)

mock_config_inbound_processor.assert_not_called()
mock_config_otlp_processor.assert_not_called()
mock_config_traces_exp.assert_not_called()
mock_config_metrics_exp.assert_not_called()
mock_config_propagator.assert_not_called()
mock_config_response_propagator.assert_not_called()

0 comments on commit 1715502

Please # to comment.