appoptics_apm 4.12.2 → 4.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build_and_release_gem.yml +103 -0
  3. data/.github/workflows/build_for_packagecloud.yml +70 -0
  4. data/.github/workflows/docker-images.yml +47 -0
  5. data/.github/workflows/run_cpluplus_tests.yml +73 -0
  6. data/.github/workflows/run_tests.yml +168 -0
  7. data/.github/workflows/scripts/test_install.rb +23 -0
  8. data/.github/workflows/swig/swig-v4.0.2.tar.gz +0 -0
  9. data/.github/workflows/test_on_4_linux.yml +159 -0
  10. data/.gitignore +17 -25
  11. data/.travis.yml +17 -14
  12. data/Gemfile +1 -25
  13. data/README.md +4 -6
  14. data/appoptics_apm.gemspec +11 -5
  15. data/examples/prepend.rb +13 -0
  16. data/examples/sdk_examples.rb +16 -0
  17. data/ext/oboe_metal/extconf.rb +25 -31
  18. data/ext/oboe_metal/lib/liboboe-1.0-alpine-x86_64.so.0.0.0.sha256 +1 -0
  19. data/ext/oboe_metal/lib/liboboe-1.0-x86_64.so.0.0.0.sha256 +1 -0
  20. data/ext/oboe_metal/src/README.md +6 -0
  21. data/ext/oboe_metal/src/VERSION +2 -1
  22. data/ext/oboe_metal/src/frames.cc +246 -0
  23. data/ext/oboe_metal/src/frames.h +40 -0
  24. data/ext/oboe_metal/src/init_appoptics_apm.cc +5 -4
  25. data/ext/oboe_metal/src/logging.cc +95 -0
  26. data/ext/oboe_metal/src/logging.h +35 -0
  27. data/ext/oboe_metal/src/oboe.h +8 -5
  28. data/ext/oboe_metal/src/oboe_api.cpp +40 -14
  29. data/ext/oboe_metal/src/oboe_api.hpp +29 -8
  30. data/ext/oboe_metal/src/oboe_debug.h +1 -0
  31. data/ext/oboe_metal/src/oboe_swig_wrap.cc +85 -21
  32. data/ext/oboe_metal/src/profiling.cc +435 -0
  33. data/ext/oboe_metal/src/profiling.h +78 -0
  34. data/ext/oboe_metal/test/CMakeLists.txt +53 -0
  35. data/ext/oboe_metal/test/FindGMock.cmake +43 -0
  36. data/ext/oboe_metal/test/README.md +56 -0
  37. data/ext/oboe_metal/test/frames_test.cc +164 -0
  38. data/ext/oboe_metal/test/profiling_test.cc +93 -0
  39. data/ext/oboe_metal/test/ruby_inc_dir.rb +8 -0
  40. data/ext/oboe_metal/test/ruby_prefix.rb +8 -0
  41. data/ext/oboe_metal/test/ruby_test_helper.rb +67 -0
  42. data/ext/oboe_metal/test/test.h +11 -0
  43. data/ext/oboe_metal/test/test_main.cc +32 -0
  44. data/lib/appoptics_apm/api/metrics.rb +3 -0
  45. data/lib/appoptics_apm/base.rb +1 -1
  46. data/lib/appoptics_apm/config.rb +11 -2
  47. data/lib/appoptics_apm/frameworks/rails/inst/connection_adapters/utils5x.rb +7 -1
  48. data/lib/appoptics_apm/inst/rack.rb +13 -6
  49. data/lib/appoptics_apm/inst/redis.rb +1 -2
  50. data/lib/appoptics_apm/noop/context.rb +3 -0
  51. data/lib/appoptics_apm/noop/metadata.rb +4 -1
  52. data/lib/appoptics_apm/noop/profiling.rb +21 -0
  53. data/lib/appoptics_apm/oboe_init_options.rb +26 -22
  54. data/lib/appoptics_apm/support/profiling.rb +18 -0
  55. data/lib/appoptics_apm/support/transaction_metrics.rb +1 -1
  56. data/lib/appoptics_apm/support/transaction_settings.rb +2 -2
  57. data/lib/appoptics_apm/support/x_trace_options.rb +2 -2
  58. data/lib/appoptics_apm/support_report.rb +2 -2
  59. data/lib/appoptics_apm/test.rb +4 -3
  60. data/lib/appoptics_apm/util.rb +1 -1
  61. data/lib/appoptics_apm/version.rb +3 -3
  62. data/lib/appoptics_apm/xtrace.rb +1 -1
  63. data/lib/appoptics_apm.rb +3 -1
  64. data/lib/oboe_metal.rb +2 -2
  65. data/lib/rails/generators/appoptics_apm/templates/appoptics_apm_initializer.rb +24 -0
  66. data/log/.keep +0 -0
  67. metadata +46 -16
  68. data/.travis/bundle.sh +0 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d965e8566e484600d93a0464d8421bef1f6b578eeb831462ced9b1bd28a99561
