solarwinds_apm 5.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.dockerignore +5 -0
- data/.github/ISSUE_TEMPLATE/bug-or-feature-request.md +16 -0
- data/.github/workflows/build_and_release_gem.yml +112 -0
- data/.github/workflows/build_for_packagecloud.yml +70 -0
- data/.github/workflows/docker-images.yml +47 -0
- data/.github/workflows/run_cpluplus_tests.yml +73 -0
- data/.github/workflows/run_tests.yml +155 -0
- data/.github/workflows/scripts/test_install.rb +23 -0
- data/.github/workflows/swig/swig-v4.0.2.tar.gz +0 -0
- data/.github/workflows/test_on_4_linux.yml +161 -0
- data/.gitignore +39 -0
- data/.rubocop.yml +29 -0
- data/.yardopts +7 -0
- data/CHANGELOG.md +769 -0
- data/CONFIG.md +31 -0
- data/Gemfile +14 -0
- data/LICENSE +202 -0
- data/README.md +383 -0
- data/bin/solarwinds_apm_config +15 -0
- data/examples/prepend.rb +13 -0
- data/examples/sdk_examples.rb +158 -0
- data/ext/oboe_metal/README.md +69 -0
- data/ext/oboe_metal/extconf.rb +141 -0
- data/ext/oboe_metal/extconf_local.rb +75 -0
- data/ext/oboe_metal/lib/.keep +0 -0
- data/ext/oboe_metal/lib/liboboe-1.0-alpine-x86_64.so.0.0.0.sha256 +1 -0
- data/ext/oboe_metal/lib/liboboe-1.0-x86_64.so.0.0.0.sha256 +1 -0
- data/ext/oboe_metal/noop/noop.c +8 -0
- data/ext/oboe_metal/src/README.md +6 -0
- data/ext/oboe_metal/src/VERSION +2 -0
- data/ext/oboe_metal/src/bson/bson.h +220 -0
- data/ext/oboe_metal/src/bson/platform_hacks.h +91 -0
- data/ext/oboe_metal/src/frames.cc +247 -0
- data/ext/oboe_metal/src/frames.h +40 -0
- data/ext/oboe_metal/src/init_solarwinds_apm.cc +21 -0
- data/ext/oboe_metal/src/logging.cc +95 -0
- data/ext/oboe_metal/src/logging.h +35 -0
- data/ext/oboe_metal/src/oboe.h +1169 -0
- data/ext/oboe_metal/src/oboe_api.cpp +658 -0
- data/ext/oboe_metal/src/oboe_api.hpp +433 -0
- data/ext/oboe_metal/src/oboe_debug.h +59 -0
- data/ext/oboe_metal/src/oboe_swig_wrap.cc +7562 -0
- data/ext/oboe_metal/src/profiling.cc +435 -0
- data/ext/oboe_metal/src/profiling.h +78 -0
- data/ext/oboe_metal/test/CMakeLists.txt +53 -0
- data/ext/oboe_metal/test/FindGMock.cmake +43 -0
- data/ext/oboe_metal/test/README.md +56 -0
- data/ext/oboe_metal/test/frames_test.cc +164 -0
- data/ext/oboe_metal/test/profiling_test.cc +93 -0
- data/ext/oboe_metal/test/ruby_inc_dir.rb +8 -0
- data/ext/oboe_metal/test/ruby_prefix.rb +8 -0
- data/ext/oboe_metal/test/ruby_test_helper.rb +67 -0
- data/ext/oboe_metal/test/test.h +11 -0
- data/ext/oboe_metal/test/test_main.cc +32 -0
- data/init.rb +4 -0
- data/lib/oboe.rb +7 -0
- data/lib/oboe_metal.rb +172 -0
- data/lib/rails/generators/solarwinds_apm/install_generator.rb +47 -0
- data/lib/rails/generators/solarwinds_apm/templates/solarwinds_apm_initializer.rb +424 -0
- data/lib/solarwinds_apm/api/layerinit.rb +41 -0
- data/lib/solarwinds_apm/api/logging.rb +356 -0
- data/lib/solarwinds_apm/api/memcache.rb +37 -0
- data/lib/solarwinds_apm/api/metrics.rb +63 -0
- data/lib/solarwinds_apm/api/util.rb +98 -0
- data/lib/solarwinds_apm/api.rb +21 -0
- data/lib/solarwinds_apm/base.rb +160 -0
- data/lib/solarwinds_apm/config.rb +301 -0
- data/lib/solarwinds_apm/frameworks/grape.rb +96 -0
- data/lib/solarwinds_apm/frameworks/padrino.rb +78 -0
- data/lib/solarwinds_apm/frameworks/rails/inst/action_controller.rb +100 -0
- data/lib/solarwinds_apm/frameworks/rails/inst/action_controller5.rb +50 -0
- data/lib/solarwinds_apm/frameworks/rails/inst/action_controller_api.rb +50 -0
- data/lib/solarwinds_apm/frameworks/rails/inst/action_view.rb +88 -0
- data/lib/solarwinds_apm/frameworks/rails/inst/active_record.rb +26 -0
- data/lib/solarwinds_apm/frameworks/rails/inst/connection_adapters/mysql2.rb +29 -0
- data/lib/solarwinds_apm/frameworks/rails/inst/connection_adapters/postgresql.rb +22 -0
- data/lib/solarwinds_apm/frameworks/rails/inst/connection_adapters/utils5x.rb +103 -0
- data/lib/solarwinds_apm/frameworks/rails/inst/logger_formatters.rb +14 -0
- data/lib/solarwinds_apm/frameworks/rails.rb +100 -0
- data/lib/solarwinds_apm/frameworks/sinatra.rb +96 -0
- data/lib/solarwinds_apm/inst/bunny-client.rb +157 -0
- data/lib/solarwinds_apm/inst/bunny-consumer.rb +102 -0
- data/lib/solarwinds_apm/inst/curb.rb +288 -0
- data/lib/solarwinds_apm/inst/dalli.rb +89 -0
- data/lib/solarwinds_apm/inst/delayed_job.rb +100 -0
- data/lib/solarwinds_apm/inst/excon.rb +113 -0
- data/lib/solarwinds_apm/inst/faraday.rb +96 -0
- data/lib/solarwinds_apm/inst/graphql.rb +206 -0
- data/lib/solarwinds_apm/inst/grpc_client.rb +147 -0
- data/lib/solarwinds_apm/inst/grpc_server.rb +119 -0
- data/lib/solarwinds_apm/inst/httpclient.rb +181 -0
- data/lib/solarwinds_apm/inst/logger_formatter.rb +46 -0
- data/lib/solarwinds_apm/inst/logging_log_event.rb +24 -0
- data/lib/solarwinds_apm/inst/lumberjack_formatter.rb +9 -0
- data/lib/solarwinds_apm/inst/memcached.rb +86 -0
- data/lib/solarwinds_apm/inst/mongo.rb +246 -0
- data/lib/solarwinds_apm/inst/mongo2.rb +225 -0
- data/lib/solarwinds_apm/inst/moped.rb +466 -0
- data/lib/solarwinds_apm/inst/net_http.rb +60 -0
- data/lib/solarwinds_apm/inst/rack.rb +217 -0
- data/lib/solarwinds_apm/inst/rack_cache.rb +35 -0
- data/lib/solarwinds_apm/inst/redis.rb +273 -0
- data/lib/solarwinds_apm/inst/resque.rb +129 -0
- data/lib/solarwinds_apm/inst/rest-client.rb +43 -0
- data/lib/solarwinds_apm/inst/sequel.rb +241 -0
- data/lib/solarwinds_apm/inst/sidekiq-client.rb +63 -0
- data/lib/solarwinds_apm/inst/sidekiq-worker.rb +64 -0
- data/lib/solarwinds_apm/inst/typhoeus.rb +90 -0
- data/lib/solarwinds_apm/instrumentation.rb +22 -0
- data/lib/solarwinds_apm/loading.rb +65 -0
- data/lib/solarwinds_apm/logger.rb +14 -0
- data/lib/solarwinds_apm/noop/README.md +9 -0
- data/lib/solarwinds_apm/noop/context.rb +26 -0
- data/lib/solarwinds_apm/noop/metadata.rb +25 -0
- data/lib/solarwinds_apm/noop/profiling.rb +21 -0
- data/lib/solarwinds_apm/oboe_init_options.rb +191 -0
- data/lib/solarwinds_apm/ruby.rb +35 -0
- data/lib/solarwinds_apm/sdk/current_trace_info.rb +123 -0
- data/lib/solarwinds_apm/sdk/custom_metrics.rb +94 -0
- data/lib/solarwinds_apm/sdk/logging.rb +37 -0
- data/lib/solarwinds_apm/sdk/trace_context_headers.rb +69 -0
- data/lib/solarwinds_apm/sdk/tracing.rb +432 -0
- data/lib/solarwinds_apm/support/profiling.rb +22 -0
- data/lib/solarwinds_apm/support/trace_context.rb +53 -0
- data/lib/solarwinds_apm/support/trace_state.rb +69 -0
- data/lib/solarwinds_apm/support/trace_string.rb +89 -0
- data/lib/solarwinds_apm/support/transaction_metrics.rb +67 -0
- data/lib/solarwinds_apm/support/transaction_settings.rb +233 -0
- data/lib/solarwinds_apm/support/x_trace_options.rb +113 -0
- data/lib/solarwinds_apm/support.rb +12 -0
- data/lib/solarwinds_apm/support_report.rb +113 -0
- data/lib/solarwinds_apm/test.rb +165 -0
- data/lib/solarwinds_apm/thread_local.rb +26 -0
- data/lib/solarwinds_apm/util.rb +334 -0
- data/lib/solarwinds_apm/version.rb +17 -0
- data/lib/solarwinds_apm.rb +72 -0
- data/log/.keep +0 -0
- data/log/postgresql/.keep +0 -0
- data/solarwinds_apm.gemspec +52 -0
- data/yardoc_frontpage.md +24 -0
- metadata +228 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 63fe916dcebeb8fe9c3dcb5a0ffc6e03d3f07461c4fe2e17d9890a5a3ef7d7d9
|
4
|
+
data.tar.gz: 68afd25f4e027bfcb9f6766e2e858d285a67f7ecb5e34a4a59ed2f8c1b26eae1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6e37f758c9a3fa5a27f7a57e4f1cd41ec242d200bd30c98793a87e4ce022c92060fe9406f1ecc617a4327d7e52043b3eeeda215232c017d48f535cdae647dc4e
|
7
|
+
data.tar.gz: bf4282273f84c5350034539377f898a65b99eb8e5190cbeb1d059de3584fb402aa8750cd4097c31e6f103d6341ea6ae523b6bde4c0aecda5ebe4639e208d766b
|
data/.dockerignore
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
---
|
2
|
+
name: Bug or Feature request
|
3
|
+
about: general purpose template
|
4
|
+
title: "[Bug] or [Feature request]"
|
5
|
+
labels: ''
|
6
|
+
assignees: ''
|
7
|
+
|
8
|
+
---
|
9
|
+
|
10
|
+
# Description
|
11
|
+
|
12
|
+
# How to reproduce or use case
|
13
|
+
|
14
|
+
# Code Sample (if available)
|
15
|
+
|
16
|
+
# OS, Ruby version, Gemfile, Gemfile.lock, log message ... (if relevant)
|
@@ -0,0 +1,112 @@
|
|
1
|
+
# Copyright (c) 2021 SolarWinds, LLC.
|
2
|
+
# All rights reserved.
|
3
|
+
|
4
|
+
name: BUILD, VERIFY, and RELEASE Ruby Gem to RubyGems
|
5
|
+
|
6
|
+
# This workflow relies on the following secrets
|
7
|
+
# - TRACE_BUILD_RUBY_ACTIONS_API_TOKEN (from the trace-build user in github)
|
8
|
+
# - RUBYGEMS_TOKEN (from the solarwinds-apm user on rubygems.org)
|
9
|
+
# - SW_APM_SERVICE_KEY
|
10
|
+
# - SW_APM_COLLECTOR
|
11
|
+
#
|
12
|
+
# The correct oboe version has to be in the file ext/oboe_metal/src/VERSION
|
13
|
+
|
14
|
+
on:
|
15
|
+
workflow_dispatch:
|
16
|
+
|
17
|
+
jobs:
|
18
|
+
build:
|
19
|
+
name: Build + Release Gem to RubyGems
|
20
|
+
runs-on: ubuntu-latest
|
21
|
+
|
22
|
+
steps:
|
23
|
+
- uses: actions/checkout@v2
|
24
|
+
|
25
|
+
- name: Set up Ruby 2.7 and bundle
|
26
|
+
uses: ruby/setup-ruby@v1
|
27
|
+
with:
|
28
|
+
ruby-version: 2.7
|
29
|
+
|
30
|
+
- name: Install gems
|
31
|
+
run: |
|
32
|
+
echo 'gem: --no-document' >> ~/.gemrc
|
33
|
+
bundle install --without development --without test
|
34
|
+
|
35
|
+
- name: Install swig 4.0.2
|
36
|
+
run: |
|
37
|
+
apt udate && apt install -y --no-install-recommends bison
|
38
|
+
curl -SL https://github.com/swig/swig/archive/refs/tags/v4.0.2.tar.gz | tar xzC /tmp
|
39
|
+
cd /tmp/swig-4.0.2
|
40
|
+
./autogen.sh && ./configure && make && sudo make install
|
41
|
+
cd -
|
42
|
+
|
43
|
+
- name: Download files from files.appoptics.com and create swig wrapper
|
44
|
+
env:
|
45
|
+
TRACE_BUILD_TOKEN: ${{ secrets.TRACE_BUILD_RUBY_ACTIONS_API_TOKEN }}
|
46
|
+
run: |
|
47
|
+
bundle exec rake oboe_files_sw_apm_fetch
|
48
|
+
bundle exec rake oboe_verify
|
49
|
+
|
50
|
+
- name: Build Gem and upload to Rubygems
|
51
|
+
id: build
|
52
|
+
env:
|
53
|
+
GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_TOKEN }}
|
54
|
+
run: |
|
55
|
+
bundle exec rake build_and_publish_gem
|
56
|
+
checksum=`shasum -a256 *.gem | awk '{print $1;}'`
|
57
|
+
echo "checksum: $checksum"
|
58
|
+
echo ::set-output name=checksum::$checksum
|
59
|
+
echo ::set-output name=gem_version::`ruby -e 'require "./lib/solarwinds_apm/version"; puts SolarWindsAPM::Version::STRING'`
|
60
|
+
|
61
|
+
- name: Get checksum from Rubygems
|
62
|
+
id: checksum
|
63
|
+
run: |
|
64
|
+
gem_version=${{ steps.build.outputs.gem_version }}
|
65
|
+
echo ::set-output name=geminfo::`curl https://rubygems.org/api/v2/rubygems/solarwinds_apm/versions/$gem_version.json`
|
66
|
+
|
67
|
+
- name: Print checksums (in case some debugging is needed)
|
68
|
+
run: |
|
69
|
+
echo "local checksum: ${{ steps.build.outputs.checksum }}"
|
70
|
+
echo "Rubygems checksum: ${{ fromJson(steps.checksum.outputs.geminfo).sha }}"
|
71
|
+
|
72
|
+
- name: Fail if local and rubygems checksums don't match
|
73
|
+
if: fromJson(steps.checksum.outputs.geminfo).sha != steps.build.outputs.checksum
|
74
|
+
run: |
|
75
|
+
echo "local and rubygems checksum not matching, gem needs to be yanked from rubygems.org"
|
76
|
+
exit 1
|
77
|
+
|
78
|
+
# this action is not working anymore
|
79
|
+
# - name: Create release draft that includes the checksum
|
80
|
+
# uses: actions/github-script@v3
|
81
|
+
# with:
|
82
|
+
# github-token: ${{secrets.GITHUB_TOKEN}}
|
83
|
+
# script: |
|
84
|
+
# github.repos.createRelease({
|
85
|
+
# owner: "solarwinds-apm",
|
86
|
+
# repo: "appoptics-apm-ruby",
|
87
|
+
# body: "SHA256 checksum: ${{ steps.build.outputs.checksum }}",
|
88
|
+
# tag_name: "${{ steps.build.outputs.gem_version }}",
|
89
|
+
# name: "${{ steps.build.outputs.gem_version }}",
|
90
|
+
# draft: true
|
91
|
+
# })
|
92
|
+
|
93
|
+
- name: Create release draft that includes the checksum
|
94
|
+
run: |
|
95
|
+
curl \
|
96
|
+
-X POST \
|
97
|
+
-H "Accept: application/vnd.github.v3+json" \
|
98
|
+
https://api.github.com/repos/OWNER/REPO/releases \
|
99
|
+
-d '{"tag_name":"${{ steps.build.outputs.gem_version }}","name":"${{ steps.build.outputs.gem_version }}","body":"SHA256 checksum: ${{ steps.build.outputs.checksum }}","draft":true}'
|
100
|
+
|
101
|
+
# may need a bit of time for the gem to become available (sleep 1)
|
102
|
+
- name: Download new Rubygem from rubygems.org and test
|
103
|
+
working-directory: .github/workflows/
|
104
|
+
env:
|
105
|
+
SW_APM_SERVICE_KEY: ${{ secrets.APPOPTICS_SERVICE_KEY }}
|
106
|
+
SW_APM_COLLECTOR: ${{ secrets.APPOPTICS_COLLECTOR}}
|
107
|
+
run: |
|
108
|
+
sleep 1
|
109
|
+
gem install solarwinds_apm --version ${{ steps.build.outputs.gem_version }}
|
110
|
+
ruby ./scripts/test_install.rb
|
111
|
+
|
112
|
+
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# Copyright (c) 2021 SolarWinds, LLC.
|
2
|
+
# All rights reserved.
|
3
|
+
|
4
|
+
name: Ruby Gem to PackageCloud
|
5
|
+
|
6
|
+
on:
|
7
|
+
workflow_dispatch:
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
build:
|
11
|
+
name: Build + Publish to PackageCloud
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
|
14
|
+
steps:
|
15
|
+
- uses: actions/checkout@v2
|
16
|
+
|
17
|
+
- name: Set up Ruby 2.7 and bundle
|
18
|
+
uses: ruby/setup-ruby@v1
|
19
|
+
with:
|
20
|
+
ruby-version: 2.7
|
21
|
+
|
22
|
+
- name: Install gems
|
23
|
+
run: |
|
24
|
+
echo 'gem: --no-document' >> ~/.gemrc
|
25
|
+
bundle install --without development --without test
|
26
|
+
|
27
|
+
- name: Install swig 4.0.2
|
28
|
+
run: |
|
29
|
+
apt udate && apt install -y --no-install-recommends bison
|
30
|
+
curl -SL https://github.com/swig/swig/archive/refs/tags/v4.0.2.tar.gz | tar xzC /tmp
|
31
|
+
cd /tmp/swig-4.0.2
|
32
|
+
./autogen.sh && ./configure && make && sudo make install
|
33
|
+
cd -
|
34
|
+
|
35
|
+
- name: Download oboe staging files from S3, compile swig wrapper
|
36
|
+
run: |
|
37
|
+
bundle exec rake fetch
|
38
|
+
ls -l ext/oboe_metal/src
|
39
|
+
|
40
|
+
- name: Build Gem
|
41
|
+
id: gemstep
|
42
|
+
run: |
|
43
|
+
gem build solarwinds_apm.gemspec
|
44
|
+
echo `shasum -a256 *.gem`
|
45
|
+
echo "::set-output name=GEM_VERSION::`ruby -e 'require "./lib/solarwinds_apm/version"; puts SolarWindsAPM::Version::STRING'`"
|
46
|
+
cat ext/oboe_metal/src/VERSION
|
47
|
+
|
48
|
+
- name: Publish to PackageCloud
|
49
|
+
# PackageCloud is unreliable with regards to
|
50
|
+
# republishing after yanking a gem
|
51
|
+
# we are going to fail if republishing is attempted
|
52
|
+
run: |
|
53
|
+
gem install package_cloud
|
54
|
+
package_cloud push solarwinds/solarwinds-apm-ruby *.gem
|
55
|
+
env:
|
56
|
+
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
|
57
|
+
|
58
|
+
# Run this test manually, github is having problems reading the index at packagecloud
|
59
|
+
# TODO: AO-20355
|
60
|
+
# - name: Test install (give packagecloud 60 seconds to index)
|
61
|
+
# working-directory: .github/workflows/
|
62
|
+
# env:
|
63
|
+
# SW_APM_SERVICE_KEY: ${{ secrets.SW_APM_SERVICE_KEY }}
|
64
|
+
# SW_APM_COLLECTOR: ${{ secrets.SW_APM_COLLECTOR}}
|
65
|
+
# OBOE_FROM_S3: true
|
66
|
+
# run: |
|
67
|
+
# sleep 60
|
68
|
+
# gem sources --add https://packagecloud.io/solarwinds/solarwinds-apm-ruby
|
69
|
+
# gem install solarwinds_apm --version ${{ steps.gemstep.outputs.GEM_VERSION }} --verbose
|
70
|
+
# ruby ./scripts/test_install.rb
|
@@ -0,0 +1,47 @@
|
|
1
|
+
name: Build docker images
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
paths:
|
6
|
+
- 'test/run_tests/Dockerfile_*'
|
7
|
+
# Allows running this workflow manually from the Actions tab
|
8
|
+
workflow_dispatch:
|
9
|
+
|
10
|
+
env:
|
11
|
+
GHRC: ghcr.io/appoptics/appoptics-apm-ruby/apm_ruby
|
12
|
+
DOCKERFILE: test/run_tests/Dockerfile
|
13
|
+
|
14
|
+
jobs:
|
15
|
+
|
16
|
+
build_push:
|
17
|
+
name: Build docker images
|
18
|
+
runs-on: ubuntu-latest
|
19
|
+
|
20
|
+
strategy:
|
21
|
+
fail-fast: false
|
22
|
+
matrix:
|
23
|
+
os: [ubuntu, debian, centos, alpine]
|
24
|
+
|
25
|
+
steps:
|
26
|
+
- name: Checkout
|
27
|
+
uses: actions/checkout@v1
|
28
|
+
|
29
|
+
- name: ghcr.io login
|
30
|
+
uses: docker/login-action@v1
|
31
|
+
with:
|
32
|
+
registry: ghcr.io
|
33
|
+
username: ${{ github.actor }}
|
34
|
+
password: ${{ secrets.GITHUB_TOKEN }}
|
35
|
+
|
36
|
+
# - name: Build and push V2
|
37
|
+
# uses: docker/build-push-action@v2
|
38
|
+
# with:
|
39
|
+
# file: test/run_tests/Dockerfile_ubuntu
|
40
|
+
# tags: ghcr.io/appoptics/appoptics-apm-ruby/ao_ubuntu:latest
|
41
|
+
# push: true
|
42
|
+
|
43
|
+
- name: Build new Docker image
|
44
|
+
run: docker build -f ${{ env.DOCKERFILE }}_${{ matrix.os }} -t ${{ env.GHRC }}_${{ matrix.os }} .
|
45
|
+
|
46
|
+
- name: Publish updated Docker image
|
47
|
+
run: docker push ${{ env.GHRC }}_${{ matrix.os }}
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# Copyright (c) 2021 SolarWinds, LLC.
|
2
|
+
# All rights reserved.
|
3
|
+
|
4
|
+
name: C++ Tests
|
5
|
+
|
6
|
+
on:
|
7
|
+
push:
|
8
|
+
paths:
|
9
|
+
- ext/oboe_metal/src/*.h
|
10
|
+
- ext/oboe_metal/src/*.cc
|
11
|
+
- ext/oboe_metal/test/*
|
12
|
+
# Allows you to run this workflow manually from the Actions tab
|
13
|
+
workflow_dispatch:
|
14
|
+
|
15
|
+
jobs:
|
16
|
+
tests:
|
17
|
+
runs-on: ubuntu-latest
|
18
|
+
strategy:
|
19
|
+
fail-fast: false
|
20
|
+
matrix:
|
21
|
+
ruby: [3.1, 3.0, 2.7, 2.6, 2.5]
|
22
|
+
|
23
|
+
container:
|
24
|
+
image: ruby:${{ matrix.ruby }}
|
25
|
+
|
26
|
+
name: ${{ matrix.ruby }} - c++
|
27
|
+
|
28
|
+
env:
|
29
|
+
SW_APM_REPORTER: file
|
30
|
+
SW_APM_COLLECTOR: /tmp/sw_apm_traces.bson
|
31
|
+
SW_APM_REPORTER_FILE_SINGLE: false
|
32
|
+
OBOE_FROM_S3: true
|
33
|
+
|
34
|
+
steps:
|
35
|
+
- uses: actions/checkout@v2
|
36
|
+
|
37
|
+
- name: Install cmake
|
38
|
+
run: |
|
39
|
+
ls -lrt /usr/src
|
40
|
+
apt update && apt install -y --no-install-recommends build-essential libgtest-dev ruby
|
41
|
+
curl -OL https://github.com/Kitware/CMake/releases/download/v3.20.5/cmake-3.20.5-SHA-256.txt
|
42
|
+
curl -OL https://github.com/Kitware/CMake/releases/download/v3.20.5/cmake-3.20.5.tar.gz
|
43
|
+
sha256sum -c --ignore-missing cmake-3.20.5-SHA-256.txt
|
44
|
+
tar -zxvf cmake-3.20.5.tar.gz
|
45
|
+
cd cmake-3.20.5
|
46
|
+
./bootstrap
|
47
|
+
make
|
48
|
+
make install
|
49
|
+
|
50
|
+
- name: Install swig 4.0.2
|
51
|
+
working-directory: .github/workflows/swig
|
52
|
+
run: |
|
53
|
+
apt update && apt install -y --no-install-recommends bison
|
54
|
+
tar -xf swig-v4.0.2.tar.gz -C /tmp
|
55
|
+
cd /tmp/swig-4.0.2
|
56
|
+
./autogen.sh && ./configure && make && make install
|
57
|
+
cd -
|
58
|
+
|
59
|
+
- name: Bundle & download c-files
|
60
|
+
run: |
|
61
|
+
gem install bundler
|
62
|
+
bundle install
|
63
|
+
bundle exec rake clean fetch compile
|
64
|
+
|
65
|
+
- name: Compile and run tests
|
66
|
+
working-directory: ext/oboe_metal/test
|
67
|
+
run: |
|
68
|
+
export TEST_DIR=`pwd`
|
69
|
+
export RUBY_INC_DIR=$(ruby ruby_inc_dir.rb)
|
70
|
+
export RUBY_PREFIX=$(ruby ruby_prefix.rb)
|
71
|
+
cmake -S . -B build
|
72
|
+
cmake --build build
|
73
|
+
cd build && ctest
|
@@ -0,0 +1,155 @@
|
|
1
|
+
# Copyright (c) 2021 SolarWinds, LLC.
|
2
|
+
# All rights reserved.
|
3
|
+
|
4
|
+
name: Run Ruby Tests on Ubuntu
|
5
|
+
|
6
|
+
on:
|
7
|
+
# push:
|
8
|
+
# Allows you to run this workflow manually from the Actions tab
|
9
|
+
workflow_dispatch:
|
10
|
+
|
11
|
+
jobs:
|
12
|
+
tests:
|
13
|
+
runs-on: ubuntu-latest
|
14
|
+
strategy:
|
15
|
+
fail-fast: false
|
16
|
+
matrix:
|
17
|
+
ruby: [3.1, 3.0, 2.7, 2.6, 2.5]
|
18
|
+
gemfile:
|
19
|
+
- libraries
|
20
|
+
- unit
|
21
|
+
- instrumentation_mocked
|
22
|
+
- instrumentation_mocked_oldgems
|
23
|
+
- frameworks
|
24
|
+
- rails70
|
25
|
+
- rails61
|
26
|
+
- rails60
|
27
|
+
- rails52
|
28
|
+
- delayed_job
|
29
|
+
- noop
|
30
|
+
dbtype: [postgresql, mysql]
|
31
|
+
exclude:
|
32
|
+
- ruby: 3.1
|
33
|
+
gemfile: rails52
|
34
|
+
- ruby: 3.0
|
35
|
+
gemfile: rails52
|
36
|
+
- ruby: 2.6
|
37
|
+
gemfile: rails70
|
38
|
+
- ruby: 2.5
|
39
|
+
gemfile: rails70
|
40
|
+
|
41
|
+
- gemfile: unit
|
42
|
+
dbtype: mysql
|
43
|
+
- gemfile: noop
|
44
|
+
dbtype: mysql
|
45
|
+
- gemfile: libraries
|
46
|
+
dbtype: mysql
|
47
|
+
- gemfile: instrumentation_mocked
|
48
|
+
dbtype: mysql
|
49
|
+
- gemfile: instrumentation_mocked_oldgems
|
50
|
+
dbtype: mysql
|
51
|
+
- gemfile: frameworks
|
52
|
+
dbtype: mysql
|
53
|
+
- gemfile: delayed_job
|
54
|
+
dbtype: mysql
|
55
|
+
|
56
|
+
container:
|
57
|
+
image: ruby:${{ matrix.ruby }}
|
58
|
+
|
59
|
+
name: ${{ matrix.ruby }} - ${{ matrix.gemfile }}
|
60
|
+
|
61
|
+
env:
|
62
|
+
BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile
|
63
|
+
SW_APM_GEM_TEST: true
|
64
|
+
SW_APM_REPORTER: file
|
65
|
+
SW_APM_COLLECTOR: /tmp/sw_apm_traces.bson
|
66
|
+
SW_APM_REPORTER_FILE_SINGLE: false
|
67
|
+
OBOE_FROM_S3: true
|
68
|
+
MONGO_SERVER: "mongo"
|
69
|
+
RABBITMQ_SERVER: "rabbitmq"
|
70
|
+
MEMCACHED_SERVER: "memcached"
|
71
|
+
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
|
72
|
+
MYSQL_ROOT_PASSWORD: "admin"
|
73
|
+
MYSQL_HOST: "mysql"
|
74
|
+
MYSQL_DATABASE: "test_db"
|
75
|
+
POSTGRES_DB: "test_db"
|
76
|
+
DOCKER_MYSQL_PASS: "admin"
|
77
|
+
DOCKER_PSQL_PASS: "postgres"
|
78
|
+
POSTGRES_USER: "postgres"
|
79
|
+
POSTGRES_PASSWORD: "postgres"
|
80
|
+
POSTGRES_HOST: "postgres"
|
81
|
+
REDIS_PASSWORD: "redis_pass"
|
82
|
+
services:
|
83
|
+
memcached:
|
84
|
+
image: memcached:latest
|
85
|
+
ports:
|
86
|
+
- 11211:11211
|
87
|
+
options: --health-cmd "timeout 5 bash -c 'cat < /dev/null > /dev/udp/127.0.0.1/11211'" --health-interval 10s --health-timeout 5s --health-retries 5
|
88
|
+
rabbitmq:
|
89
|
+
image: rabbitmq:latest
|
90
|
+
ports:
|
91
|
+
- 5672:5672
|
92
|
+
options: --health-cmd "rabbitmqctl node_health_check" --health-interval 10s --health-timeout 5s --health-retries 5
|
93
|
+
mongo:
|
94
|
+
image: mongo:latest
|
95
|
+
ports:
|
96
|
+
- 27017:27017
|
97
|
+
options: "--health-cmd \"mongo --quiet --eval 'quit(db.runCommand({ ping: 1 }).ok ? 0 : 2)'\" --health-interval 10s --health-timeout 5s --health-retries 5"
|
98
|
+
postgres:
|
99
|
+
image: postgres:10.8
|
100
|
+
env:
|
101
|
+
POSTGRES_DB: postgres
|
102
|
+
ports:
|
103
|
+
- 5432:5432
|
104
|
+
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
|
105
|
+
mysql:
|
106
|
+
image: mariadb:latest
|
107
|
+
env:
|
108
|
+
MYSQL_USER: user
|
109
|
+
MYSQL_PASSWORD: password
|
110
|
+
MYSQL_DATABASE: test_db
|
111
|
+
MYSQL_ROOT_PASSWORD: admin
|
112
|
+
ports:
|
113
|
+
- 3306:3306
|
114
|
+
options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3
|
115
|
+
|
116
|
+
steps:
|
117
|
+
- uses: actions/checkout@v2
|
118
|
+
|
119
|
+
- name: Install dependencies
|
120
|
+
run: apt update && apt install -y --no-install-recommends bison libcurl4-gnutls-dev libsasl2-dev postgresql-client
|
121
|
+
|
122
|
+
- name: Set database type env var
|
123
|
+
run: export DBTYPE=${{ matrix.dbtype }}
|
124
|
+
|
125
|
+
- name: Add javascript runtime
|
126
|
+
uses: actions/setup-node@v2
|
127
|
+
with:
|
128
|
+
node-version: '14'
|
129
|
+
|
130
|
+
- name: Initialize services
|
131
|
+
run: |
|
132
|
+
export PGPASSWORD=$POSTGRES_PASSWORD; psql -c 'create database test_db;' -U postgres -h $POSTGRES_HOST
|
133
|
+
curl -SL http://download.redis.io/releases/redis-4.0.0.tar.gz | tar xzC /tmp && cd /tmp/redis-4.0.0/ && make && make install && cd -
|
134
|
+
redis-server --requirepass redis_pass --loglevel "warning" &
|
135
|
+
|
136
|
+
- name: Bundle
|
137
|
+
run: |
|
138
|
+
gem install bundler
|
139
|
+
export BUNDLE_GEMFILE=gemfiles/${{ matrix.gemfile }}.gemfile
|
140
|
+
bundle install --jobs 4 --retry 3
|
141
|
+
|
142
|
+
- name: Install swig 4.0.2
|
143
|
+
working-directory: .github/workflows/swig
|
144
|
+
run: |
|
145
|
+
tar -xf swig-v4.0.2.tar.gz -C /tmp
|
146
|
+
cd /tmp/swig-4.0.2
|
147
|
+
./autogen.sh && ./configure && make && make install
|
148
|
+
cd -
|
149
|
+
|
150
|
+
- name: Compile c-extension
|
151
|
+
run: |
|
152
|
+
bundle exec rake fetch compile
|
153
|
+
|
154
|
+
- name: Run tests
|
155
|
+
run: bundle exec rake test
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# Copyright (c) 2021 SolarWinds, LLC.
|
2
|
+
# All rights reserved.
|
3
|
+
|
4
|
+
# Test script used to check if a newly created gem installs and connects to
|
5
|
+
# the collector
|
6
|
+
# requires env vars:
|
7
|
+
# - SW_APM_SERVICE_KEY
|
8
|
+
# - SW_APM_COLLECTOR (optional if the key is for production)
|
9
|
+
|
10
|
+
require 'solarwinds_apm'
|
11
|
+
SolarWindsAPM.support_report
|
12
|
+
exit 1 unless SolarWindsAPM.reporter
|
13
|
+
|
14
|
+
SolarWindsAPM::Config[:profiling] = :enabled
|
15
|
+
|
16
|
+
SolarWindsAPM::SDK.start_trace("install_test_profiling") do
|
17
|
+
SolarWindsAPM::Profiling.run do
|
18
|
+
10.times do
|
19
|
+
[9, 6, 12, 2, 7, 1, 9, 3, 4, 14, 5, 8].sort
|
20
|
+
sleep 0.2
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
Binary file
|
@@ -0,0 +1,161 @@
|
|
1
|
+
# Copyright (c) 2021 SolarWinds, LLC.
|
2
|
+
# All rights reserved.
|
3
|
+
|
4
|
+
name: Run Ruby Tests on 4 Linux
|
5
|
+
|
6
|
+
on:
|
7
|
+
push:
|
8
|
+
paths-ignore:
|
9
|
+
- 'test/run_tests/Dockerfile_*'
|
10
|
+
# Allows you to run this workflow manually from the Actions tab
|
11
|
+
workflow_dispatch:
|
12
|
+
|
13
|
+
env:
|
14
|
+
GHRC: ghcr.io/appoptics/appoptics-apm-ruby/apm_ruby
|
15
|
+
DOCKERFILE: test/run_tests/Dockerfile
|
16
|
+
|
17
|
+
jobs:
|
18
|
+
|
19
|
+
#-------------------------------------------------------------------------------
|
20
|
+
# TODO: figure out how to build images first if necessary
|
21
|
+
#
|
22
|
+
# ********* this is not working because we don't have a *************
|
23
|
+
# ********* reference to the commit of the previous GH run *************
|
24
|
+
#
|
25
|
+
# build_images:
|
26
|
+
# name: Build docker images if necessary
|
27
|
+
# runs-on: ubuntu-latest
|
28
|
+
#
|
29
|
+
# strategy:
|
30
|
+
# fail-fast: true
|
31
|
+
# matrix:
|
32
|
+
# os: [ ubuntu, debian, centos, alpine ]
|
33
|
+
#
|
34
|
+
# steps:
|
35
|
+
# - name: Checkout
|
36
|
+
# uses: actions/checkout@v2
|
37
|
+
#
|
38
|
+
#
|
39
|
+
# ## comment out to get a debug session
|
40
|
+
# ## only works with ubuntu and debian, because it uses apt:
|
41
|
+
## - name: tmate debugging session
|
42
|
+
## uses: mxschmitt/action-tmate@v3
|
43
|
+
## with:
|
44
|
+
## sudo: false
|
45
|
+
#
|
46
|
+
# - name: check modified files
|
47
|
+
# id: check_files
|
48
|
+
# run: |
|
49
|
+
# git diff --name-only --diff-filter=ACMRT ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | grep Dockerfile_
|
50
|
+
# echo ::set-output name=check_dockerfiles::$?
|
51
|
+
## git diff --name-only HEAD^ HEAD | grep [D]ockerfile_
|
52
|
+
## echo ::set-output name=check_dockerfiles::$?
|
53
|
+
#
|
54
|
+
# - name: ghcr.io login ... build and publish images if needed
|
55
|
+
# uses: docker/login-action@v1
|
56
|
+
# if: ${{ steps.check_files.outputs.check_dockerfiles == 0}}
|
57
|
+
# with:
|
58
|
+
# registry: ghcr.io
|
59
|
+
# username: ${{ github.actor }}
|
60
|
+
# password: ${{ secrets.GITHUB_TOKEN }}
|
61
|
+
#
|
62
|
+
# - name: Build and publish new Docker image
|
63
|
+
# if: ${{ steps.check_files.outputs.check_dockerfiles == 0 }}
|
64
|
+
# run: |
|
65
|
+
# docker build -f ${{ env.DOCKERFILE }}_${{ matrix.os }} -t ${{ env.GHRC }}_${{ matrix.os }} .
|
66
|
+
# docker push ${{ env.GHRC }}_${{ matrix.os }}
|
67
|
+
|
68
|
+
#-------------------------------------------------------------------------------
|
69
|
+
all_linux_test:
|
70
|
+
name: ${{ matrix.os }} - ruby ${{ matrix.ruby }}
|
71
|
+
runs-on: ubuntu-latest
|
72
|
+
# needs: build_images
|
73
|
+
|
74
|
+
strategy:
|
75
|
+
fail-fast: false
|
76
|
+
matrix:
|
77
|
+
os: [ubuntu, debian, centos, alpine]
|
78
|
+
ruby: ['3.1', '3.0', '2.7', '2.6', '2.5']
|
79
|
+
|
80
|
+
container:
|
81
|
+
image: ghcr.io/${{ github.repository }}/apm_ruby_${{ matrix.os }}
|
82
|
+
|
83
|
+
env:
|
84
|
+
SW_APM_GEM_TEST: true
|
85
|
+
SW_APM_REPORTER: file
|
86
|
+
SW_APM_COLLECTOR: /tmp/sw_apm_traces.bson
|
87
|
+
SW_APM_REPORTER_FILE_SINGLE: false
|
88
|
+
OBOE_FROM_S3: true
|
89
|
+
MONGO_SERVER: "mongo"
|
90
|
+
RABBITMQ_SERVER: "rabbitmq"
|
91
|
+
MEMCACHED_SERVER: "memcached"
|
92
|
+
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
|
93
|
+
MYSQL_ROOT_PASSWORD: "admin"
|
94
|
+
MYSQL_HOST: "mysql"
|
95
|
+
MYSQL_DATABASE: "test_db"
|
96
|
+
POSTGRES_DB: "test_db"
|
97
|
+
DOCKER_MYSQL_PASS: "admin"
|
98
|
+
DOCKER_PSQL_PASS: "postgres"
|
99
|
+
POSTGRES_USER: "postgres"
|
100
|
+
POSTGRES_PASSWORD: "postgres"
|
101
|
+
POSTGRES_HOST: "postgres"
|
102
|
+
QUERY_LOG_FILE: "/tmp/sw_apm_query_logs.txt"
|
103
|
+
REDIS_PASSWORD: "redis_pass"
|
104
|
+
TEST_RUNS_TO_FILE: "true"
|
105
|
+
|
106
|
+
services:
|
107
|
+
memcached:
|
108
|
+
image: memcached:latest
|
109
|
+
ports:
|
110
|
+
- 11211:11211
|
111
|
+
options: --health-cmd "timeout 5 bash -c 'cat < /dev/null > /dev/udp/127.0.0.1/11211'" --health-interval 10s --health-timeout 5s --health-retries 5
|
112
|
+
rabbitmq:
|
113
|
+
image: rabbitmq:latest
|
114
|
+
ports:
|
115
|
+
- 5672:5672
|
116
|
+
options: --health-cmd "rabbitmqctl node_health_check" --health-interval 10s --health-timeout 5s --health-retries 5
|
117
|
+
mongo:
|
118
|
+
image: mongo:latest
|
119
|
+
ports:
|
120
|
+
- 27017:27017
|
121
|
+
options: "--health-cmd \"mongo --quiet --eval 'quit(db.runCommand({ ping: 1 }).ok ? 0 : 2)'\" --health-interval 10s --health-timeout 5s --health-retries 5"
|
122
|
+
postgres:
|
123
|
+
image: postgres:latest
|
124
|
+
env:
|
125
|
+
POSTGRES_PASSWORD: "postgres"
|
126
|
+
POSTGRES_DB: test_db
|
127
|
+
ports:
|
128
|
+
- 5432:5432
|
129
|
+
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
|
130
|
+
mysql:
|
131
|
+
image: mariadb:latest
|
132
|
+
env:
|
133
|
+
MYSQL_USER: user
|
134
|
+
MYSQL_PASSWORD: password
|
135
|
+
MYSQL_DATABASE: test_db
|
136
|
+
MYSQL_ROOT_PASSWORD: admin
|
137
|
+
ports:
|
138
|
+
- 3306:3306
|
139
|
+
options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3
|
140
|
+
|
141
|
+
steps:
|
142
|
+
- name: Checkout ${{ github.ref }}
|
143
|
+
uses: actions/checkout@v2
|
144
|
+
|
145
|
+
- name: print some info
|
146
|
+
run: |
|
147
|
+
user=`whoami`
|
148
|
+
pwd=`pwd`
|
149
|
+
echo "User: $user"
|
150
|
+
echo "Current dir: $pwd"
|
151
|
+
echo "Home dir: $HOME"
|
152
|
+
echo "Branch: ${GITHUB_REF#refs/*/}"
|
153
|
+
|
154
|
+
- name: ruby tests
|
155
|
+
run: |
|
156
|
+
export HOME=/root
|
157
|
+
test/run_tests/ruby_setup.sh
|
158
|
+
version=`rbenv versions --bare | grep ${{ matrix.ruby }}`
|
159
|
+
rbenv global $version
|
160
|
+
echo "testing with ruby version: $version"
|
161
|
+
test/run_tests/run_tests.sh -r $version
|