request-tracer 0.5.8 → 0.6.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
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MjI4YWIwMjlhZDY5ODZlMGI2OTBiZjJkNjY0YTUzNmUyNWNkODdhOQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZjAzNWJiYTczOTQxMzAyMWNkYzZiMDdjOTkwNTgzODUwY2EzYzQyNg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YWRjMzFmNTFkOGRlYjgwNjliM2JjZGRiYTE4Njk2YzhkZTBkOTJhZGNlYTNm
|
10
|
+
NjQ0ZTFlMTUzZmU1NTkwYzQwZjVlNDk4NTg3MjVmNzU0MmFjOGJhNDcxOWM5
|
11
|
+
MDlmZDk5M2VkMDNmNDJhMjAwZjhjNjg2OWVlY2VmNzc2YjNkNjc=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YzU1YjlkYjEwNDI0ZjIyYjViMGFkM2JiOWY0NDhmOTdkZWIwODMxYTQ4YTFk
|
14
|
+
OWM0ODliNTczZWQyNDg5MDZkOTQwOWU1Zjc2MDBhOTMyMTQ2MDQ3MGIyMDI1
|
15
|
+
MWU1MzFkZDZjMzMxYTQ5ZGY3OWEyZTI2ODkwNzE5YzU4MDU3MDE=
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
require_relative '../trace'
|
3
|
+
module RequestTracer
|
4
|
+
module Integration
|
5
|
+
module SidekiqHandler
|
6
|
+
include Base
|
7
|
+
extend self
|
8
|
+
def activate
|
9
|
+
require 'sidekiq'
|
10
|
+
Sidekiq.configure_server do |config|
|
11
|
+
config.server_middleware do |chain|
|
12
|
+
chain.add ServerMiddleware
|
13
|
+
end
|
14
|
+
end
|
15
|
+
Sidekiq.configure_client do |config|
|
16
|
+
config.client_middleware do |chain|
|
17
|
+
chain.add ClientMiddleware
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class ServerMiddleware
|
23
|
+
def call(worker, msg, queue)
|
24
|
+
Trace.push(msg["trace"]) do |trace|
|
25
|
+
yield
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class ClientMiddleware
|
31
|
+
def call(worker_class, job, queue, redis_pool)
|
32
|
+
job['trace'] = Trace.latest.to_h
|
33
|
+
yield
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/request_tracer/trace.rb
CHANGED
data/request-tracer.gemspec
CHANGED
@@ -17,6 +17,7 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.require_paths = ["lib"]
|
18
18
|
|
19
19
|
spec.add_development_dependency 'rest-client'
|
20
|
+
spec.add_development_dependency 'sidekiq'
|
20
21
|
spec.add_development_dependency 'bundler', '~> 1.7'
|
21
22
|
spec.add_development_dependency 'rake', '~> 10.0'
|
22
23
|
spec.add_development_dependency "rspec", "~> 3.4"
|
@@ -0,0 +1,115 @@
|
|
1
|
+
require 'request_tracer/trace'
|
2
|
+
require 'request_tracer/integration/sidekiq_handler'
|
3
|
+
require 'sidekiq/testing'
|
4
|
+
Sidekiq.logger = Logger.new('/tmp/sidekiq.log')
|
5
|
+
|
6
|
+
|
7
|
+
describe RequestTracer::Integration::SidekiqHandler do
|
8
|
+
include RequestTracer::Integration::Base
|
9
|
+
|
10
|
+
class ResultChecker
|
11
|
+
attr_reader :traces, :job_args
|
12
|
+
def initialize
|
13
|
+
@traces = []
|
14
|
+
@job_args = []
|
15
|
+
end
|
16
|
+
def push_trace(trace)
|
17
|
+
@traces.push(trace)
|
18
|
+
end
|
19
|
+
def push_job_args(args)
|
20
|
+
@job_args.push(args)
|
21
|
+
end
|
22
|
+
def self.instance
|
23
|
+
@checker ||= self.new
|
24
|
+
end
|
25
|
+
def self.clear
|
26
|
+
@checker = nil
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class TraceableJob
|
31
|
+
include Sidekiq::Worker
|
32
|
+
def perform(*args)
|
33
|
+
rc = ResultChecker.instance
|
34
|
+
rc.push_trace(RequestTracer::Trace.latest.to_h)
|
35
|
+
rc.push_job_args(args)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class ThreadSpawningMiddleware
|
40
|
+
def call(worker_instance, msg, queue, &blk)
|
41
|
+
result = nil
|
42
|
+
Thread.new { result = blk.call }.join
|
43
|
+
result
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
before(:all) do
|
48
|
+
Sidekiq::Testing.inline!
|
49
|
+
end
|
50
|
+
|
51
|
+
let(:result_checker) { ResultChecker.instance }
|
52
|
+
let(:trace) { RequestTracer::Trace.create }
|
53
|
+
|
54
|
+
before do
|
55
|
+
Sidekiq::Worker.clear_all
|
56
|
+
RequestTracer::Trace.clear
|
57
|
+
ResultChecker.clear
|
58
|
+
end
|
59
|
+
|
60
|
+
after do
|
61
|
+
Sidekiq::Testing.server_middleware {|chn| chn.clear }
|
62
|
+
Sidekiq.configure_client {|cfg| cfg.client_middleware {|chn| chn.clear } }
|
63
|
+
end
|
64
|
+
|
65
|
+
context "when asynchronously calling a job with correctly setup middleware" do
|
66
|
+
before do
|
67
|
+
RequestTracer.integrate_with(:sidekiq)
|
68
|
+
Sidekiq::Testing.server_middleware do |chain|
|
69
|
+
chain.add ThreadSpawningMiddleware
|
70
|
+
chain.add RequestTracer::Integration::SidekiqHandler::ServerMiddleware
|
71
|
+
end
|
72
|
+
end
|
73
|
+
context "when there is an existing trace" do
|
74
|
+
before { RequestTracer::Trace.push trace.to_h }
|
75
|
+
it "passes the trace from the main process to the worker and records the worker" do
|
76
|
+
TraceableJob.perform_async('foo')
|
77
|
+
expect(result_checker.traces).to eq([trace.to_h])
|
78
|
+
end
|
79
|
+
end
|
80
|
+
it "calls the job with the originally given parameters" do
|
81
|
+
TraceableJob.perform_async(a_string: "bar", a_number: 12)
|
82
|
+
expect(result_checker.job_args).to eq([[{"a_string" => "bar", "a_number" => 12}]])
|
83
|
+
end
|
84
|
+
end
|
85
|
+
context "when asynchronously calling a job with missing server middleware" do
|
86
|
+
before do
|
87
|
+
RequestTracer.integrate_with(:sidekiq)
|
88
|
+
Sidekiq::Testing.server_middleware do |chain|
|
89
|
+
chain.add ThreadSpawningMiddleware
|
90
|
+
end
|
91
|
+
end
|
92
|
+
context "when there is an existing trace" do
|
93
|
+
before { RequestTracer::Trace.push trace.to_h }
|
94
|
+
it "passes the trace from the main process to the worker and records the worker" do
|
95
|
+
TraceableJob.perform_async('foo')
|
96
|
+
expect(result_checker.traces).to eq([{}])
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
context "when asynchronously calling a job with missing client middleware" do
|
101
|
+
before do
|
102
|
+
Sidekiq::Testing.server_middleware do |chain|
|
103
|
+
chain.add ThreadSpawningMiddleware
|
104
|
+
chain.add RequestTracer::Integration::SidekiqHandler::ServerMiddleware
|
105
|
+
end
|
106
|
+
end
|
107
|
+
context "when there is an existing trace" do
|
108
|
+
before { RequestTracer::Trace.push trace.to_h }
|
109
|
+
it "passes the trace from the main process to the worker and records the worker" do
|
110
|
+
TraceableJob.perform_async('foo')
|
111
|
+
expect(result_checker.traces).to eq([{}])
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: request-tracer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Mauch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02
|
11
|
+
date: 2016-03-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ! '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: sidekiq
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -213,12 +227,14 @@ files:
|
|
213
227
|
- lib/request_tracer/integration/base.rb
|
214
228
|
- lib/request_tracer/integration/rack_handler.rb
|
215
229
|
- lib/request_tracer/integration/rest_client_handler.rb
|
230
|
+
- lib/request_tracer/integration/sidekiq_handler.rb
|
216
231
|
- lib/request_tracer/trace.rb
|
217
232
|
- lib/request_tracer/version.rb
|
218
233
|
- request-tracer.gemspec
|
219
234
|
- spec/integration/integration_spec.rb
|
220
235
|
- spec/lib/request_tracer/integration/rack_handler_spec.rb
|
221
236
|
- spec/lib/request_tracer/integration/rest_client_handler_spec.rb
|
237
|
+
- spec/lib/request_tracer/integration/sidekiq_handler_spec.rb
|
222
238
|
- spec/lib/request_tracer/trace_spec.rb
|
223
239
|
- spec/spec_helper.rb
|
224
240
|
- spec/support/test_app.rb
|
@@ -251,6 +267,7 @@ test_files:
|
|
251
267
|
- spec/integration/integration_spec.rb
|
252
268
|
- spec/lib/request_tracer/integration/rack_handler_spec.rb
|
253
269
|
- spec/lib/request_tracer/integration/rest_client_handler_spec.rb
|
270
|
+
- spec/lib/request_tracer/integration/sidekiq_handler_spec.rb
|
254
271
|
- spec/lib/request_tracer/trace_spec.rb
|
255
272
|
- spec/spec_helper.rb
|
256
273
|
- spec/support/test_app.rb
|