4
- data.tar.gz: 4b06e0e2e9eb0e3c7f329286a28376ddbfa906d06ac074aa73abfb3f0fa66305
3
+ metadata.gz: 6f8521d6d7683aaef83d35504c4875191ca2340bb5fea0c16ce40dd6f4704465
4
+ data.tar.gz: f134e9eea6744e5238422c5a27f75687bc5d8aadf370e2e5588814b8f8a9e3a3
5
5
  SHA512:
6
- metadata.gz: 3173787156f779575df425cc0fd8b855833d97bb05b9f00aa6d6bdedd74c4ca8028a274009822441666fc9d6e1b20b8822887d1034d38625e4e5a33361190b86
7
- data.tar.gz: fbfcf3540014922155bdfd0865ef09ff316635580d50403b48d07a9a089aa0123e54eff62eb316c084750084faeef9ae8260eea3ef04885a113bacb3ecd1c71e
6
+ metadata.gz: a6a932fb422ab7277cd04debfb8927d1ca98a74a9743055925bdd2161f8be194af9b5aefb8ad7d198d5746622ad471639fb10cdcf29678054361e1db3a292d0f
7
+ data.tar.gz: 6796ae6f652917845031b56107c7859a2a443b1da5bc8820d183d415eb14781c5809dfdbe22dc5da7adac109321918a4197b5dd4b5e96ea3be5dd23d85198cf3
@@ -0,0 +1,103 @@
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 appoptics user on rubygems.org)
9
+ # - APPOPTICS_SERVICE_KEY
10
+ # - APPOPTICS_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_appoptics_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/appoptics_apm/version"; puts AppOpticsAPM::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/appoptics_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
+ - name: Create release draft that includes the checksum
79
+ uses: actions/github-script@v3
80
+ with:
81
+ github-token: ${{secrets.GITHUB_TOKEN}}
82
+ script: |
83
+ github.repos.createRelease({
84
+ owner: "appoptics",
85
+ repo: "appoptics-apm-ruby",
86
+ body: "SHA256 checksum: ${{ steps.build.outputs.checksum }}",
87
+ tag_name: "${{ steps.build.outputs.gem_version }}",
88
+ name: "${{ steps.build.outputs.gem_version }}",
89
+ draft: true
90
+ })
91
+
92
+ # may need a bit of time for the gem to become available (sleep 1)
93
+ - name: Download new Rubygem from rubygems.org and test
94
+ working-directory: .github/workflows/
95
+ env:
96
+ APPOPTICS_SERVICE_KEY: ${{ secrets.APPOPTICS_SERVICE_KEY }}
97
+ APPOPTICS_COLLECTOR: ${{ secrets.APPOPTICS_COLLECTOR}}
98
+ run: |
99
+ sleep 1
100
+ gem install appoptics_apm --version ${{ steps.build.outputs.gem_version }}
101
+ ruby ./scripts/test_install.rb
102
+
103
+
@@ -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.6 and bundle
18
+ uses: ruby/setup-ruby@v1
19
+ with:
20
+ ruby-version: 2.6
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 appoptics_apm.gemspec
44
+ echo `shasum -a256 *.gem`
45
+ echo "::set-output name=GEM_VERSION::`ruby -e 'require "./lib/appoptics_apm/version"; puts AppOpticsAPM::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/appoptics-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
+ # APPOPTICS_SERVICE_KEY: ${{ secrets.APPOPTICS_SERVICE_KEY }}
64
+ # APPOPTICS_COLLECTOR: ${{ secrets.APPOPTICS_COLLECTOR}}
65
+ # APPOPTICS_FROM_S3: true
66
+ # run: |
67
+ # sleep 60
68
+ # gem sources --add https://packagecloud.io/solarwinds/appoptics-apm-ruby
69
+ # gem install appoptics_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.0, 2.7, 2.6, 2.5, 2.4]
22
+
23
+ container:
24
+ image: ruby:${{ matrix.ruby }}
25
+
26
+ name: ${{ matrix.ruby }} - c++
27
+
28
+ env:
29
+ APPOPTICS_REPORTER: file
30
+ APPOPTICS_COLLECTOR: /tmp/appoptics_traces.bson
31
+ APPOPTICS_REPORTER_FILE_SINGLE: false
32
+ APPOPTICS_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,168 @@
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.0, 2.7, 2.6, 2.5, 2.4]
18
+ gemfile:
19
+ - libraries
20
+ - unit
21
+ - instrumentation_mocked
22
+ - instrumentation_mocked_oldgems
23
+ - frameworks
24
+ - rails61
25
+ - rails60
26
+ - rails52
27
+ - rails42
28
+ - delayed_job
29
+ - noop
30
+ dbtype: [postgresql, mysql2]
31
+ exclude:
32
+ - ruby: 3.0
33
+ gemfile: rails52
34
+ - ruby: 3.0
35
+ gemfile: rails42
36
+ - ruby: 2.7
37
+ gemfile: rails42
38
+ - ruby: 2.6
39
+ gemfile: rails42
40
+ - ruby: 2.4
41
+ gemfile: rails61
42
+ - ruby: 2.4
43
+ gemfile: rails60
44
+ - ruby: 2.4 # excluding because of new sprockets version (4.0.0)
45
+ gemfile: rails52
46
+
47
+ - gemfile: unit
48
+ dbtype: mysql2
49
+ - gemfile: noop
50
+ dbtype: mysql2
51
+ - gemfile: libraries
52
+ dbtype: mysql2
53
+ - gemfile: instrumentation_mocked
54
+ dbtype: mysql2
55
+ - gemfile: instrumentation_mocked_oldgems
56
+ dbtype: mysql2
57
+ - gemfile: frameworks
58
+ dbtype: mysql2
59
+ - gemfile: delayed_job
60
+ dbtype: mysql2
61
+
62
+ container:
63
+ image: ruby:${{ matrix.ruby }}
64
+
65
+ name: ${{ matrix.ruby }} - ${{ matrix.gemfile }}
66
+
67
+ env:
68
+ BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile
69
+ APPOPTICS_GEM_TEST: true
70
+ APPOPTICS_REPORTER: file
71
+ APPOPTICS_COLLECTOR: /tmp/appoptics_traces.bson
72
+ APPOPTICS_MONGO_SERVER: "mongo"
73
+ APPOPTICS_RABBITMQ_SERVER: "rabbitmq"
74
+ APPOPTICS_MEMCACHED_SERVER: "memcached"
75
+ APPOPTICS_REPORTER_FILE_SINGLE: false
76
+ APPOPTICS_FROM_S3: true
77
+ MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
78
+ MYSQL_ROOT_PASSWORD: "admin"
79
+ MYSQL_HOST: "mysql"
80
+ MYSQL_DATABASE: "travis_ci_test"
81
+ POSTGRES_DB: "travis_ci_test"
82
+ DOCKER_MYSQL_PASS: "admin"
83
+ DOCKER_PSQL_PASS: "postgres"
84
+ POSTGRES_USER: "postgres"
85
+ POSTGRES_PASSWORD: "postgres"
86
+ POSTGRES_HOST: "postgres"
87
+ REDIS_PASSWORD: "redis_pass"
88
+ services:
89
+ memcached:
90
+ image: memcached:latest
91
+ ports:
92
+ - 11211:11211
93
+ 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
94
+ rabbitmq:
95
+ image: rabbitmq:latest
96
+ ports:
97
+ - 5672:5672
98
+ options: --health-cmd "rabbitmqctl node_health_check" --health-interval 10s --health-timeout 5s --health-retries 5
99
+ mongo:
100
+ image: mongo:latest
101
+ ports:
102
+ - 27017:27017
103
+ options: "--health-cmd \"mongo --quiet --eval 'quit(db.runCommand({ ping: 1 }).ok ? 0 : 2)'\" --health-interval 10s --health-timeout 5s --health-retries 5"
104
+ postgres:
105
+ image: postgres:10.8
106
+ env:
107
+ POSTGRES_DB: postgres
108
+ ports:
109
+ - 5432:5432
110
+ options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
111
+ mysql:
112
+ image: mariadb:latest
113
+ env:
114
+ MYSQL_USER: user
115
+ MYSQL_PASSWORD: password
116
+ MYSQL_DATABASE: travis_ci_test
117
+ MYSQL_ROOT_PASSWORD: admin
118
+ ports:
119
+ - 3306:3306
120
+ options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3
121
+
122
+ steps:
123
+ - uses: actions/checkout@v2
124
+
125
+ - name: Install dependencies
126
+ run: apt update && apt install -y --no-install-recommends bison libcurl4-gnutls-dev libsasl2-dev postgresql-client
127
+
128
+ - name: Set database type env var
129
+ run: export DBTYPE=${{ matrix.dbtype }}
130
+
131
+ - name: Add javascript runtime
132
+ uses: actions/setup-node@v2
133
+ with:
134
+ node-version: '14'
135
+
136
+ - name: Initialize services
137
+ run: |
138
+ export PGPASSWORD=$POSTGRES_PASSWORD; psql -c 'create database travis_ci_test;' -U postgres -h $POSTGRES_HOST
139
+ 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 -
140
+ redis-server --requirepass redis_pass --loglevel "warning" &
141
+
142
+ - name: Bundle with 1.17.3
143
+ if: matrix.gemfile == 'rails42' || matrix.gemfile == 'frameworks'
144
+ run: |
145
+ gem install bundler:1.17.3
146
+ export BUNDLE_GEMFILE=gemfiles/${{ matrix.gemfile }}.gemfile
147
+ bundle _1.17.3_ install --jobs 4 --retry 3
148
+ - name: Bundle
149
+ if: matrix.gemfile != 'rails42' && matrix.gemfile != 'frameworks'
150
+ run: |
151
+ gem install bundler
152
+ export BUNDLE_GEMFILE=gemfiles/${{ matrix.gemfile }}.gemfile
153
+ bundle install --jobs 4 --retry 3
154
+
155
+ - name: Install swig 4.0.2
156
+ working-directory: .github/workflows/swig
157
+ run: |
158
+ tar -xf swig-v4.0.2.tar.gz -C /tmp
159
+ cd /tmp/swig-4.0.2
160
+ ./autogen.sh && ./configure && make && make install
161
+ cd -
162
+
163
+ - name: Compile c-extension
164
+ run: |
165
+ bundle exec rake fetch compile
166
+
167
+ - name: Run tests
168
+ run: bundle exec rake test