Skip to content

Commit ba8b7b6

Browse files
authored
Add redis instrumentation adapter (#176)
Add `redis` instrumentation adapter based on the adapter for `rest-client` and the `dd-trace-rb` code for `redis`, including its utilites. The `fakeredis` gem is used in the tests to have a fake server. The Docker container for the example includes a real Redis server. Related to #67
1 parent 9a047d3 commit ba8b7b6

File tree

23 files changed

+702
-0
lines changed

23 files changed

+702
-0
lines changed

.circleci/config.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,15 @@ commands:
6868
bundle install --jobs=3 --retry=3
6969
bundle exec appraisal install
7070
bundle exec appraisal rake test
71+
- run:
72+
name: Bundle + CI (Adapters - Redis)
73+
command: |
74+
cd adapters/redis
75+
gem uninstall -aIx bundler
76+
gem install --no-document bundler -v '~> 2.0.2'
77+
bundle install --jobs=3 --retry=3
78+
bundle exec appraisal install
79+
bundle exec appraisal rake test
7180
- run:
7281
name: Bundle + CI (Adapters - REST Client)
7382
command: |

Rakefile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ GEM_INFO = {
6969
OpenTelemetry::Adapters::Faraday::VERSION
7070
}
7171
},
72+
"opentelemetry-adapters-redis" => {
73+
version_getter: ->() {
74+
require './lib/opentelemetry/adapters/redis/version.rb'
75+
OpenTelemetry::Adapters::Redis::VERSION
76+
}
77+
},
7278
"opentelemetry-adapters-restclient" => {
7379
version_getter: ->() {
7480
require './lib/opentelemetry/adapters/restclient/version.rb'

adapters/redis/.rubocop.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
AllCops:
2+
TargetRubyVersion: '2.4.0'
3+
4+
Bundler/OrderedGems:
5+
Exclude:
6+
- gemfiles/**/*
7+
Lint/UnusedMethodArgument:
8+
Enabled: false
9+
Metrics/AbcSize:
10+
Max: 18
11+
Metrics/LineLength:
12+
Enabled: false
13+
Metrics/MethodLength:
14+
Max: 20
15+
Metrics/ParameterLists:
16+
Enabled: false
17+
Naming/FileName:
18+
Exclude:
19+
- "lib/opentelemetry-adapters-redis.rb"
20+
Style/FrozenStringLiteralComment:
21+
Exclude:
22+
- gemfiles/**/*
23+
Style/ModuleFunction:
24+
Enabled: false
25+
Style/StringLiterals:
26+
Exclude:
27+
- gemfiles/**/*

adapters/redis/Appraisals

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# frozen_string_literal: true
2+
3+
appraise 'redis-4.1' do
4+
gem 'redis', '~> 4.1.0'
5+
end
6+
7+
appraise 'redis-4.0' do
8+
gem 'redis', '~> 4.0.0'
9+
end

adapters/redis/Gemfile

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# frozen_string_literal: true
2+
3+
# Copyright 2020 OpenTelemetry Authors
4+
#
5+
# SPDX-License-Identifier: Apache-2.0
6+
7+
source 'https://rubygems.org'
8+
9+
gemspec
10+
11+
gem 'opentelemetry-api', path: '../../api'
12+
13+
group :test do
14+
gem 'fakeredis', require: 'fakeredis/minitest'
15+
gem 'opentelemetry-sdk', path: '../../sdk'
16+
end

adapters/redis/Rakefile

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# frozen_string_literal: true
2+
3+
# Copyright 2020 OpenTelemetry Authors
4+
#
5+
# SPDX-License-Identifier: Apache-2.0
6+
7+
require 'bundler/gem_tasks'
8+
require 'rake/testtask'
9+
require 'yard'
10+
require 'rubocop/rake_task'
11+
12+
RuboCop::RakeTask.new
13+
14+
Rake::TestTask.new :test do |t|
15+
t.libs << 'test'
16+
t.libs << 'lib'
17+
t.test_files = FileList['test/**/*_test.rb']
18+
end
19+
20+
YARD::Rake::YardocTask.new do |t|
21+
t.stats_options = ['--list-undoc']
22+
end
23+
24+
if RUBY_ENGINE == 'truffleruby'
25+
task default: %i[test]
26+
else
27+
task default: %i[test rubocop yard]
28+
end

adapters/redis/example/Gemfile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# frozen_string_literal: true
2+
3+
source 'https://rubygems.org'
4+
5+
gem 'opentelemetry-adapters-redis', path: '../../../adapters/redis'
6+
gem 'opentelemetry-api', path: '../../../api'
7+
gem 'opentelemetry-sdk', path: '../../../sdk'
8+
gem 'redis'

adapters/redis/example/redis.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# frozen_string_literal: true
2+
3+
require 'rubygems'
4+
require 'bundler/setup'
5+
6+
Bundler.require
7+
8+
OpenTelemetry::SDK.configure do |c|
9+
c.use 'OpenTelemetry::Adapters::Redis'
10+
end
11+
12+
Redis.new.set('mykey', 'hello world')
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# This file was generated by Appraisal
2+
3+
source "https://rubygems.org"
4+
5+
gem "opentelemetry-api", path: "../../../api"
6+
gem "redis", "~> 4.0.0"
7+
8+
group :test do
9+
gem "opentelemetry-sdk", path: "../../../sdk"
10+
gem "fakeredis", require: "fakeredis/minitest"
11+
end
12+
13+
gemspec path: "../"
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# This file was generated by Appraisal
2+
3+
source "https://rubygems.org"
4+
5+
gem "opentelemetry-api", path: "../../../api"
6+
gem "redis", "~> 4.1.0"
7+
8+
group :test do
9+
gem "opentelemetry-sdk", path: "../../../sdk"
10+
gem "fakeredis", require: "fakeredis/minitest"
11+
end
12+
13+
gemspec path: "../"

0 commit comments

Comments
 (0)