opentracing 0.4.0 → 0.4.1
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 +5 -5
- data/.rubocop.yml +3 -1151
- data/.travis.yml +1 -1
- data/CHANGELOG.md +9 -0
- data/LICENSE +1 -1
- data/README.md +84 -22
- data/Rakefile +12 -5
- data/bin/console +3 -3
- data/lib/opentracing.rb +20 -9
- data/lib/opentracing/carrier.rb +3 -6
- data/lib/opentracing/reference.rb +1 -0
- data/lib/opentracing/scope.rb +1 -2
- data/lib/opentracing/scope_manager.rb +1 -1
- data/lib/opentracing/span.rb +2 -3
- data/lib/opentracing/span_context.rb +1 -2
- data/lib/opentracing/tracer.rb +6 -0
- data/lib/opentracing/version.rb +1 -1
- data/opentracing.gemspec +16 -15
- metadata +21 -7
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## Master
|
4
|
+
|
5
|
+
## 0.4.1
|
6
|
+
|
7
|
+
* Add active_span convenience method to OpenTracing module ([#30](https://github.com/opentracing/opentracing-ruby/pull/30))
|
8
|
+
* Fix global tracer delegators ([#28](https://github.com/opentracing/opentracing-ruby/pull/28))
|
9
|
+
* Add Rubocop ([#29](https://github.com/opentracing/opentracing-ruby/pull/27))
|
10
|
+
* Update license from MIT => Apache 2.0 ([#26](https://github.com/opentracing/opentracing-ruby/pull/26))
|
11
|
+
|
3
12
|
## 0.4.0
|
4
13
|
|
5
14
|
* The tracer now implements the OpenTracing Scope API for in-process scope propagation([#21](https://github.com/opentracing/opentracing-ruby/pull/21))
|
data/LICENSE
CHANGED
@@ -186,7 +186,7 @@
|
|
186
186
|
same "printed page" as the copyright notice for easier
|
187
187
|
identification within third-party archives.
|
188
188
|
|
189
|
-
Copyright
|
189
|
+
Copyright The OpenTracing Authors
|
190
190
|
|
191
191
|
Licensed under the Apache License, Version 2.0 (the "License");
|
192
192
|
you may not use this file except in compliance with the License.
|
data/README.md
CHANGED
@@ -25,15 +25,15 @@ And then execute:
|
|
25
25
|
Or install it yourself as:
|
26
26
|
|
27
27
|
$ gem install opentracing
|
28
|
-
|
28
|
+
|
29
29
|
`opentracing` supports Ruby 2.0+.
|
30
30
|
|
31
31
|
## Usage
|
32
32
|
|
33
33
|
Everyday consumers of this `opentracing` gem really only need to worry
|
34
|
-
about a couple of key abstractions: the `
|
35
|
-
|
36
|
-
demonstrating some important use cases.
|
34
|
+
about a couple of key abstractions: the `start_active_span` and `start_span`
|
35
|
+
methods, the `Span` and `ScopeManager` interfaces, and binding a `Tracer`
|
36
|
+
at runtime. Here are code snippets demonstrating some important use cases.
|
37
37
|
|
38
38
|
### Singleton initialization
|
39
39
|
|
@@ -41,38 +41,101 @@ As early as possible, call
|
|
41
41
|
|
42
42
|
```ruby
|
43
43
|
require 'opentracing'
|
44
|
-
OpenTracing.global_tracer = MyTracerImplementation.
|
44
|
+
OpenTracing.global_tracer = MyTracerImplementation.new(...)
|
45
45
|
```
|
46
46
|
|
47
47
|
Where `MyTracerImplementation` is your tracer. For testing, you can use
|
48
|
-
the provided `OpenTracing::
|
48
|
+
the provided `OpenTracing::Tracer`
|
49
49
|
|
50
50
|
### Non-Singleton initialization
|
51
51
|
|
52
52
|
If you prefer direct control to singletons, manage ownership of the
|
53
53
|
`Tracer` implementation explicitly.
|
54
54
|
|
55
|
-
###
|
55
|
+
### Scopes and within-process propagation
|
56
|
+
|
57
|
+
For any thread, at most one `Span` may be "active". Of course there may be many
|
58
|
+
other `Spans` involved with the thread which are (a) started, (b) not finished,
|
59
|
+
and yet (c) not "active": perhaps they are waiting for I/O, blocked on a child
|
60
|
+
`Span`, or otherwise off of the critical path.
|
61
|
+
|
62
|
+
It's inconvenient to pass an active `Span` from function to function manually,
|
63
|
+
so OpenTracing requires that every `Tracer` contains a `ScopeManager` that
|
64
|
+
grants access to the active `Span` through a `Scope`. Any `Span` may be
|
65
|
+
transferred to another callback or thread, but not `Scope`.
|
56
66
|
|
57
|
-
|
58
|
-
reference.
|
67
|
+
#### Accessing the active Span through Scope
|
59
68
|
|
60
69
|
```ruby
|
61
|
-
span
|
62
|
-
|
70
|
+
# Access to the active span is straightforward.
|
71
|
+
|
72
|
+
span = OpenTracing.active_span
|
73
|
+
if span
|
74
|
+
span.set_tag('...', '...')
|
75
|
+
end
|
76
|
+
|
77
|
+
# or
|
78
|
+
|
79
|
+
scope = OpenTracing.scope_manager.active
|
80
|
+
if scope
|
81
|
+
scope.span.set_tag('...', '...')
|
82
|
+
end
|
63
83
|
```
|
64
84
|
|
65
|
-
|
66
|
-
you are managing your own tracer you'll need to call `start_span` on your
|
67
|
-
tracer.
|
85
|
+
### Starting a new Span
|
68
86
|
|
69
|
-
|
87
|
+
The common case starts a `Scope` that's automatically registered for
|
88
|
+
intra-process propagation via `ScopeManager`.
|
89
|
+
|
90
|
+
Note that `start_active_span('...')` automatically finishes the span on
|
91
|
+
`Scope#close` (`start_active_span('...', finish_on_close: false)` does not
|
92
|
+
finish it, in contrast).
|
70
93
|
|
71
94
|
```ruby
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
95
|
+
# Automatic activation of the Span.
|
96
|
+
# By default the active span will be finished when the returned scope is closed.
|
97
|
+
# This can be controlled by passing finish_on_close parameter to
|
98
|
+
# start_active_span
|
99
|
+
scope = OpenTracing.start_active_span('operation_name')
|
100
|
+
# Do things.
|
101
|
+
|
102
|
+
# Block form of start_active_span
|
103
|
+
# start_active_span optionally accepts a block. If a block is passed to
|
104
|
+
# start_active_span it will yield the newly created scope. The scope will
|
105
|
+
# be closed and its associated span will be finished unless
|
106
|
+
# finish_on_close: false is passed to start_active_span.
|
107
|
+
OpenTracing.start_active_span('operation_name') do |scope|
|
108
|
+
# Do things.
|
109
|
+
end
|
110
|
+
|
111
|
+
# Manual activation of the Span.
|
112
|
+
# Spans can be managed manually. This is equivalent to the more concise examples
|
113
|
+
# above.
|
114
|
+
span = OpenTracing.start_span('operation_name')
|
115
|
+
OpenTracing.scope_manager.activate(span)
|
116
|
+
scope = OpenTracing.scope_manager.active
|
117
|
+
# Do things.
|
118
|
+
|
119
|
+
# If there is an active Scope, it will act as the parent to any newly started
|
120
|
+
# Span unless ignore_active_scope: true is passed to start_span or
|
121
|
+
# start_active_span.
|
122
|
+
|
123
|
+
# create a root span, ignoring the currently active scope (if it's set)
|
124
|
+
scope = OpenTracing.start_active_span('operation_name', ignore_active_scope: true)
|
125
|
+
|
126
|
+
# or
|
127
|
+
span = OpenTracing.start_span('operation_name', ignore_active_scope: true)
|
128
|
+
|
129
|
+
# It's possible to create a child Span given an existing parent Span by
|
130
|
+
# using the child_of option.
|
131
|
+
|
132
|
+
parent_scope = OpenTracing.start_active_span('parent_operation, ignore_active_scope: true)
|
133
|
+
child_scope = OpenTracing.start_active_span('child_operation', child_of: parent_scope.span)
|
134
|
+
|
135
|
+
# or
|
136
|
+
parent_span = OpenTracing.start_span('parent_operation', ignore_active_scope: true)
|
137
|
+
child_span = OpenTracing.start_span('child_operation', child_of: parent_span)
|
138
|
+
|
76
139
|
```
|
77
140
|
|
78
141
|
### Serializing to the wire
|
@@ -130,7 +193,6 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
130
193
|
|
131
194
|
Bug reports and pull requests are welcome on GitHub at https://github.com/opentracing/opentracing-ruby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
132
195
|
|
196
|
+
## Licensing
|
133
197
|
|
134
|
-
|
135
|
-
|
136
|
-
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
198
|
+
[Apache 2.0 License](./LICENSE).
|
data/Rakefile
CHANGED
@@ -1,10 +1,17 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rubocop/rake_task'
|
3
4
|
|
4
5
|
Rake::TestTask.new(:test) do |t|
|
5
|
-
t.libs <<
|
6
|
-
t.libs <<
|
6
|
+
t.libs << 'test'
|
7
|
+
t.libs << 'lib'
|
7
8
|
t.test_files = FileList['test/**/*_test.rb']
|
8
9
|
end
|
9
10
|
|
10
|
-
|
11
|
+
RuboCop::RakeTask.new(:rubocop)
|
12
|
+
|
13
|
+
if RUBY_PLATFORM == 'java'
|
14
|
+
task default: :test
|
15
|
+
else
|
16
|
+
task default: %i[rubocop test]
|
17
|
+
end
|
data/bin/console
CHANGED
data/lib/opentracing.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
1
|
+
require 'forwardable'
|
2
|
+
require 'opentracing/version'
|
3
|
+
require 'opentracing/span_context'
|
4
|
+
require 'opentracing/span'
|
5
|
+
require 'opentracing/reference'
|
6
|
+
require 'opentracing/tracer'
|
7
|
+
require 'opentracing/scope'
|
8
|
+
require 'opentracing/scope_manager'
|
9
9
|
|
10
|
+
#:nodoc:
|
10
11
|
module OpenTracing
|
11
12
|
# Text format for Tracer#inject and Tracer#extract.
|
12
13
|
#
|
@@ -35,7 +36,17 @@ module OpenTracing
|
|
35
36
|
extend Forwardable
|
36
37
|
# Global tracer to be used when OpenTracing.start_span, inject or extract is called
|
37
38
|
attr_accessor :global_tracer
|
38
|
-
def_delegators :global_tracer, :
|
39
|
+
def_delegators :global_tracer, :scope_manager, :start_active_span,
|
40
|
+
:start_span, :inject, :extract
|
41
|
+
|
42
|
+
# Convenience method to access the currently active span. This is equivalent
|
43
|
+
# to calling `OpenTracing.scope_manager.active.span`
|
44
|
+
#
|
45
|
+
# @return [Span, nil] the currently active span or nil
|
46
|
+
def active_span
|
47
|
+
scope = scope_manager.active
|
48
|
+
scope.span if scope
|
49
|
+
end
|
39
50
|
end
|
40
51
|
end
|
41
52
|
|
data/lib/opentracing/carrier.rb
CHANGED
@@ -6,20 +6,17 @@ module OpenTracing
|
|
6
6
|
# [] retrieves a value by the given key
|
7
7
|
# @param key [String] key to retrieve the value
|
8
8
|
# @return [String] the desired value
|
9
|
-
def [](key)
|
10
|
-
end
|
9
|
+
def [](key); end
|
11
10
|
|
12
11
|
# []= sets the value for the given key
|
13
12
|
# @param key [String] key to set
|
14
13
|
# @param value [String] value to set
|
15
|
-
def []=(key, value)
|
16
|
-
end
|
14
|
+
def []=(key, value); end
|
17
15
|
|
18
16
|
# each iterates over every key-value pair in the carrier
|
19
17
|
# @yield [key, value]
|
20
18
|
# @yieldparam key [String] the key of the tuple
|
21
19
|
# @yieldparam value [String] the value of the tuple
|
22
|
-
def each(&block)
|
23
|
-
end
|
20
|
+
def each(&block); end
|
24
21
|
end
|
25
22
|
end
|
data/lib/opentracing/scope.rb
CHANGED
data/lib/opentracing/span.rb
CHANGED
@@ -8,8 +8,7 @@ module OpenTracing
|
|
8
8
|
# Set the name of the operation
|
9
9
|
#
|
10
10
|
# @param [String] name
|
11
|
-
def operation_name=(name)
|
12
|
-
end
|
11
|
+
def operation_name=(name); end
|
13
12
|
|
14
13
|
# Span Context
|
15
14
|
#
|
@@ -49,7 +48,7 @@ module OpenTracing
|
|
49
48
|
# @param timestamp [Time] time of the log
|
50
49
|
# @param fields [Hash] Additional information to log
|
51
50
|
def log(event: nil, timestamp: Time.now, **fields)
|
52
|
-
warn
|
51
|
+
warn 'Span#log is deprecated. Please use Span#log_kv instead.'
|
53
52
|
nil
|
54
53
|
end
|
55
54
|
|
data/lib/opentracing/tracer.rb
CHANGED
@@ -1,4 +1,10 @@
|
|
1
1
|
module OpenTracing
|
2
|
+
# Tracer is the entry point API between instrumentation code and the tracing
|
3
|
+
# implementation.
|
4
|
+
#
|
5
|
+
# This implementation both defines the public Tracer API, and provides a
|
6
|
+
# default no-op behavior.
|
7
|
+
#
|
2
8
|
class Tracer
|
3
9
|
# @return [ScopeManager] the current ScopeManager, which may be a no-op but
|
4
10
|
# may not be nil.
|
data/lib/opentracing/version.rb
CHANGED
data/opentracing.gemspec
CHANGED
@@ -1,28 +1,29 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('
|
1
|
+
|
2
|
+
lib = File.expand_path('lib', __dir__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
4
|
require 'opentracing/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'opentracing'
|
8
8
|
spec.version = OpenTracing::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
9
|
+
spec.authors = %w[ngauthier bcronin bensigelman]
|
10
|
+
spec.email = ['info@opentracing.io']
|
11
11
|
|
12
|
-
spec.summary =
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
12
|
+
spec.summary = 'OpenTracing Ruby Platform API'
|
13
|
+
spec.homepage = 'https://github.com/opentracing/opentracing-ruby'
|
14
|
+
spec.license = 'Apache 2.0'
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
17
|
f.match(%r{^(test|spec|features)/})
|
18
18
|
end
|
19
|
-
spec.bindir =
|
19
|
+
spec.bindir = 'exe'
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
|
-
spec.require_paths = [
|
21
|
+
spec.require_paths = ['lib']
|
22
22
|
|
23
|
-
spec.add_development_dependency
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
27
|
-
spec.add_development_dependency
|
23
|
+
spec.add_development_dependency 'bundler'
|
24
|
+
spec.add_development_dependency 'minitest', '~> 5.0'
|
25
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
26
|
+
spec.add_development_dependency 'rubocop', '~> 0.54.0'
|
27
|
+
spec.add_development_dependency 'simplecov'
|
28
|
+
spec.add_development_dependency 'simplecov-console'
|
28
29
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opentracing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ngauthier
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2018-
|
13
|
+
date: 2018-04-27 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -26,6 +26,20 @@ dependencies:
|
|
26
26
|
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '0'
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: minitest
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - "~>"
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '5.0'
|
36
|
+
type: :development
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '5.0'
|
29
43
|
- !ruby/object:Gem::Dependency
|
30
44
|
name: rake
|
31
45
|
requirement: !ruby/object:Gem::Requirement
|
@@ -41,19 +55,19 @@ dependencies:
|
|
41
55
|
- !ruby/object:Gem::Version
|
42
56
|
version: '10.0'
|
43
57
|
- !ruby/object:Gem::Dependency
|
44
|
-
name:
|
58
|
+
name: rubocop
|
45
59
|
requirement: !ruby/object:Gem::Requirement
|
46
60
|
requirements:
|
47
61
|
- - "~>"
|
48
62
|
- !ruby/object:Gem::Version
|
49
|
-
version:
|
63
|
+
version: 0.54.0
|
50
64
|
type: :development
|
51
65
|
prerelease: false
|
52
66
|
version_requirements: !ruby/object:Gem::Requirement
|
53
67
|
requirements:
|
54
68
|
- - "~>"
|
55
69
|
- !ruby/object:Gem::Version
|
56
|
-
version:
|
70
|
+
version: 0.54.0
|
57
71
|
- !ruby/object:Gem::Dependency
|
58
72
|
name: simplecov
|
59
73
|
requirement: !ruby/object:Gem::Requirement
|
@@ -112,7 +126,7 @@ files:
|
|
112
126
|
- opentracing.gemspec
|
113
127
|
homepage: https://github.com/opentracing/opentracing-ruby
|
114
128
|
licenses:
|
115
|
-
-
|
129
|
+
- Apache 2.0
|
116
130
|
metadata: {}
|
117
131
|
post_install_message:
|
118
132
|
rdoc_options: []
|
@@ -130,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
144
|
version: '0'
|
131
145
|
requirements: []
|
132
146
|
rubyforge_project:
|
133
|
-
rubygems_version: 2.
|
147
|
+
rubygems_version: 2.7.6
|
134
148
|
signing_key:
|
135
149
|
specification_version: 4
|
136
150
|
summary: OpenTracing Ruby Platform API
|