ddtrace 0.45.0 → 0.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.circleci/config.yml +79 -0
- data/.rubocop.yml +250 -7
- data/.rubocop_todo.yml +396 -0
- data/Appraisals +15 -0
- data/CHANGELOG.md +68 -1
- data/Gemfile +38 -3
- data/Rakefile +5 -23
- data/ddtrace.gemspec +6 -36
- data/docs/DevelopmentGuide.md +28 -0
- data/docs/GettingStarted.md +8 -9
- data/integration/README.md +68 -0
- data/integration/apps/rack/.dockerignore +1 -0
- data/integration/apps/rack/.envrc.sample +1 -0
- data/integration/apps/rack/.gitignore +4 -0
- data/integration/apps/rack/.rspec +1 -0
- data/integration/apps/rack/Dockerfile +25 -0
- data/integration/apps/rack/Dockerfile-ci +11 -0
- data/integration/apps/rack/Gemfile +24 -0
- data/integration/apps/rack/README.md +93 -0
- data/integration/apps/rack/app/acme.rb +80 -0
- data/integration/apps/rack/app/datadog.rb +17 -0
- data/integration/apps/rack/bin/run +22 -0
- data/integration/apps/rack/bin/setup +17 -0
- data/integration/apps/rack/bin/test +24 -0
- data/integration/apps/rack/config.ru +6 -0
- data/integration/apps/rack/config/puma.rb +14 -0
- data/integration/apps/rack/config/unicorn.rb +23 -0
- data/integration/apps/rack/docker-compose.ci.yml +62 -0
- data/integration/apps/rack/docker-compose.yml +78 -0
- data/integration/apps/rack/script/build-images +38 -0
- data/integration/apps/rack/script/ci +50 -0
- data/integration/apps/rack/spec/integration/basic_spec.rb +10 -0
- data/integration/apps/rack/spec/spec_helper.rb +16 -0
- data/integration/apps/rack/spec/support/integration_helper.rb +22 -0
- data/integration/apps/rails-five/.dockerignore +1 -0
- data/integration/apps/rails-five/.env +3 -0
- data/integration/apps/rails-five/.envrc.sample +1 -0
- data/integration/apps/rails-five/.gitignore +30 -0
- data/integration/apps/rails-five/Dockerfile +25 -0
- data/integration/apps/rails-five/Dockerfile-ci +11 -0
- data/integration/apps/rails-five/Gemfile +104 -0
- data/integration/apps/rails-five/README.md +94 -0
- data/integration/apps/rails-five/Rakefile +6 -0
- data/integration/apps/rails-five/app/channels/application_cable/channel.rb +4 -0
- data/integration/apps/rails-five/app/channels/application_cable/connection.rb +4 -0
- data/integration/apps/rails-five/app/controllers/application_controller.rb +2 -0
- data/integration/apps/rails-five/app/controllers/basic_controller.rb +36 -0
- data/integration/apps/rails-five/app/controllers/concerns/.keep +0 -0
- data/integration/apps/rails-five/app/controllers/health_controller.rb +9 -0
- data/integration/apps/rails-five/app/controllers/jobs_controller.rb +12 -0
- data/integration/apps/rails-five/app/jobs/application_job.rb +2 -0
- data/integration/apps/rails-five/app/jobs/test_job.rb +12 -0
- data/integration/apps/rails-five/app/mailers/application_mailer.rb +4 -0
- data/integration/apps/rails-five/app/models/application_record.rb +3 -0
- data/integration/apps/rails-five/app/models/concerns/.keep +0 -0
- data/integration/apps/rails-five/app/models/test.rb +2 -0
- data/integration/apps/rails-five/app/views/layouts/mailer.html.erb +13 -0
- data/integration/apps/rails-five/app/views/layouts/mailer.text.erb +1 -0
- data/integration/apps/rails-five/bin/bundle +3 -0
- data/integration/apps/rails-five/bin/rails +9 -0
- data/integration/apps/rails-five/bin/rake +9 -0
- data/integration/apps/rails-five/bin/run +24 -0
- data/integration/apps/rails-five/bin/setup +27 -0
- data/integration/apps/rails-five/bin/spring +17 -0
- data/integration/apps/rails-five/bin/test +21 -0
- data/integration/apps/rails-five/bin/update +28 -0
- data/integration/apps/rails-five/config.ru +5 -0
- data/integration/apps/rails-five/config/application.rb +97 -0
- data/integration/apps/rails-five/config/boot.rb +4 -0
- data/integration/apps/rails-five/config/cable.yml +10 -0
- data/integration/apps/rails-five/config/credentials.yml.enc +1 -0
- data/integration/apps/rails-five/config/database.yml +28 -0
- data/integration/apps/rails-five/config/environment.rb +5 -0
- data/integration/apps/rails-five/config/environments/development.rb +51 -0
- data/integration/apps/rails-five/config/environments/production.rb +82 -0
- data/integration/apps/rails-five/config/environments/test.rb +43 -0
- data/integration/apps/rails-five/config/initializers/datadog.rb +18 -0
- data/integration/apps/rails-five/config/initializers/filter_parameter_logging.rb +4 -0
- data/integration/apps/rails-five/config/initializers/resque.rb +4 -0
- data/integration/apps/rails-five/config/initializers/rollbar.rb +5 -0
- data/integration/apps/rails-five/config/initializers/wrap_parameters.rb +14 -0
- data/integration/apps/rails-five/config/locales/en.yml +33 -0
- data/integration/apps/rails-five/config/puma.rb +24 -0
- data/integration/apps/rails-five/config/routes.rb +11 -0
- data/integration/apps/rails-five/config/spring.rb +6 -0
- data/integration/apps/rails-five/config/unicorn.rb +29 -0
- data/integration/apps/rails-five/db/migrate/20190927215052_create_tests.rb +11 -0
- data/integration/apps/rails-five/db/schema.rb +23 -0
- data/integration/apps/rails-five/db/seeds.rb +7 -0
- data/integration/apps/rails-five/docker-compose.ci.yml +98 -0
- data/integration/apps/rails-five/docker-compose.yml +100 -0
- data/integration/apps/rails-five/lib/tasks/.keep +0 -0
- data/integration/apps/rails-five/log/.keep +0 -0
- data/integration/apps/rails-five/public/robots.txt +1 -0
- data/integration/apps/rails-five/script/build-images +35 -0
- data/integration/apps/rails-five/script/ci +50 -0
- data/integration/apps/rails-five/spec/integration/basic_spec.rb +10 -0
- data/integration/apps/rails-five/spec/spec_helper.rb +16 -0
- data/integration/apps/rails-five/spec/support/integration_helper.rb +22 -0
- data/integration/apps/rails-five/storage/.keep +0 -0
- data/integration/apps/rails-five/tmp/.keep +0 -0
- data/integration/apps/rails-five/vendor/.keep +0 -0
- data/integration/apps/ruby/.dockerignore +1 -0
- data/integration/apps/ruby/.envrc.sample +1 -0
- data/integration/apps/ruby/.gitignore +2 -0
- data/integration/apps/ruby/Dockerfile +25 -0
- data/integration/apps/ruby/Dockerfile-ci +11 -0
- data/integration/apps/ruby/Gemfile +11 -0
- data/integration/apps/ruby/README.md +70 -0
- data/integration/apps/ruby/agent.yaml +3 -0
- data/integration/apps/ruby/app/datadog.rb +13 -0
- data/integration/apps/ruby/app/fibonacci.rb +58 -0
- data/integration/apps/ruby/bin/run +20 -0
- data/integration/apps/ruby/bin/setup +17 -0
- data/integration/apps/ruby/bin/test +21 -0
- data/integration/apps/ruby/docker-compose.ci.yml +51 -0
- data/integration/apps/ruby/docker-compose.yml +63 -0
- data/integration/apps/ruby/script/build-images +38 -0
- data/integration/apps/ruby/script/ci +50 -0
- data/integration/images/agent/Dockerfile +2 -0
- data/integration/images/agent/agent.yaml +3 -0
- data/integration/images/include/datadog/analyzer.rb +71 -0
- data/integration/images/include/datadog/demo_env.rb +101 -0
- data/integration/images/include/http-health-check +33 -0
- data/integration/images/ruby/2.0/Dockerfile +54 -0
- data/integration/images/ruby/2.1/Dockerfile +54 -0
- data/integration/images/ruby/2.2/Dockerfile +54 -0
- data/integration/images/ruby/2.3/Dockerfile +70 -0
- data/integration/images/ruby/2.4/Dockerfile +54 -0
- data/integration/images/ruby/2.5/Dockerfile +54 -0
- data/integration/images/ruby/2.6/Dockerfile +54 -0
- data/integration/images/ruby/2.7/Dockerfile +54 -0
- data/integration/images/ruby/3.0/Dockerfile +54 -0
- data/integration/images/wrk/Dockerfile +33 -0
- data/integration/images/wrk/scripts/entrypoint.sh +17 -0
- data/integration/images/wrk/scripts/scenarios/basic/default.lua +1 -0
- data/integration/images/wrk/scripts/scenarios/basic/fibonacci.lua +1 -0
- data/integration/script/build-images +43 -0
- data/lib/ddtrace.rb +0 -5
- data/lib/ddtrace/analytics.rb +2 -0
- data/lib/ddtrace/buffer.rb +4 -4
- data/lib/ddtrace/configuration.rb +1 -1
- data/lib/ddtrace/configuration/base.rb +1 -1
- data/lib/ddtrace/configuration/components.rb +2 -2
- data/lib/ddtrace/configuration/option_definition.rb +1 -3
- data/lib/ddtrace/configuration/options.rb +2 -3
- data/lib/ddtrace/configuration/settings.rb +17 -3
- data/lib/ddtrace/context.rb +5 -6
- data/lib/ddtrace/context_provider.rb +1 -0
- data/lib/ddtrace/contrib/action_cable/event.rb +1 -0
- data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +1 -3
- data/lib/ddtrace/contrib/action_view/event.rb +1 -1
- data/lib/ddtrace/contrib/action_view/utils.rb +1 -1
- data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +17 -5
- data/lib/ddtrace/contrib/active_record/utils.rb +1 -0
- data/lib/ddtrace/contrib/active_support/notifications/event.rb +2 -1
- data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +1 -0
- data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +9 -5
- data/lib/ddtrace/contrib/auto_instrument.rb +1 -0
- data/lib/ddtrace/contrib/aws/patcher.rb +1 -0
- data/lib/ddtrace/contrib/aws/services.rb +1 -0
- data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +1 -4
- data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +0 -10
- data/lib/ddtrace/contrib/cucumber/ext.rb +0 -2
- data/lib/ddtrace/contrib/cucumber/formatter.rb +5 -11
- data/lib/ddtrace/contrib/dalli/patcher.rb +0 -38
- data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -1
- data/lib/ddtrace/contrib/elasticsearch/quantize.rb +3 -2
- data/lib/ddtrace/contrib/ethon/easy_patch.rb +5 -5
- data/lib/ddtrace/contrib/excon/middleware.rb +2 -6
- data/lib/ddtrace/contrib/extensions.rb +1 -0
- data/lib/ddtrace/contrib/faraday/middleware.rb +1 -3
- data/lib/ddtrace/contrib/faraday/patcher.rb +0 -36
- data/lib/ddtrace/contrib/grape/endpoint.rb +8 -15
- data/lib/ddtrace/contrib/grape/patcher.rb +0 -42
- data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +8 -8
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +1 -0
- data/lib/ddtrace/contrib/grpc/patcher.rb +0 -36
- data/lib/ddtrace/contrib/http/circuit_breaker.rb +1 -3
- data/lib/ddtrace/contrib/http/instrumentation.rb +5 -5
- data/lib/ddtrace/contrib/httpclient/instrumentation.rb +2 -3
- data/lib/ddtrace/contrib/httprb/instrumentation.rb +2 -3
- data/lib/ddtrace/contrib/mongodb/instrumentation.rb +2 -0
- data/lib/ddtrace/contrib/mongodb/subscribers.rb +2 -3
- data/lib/ddtrace/contrib/patcher.rb +1 -1
- data/lib/ddtrace/contrib/qless/qless_job.rb +1 -0
- data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +1 -0
- data/lib/ddtrace/contrib/que/ext.rb +19 -19
- data/lib/ddtrace/contrib/que/tracer.rb +1 -1
- data/lib/ddtrace/contrib/racecar/event.rb +1 -0
- data/lib/ddtrace/contrib/rack/configuration/settings.rb +3 -3
- data/lib/ddtrace/contrib/rack/middlewares.rb +5 -10
- data/lib/ddtrace/contrib/rack/patcher.rb +1 -3
- data/lib/ddtrace/contrib/rake/instrumentation.rb +4 -2
- data/lib/ddtrace/contrib/redis/quantize.rb +1 -0
- data/lib/ddtrace/contrib/redis/vendor/LICENSE +20 -0
- data/lib/ddtrace/contrib/redis/vendor/resolver.rb +6 -7
- data/lib/ddtrace/contrib/registry.rb +2 -2
- data/lib/ddtrace/contrib/resque/resque_job.rb +2 -0
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +1 -3
- data/lib/ddtrace/contrib/rspec/configuration/settings.rb +0 -10
- data/lib/ddtrace/contrib/rspec/example.rb +24 -10
- data/lib/ddtrace/contrib/rspec/ext.rb +0 -3
- data/lib/ddtrace/contrib/rspec/integration.rb +1 -1
- data/lib/ddtrace/contrib/rspec/patcher.rb +0 -2
- data/lib/ddtrace/contrib/sequel/utils.rb +5 -6
- data/lib/ddtrace/contrib/shoryuken/tracer.rb +0 -1
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +2 -7
- data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -1
- data/lib/ddtrace/contrib/sinatra/env.rb +1 -3
- data/lib/ddtrace/contrib/sinatra/headers.rb +1 -3
- data/lib/ddtrace/contrib/sinatra/tracer.rb +1 -3
- data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +3 -3
- data/lib/ddtrace/contrib/sneakers/ext.rb +11 -11
- data/lib/ddtrace/contrib/sneakers/tracer.rb +2 -4
- data/lib/ddtrace/contrib/status_code_matcher.rb +5 -3
- data/lib/ddtrace/correlation.rb +1 -0
- data/lib/ddtrace/diagnostics/environment_logger.rb +2 -1
- data/lib/ddtrace/distributed_tracing/headers/headers.rb +1 -0
- data/lib/ddtrace/distributed_tracing/headers/helpers.rb +1 -3
- data/lib/ddtrace/ext/ci.rb +2 -2
- data/lib/ddtrace/ext/distributed.rb +1 -1
- data/lib/ddtrace/ext/http.rb +1 -1
- data/lib/ddtrace/ext/runtime.rb +1 -1
- data/lib/ddtrace/forced_tracing.rb +2 -0
- data/lib/ddtrace/logger.rb +1 -1
- data/lib/ddtrace/metrics.rb +10 -6
- data/lib/ddtrace/opentracer/distributed_headers.rb +3 -0
- data/lib/ddtrace/opentracer/span.rb +2 -6
- data/lib/ddtrace/opentracer/thread_local_scope.rb +1 -0
- data/lib/ddtrace/patcher.rb +2 -3
- data/lib/ddtrace/pin.rb +3 -52
- data/lib/ddtrace/pipeline/span_filter.rb +1 -1
- data/lib/ddtrace/propagation/grpc_propagator.rb +1 -0
- data/lib/ddtrace/quantization/http.rb +1 -0
- data/lib/ddtrace/runtime/cgroup.rb +1 -1
- data/lib/ddtrace/runtime/container.rb +2 -2
- data/lib/ddtrace/sampler.rb +1 -1
- data/lib/ddtrace/sampling/rule_sampler.rb +1 -0
- data/lib/ddtrace/span.rb +7 -7
- data/lib/ddtrace/sync_writer.rb +7 -10
- data/lib/ddtrace/tracer.rb +1 -1
- data/lib/ddtrace/transport/http.rb +1 -3
- data/lib/ddtrace/transport/http/adapters/net.rb +9 -4
- data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
- data/lib/ddtrace/transport/http/adapters/unix_socket.rb +2 -4
- data/lib/ddtrace/transport/http/builder.rb +2 -0
- data/lib/ddtrace/transport/http/traces.rb +2 -3
- data/lib/ddtrace/transport/io.rb +1 -1
- data/lib/ddtrace/transport/traces.rb +3 -0
- data/lib/ddtrace/utils/time.rb +25 -1
- data/lib/ddtrace/vendor/active_record/MIT-LICENSE +20 -0
- data/lib/ddtrace/version.rb +1 -1
- data/lib/ddtrace/workers.rb +5 -0
- data/lib/ddtrace/workers/async.rb +8 -0
- data/lib/ddtrace/workers/loop.rb +3 -0
- data/lib/ddtrace/workers/polling.rb +1 -0
- data/lib/ddtrace/workers/trace_writer.rb +9 -10
- data/lib/ddtrace/writer.rb +3 -3
- metadata +133 -400
- data/lib/ddtrace/augmentation.rb +0 -13
- data/lib/ddtrace/augmentation/method_wrapper.rb +0 -20
- data/lib/ddtrace/augmentation/method_wrapping.rb +0 -38
- data/lib/ddtrace/augmentation/shim.rb +0 -102
- data/lib/ddtrace/contrib/rspec/example_group.rb +0 -61
- data/lib/ddtrace/monkey.rb +0 -58
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# This file should contain all the record creation needed to seed the database with its default values.
|
|
2
|
+
# The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup).
|
|
3
|
+
#
|
|
4
|
+
# Examples:
|
|
5
|
+
#
|
|
6
|
+
# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
|
|
7
|
+
# Character.create(name: 'Luke', movie: movies.first)
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
version: '3.4'
|
|
2
|
+
services:
|
|
3
|
+
app:
|
|
4
|
+
# Build at dd-trace-rb level to copy in current code
|
|
5
|
+
# and use it as the `ddtrace` gem.
|
|
6
|
+
build:
|
|
7
|
+
context: ../../..
|
|
8
|
+
dockerfile: integration/apps/rails-five/Dockerfile-ci
|
|
9
|
+
args:
|
|
10
|
+
BASE_IMAGE: ${APP_IMAGE}
|
|
11
|
+
depends_on:
|
|
12
|
+
- ddagent
|
|
13
|
+
- mysql
|
|
14
|
+
- redis
|
|
15
|
+
environment:
|
|
16
|
+
- BUNDLE_GEMFILE=/app/Gemfile
|
|
17
|
+
- DATABASE_URL=mysql2://mysql:mysql@mysql:3306
|
|
18
|
+
- DATABASE_ROOT_USER=root
|
|
19
|
+
- DATABASE_ROOT_PASSWORD=root
|
|
20
|
+
- DD_AGENT_HOST=ddagent
|
|
21
|
+
- DD_METRIC_AGENT_PORT=8125
|
|
22
|
+
- DD_TRACE_AGENT_PORT=8126
|
|
23
|
+
- DD_HEALTH_METRICS_ENABLED=true
|
|
24
|
+
- DD_SERVICE=acme-rails-five
|
|
25
|
+
- RAILS_ENV=production
|
|
26
|
+
- REDIS_URL=redis://redis:6379
|
|
27
|
+
- SECRET_KEY_BASE=5ced2602472cdf650e2cfa5be40c7d0dffd4e1da1483e21fa9c776e338b363c8bf75144bc6e6c5177a0d7a208a899552f98b3f82d4ea74cf5f9b9d3accbb1537
|
|
28
|
+
# Use these to choose what is run
|
|
29
|
+
- DD_DEMO_ENV_PROCESS=puma
|
|
30
|
+
- DD_DEMO_ENV_FEATURES=tracing
|
|
31
|
+
expose:
|
|
32
|
+
- "80"
|
|
33
|
+
stdin_open: true
|
|
34
|
+
tty: true
|
|
35
|
+
ddagent:
|
|
36
|
+
image: datadog/dd-apm-demo:agent
|
|
37
|
+
environment:
|
|
38
|
+
- DD_APM_ENABLED=true
|
|
39
|
+
- DD_PROCESS_AGENT_ENABLED=false
|
|
40
|
+
- DD_BIND_HOST=0.0.0.0
|
|
41
|
+
- DD_API_KEY=invalid_api_key
|
|
42
|
+
- LOG_LEVEL=DEBUG
|
|
43
|
+
- DD_LOGS_STDOUT=yes
|
|
44
|
+
- DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true
|
|
45
|
+
expose:
|
|
46
|
+
- "8125/udp"
|
|
47
|
+
- "8126"
|
|
48
|
+
mysql:
|
|
49
|
+
image: mysql:5.6
|
|
50
|
+
environment:
|
|
51
|
+
- MYSQL_DATABASE=acme_production
|
|
52
|
+
- MYSQL_ROOT_PASSWORD=root
|
|
53
|
+
- MYSQL_ROOT_HOST=%
|
|
54
|
+
- MYSQL_PASSWORD=mysql
|
|
55
|
+
- MYSQL_USER=mysql
|
|
56
|
+
expose:
|
|
57
|
+
- "3306"
|
|
58
|
+
healthcheck:
|
|
59
|
+
test: ["CMD", "mysqladmin", "ping", "--silent"]
|
|
60
|
+
interval: 5s
|
|
61
|
+
timeout: 5s
|
|
62
|
+
retries: 3
|
|
63
|
+
redis:
|
|
64
|
+
image: redis:3.0
|
|
65
|
+
expose:
|
|
66
|
+
- "6379"
|
|
67
|
+
# Build at dd-trace-rb level to copy in current code
|
|
68
|
+
# and use it as the `ddtrace` gem.
|
|
69
|
+
integration-tester:
|
|
70
|
+
build:
|
|
71
|
+
context: ../../..
|
|
72
|
+
dockerfile: integration/apps/rails-five/Dockerfile-ci
|
|
73
|
+
args:
|
|
74
|
+
BASE_IMAGE: ${APP_IMAGE}
|
|
75
|
+
command: bin/test
|
|
76
|
+
depends_on:
|
|
77
|
+
- app
|
|
78
|
+
environment:
|
|
79
|
+
- BUNDLE_GEMFILE=/app/Gemfile
|
|
80
|
+
- DATABASE_URL=mysql2://mysql:mysql@mysql:3306
|
|
81
|
+
- DD_AGENT_HOST=ddagent
|
|
82
|
+
- DD_METRIC_AGENT_PORT=8125
|
|
83
|
+
- DD_TRACE_AGENT_PORT=8126
|
|
84
|
+
- DD_HEALTH_METRICS_ENABLED=true
|
|
85
|
+
- DD_SERVICE=acme-rails-five-tester
|
|
86
|
+
- RAILS_ENV=test
|
|
87
|
+
- REDIS_URL=redis://redis:6379
|
|
88
|
+
- SECRET_KEY_BASE=5ced2602472cdf650e2cfa5be40c7d0dffd4e1da1483e21fa9c776e338b363c8bf75144bc6e6c5177a0d7a208a899552f98b3f82d4ea74cf5f9b9d3accbb1537
|
|
89
|
+
- HEALTH_CHECK_URL=http://app/health
|
|
90
|
+
- HEALTH_CHECK_INTERVAL=1
|
|
91
|
+
- HEALTH_CHECK_MAX_ATTEMPTS=60
|
|
92
|
+
- TEST_HOSTNAME=app
|
|
93
|
+
- TEST_PORT=80
|
|
94
|
+
- TEST_INTEGRATION=true
|
|
95
|
+
# volumes:
|
|
96
|
+
# - .:/app
|
|
97
|
+
# - ../../images/include:/vendor/dd-demo
|
|
98
|
+
# - ../../..:/vendor/dd-trace-rb
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
version: '3.4'
|
|
2
|
+
services:
|
|
3
|
+
app:
|
|
4
|
+
build:
|
|
5
|
+
context: .
|
|
6
|
+
args:
|
|
7
|
+
BASE_IMAGE: datadog/dd-apm-demo:rb-2.7
|
|
8
|
+
depends_on:
|
|
9
|
+
- ddagent
|
|
10
|
+
- mysql
|
|
11
|
+
- redis
|
|
12
|
+
environment:
|
|
13
|
+
- BUNDLE_GEMFILE=/app/Gemfile
|
|
14
|
+
- DATABASE_URL=mysql2://mysql:mysql@mysql:3306
|
|
15
|
+
- DATABASE_ROOT_USER=root
|
|
16
|
+
- DATABASE_ROOT_PASSWORD=root
|
|
17
|
+
- DD_AGENT_HOST=ddagent
|
|
18
|
+
- DD_METRIC_AGENT_PORT=8125
|
|
19
|
+
- DD_TRACE_AGENT_PORT=8126
|
|
20
|
+
- DD_HEALTH_METRICS_ENABLED=true
|
|
21
|
+
- DD_SERVICE=acme-rails-five
|
|
22
|
+
- RAILS_ENV=production
|
|
23
|
+
- REDIS_URL=redis://redis:6379
|
|
24
|
+
- SECRET_KEY_BASE=5ced2602472cdf650e2cfa5be40c7d0dffd4e1da1483e21fa9c776e338b363c8bf75144bc6e6c5177a0d7a208a899552f98b3f82d4ea74cf5f9b9d3accbb1537
|
|
25
|
+
# Use these to choose what is run
|
|
26
|
+
- DD_DEMO_ENV_PROCESS=puma
|
|
27
|
+
- DD_DEMO_ENV_FEATURES=tracing
|
|
28
|
+
# Use this for a local version of ddtrace
|
|
29
|
+
- DD_DEMO_ENV_GEM_LOCAL_DDTRACE=/vendor/dd-trace-rb
|
|
30
|
+
# Use these for a specific revision of ddtrace
|
|
31
|
+
# - DD_DEMO_ENV_GEM_GIT_DDTRACE=https://github.com/DataDog/dd-trace-rb.git
|
|
32
|
+
# - DD_DEMO_ENV_GEM_REF_DDTRACE=f233336994315bfa04dac581387a8152bab8b85a
|
|
33
|
+
expose:
|
|
34
|
+
- "80"
|
|
35
|
+
stdin_open: true
|
|
36
|
+
tty: true
|
|
37
|
+
volumes:
|
|
38
|
+
- .:/app
|
|
39
|
+
- ./data/app:/data/app
|
|
40
|
+
- bundle:/usr/local/bundle
|
|
41
|
+
- ../../images/include:/vendor/dd-demo
|
|
42
|
+
- ../../..:/vendor/dd-trace-rb
|
|
43
|
+
ddagent:
|
|
44
|
+
image: datadog/dd-apm-demo:agent
|
|
45
|
+
environment:
|
|
46
|
+
- DD_APM_ENABLED=true
|
|
47
|
+
- DD_PROCESS_AGENT_ENABLED=false
|
|
48
|
+
- DD_BIND_HOST=0.0.0.0
|
|
49
|
+
- DD_API_KEY
|
|
50
|
+
- LOG_LEVEL=DEBUG
|
|
51
|
+
- DD_LOGS_STDOUT=yes
|
|
52
|
+
- DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true
|
|
53
|
+
expose:
|
|
54
|
+
- "8125/udp"
|
|
55
|
+
- "8126"
|
|
56
|
+
volumes:
|
|
57
|
+
- ../../images/agent/agent.yaml:/etc/datadog-agent/datadog.yaml
|
|
58
|
+
# For monitoring performance of containers (e.g. CPU, Memory, etc...)
|
|
59
|
+
# - type: bind
|
|
60
|
+
# source: ../../config/agent.yaml
|
|
61
|
+
# target: /etc/datadog-agent/datadog.yaml
|
|
62
|
+
# - type: bind
|
|
63
|
+
# source: /var/run/docker.sock
|
|
64
|
+
# target: /var/run/docker.sock:ro
|
|
65
|
+
# - type: bind
|
|
66
|
+
# source: /proc/
|
|
67
|
+
# target: /host/proc/:ro
|
|
68
|
+
# - type: bind
|
|
69
|
+
# source: /sys/fs/cgroup/
|
|
70
|
+
# target: /host/sys/fs/cgroup:ro
|
|
71
|
+
mysql:
|
|
72
|
+
image: mysql:5.6
|
|
73
|
+
environment:
|
|
74
|
+
- MYSQL_DATABASE=acme_production
|
|
75
|
+
- MYSQL_ROOT_PASSWORD=root
|
|
76
|
+
- MYSQL_ROOT_HOST=%
|
|
77
|
+
- MYSQL_PASSWORD=mysql
|
|
78
|
+
- MYSQL_USER=mysql
|
|
79
|
+
expose:
|
|
80
|
+
- "3306"
|
|
81
|
+
redis:
|
|
82
|
+
image: redis:3.0
|
|
83
|
+
expose:
|
|
84
|
+
- "6379"
|
|
85
|
+
load-tester:
|
|
86
|
+
build:
|
|
87
|
+
context: ../../images
|
|
88
|
+
dockerfile: wrk/Dockerfile
|
|
89
|
+
command: -t10 -c10 -d43200s -s /scripts/scenarios/basic/default.lua http://app/basic/default
|
|
90
|
+
depends_on:
|
|
91
|
+
- app
|
|
92
|
+
environment:
|
|
93
|
+
- HEALTH_CHECK_URL=http://app/health
|
|
94
|
+
- HEALTH_CHECK_INTERVAL=1
|
|
95
|
+
- HEALTH_CHECK_MAX_ATTEMPTS=30
|
|
96
|
+
volumes:
|
|
97
|
+
- ./data/wrk:/data
|
|
98
|
+
- ../../images/wrk/scripts:/scripts
|
|
99
|
+
volumes:
|
|
100
|
+
bundle:
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
APP_SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|
5
|
+
APP_DIR=${APP_SCRIPT_DIR%/script}
|
|
6
|
+
cd $APP_DIR
|
|
7
|
+
|
|
8
|
+
while getopts ":v:" opt; do
|
|
9
|
+
case $opt in
|
|
10
|
+
v)
|
|
11
|
+
APP_RUBY_VERSION=$OPTARG
|
|
12
|
+
;;
|
|
13
|
+
\?)
|
|
14
|
+
echo "Invalid option: -$OPTARG" >&2
|
|
15
|
+
exit 1
|
|
16
|
+
;;
|
|
17
|
+
:)
|
|
18
|
+
echo "Option -$OPTARG requires an argument." >&2
|
|
19
|
+
exit 1
|
|
20
|
+
;;
|
|
21
|
+
esac
|
|
22
|
+
done
|
|
23
|
+
|
|
24
|
+
echo "== Building Rails 5 images... =="
|
|
25
|
+
if [ -v APP_RUBY_VERSION ]; then
|
|
26
|
+
docker build --build-arg BASE_IMAGE=datadog/dd-apm-demo:rb-$APP_RUBY_VERSION -t datadog/dd-apm-demo:rb-$APP_RUBY_VERSION-rails-five .
|
|
27
|
+
else
|
|
28
|
+
docker build --build-arg BASE_IMAGE=datadog/dd-apm-demo:rb-2.3 -t datadog/dd-apm-demo:rb-2.3-rails-five .
|
|
29
|
+
docker build --build-arg BASE_IMAGE=datadog/dd-apm-demo:rb-2.4 -t datadog/dd-apm-demo:rb-2.4-rails-five .
|
|
30
|
+
docker build --build-arg BASE_IMAGE=datadog/dd-apm-demo:rb-2.5 -t datadog/dd-apm-demo:rb-2.5-rails-five .
|
|
31
|
+
docker build --build-arg BASE_IMAGE=datadog/dd-apm-demo:rb-2.6 -t datadog/dd-apm-demo:rb-2.6-rails-five .
|
|
32
|
+
docker build --build-arg BASE_IMAGE=datadog/dd-apm-demo:rb-2.7 -t datadog/dd-apm-demo:rb-2.7-rails-five .
|
|
33
|
+
docker build --build-arg BASE_IMAGE=datadog/dd-apm-demo:rb-3.0 -t datadog/dd-apm-demo:rb-3.0-rails-five .
|
|
34
|
+
fi
|
|
35
|
+
echo "== Done building Rails 5 images. =="
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
APP_SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|
5
|
+
APP_DIR=${APP_SCRIPT_DIR%/script}
|
|
6
|
+
cd $APP_DIR
|
|
7
|
+
|
|
8
|
+
# Parse options
|
|
9
|
+
while getopts "v:" opt; do
|
|
10
|
+
case $opt in
|
|
11
|
+
v)
|
|
12
|
+
APP_RUBY_VERSION=$OPTARG
|
|
13
|
+
;;
|
|
14
|
+
\?)
|
|
15
|
+
echo "Invalid option: -$OPTARG" >&2
|
|
16
|
+
exit 1
|
|
17
|
+
;;
|
|
18
|
+
:)
|
|
19
|
+
echo "Option -$OPTARG requires an argument." >&2
|
|
20
|
+
exit 1
|
|
21
|
+
;;
|
|
22
|
+
esac
|
|
23
|
+
done
|
|
24
|
+
|
|
25
|
+
# Validate options
|
|
26
|
+
if [ -z ${APP_RUBY_VERSION+x} ]; then
|
|
27
|
+
echo "You must specify a Ruby version with -v. (e.g. 2.7)" >&2
|
|
28
|
+
exit 1
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
# Set configuration
|
|
32
|
+
APP_BASE_IMAGE=${APP_BASE_IMAGE:-datadog/dd-apm-demo:rb-$APP_RUBY_VERSION}
|
|
33
|
+
APP_IMAGE=${APP_IMAGE:-$APP_BASE_IMAGE-rails-five}
|
|
34
|
+
APP_COMPOSE_FILES="-f docker-compose.ci.yml"
|
|
35
|
+
|
|
36
|
+
echo "== Running integration tests... =="
|
|
37
|
+
echo " - App: rails-five"
|
|
38
|
+
echo " - Ruby version: $APP_RUBY_VERSION"
|
|
39
|
+
echo " - Base image: $APP_BASE_IMAGE"
|
|
40
|
+
echo " - App image: $APP_IMAGE"
|
|
41
|
+
echo ""
|
|
42
|
+
|
|
43
|
+
# Pull/build any missing images
|
|
44
|
+
APP_IMAGE=$APP_IMAGE docker-compose $APP_COMPOSE_FILES build
|
|
45
|
+
|
|
46
|
+
# Run the test suite
|
|
47
|
+
APP_IMAGE=$APP_IMAGE docker-compose $APP_COMPOSE_FILES run integration-tester
|
|
48
|
+
|
|
49
|
+
# Cleanup
|
|
50
|
+
APP_IMAGE=$APP_IMAGE docker-compose $APP_COMPOSE_FILES down -t 0 --remove-orphans
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require 'byebug'
|
|
2
|
+
require 'support/integration_helper'
|
|
3
|
+
|
|
4
|
+
RSpec.configure do |config|
|
|
5
|
+
config.include IntegrationHelper
|
|
6
|
+
|
|
7
|
+
config.expect_with :rspec do |expectations|
|
|
8
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
config.mock_with :rspec do |mocks|
|
|
12
|
+
mocks.verify_partial_doubles = true
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
config.shared_context_metadata_behavior = :apply_to_host_groups
|
|
16
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'net/http'
|
|
2
|
+
|
|
3
|
+
module IntegrationHelper
|
|
4
|
+
shared_context 'integration test' do
|
|
5
|
+
before do
|
|
6
|
+
skip 'Integration tests not enabled.' unless ENV['TEST_INTEGRATION']
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def hostname
|
|
10
|
+
ENV['TEST_HOSTNAME']
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def port
|
|
14
|
+
ENV['TEST_PORT']
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def get(path)
|
|
18
|
+
uri = URI("http://#{hostname}:#{port}/#{path}")
|
|
19
|
+
Net::HTTP.get_response(uri)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Gemfile.lock
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export DD_API_KEY=<Your Datadog API key here>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Select base image
|
|
2
|
+
ARG BASE_IMAGE
|
|
3
|
+
FROM ${BASE_IMAGE}
|
|
4
|
+
|
|
5
|
+
# Setup directory
|
|
6
|
+
RUN mkdir /app
|
|
7
|
+
WORKDIR /app
|
|
8
|
+
|
|
9
|
+
# Setup specific version of ddtrace, if specified.
|
|
10
|
+
ARG ddtrace_git
|
|
11
|
+
ENV DD_DEMO_ENV_GEM_GIT_DDTRACE ${ddtrace_git}
|
|
12
|
+
|
|
13
|
+
ARG ddtrace_ref
|
|
14
|
+
ENV DD_DEMO_ENV_GEM_REF_DDTRACE ${ddtrace_ref}
|
|
15
|
+
|
|
16
|
+
# Install dependencies
|
|
17
|
+
COPY Gemfile /app/Gemfile
|
|
18
|
+
RUN bundle install
|
|
19
|
+
|
|
20
|
+
# Add files
|
|
21
|
+
COPY . /app
|
|
22
|
+
|
|
23
|
+
# Set entrypoint
|
|
24
|
+
ENTRYPOINT ["/bin/bash", "-c"]
|
|
25
|
+
CMD ["bin/setup && bin/run"]
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Select base image
|
|
2
|
+
ARG BASE_IMAGE
|
|
3
|
+
FROM ${BASE_IMAGE}
|
|
4
|
+
|
|
5
|
+
# Add gem
|
|
6
|
+
COPY . /vendor/dd-trace-rb
|
|
7
|
+
|
|
8
|
+
# Install dependencies
|
|
9
|
+
# Setup specific version of ddtrace, if specified.
|
|
10
|
+
ENV DD_DEMO_ENV_GEM_LOCAL_DDTRACE /vendor/dd-trace-rb
|
|
11
|
+
RUN bundle install
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Ruby: Demo application for Datadog APM
|
|
2
|
+
|
|
3
|
+
A generic Ruby application with some common use scenarios.
|
|
4
|
+
|
|
5
|
+
For generating Datadog APM traces and profiles.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
Install [direnv](https://github.com/direnv/direnv) for applying local settings.
|
|
10
|
+
|
|
11
|
+
1. `cp .envrc.sample .envrc` and add your Datadog API key.
|
|
12
|
+
2. `direnv allow` to load the env var.
|
|
13
|
+
4. `docker-compose run --rm app bin/setup`
|
|
14
|
+
|
|
15
|
+
## Running the application
|
|
16
|
+
|
|
17
|
+
### To monitor performance of Docker containers with Datadog
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
docker run --rm --name dd-agent -v /var/run/docker.sock:/var/run/docker.sock:ro -v /proc/:/host/proc/:ro -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro -e API_KEY=$DD_API_KEY datadog/docker-dd-agent:latest
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Starting the application
|
|
24
|
+
|
|
25
|
+
Run `docker-compose up` to auto-start the application.
|
|
26
|
+
|
|
27
|
+
Alternatively, you can run it manually with:
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
docker-compose run --rm app bin/run <process>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
The `<process>` argument is optional, and will default to `DD_DEMO_ENV_PROCESS` if not provided. See [Processes](#processes) for more details.
|
|
34
|
+
|
|
35
|
+
##### Processes
|
|
36
|
+
|
|
37
|
+
Within the container, run `bin/run <process>` where `<process>` is one of the following values:
|
|
38
|
+
|
|
39
|
+
- `fibonacci`: Fibonacci number generator
|
|
40
|
+
- `irb`: IRB session
|
|
41
|
+
|
|
42
|
+
Alternatively, set `DD_DEMO_ENV_PROCESS` to run a particular process by default when `bin/run` is run.
|
|
43
|
+
|
|
44
|
+
##### Features
|
|
45
|
+
|
|
46
|
+
Set `DD_DEMO_ENV_PROCESS` to a comma-delimited list of any of the following values to activate the feature:
|
|
47
|
+
|
|
48
|
+
- `tracing`: Tracing instrumentation
|
|
49
|
+
- `profiling`: Profiling (NOTE: Must also set `DD_PROFILING_ENABLED` to match.)
|
|
50
|
+
- `debug`: Enable diagnostic debug mode
|
|
51
|
+
- `analytics`: Enable trace analytics
|
|
52
|
+
- `runtime_metrics`: Enable runtime metrics
|
|
53
|
+
- `pprof_to_file`: Dump profiling pprof to file instead of agent.
|
|
54
|
+
|
|
55
|
+
e.g. `DD_DEMO_ENV_PROCESS=tracing,profiling`
|
|
56
|
+
|
|
57
|
+
### Running integration tests
|
|
58
|
+
|
|
59
|
+
You can run integration tests using the following and substituting for the Ruby major and minor version (e.g. `2.7`)
|
|
60
|
+
|
|
61
|
+
```sh
|
|
62
|
+
./script/build-images -v <RUBY_VERSION>
|
|
63
|
+
./script/ci -v <RUBY_VERSION>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Or inside a running container:
|
|
67
|
+
|
|
68
|
+
```sh
|
|
69
|
+
./bin/test
|
|
70
|
+
```
|