diff --git a/.gitlab/benchmarks/microbenchmarks.yml b/.gitlab/benchmarks/microbenchmarks.yml index 8c78d05ca16..a5b60a18d3f 100644 --- a/.gitlab/benchmarks/microbenchmarks.yml +++ b/.gitlab/benchmarks/microbenchmarks.yml @@ -163,7 +163,6 @@ microbenchmarks: - "packages_update_imported_dependencies" - "telemetry_add_metric" - "startup" - - "ddtrace_run" "microbenchmarks flaky": extends: .benchmarks diff --git a/benchmarks/ddtrace_run/config.yaml b/benchmarks/ddtrace_run/config.yaml deleted file mode 100644 index 28f62ea5f78..00000000000 --- a/benchmarks/ddtrace_run/config.yaml +++ /dev/null @@ -1,46 +0,0 @@ -auto_baseline: &defaults - ddtrace_run: "true" - http: "true" - runtimemetrics: "false" - telemetry: "false" - tracing: "false" - profiling: "false" - appsec: "false" - -manual_baseline: - <<: *defaults - ddtrace_run: "false" - -auto_runtimemetrics: - <<: *defaults - runtimemetrics: "true" - -auto_appsec: - <<: *defaults - appsec: "true" - -auto_baseline_disable_http: - <<: *defaults - http: "false" - -auto_telemetry: - <<: *defaults - telemetry: "true" - -auto_profiling: - <<: *defaults - profiling: "true" - -auto_tracing: - <<: *defaults - tracing: "true" - -auto_tracing_telemetry: - <<: *defaults - tracing: "true" - telemetry: "true" - -auto_tracing_appsec: - <<: *defaults - tracing: "true" - appsec: "true" diff --git a/benchmarks/ddtrace_run/scenario.py b/benchmarks/ddtrace_run/scenario.py deleted file mode 100644 index 983d2c7e870..00000000000 --- a/benchmarks/ddtrace_run/scenario.py +++ /dev/null @@ -1,68 +0,0 @@ -import os -import subprocess -import sys - -import bm - - -class DDtraceRun(bm.Scenario): - ddtrace_run: bool - http: bool - runtimemetrics: bool - telemetry: bool - profiling: bool - appsec: bool - tracing: bool - - def run(self): - # setup subprocess environment variables - env = os.environ.copy() - env["DD_RUNTIME_METRICS_ENABLED"] = str(self.runtimemetrics) - env["DD_APPSEC_ENABLED"] = str(self.appsec) - - # initialize subprocess args - subp_cmd = [] - code = "import ddtrace; ddtrace._monkey._patch_all()\n" - if self.ddtrace_run: - subp_cmd = ["ddtrace-run"] - code = "" - - if self.http: - # mock requests to the trace agent before starting services - env["DD_TRACE_API_VERSION"] = "v0.4" - code += """ -import httpretty -from ddtrace.trace import tracer -from ddtrace.internal.telemetry import telemetry_writer - -httpretty.enable(allow_net_connect=False) -httpretty.register_uri(httpretty.PUT, '%s/%s' % (tracer.agent_trace_url, 'v0.5/traces')) -httpretty.register_uri(httpretty.POST, '%s/%s' % (tracer.agent_trace_url, telemetry_writer._client._endpoint)) -# profiler will collect snapshot during shutdown -httpretty.register_uri(httpretty.POST, '%s/%s' % (tracer.agent_trace_url, 'profiling/v1/input')) -""" - - if self.telemetry: - code += "telemetry_writer.enable()\n" - - if self.tracing: - code += "span = tracer.trace('test-x', service='bench-test'); span.finish()\n" - - if self.profiling: - code += """ -import time -import ddtrace.profiling.auto - -start = time.perf_counter() -while time.perf_counter() - start < 1.0: - pass # Busy wait -""" - - # stage code for execution in a subprocess - subp_cmd += [sys.executable, "-c", code] - - def _(loops): - for _ in range(loops): - subprocess.check_output(subp_cmd, env=env) - - yield _ diff --git a/benchmarks/startup/config.yaml b/benchmarks/startup/config.yaml index c7603fc6c29..7e90a84e4ce 100644 --- a/benchmarks/startup/config.yaml +++ b/benchmarks/startup/config.yaml @@ -1,5 +1,7 @@ baseline: &defaults env: {} + ddtrace_run: false + send_span: false import_ddtrace: false import_ddtrace_auto: false import_flask: false @@ -32,3 +34,29 @@ import_ddtrace_auto_django: <<: *defaults import_ddtrace_auto: true import_django: true +ddtrace_run: + <<: *defaults + ddtrace_run: true +ddtrace_run_appsec: + <<: *defaults + env: {"DD_APPSEC_ENABLED": "true"} + ddtrace_run: true +ddtrace_run_profiling: + <<: *defaults + env: {"DD_PROFILING_ENABLED": "true"} + ddtrace_run: true +ddtrace_run_telemetry_enabled: + <<: *defaults + env: {"_DD_INSTRUMENTATION_TELEMETRY_TESTS_FORCE_APP_STARTED": "true"} + ddtrace_run: true +ddtrace_run_telemetry_disabled: + <<: *defaults + env: {"DD_INSTRUMENTATION_TELEMETRY_ENABLED": "false", "_DD_INSTRUMENTATION_TELEMETRY_TESTS_FORCE_APP_STARTED": "false"} + ddtrace_run: true +ddtrace_run_send_span: + <<: *defaults + send_span: true +ddtrace_run_runtime_metrics: + <<: *defaults + env: {"DD_RUNTIME_METRICS_ENABLED": "true"} + ddtrace_run: true \ No newline at end of file diff --git a/benchmarks/startup/scenario.py b/benchmarks/startup/scenario.py index 522f92dc5f3..1c1bc2f2801 100644 --- a/benchmarks/startup/scenario.py +++ b/benchmarks/startup/scenario.py @@ -8,8 +8,10 @@ class Startup(bm.Scenario): import_ddtrace: bool import_ddtrace_auto: bool + ddtrace_run: bool import_flask: bool import_django: bool + send_span: bool env: str def run(self): @@ -33,8 +35,15 @@ def run(self): # `import django` doesn't really do anything, `django.core.management` is what `manage.py` uses commands.append("import django.core.management") + if self.send_span: + commands.append("from ddtrace.trace import tracer") + commands.append("tracer.trace('test-x', service='bench-test').finish()") + args = ["python", "-c"] + [";".join(commands)] + if self.ddtrace_run: + args = ["ddtrace-run"] + args + def _(loops: int): for _ in range(loops): subprocess.check_call(args=args, env=env)