elastic-apm 3.1.0 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Jenkins](https://apm-ci.elastic.co/buildStatus/icon?job=apm-agent-ruby/apm-agent-ruby-mbp/master)](https://apm-ci.elastic.co/job/apm-agent-ruby/job/apm-agent-ruby-mbp/job/master/) [![Gem](https://img.shields.io/gem/v/elastic-apm.svg)](https://rubygems.org/gems/elastic-apm) [![codecov](https://codecov.io/gh/elastic/apm-agent-ruby/branch/master/graph/badge.svg)](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:
|