elastic-apm 3.1.0 → 3.2.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/.ci/.jenkins_exclude.yml +47 -0
- data/.ci/.jenkins_framework.yml +4 -0
- data/.ci/.jenkins_master_framework.yml +1 -0
- data/.ci/.jenkins_ruby.yml +1 -0
- data/.ci/downstreamTests.groovy +1 -1
- data/.gitignore +2 -1
- data/.rspec +1 -0
- data/CHANGELOG.asciidoc +24 -0
- data/Dockerfile +43 -0
- data/Gemfile +34 -15
- data/README.md +30 -1
- data/bin/dev +54 -0
- data/bin/run-tests +27 -0
- data/docker-compose.yml +32 -0
- data/docs/api.asciidoc +13 -2
- data/docs/configuration.asciidoc +30 -0
- data/docs/getting-started-rack.asciidoc +24 -0
- data/docs/release-notes.asciidoc +1 -1
- data/lib/elastic_apm.rb +12 -1
- data/lib/elastic_apm/agent.rb +15 -3
- data/lib/elastic_apm/central_config.rb +39 -19
- data/lib/elastic_apm/child_durations.rb +42 -0
- data/lib/elastic_apm/config.rb +27 -11
- data/lib/elastic_apm/context/request/socket.rb +1 -1
- data/lib/elastic_apm/context_builder.rb +1 -1
- data/lib/elastic_apm/error.rb +10 -0
- data/lib/elastic_apm/error/exception.rb +7 -0
- data/lib/elastic_apm/grape.rb +48 -0
- data/lib/elastic_apm/instrumenter.rb +77 -4
- data/lib/elastic_apm/logging.rb +0 -2
- data/lib/elastic_apm/metrics.rb +39 -26
- data/lib/elastic_apm/metrics/breakdown_set.rb +14 -0
- data/lib/elastic_apm/metrics/{cpu_mem.rb → cpu_mem_set.rb} +62 -54
- data/lib/elastic_apm/metrics/metric.rb +117 -0
- data/lib/elastic_apm/metrics/set.rb +106 -0
- data/lib/elastic_apm/metrics/span_scoped_set.rb +39 -0
- data/lib/elastic_apm/metrics/transaction_set.rb +11 -0
- data/lib/elastic_apm/metrics/vm_set.rb +44 -0
- data/lib/elastic_apm/metricset.rb +31 -4
- data/lib/elastic_apm/normalizers.rb +6 -0
- data/lib/elastic_apm/normalizers/grape.rb +5 -0
- data/lib/elastic_apm/normalizers/grape/endpoint_run.rb +47 -0
- data/lib/elastic_apm/normalizers/rails/active_record.rb +16 -5
- data/lib/elastic_apm/opentracing.rb +4 -4
- data/lib/elastic_apm/rails.rb +12 -2
- data/lib/elastic_apm/railtie.rb +1 -5
- data/lib/elastic_apm/sinatra.rb +1 -1
- data/lib/elastic_apm/span.rb +15 -10
- data/lib/elastic_apm/spies.rb +0 -1
- data/lib/elastic_apm/sql_summarizer.rb +8 -6
- data/lib/elastic_apm/subscriber.rb +4 -1
- data/lib/elastic_apm/transaction.rb +6 -6
- data/lib/elastic_apm/transport/base.rb +7 -0
- data/lib/elastic_apm/transport/connection.rb +11 -69
- data/lib/elastic_apm/transport/connection/http.rb +43 -35
- data/lib/elastic_apm/transport/connection/proxy_pipe.rb +0 -3
- data/lib/elastic_apm/transport/headers.rb +62 -0
- data/lib/elastic_apm/transport/serializers.rb +0 -2
- data/lib/elastic_apm/transport/serializers/metricset_serializer.rb +19 -6
- data/lib/elastic_apm/transport/serializers/span_serializer.rb +3 -3
- data/lib/elastic_apm/transport/user_agent.rb +31 -0
- data/lib/elastic_apm/transport/worker.rb +1 -2
- data/lib/elastic_apm/version.rb +1 -1
- metadata +20 -6
- data/lib/elastic_apm/metrics/vm.rb +0 -60
- data/lib/elastic_apm/util/prefixed_logger.rb +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d6058bb61034dc14b1b22a3a5f45a592721b968d314bb5f63ca171c600bbb1bc
|
4
|
+
data.tar.gz: fffcd9160ec251a5ad51aae149dbfc3f50cf16b3fc866385f24f83f555b8b804
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f7a8bd72f34f7158619c124e4eff24c9b5d57e68c3b5761b1a6305e632f3aff549be7ed37924775d8ad61119f99a87081567969c0e386641b8789662ff3f54ca
|
7
|
+
data.tar.gz: a8ce8dc0c3a3def4e08ca68b33d73c288bb6ca1fe6a6ff5fd0bbfe5e03f695848855c91b024e28e2ad0872895afa5659c8ff07f06b16277ea9755c0598d711b9
|
data/.ci/.jenkins_exclude.yml
CHANGED
@@ -4,6 +4,8 @@ exclude:
|
|
4
4
|
FRAMEWORK: rails-4.2
|
5
5
|
- RUBY_VERSION: jruby:9.1
|
6
6
|
FRAMEWORK: rails-4.2
|
7
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-13-jdk
|
8
|
+
FRAMEWORK: rails-4.2
|
7
9
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-12-jdk
|
8
10
|
FRAMEWORK: rails-4.2
|
9
11
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-11-jdk
|
@@ -33,6 +35,8 @@ exclude:
|
|
33
35
|
FRAMEWORK: rails-master
|
34
36
|
- RUBY_VERSION: jruby:9.1
|
35
37
|
FRAMEWORK: rails-master
|
38
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-13-jdk
|
39
|
+
FRAMEWORK: rails-master
|
36
40
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-12-jdk
|
37
41
|
FRAMEWORK: rails-master
|
38
42
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-11-jdk
|
@@ -52,6 +56,8 @@ exclude:
|
|
52
56
|
FRAMEWORK: sinatra-master
|
53
57
|
- RUBY_VERSION: jruby:9.1
|
54
58
|
FRAMEWORK: sinatra-master
|
59
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-13-jdk
|
60
|
+
FRAMEWORK: sinatra-master
|
55
61
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-12-jdk
|
56
62
|
FRAMEWORK: sinatra-master
|
57
63
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-11-jdk
|
@@ -61,3 +67,44 @@ exclude:
|
|
61
67
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.1-7-jdk
|
62
68
|
FRAMEWORK: sinatra-master
|
63
69
|
|
70
|
+
- RUBY_VERSION: ruby:2.5
|
71
|
+
FRAMEWORK: grape-master
|
72
|
+
- RUBY_VERSION: ruby:2.4
|
73
|
+
FRAMEWORK: grape-master
|
74
|
+
- RUBY_VERSION: ruby:2.3
|
75
|
+
FRAMEWORK: grape-master
|
76
|
+
- RUBY_VERSION: jruby:9.2
|
77
|
+
FRAMEWORK: grape-master
|
78
|
+
- RUBY_VERSION: jruby:9.1
|
79
|
+
FRAMEWORK: grape-master
|
80
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-13-jdk
|
81
|
+
FRAMEWORK: grape-master
|
82
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-12-jdk
|
83
|
+
FRAMEWORK: grape-master
|
84
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-11-jdk
|
85
|
+
FRAMEWORK: grape-master
|
86
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-8-jdk
|
87
|
+
FRAMEWORK: grape-master
|
88
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.1-7-jdk
|
89
|
+
FRAMEWORK: grape-master
|
90
|
+
|
91
|
+
- RUBY_VERSION: ruby:2.5
|
92
|
+
FRAMEWORK: grape-1.2,sinatra-2.0,rails-6.0
|
93
|
+
- RUBY_VERSION: ruby:2.4
|
94
|
+
FRAMEWORK: grape-1.2,sinatra-2.0,rails-6.0
|
95
|
+
- RUBY_VERSION: ruby:2.3
|
96
|
+
FRAMEWORK: grape-1.2,sinatra-2.0,rails-6.0
|
97
|
+
- RUBY_VERSION: jruby:9.2
|
98
|
+
FRAMEWORK: grape-1.2,sinatra-2.0,rails-6.0
|
99
|
+
- RUBY_VERSION: jruby:9.1
|
100
|
+
FRAMEWORK: grape-1.2,sinatra-2.0,rails-6.0
|
101
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-13-jdk
|
102
|
+
FRAMEWORK: grape-1.2,sinatra-2.0,rails-6.0
|
103
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-12-jdk
|
104
|
+
FRAMEWORK: grape-1.2,sinatra-2.0,rails-6.0
|
105
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-11-jdk
|
106
|
+
FRAMEWORK: grape-1.2,sinatra-2.0,rails-6.0
|
107
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-8-jdk
|
108
|
+
FRAMEWORK: grape-1.2,sinatra-2.0,rails-6.0
|
109
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.1-7-jdk
|
110
|
+
FRAMEWORK: grape-1.2,sinatra-2.0,rails-6.0
|
data/.ci/.jenkins_framework.yml
CHANGED
data/.ci/.jenkins_ruby.yml
CHANGED
@@ -5,6 +5,7 @@ RUBY_VERSION:
|
|
5
5
|
- ruby:2.3
|
6
6
|
- jruby:9.2
|
7
7
|
- jruby:9.1
|
8
|
+
- docker.elastic.co/observability-ci/jruby:9.2-13-jdk
|
8
9
|
- docker.elastic.co/observability-ci/jruby:9.2-12-jdk
|
9
10
|
- docker.elastic.co/observability-ci/jruby:9.2-11-jdk
|
10
11
|
- docker.elastic.co/observability-ci/jruby:9.2-8-jdk
|
data/.ci/downstreamTests.groovy
CHANGED
@@ -117,7 +117,7 @@ class RubyParallelTaskGenerator extends DefaultParallelTaskGenerator {
|
|
117
117
|
} finally {
|
118
118
|
steps.junit(allowEmptyResults: true,
|
119
119
|
keepLongStdio: true,
|
120
|
-
testResults: "**/spec/ruby-agent-junit.xml")
|
120
|
+
testResults: "**/spec/junit-reports/**/ruby-agent-junit.xml")
|
121
121
|
if (steps.isCodecovEnabled(x, y)) {
|
122
122
|
steps.codecov(repo: "${steps.env.REPO}", basedir: "${steps.env.BASE_DIR}",
|
123
123
|
secret: "${steps.env.CODECOV_SECRET}")
|
data/.gitignore
CHANGED
data/.rspec
CHANGED
data/CHANGELOG.asciidoc
CHANGED
@@ -28,6 +28,30 @@ endif::[]
|
|
28
28
|
- Fix {pull}2526[#2526]
|
29
29
|
////
|
30
30
|
|
31
|
+
[[release-notes-3.x]]
|
32
|
+
=== Ruby Agent version 3.x
|
33
|
+
|
34
|
+
[[release-notes-3.2.0]]
|
35
|
+
==== 3.2.0 (2019-11-19)
|
36
|
+
|
37
|
+
[float]
|
38
|
+
===== Added
|
39
|
+
|
40
|
+
- Add Grape support. {pull}562[#562]
|
41
|
+
- Add Breakdown Metrics {pull}526[#526]
|
42
|
+
|
43
|
+
[float]
|
44
|
+
===== Changes
|
45
|
+
|
46
|
+
- Set remote_addr to immediate socket {pull}615[#615]
|
47
|
+
|
48
|
+
[float]
|
49
|
+
===== Fixed
|
50
|
+
|
51
|
+
- Fixed pulling config from Kibana {pull}594[#594]
|
52
|
+
- Fixed a bug where the agent would alter the original cookies hash {pull}616[#616]
|
53
|
+
|
54
|
+
|
31
55
|
[[release-notes-3.x]]
|
32
56
|
=== Ruby Agent version 3.x
|
33
57
|
|
data/Dockerfile
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
ARG RUBY_IMAGE
|
2
|
+
FROM ${RUBY_IMAGE}
|
3
|
+
|
4
|
+
ARG USER_ID_GROUP
|
5
|
+
ARG FRAMEWORKS
|
6
|
+
ARG VENDOR_PATH
|
7
|
+
ARG BUNDLER_VERSION
|
8
|
+
|
9
|
+
# For tzdata
|
10
|
+
# ENV DEBIAN_FRONTEND=noninteractive
|
11
|
+
|
12
|
+
RUN apt-get update -qq \
|
13
|
+
&& apt-get install -qq -y --no-install-recommends \
|
14
|
+
build-essential libpq-dev git \
|
15
|
+
&& rm -rf /var/lib/apt/lists/*
|
16
|
+
|
17
|
+
# Configure bundler and PATH
|
18
|
+
ENV LANG=C.UTF-8
|
19
|
+
|
20
|
+
ENV GEM_HOME=$VENDOR_PATH
|
21
|
+
ENV BUNDLE_PATH=$GEM_HOME \
|
22
|
+
BUNDLE_JOBS=4 BUNDLE_RETRY=3
|
23
|
+
ENV BUNDLE_APP_CONFIG=$BUNDLE_PATH \
|
24
|
+
BUNDLE_BIN=$BUNDLE_PATH/bin
|
25
|
+
ENV PATH=/app/bin:$BUNDLE_BIN:$PATH
|
26
|
+
|
27
|
+
ENV FRAMEWORKS $FRAMEWORKS
|
28
|
+
|
29
|
+
RUN mkdir -p $VENDOR_PATH \
|
30
|
+
&& chown -R $USER_ID_GROUP $VENDOR_PATH
|
31
|
+
|
32
|
+
USER $USER_ID_GROUP
|
33
|
+
|
34
|
+
# Upgrade RubyGems and install required Bundler version
|
35
|
+
RUN gem update --system && \
|
36
|
+
gem install bundler:$BUNDLER_VERSION
|
37
|
+
|
38
|
+
# Use unpatched, system version for more speed over less security
|
39
|
+
RUN gem install nokogiri -- --use-system-libraries
|
40
|
+
# Rake is required to build http-parser on some jruby images
|
41
|
+
RUN gem install rake
|
42
|
+
|
43
|
+
WORKDIR /app
|
data/Gemfile
CHANGED
@@ -4,15 +4,17 @@ source 'https://rubygems.org'
|
|
4
4
|
|
5
5
|
git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
# Tools
|
8
|
+
gem 'bootsnap', require: false
|
9
|
+
gem 'pry'
|
9
10
|
gem 'rack-test'
|
10
|
-
gem 'rspec'
|
11
|
+
gem 'rspec', '~> 3'
|
11
12
|
gem 'rspec-its'
|
12
13
|
gem 'rubocop', require: nil
|
13
14
|
gem 'timecop'
|
14
15
|
gem 'webmock'
|
15
16
|
|
17
|
+
# Integrations
|
16
18
|
gem 'elasticsearch', require: nil
|
17
19
|
gem 'fakeredis', require: nil
|
18
20
|
gem 'faraday', require: nil
|
@@ -28,30 +30,47 @@ gem 'yard', require: nil
|
|
28
30
|
gem 'yarjuf'
|
29
31
|
|
30
32
|
if RUBY_PLATFORM == 'java'
|
33
|
+
gem 'activerecord-jdbcsqlite3-adapter'
|
31
34
|
gem 'jdbc-sqlite3'
|
32
35
|
else
|
33
36
|
gem 'sqlite3'
|
34
37
|
end
|
35
38
|
|
36
|
-
|
37
|
-
|
39
|
+
## Install Framework
|
40
|
+
GITHUB_REPOS = {
|
41
|
+
'grape' => 'ruby-grape/grape',
|
42
|
+
'rails' => 'rails/rails',
|
43
|
+
'sinatra' => 'sinatra/sinatra'
|
44
|
+
}.freeze
|
38
45
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
gem framework
|
46
|
+
# new || legacy || default
|
47
|
+
env_frameworks = ENV['FRAMEWORKS'] || ENV['FRAMEWORK'] || ''
|
48
|
+
parsed_frameworks = env_frameworks.split(',')
|
49
|
+
frameworks_versions = parsed_frameworks.inject({}) do |frameworks, str|
|
50
|
+
framework, *version = str.split('-')
|
51
|
+
frameworks.merge(framework => version.join('-'))
|
46
52
|
end
|
47
53
|
|
48
|
-
|
54
|
+
frameworks_versions.each do |framework, version|
|
55
|
+
case version
|
56
|
+
when 'master'
|
57
|
+
gem framework, github: GITHUB_REPOS.fetch[framework]
|
58
|
+
when /.+/
|
59
|
+
gem framework, "~> #{version}.0"
|
60
|
+
else
|
61
|
+
gem framework
|
62
|
+
end
|
63
|
+
end
|
49
64
|
|
50
|
-
|
51
|
-
|
65
|
+
if frameworks_versions.key?('rails')
|
66
|
+
unless frameworks_versions['rails'] =~ /^(master|6)/
|
67
|
+
gem 'delayed_job', require: nil
|
68
|
+
end
|
52
69
|
end
|
53
70
|
|
54
71
|
group :bench do
|
55
72
|
gem 'ruby-prof', require: nil, platforms: %i[ruby]
|
56
73
|
gem 'stackprof', require: nil, platforms: %i[ruby]
|
57
74
|
end
|
75
|
+
|
76
|
+
gemspec
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# elastic-apm
|
2
|
-
## Elastic APM agent for
|
2
|
+
## Elastic APM agent for Ruby
|
3
3
|
|
4
4
|
[](https://apm-ci.elastic.co/job/apm-agent-ruby/job/apm-agent-ruby-mbp/job/master/) [](https://rubygems.org/gems/elastic-apm) [](https://codecov.io/gh/elastic/apm-agent-ruby)
|
5
5
|
|
@@ -35,6 +35,35 @@ The official Rubygem for [Elastic][] [APM][].
|
|
35
35
|
If you find a bug, please [report an issue](https://github.com/elastic/apm-agent-ruby/issues).
|
36
36
|
For any other assistance, please open or add to a topic on the [APM discuss forum](https://discuss.elastic.co/c/apm).
|
37
37
|
|
38
|
+
## Development
|
39
|
+
|
40
|
+
A Docker based setup is provided for development.
|
41
|
+
|
42
|
+
To run all specs in the official `ruby:latest` image:
|
43
|
+
|
44
|
+
```sh
|
45
|
+
$ bin/dev
|
46
|
+
```
|
47
|
+
|
48
|
+
To pick a specific Ruby version, specify it with the `-i` flag:
|
49
|
+
|
50
|
+
```sh
|
51
|
+
$ bin/dev -i jruby:9.2
|
52
|
+
```
|
53
|
+
|
54
|
+
If the first argument is a path starting with `spec/`, the passed specs will be run. Otherwise any arguments passed will be run as a command inside the container:
|
55
|
+
|
56
|
+
```sh
|
57
|
+
$ bin/dev -i jruby:9.2 spec/integration/rails_spec.rb # ✅
|
58
|
+
$ bin/dev -i some_custom_image bash # ✅
|
59
|
+
```
|
60
|
+
|
61
|
+
To see all options:
|
62
|
+
|
63
|
+
```sh
|
64
|
+
$ bin/dev -h
|
65
|
+
```
|
66
|
+
|
38
67
|
## License
|
39
68
|
|
40
69
|
Apache 2.0
|
data/bin/dev
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'optparse'
|
5
|
+
|
6
|
+
options = {}
|
7
|
+
OptionParser.new do |opts|
|
8
|
+
opts.banner = 'Usage: bin/dev [options] [command]'
|
9
|
+
|
10
|
+
opts.on(
|
11
|
+
'-iIMAGE', '--image=IMAGE',
|
12
|
+
'Specify Docker image (eg. ruby:latest)'
|
13
|
+
) { |val| options[:image] = val }
|
14
|
+
|
15
|
+
opts.on(
|
16
|
+
'-fFRAMEWORKS', '--frameworks=FRAMEWORKS',
|
17
|
+
'Specify frameworks to test (eg. rails:master,sinatra)'
|
18
|
+
) { |val| options[:frameworks] = val }
|
19
|
+
|
20
|
+
opts.on(
|
21
|
+
'-s', '--skip-build',
|
22
|
+
'Skip building image'
|
23
|
+
) { |val| options[:skip_build] = val }
|
24
|
+
end.parse!
|
25
|
+
|
26
|
+
USER_ID_GROUP = %w[u g].map { |f| `id -#{f}`.chomp }.join(':')
|
27
|
+
|
28
|
+
RUBY_IMAGE = options.fetch(:image, 'ruby:latest')
|
29
|
+
FRAMEWORKS = options.fetch(:frameworks, 'rails,sinatra,grape')
|
30
|
+
|
31
|
+
IMAGE_PATH_SAFE = RUBY_IMAGE.gsub(':', '_')
|
32
|
+
IMAGE_NAME = "apm-agent-ruby:#{IMAGE_PATH_SAFE}"
|
33
|
+
VENDOR_PATH = "/vendor/#{IMAGE_PATH_SAFE}"
|
34
|
+
|
35
|
+
def run(cmd)
|
36
|
+
"IMAGE_NAME=#{IMAGE_NAME} #{cmd}".tap do |str|
|
37
|
+
puts str
|
38
|
+
system str
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
unless options[:skip_build]
|
43
|
+
run 'docker-compose build ' \
|
44
|
+
" --build-arg RUBY_IMAGE=#{RUBY_IMAGE}" \
|
45
|
+
" --build-arg USER_ID_GROUP=#{USER_ID_GROUP}" \
|
46
|
+
" --build-arg FRAMEWORKS=#{FRAMEWORKS}" \
|
47
|
+
" --build-arg VENDOR_PATH=#{VENDOR_PATH}"
|
48
|
+
exit $?.exitstatus unless $?.success?
|
49
|
+
end
|
50
|
+
|
51
|
+
run 'docker-compose run' \
|
52
|
+
" -u #{USER_ID_GROUP}" \
|
53
|
+
' --rm' \
|
54
|
+
" specs #{ARGV.join}"
|
data/bin/run-tests
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -e
|
3
|
+
|
4
|
+
runRspec(){
|
5
|
+
local case=${1:-""}
|
6
|
+
local bn=${case}
|
7
|
+
|
8
|
+
if [ -n "${case}" ]; then
|
9
|
+
bn="$(basename ${case} _spec.rb)/"
|
10
|
+
fi
|
11
|
+
bundle exec rspec -f progress -f JUnit -o spec/junit-reports/${bn}ruby-agent-junit.xml ${case}
|
12
|
+
}
|
13
|
+
specific_spec=$1
|
14
|
+
|
15
|
+
if [[ $specific_spec = '' ]]; then
|
16
|
+
echo 'Running all specs, including integration'
|
17
|
+
|
18
|
+
runRspec
|
19
|
+
for i in $(find spec/integration -name '*_spec.rb')
|
20
|
+
do
|
21
|
+
runRspec "$i"
|
22
|
+
done
|
23
|
+
else
|
24
|
+
echo "Running only $specific_spec"
|
25
|
+
|
26
|
+
runRspec $1
|
27
|
+
fi
|
data/docker-compose.yml
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
---
|
2
|
+
version: '3.4'
|
3
|
+
|
4
|
+
services:
|
5
|
+
mongodb:
|
6
|
+
image: mongo:latest
|
7
|
+
volumes: ['mongodata:/data/db']
|
8
|
+
ports: ['27017:27017']
|
9
|
+
|
10
|
+
specs:
|
11
|
+
build:
|
12
|
+
context: .
|
13
|
+
args:
|
14
|
+
BUNDLER_VERSION: '2.0.2'
|
15
|
+
image: '$IMAGE_NAME'
|
16
|
+
environment:
|
17
|
+
HOME: '/tmp'
|
18
|
+
MONGODB_URL: 'mongodb:27017'
|
19
|
+
entrypoint:
|
20
|
+
'spec/entrypoint.sh'
|
21
|
+
tty: true
|
22
|
+
volumes:
|
23
|
+
- .:/app:cached
|
24
|
+
- ./vendor:/vendor
|
25
|
+
tmpfs:
|
26
|
+
- /tmp:exec,mode=1777
|
27
|
+
depends_on:
|
28
|
+
- mongodb
|
29
|
+
|
30
|
+
volumes:
|
31
|
+
vendor:
|
32
|
+
mongodata:
|