Skip to content

Commit 97c0dac

Browse files
committed
Added tests, including for auto-instrumentation.
1 parent 49b239b commit 97c0dac

File tree

13 files changed

+252
-8
lines changed

13 files changed

+252
-8
lines changed

opentelemetry-configurator-gcp/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ dependencies = [
1515
]
1616

1717
[project.entry-points.opentelemetry_configurator]
18-
gcp = "opentelemetry.configurator.gcp:GcpConfigurator"
18+
gcp = "opentelemetry.configurator.gcp:OpenTelemetryGcpConfigurator"
1919

2020
[tool.hatch.build.targets.sdist]
2121
include = ["*.py"]

opentelemetry-configurator-gcp/src/opentelemetry/configurator/gcp/configurator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def __init__(
3535
self._resource_detector_enabled = _bool_with_flag_default(
3636
resource_detector_enabled, is_resource_detector_enabled)
3737

38-
def configure(self):
38+
def configure(self, **kwargs):
3939
resource = get_resource(include_gcp_detector=self._resource_detector_enabled)
4040
if self._metrics_exporter_enabled:
4141
configure_metrics_exporter(resource=resource)
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#! /usr/bin/env python3
2+
3+
import sys
4+
5+
from opentelemetry import trace as otel_trace
6+
from opentelemetry import metrics as otel_metrics
7+
from opentelemetry import _logs as otel_logs
8+
9+
10+
def is_tracer_noop():
11+
tracer = otel_trace.get_tracer(__name__)
12+
if isinstance(tracer, otel_trace.ProxyTracer):
13+
tracer = getattr(tracer, '_tracer')
14+
return isinstance(tracer, otel_trace.NoOpTracer)
15+
16+
17+
def is_metrics_noop():
18+
return isinstance(otel_metrics.get_meter_provider(), otel_metrics.NoOpMeterProvider)
19+
20+
21+
def is_logging_noop():
22+
return isinstance(otel_logs.get_logger_provider(), otel_logs.NoOpLoggerProvider)
23+
24+
25+
def main():
26+
signals_to_noop_checker = {
27+
'trace': is_tracer_noop,
28+
'metrics': is_metrics_noop,
29+
'logs': is_logging_noop,
30+
}
31+
noop_signals = []
32+
for signal_name, noop_tester_func in signals_to_noop_checker.items():
33+
is_noop = noop_tester_func()
34+
print(f'Signal "{signal_name}" is no-op?: {is_noop}')
35+
if is_noop:
36+
noop_signals.append(signal_name)
37+
if not noop_signals:
38+
print('All signals successfully configured.')
39+
return
40+
noop_count = len(noop_signals)
41+
total_count = len(signals_to_noop_checker)
42+
print(f'{noop_count}/{total_count} signals not configured: {noop_signals}')
43+
sys.exit(1)
44+
45+
46+
if __name__ == '__main__':
47+
main()
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/usr/bin/env python3
2+
3+
import subprocess
4+
import unittest
5+
6+
class AutomaticInstrumentationTestCase(unittest.TestCase):
7+
8+
def test_works_with_auto_instrumentation(self):
9+
subprocess.run("./test_automatic.sh", shell=True, check=True, capture_output=True)
10+
11+
12+
if __name__ == '__main__':
13+
unittest.main()
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#! /bin/bash
2+
3+
set -o pipefail
4+
5+
SCRIPT_DIR=$(cd $(dirname ${BASH_SOURCE:-0}); pwd)
6+
PROJECT_DIR=$(readlink -f "${SCRIPT_DIR}/..")
7+
TESTS_DIR="${PROJECT_DIR}/tests"
8+
TEST_ENV="${PROJECT_DIR}/.test/.venv-auto"
9+
10+
function main() {
11+
if [ ! -d "${TEST_ENV}" ] ; then
12+
mkdir -p "${TEST_ENV}" || exit 1
13+
fi
14+
if [ ! -d "${TEST_ENV}/bin" ] ; then
15+
python3 -m venv "${TEST_ENV}" || exit 1
16+
fi
17+
18+
source "${TEST_ENV}/bin/activate" || exit 1
19+
pip install -r "${TESTS_DIR}/requirements.txt" || exit 1
20+
21+
cd "${PROJECT_DIR}" || exit 1
22+
make install || exit 1
23+
pip install opentelemetry-instrumentation || exit 1
24+
pip install opentelemetry-distro || exit 1
25+
26+
opentelemetry-instrument \
27+
--configurator=gcp \
28+
python \
29+
"${TESTS_DIR}/run_with_autoinstrumentation.py" || exit $?
30+
}
31+
32+
main
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!./run_with_env.sh
2+
import unittest
3+
4+
import sys
5+
sys.path.append('../src')
6+
7+
from opentelemetry.configurator.gcp import OpenTelemetryGcpConfigurator
8+
9+
class ManualTestWithAllOptionsEnabled(unittest.TestCase):
10+
11+
def test_does_not_crash(self):
12+
configurator = OpenTelemetryGcpConfigurator(
13+
metrics_exporter_enabled=True,
14+
logs_exporter_enabled=True,
15+
traces_exporter_enabled=True,
16+
resource_detector_enabled=True,
17+
)
18+
configurator.configure()
19+
20+
21+
if __name__ == '__main__':
22+
unittest.main()
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!./run_with_env.sh
2+
import unittest
3+
4+
import sys
5+
sys.path.append('../src')
6+
7+
from opentelemetry.configurator.gcp import OpenTelemetryGcpConfigurator
8+
9+
class ManualTestLoggingOnly(unittest.TestCase):
10+
11+
def test_does_not_crash(self):
12+
configurator = OpenTelemetryGcpConfigurator(
13+
metrics_exporter_enabled=False,
14+
logs_exporter_enabled=True,
15+
traces_exporter_enabled=False,
16+
)
17+
configurator.configure()
18+
19+
20+
if __name__ == '__main__':
21+
unittest.main()
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!./run_with_env.sh
2+
import unittest
3+
4+
import sys
5+
sys.path.append('../src')
6+
7+
from opentelemetry.configurator.gcp import OpenTelemetryGcpConfigurator
8+
9+
class ManualTestMetricsOnly(unittest.TestCase):
10+
11+
def test_does_not_crash(self):
12+
configurator = OpenTelemetryGcpConfigurator(
13+
metrics_exporter_enabled=True,
14+
logs_exporter_enabled=False,
15+
traces_exporter_enabled=False,
16+
)
17+
configurator.configure()
18+
19+
20+
if __name__ == '__main__':
21+
unittest.main()
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#!./run_with_env.sh
2+
import unittest
3+
4+
import sys
5+
sys.path.append('../src')
6+
7+
from opentelemetry.configurator.gcp import OpenTelemetryGcpConfigurator
8+
9+
class ManualTestResourceOff(unittest.TestCase):
10+
11+
def test_does_not_crash(self):
12+
configurator = OpenTelemetryGcpConfigurator(
13+
resource_detector_enabled=False,
14+
)
15+
configurator.configure()
16+
17+
18+
if __name__ == '__main__':
19+
unittest.main()
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#!./run_with_env.sh
2+
import unittest
3+
4+
import sys
5+
sys.path.append('../src')
6+
7+
from opentelemetry.configurator.gcp import OpenTelemetryGcpConfigurator
8+
9+
class ManualTestResourceOff(unittest.TestCase):
10+
11+
def test_does_not_crash(self):
12+
configurator = OpenTelemetryGcpConfigurator(
13+
resource_detector_enabled=True,
14+
)
15+
configurator.configure()
16+
17+
18+
if __name__ == '__main__':
19+
unittest.main()

0 commit comments

Comments
 (0)