traceview 3.3.3 → 3.4.0
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 +4 -4
- data/.travis.yml +18 -18
- data/CHANGELOG.md +13 -0
- data/README.md +3 -1
- data/Rakefile +18 -9
- data/gemfiles/delayed_job.gemfile +38 -0
- data/gemfiles/frameworks.gemfile +1 -2
- data/gemfiles/libraries.gemfile +1 -2
- data/gemfiles/rails23.gemfile +1 -2
- data/gemfiles/rails30.gemfile +4 -2
- data/gemfiles/rails31.gemfile +4 -2
- data/gemfiles/rails32.gemfile +4 -2
- data/gemfiles/rails40.gemfile +4 -2
- data/gemfiles/rails41.gemfile +4 -2
- data/gemfiles/rails42.gemfile +4 -2
- data/lib/traceview/api/layerinit.rb +3 -5
- data/lib/traceview/api/logging.rb +63 -50
- data/lib/traceview/api/memcache.rb +10 -9
- data/lib/traceview/api/profiling.rb +6 -7
- data/lib/traceview/api/util.rb +1 -1
- data/lib/traceview/base.rb +21 -7
- data/lib/traceview/config.rb +8 -4
- data/lib/traceview/frameworks/padrino.rb +2 -2
- data/lib/traceview/frameworks/rails.rb +26 -32
- data/lib/traceview/frameworks/rails/inst/action_controller.rb +3 -3
- data/lib/traceview/frameworks/rails/inst/action_view.rb +4 -2
- data/lib/traceview/frameworks/rails/inst/action_view_2x.rb +4 -2
- data/lib/traceview/frameworks/rails/inst/action_view_30.rb +4 -2
- data/lib/traceview/frameworks/rails/inst/connection_adapters/utils.rb +3 -3
- data/lib/traceview/frameworks/sinatra.rb +1 -1
- data/lib/traceview/frameworks/sinatra/templates.rb +1 -1
- data/lib/traceview/inst/dalli.rb +4 -5
- data/lib/traceview/inst/delayed_job.rb +92 -0
- data/lib/traceview/inst/em-http-request.rb +3 -0
- data/lib/traceview/inst/excon.rb +3 -3
- data/lib/traceview/inst/faraday.rb +4 -1
- data/lib/traceview/inst/mongo.rb +10 -5
- data/lib/traceview/inst/moped.rb +4 -4
- data/lib/traceview/inst/redis.rb +5 -7
- data/lib/traceview/inst/resque.rb +3 -3
- data/lib/traceview/inst/rest-client.rb +2 -2
- data/lib/traceview/inst/sidekiq-client.rb +3 -0
- data/lib/traceview/inst/sidekiq-worker.rb +3 -0
- data/lib/traceview/inst/twitter-cassandra.rb +8 -4
- data/lib/traceview/test.rb +30 -1
- data/lib/traceview/util.rb +7 -0
- data/lib/traceview/version.rb +2 -2
- data/test/frameworks/rails3x_test.rb +12 -2
- data/test/frameworks/rails4x_test.rb +12 -2
- data/test/instrumentation/curb_test.rb +2 -2
- data/test/instrumentation/dalli_test.rb +121 -118
- data/test/instrumentation/httpclient_test.rb +0 -1
- data/test/jobs/delayed_job/db_worker_job.rb +29 -0
- data/test/jobs/delayed_job/error_worker_job.rb +10 -0
- data/test/jobs/delayed_job/remote_call_worker_job.rb +20 -0
- data/test/minitest_helper.rb +8 -3
- data/test/models/widget.rb +19 -0
- data/test/queues/delayed_job-client_test.rb +95 -0
- data/test/queues/delayed_job-worker_test.rb +91 -0
- data/test/servers/delayed_job.rb +102 -0
- data/test/servers/rails3x_8140.rb +17 -1
- data/test/servers/rails4x_8140.rb +18 -1
- data/test/support/auto_tracing.rb +40 -0
- data/test/support/config_test.rb +5 -1
- data/traceview.gemspec +1 -0
- metadata +34 -6
- data/test/instrumentation/delayed_job-client_test.rb +0 -128
- data/test/instrumentation/delayed_job-worker_test.rb +0 -177
@@ -18,7 +18,12 @@ if defined?(::Rails)
|
|
18
18
|
traces = get_all_traces
|
19
19
|
|
20
20
|
traces.count.must_equal 8
|
21
|
-
|
21
|
+
unless defined?(JRUBY_VERSION)
|
22
|
+
# We don't test this under JRuby because the Java instrumentation
|
23
|
+
# for the DB drivers doesn't use our test reporter hence we won't
|
24
|
+
# see all trace events. :-( To be improved.
|
25
|
+
valid_edges?(traces).must_equal true
|
26
|
+
end
|
22
27
|
validate_outer_layers(traces, 'rack')
|
23
28
|
|
24
29
|
traces[0]['Layer'].must_equal "rack"
|
@@ -60,7 +65,12 @@ if defined?(::Rails)
|
|
60
65
|
traces = get_all_traces
|
61
66
|
|
62
67
|
traces.count.must_equal 5
|
63
|
-
|
68
|
+
unless defined?(JRUBY_VERSION)
|
69
|
+
# We don't test this under JRuby because the Java instrumentation
|
70
|
+
# for the DB drivers doesn't use our test reporter hence we won't
|
71
|
+
# see all trace events. :-( To be improved.
|
72
|
+
valid_edges?(traces).must_equal true
|
73
|
+
end
|
64
74
|
validate_outer_layers(traces, 'rack')
|
65
75
|
|
66
76
|
traces[0]['Layer'].must_equal "rack"
|
@@ -18,7 +18,12 @@ if defined?(::Rails)
|
|
18
18
|
traces = get_all_traces
|
19
19
|
|
20
20
|
traces.count.must_equal 7
|
21
|
-
|
21
|
+
unless defined?(JRUBY_VERSION)
|
22
|
+
# We don't test this under JRuby because the Java instrumentation
|
23
|
+
# for the DB drivers doesn't use our test reporter hence we won't
|
24
|
+
# see all trace events. :-( To be improved.
|
25
|
+
valid_edges?(traces).must_equal true
|
26
|
+
end
|
22
27
|
validate_outer_layers(traces, 'rack')
|
23
28
|
|
24
29
|
traces[0]['Layer'].must_equal "rack"
|
@@ -58,7 +63,12 @@ if defined?(::Rails)
|
|
58
63
|
traces = get_all_traces
|
59
64
|
|
60
65
|
traces.count.must_equal 5
|
61
|
-
|
66
|
+
unless defined?(JRUBY_VERSION)
|
67
|
+
# We don't test this under JRuby because the Java instrumentation
|
68
|
+
# for the DB drivers doesn't use our test reporter hence we won't
|
69
|
+
# see all trace events. :-( To be improved.
|
70
|
+
valid_edges?(traces).must_equal true
|
71
|
+
end
|
62
72
|
validate_outer_layers(traces, 'rack')
|
63
73
|
|
64
74
|
traces[0]['Layer'].must_equal "rack"
|
@@ -283,7 +283,7 @@ if RUBY_VERSION > '1.8.7' && !defined?(JRUBY_VERSION)
|
|
283
283
|
assert_equal 'entry', traces[1]['Label']
|
284
284
|
assert_equal 1, traces[1]['IsService']
|
285
285
|
assert_equal 'GET', traces[1]['HTTPMethod'], "HTTP Method"
|
286
|
-
assert_equal "http://127.0.0.1:8101/?curb_cross_host=1
|
286
|
+
assert_equal "http://127.0.0.1:8101/?curb_cross_host=1", traces[1]['RemoteURL']
|
287
287
|
assert traces[1].key?('Backtrace')
|
288
288
|
|
289
289
|
assert_equal 'curb', traces[5]['Layer']
|
@@ -466,7 +466,7 @@ if RUBY_VERSION > '1.8.7' && !defined?(JRUBY_VERSION)
|
|
466
466
|
|
467
467
|
traces = get_all_traces
|
468
468
|
assert_equal 7, traces.count, "Trace count"
|
469
|
-
assert_equal "http://127.0.0.1:8101/?blah=1
|
469
|
+
assert_equal "http://127.0.0.1:8101/?blah=1", traces[1]['RemoteURL']
|
470
470
|
end
|
471
471
|
|
472
472
|
def test_without_tracing_class_get
|
@@ -1,174 +1,177 @@
|
|
1
1
|
# Copyright (c) 2015 AppNeta, Inc.
|
2
2
|
# All rights reserved.
|
3
3
|
|
4
|
-
|
4
|
+
if RUBY_VERSION > '1.8.7'
|
5
5
|
|
6
|
-
|
7
|
-
before do
|
8
|
-
clear_all_traces
|
9
|
-
@dc = Dalli::Client.new
|
10
|
-
@collect_backtraces = TraceView::Config[:dalli][:collect_backtraces]
|
11
|
-
end
|
6
|
+
require 'minitest_helper'
|
12
7
|
|
13
|
-
|
14
|
-
|
15
|
-
|
8
|
+
describe "Dalli" do
|
9
|
+
before do
|
10
|
+
clear_all_traces
|
11
|
+
@dc = Dalli::Client.new
|
12
|
+
@collect_backtraces = TraceView::Config[:dalli][:collect_backtraces]
|
13
|
+
end
|
16
14
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
15
|
+
after do
|
16
|
+
TraceView::Config[:dalli][:collect_backtraces] = @collect_backtraces
|
17
|
+
end
|
21
18
|
|
22
|
-
|
23
|
-
|
24
|
-
::Dalli::Client
|
19
|
+
it 'Stock Dalli should be loaded, defined and ready' do
|
20
|
+
defined?(::Dalli).wont_match nil
|
21
|
+
defined?(::Dalli::Client).wont_match nil
|
25
22
|
end
|
26
|
-
end
|
27
23
|
|
28
|
-
|
29
|
-
|
30
|
-
|
24
|
+
it 'should have traceview methods defined' do
|
25
|
+
[ :perform_with_traceview, :get_multi_with_traceview].each do |m|
|
26
|
+
::Dalli::Client.method_defined?(m).must_equal true
|
27
|
+
end
|
31
28
|
end
|
32
29
|
|
33
|
-
|
34
|
-
|
30
|
+
it 'should trace set' do
|
31
|
+
TraceView::API.start_trace('dalli_test', '', {}) do
|
32
|
+
@dc.set('some_key', 1234)
|
33
|
+
end
|
35
34
|
|
36
|
-
|
35
|
+
traces = get_all_traces
|
36
|
+
traces.count.must_equal 4
|
37
37
|
|
38
|
-
|
39
|
-
traces[1].has_key?("KVKey").must_equal true
|
40
|
-
traces[1]['Layer'].must_equal "memcache"
|
41
|
-
traces[1]['KVKey'].must_equal "some_key"
|
42
|
-
traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
|
43
|
-
end
|
38
|
+
validate_outer_layers(traces, 'dalli_test')
|
44
39
|
|
45
|
-
|
46
|
-
|
47
|
-
|
40
|
+
traces[1].has_key?("KVOp").must_equal true
|
41
|
+
traces[1].has_key?("KVKey").must_equal true
|
42
|
+
traces[1]['Layer'].must_equal "memcache"
|
43
|
+
traces[1]['KVKey'].must_equal "some_key"
|
44
|
+
traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
|
48
45
|
end
|
49
46
|
|
50
|
-
|
51
|
-
|
47
|
+
it 'should trace get' do
|
48
|
+
TraceView::API.start_trace('dalli_test', '', {}) do
|
49
|
+
@dc.get('some_key')
|
50
|
+
end
|
52
51
|
|
53
|
-
|
52
|
+
traces = get_all_traces
|
53
|
+
traces.count.must_equal 5
|
54
54
|
|
55
|
-
|
56
|
-
traces[1]['KVKey'].must_equal "some_key"
|
57
|
-
traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
|
58
|
-
traces[2]['Label'].must_equal "info"
|
59
|
-
traces[2].has_key?('KVHit').must_equal true
|
60
|
-
traces[3]['Label'].must_equal "exit"
|
61
|
-
end
|
55
|
+
validate_outer_layers(traces, 'dalli_test')
|
62
56
|
|
63
|
-
|
64
|
-
|
65
|
-
|
57
|
+
traces[1]['KVOp'].must_equal "get"
|
58
|
+
traces[1]['KVKey'].must_equal "some_key"
|
59
|
+
traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
|
60
|
+
traces[2]['Label'].must_equal "info"
|
61
|
+
traces[2].has_key?('KVHit').must_equal true
|
62
|
+
traces[3]['Label'].must_equal "exit"
|
66
63
|
end
|
67
64
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
65
|
+
it 'should trace get_multi' do
|
66
|
+
TraceView::API.start_trace('dalli_test', '', {}) do
|
67
|
+
@dc.get_multi([:one, :two, :three, :four, :five, :six])
|
68
|
+
end
|
72
69
|
|
73
|
-
|
74
|
-
|
75
|
-
traces[2]['RemoteHost'].must_equal "127.0.0.1:11211"
|
76
|
-
traces[2].has_key?('KVKeyCount').must_equal true
|
77
|
-
traces[2].has_key?('KVHitCount').must_equal true
|
78
|
-
traces[3]['Label'].must_equal "exit"
|
79
|
-
end
|
70
|
+
traces = get_all_traces
|
71
|
+
traces.count.must_equal 5
|
80
72
|
|
81
|
-
|
82
|
-
@dc.incr("dalli_key_counter", 1, nil, 0)
|
73
|
+
validate_outer_layers(traces, 'dalli_test')
|
83
74
|
|
84
|
-
|
85
|
-
|
75
|
+
traces[1]['KVOp'].must_equal "get_multi"
|
76
|
+
traces[2]['Label'].must_equal "info"
|
77
|
+
traces[2]['RemoteHost'].must_equal "127.0.0.1:11211"
|
78
|
+
traces[2].has_key?('KVKeyCount').must_equal true
|
79
|
+
traces[2].has_key?('KVHitCount').must_equal true
|
80
|
+
traces[3]['Label'].must_equal "exit"
|
86
81
|
end
|
87
82
|
|
88
|
-
|
89
|
-
|
83
|
+
it "should trace increment" do
|
84
|
+
@dc.incr("dalli_key_counter", 1, nil, 0)
|
90
85
|
|
91
|
-
|
86
|
+
TraceView::API.start_trace('dalli_test', '', {}) do
|
87
|
+
@dc.incr("dalli_key_counter")
|
88
|
+
end
|
92
89
|
|
93
|
-
|
94
|
-
|
95
|
-
traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
|
96
|
-
traces[2]['Label'].must_equal "exit"
|
97
|
-
end
|
90
|
+
traces = get_all_traces
|
91
|
+
traces.count.must_equal 4
|
98
92
|
|
99
|
-
|
100
|
-
@dc.incr("dalli_key_counter", 1, nil, 0)
|
93
|
+
validate_outer_layers(traces, 'dalli_test')
|
101
94
|
|
102
|
-
|
103
|
-
|
95
|
+
traces[1]['KVOp'].must_equal "incr"
|
96
|
+
traces[1]['KVKey'].must_equal "dalli_key_counter"
|
97
|
+
traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
|
98
|
+
traces[2]['Label'].must_equal "exit"
|
104
99
|
end
|
105
100
|
|
106
|
-
|
107
|
-
|
101
|
+
it "should trace decrement" do
|
102
|
+
@dc.incr("dalli_key_counter", 1, nil, 0)
|
108
103
|
|
109
|
-
|
104
|
+
TraceView::API.start_trace('dalli_test', '', {}) do
|
105
|
+
@dc.decr("dalli_key_counter")
|
106
|
+
end
|
110
107
|
|
111
|
-
|
112
|
-
|
113
|
-
traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
|
114
|
-
traces[2]['Label'].must_equal "exit"
|
115
|
-
end
|
108
|
+
traces = get_all_traces
|
109
|
+
traces.count.must_equal 4
|
116
110
|
|
117
|
-
|
118
|
-
@dc.set('some_key', 1)
|
111
|
+
validate_outer_layers(traces, 'dalli_test')
|
119
112
|
|
120
|
-
|
121
|
-
|
113
|
+
traces[1]['KVOp'].must_equal "decr"
|
114
|
+
traces[1]['KVKey'].must_equal "dalli_key_counter"
|
115
|
+
traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
|
116
|
+
traces[2]['Label'].must_equal "exit"
|
122
117
|
end
|
123
118
|
|
124
|
-
|
125
|
-
|
119
|
+
it "should trace replace" do
|
120
|
+
@dc.set('some_key', 1)
|
126
121
|
|
127
|
-
|
122
|
+
TraceView::API.start_trace('dalli_test', '', {}) do
|
123
|
+
@dc.replace("some_key", "woop")
|
124
|
+
end
|
128
125
|
|
129
|
-
|
130
|
-
|
131
|
-
traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
|
132
|
-
traces[2]['Label'].must_equal "exit"
|
133
|
-
end
|
126
|
+
traces = get_all_traces
|
127
|
+
traces.count.must_equal 4
|
134
128
|
|
135
|
-
|
136
|
-
@dc.set('some_key', 1)
|
129
|
+
validate_outer_layers(traces, 'dalli_test')
|
137
130
|
|
138
|
-
|
139
|
-
|
131
|
+
traces[1]['KVOp'].must_equal "replace"
|
132
|
+
traces[1]['KVKey'].must_equal "some_key"
|
133
|
+
traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
|
134
|
+
traces[2]['Label'].must_equal "exit"
|
140
135
|
end
|
141
136
|
|
142
|
-
|
143
|
-
|
137
|
+
it "should trace delete" do
|
138
|
+
@dc.set('some_key', 1)
|
144
139
|
|
145
|
-
|
140
|
+
TraceView::API.start_trace('dalli_test', '', {}) do
|
141
|
+
@dc.delete("some_key")
|
142
|
+
end
|
146
143
|
|
147
|
-
|
148
|
-
|
149
|
-
traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
|
150
|
-
end
|
144
|
+
traces = get_all_traces
|
145
|
+
traces.count.must_equal 4
|
151
146
|
|
152
|
-
|
153
|
-
@dc.set('some_key', 1)
|
154
|
-
TraceView::Config[:dalli][:collect_backtraces] = true
|
147
|
+
validate_outer_layers(traces, 'dalli_test')
|
155
148
|
|
156
|
-
|
157
|
-
|
149
|
+
traces[1]['KVOp'].must_equal "delete"
|
150
|
+
traces[1]['KVKey'].must_equal "some_key"
|
151
|
+
traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
|
158
152
|
end
|
159
153
|
|
160
|
-
|
161
|
-
|
162
|
-
|
154
|
+
it "should obey :collect_backtraces setting when true" do
|
155
|
+
@dc.set('some_key', 1)
|
156
|
+
TraceView::Config[:dalli][:collect_backtraces] = true
|
163
157
|
|
164
|
-
|
165
|
-
|
158
|
+
TraceView::API.start_trace('dalli_test', '', {}) do
|
159
|
+
@dc.get('some_key')
|
160
|
+
end
|
166
161
|
|
167
|
-
|
168
|
-
|
162
|
+
traces = get_all_traces
|
163
|
+
layer_has_key(traces, 'memcache', 'Backtrace')
|
169
164
|
end
|
170
165
|
|
171
|
-
|
172
|
-
|
166
|
+
it "should obey :collect_backtraces setting when false" do
|
167
|
+
TraceView::Config[:dalli][:collect_backtraces] = false
|
168
|
+
|
169
|
+
TraceView::API.start_trace('dalli_test', '', {}) do
|
170
|
+
@dc.get('some_key')
|
171
|
+
end
|
172
|
+
|
173
|
+
traces = get_all_traces
|
174
|
+
layer_doesnt_have_key(traces, 'memcache', 'Backtrace')
|
175
|
+
end
|
173
176
|
end
|
174
177
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# Copyright (c) 2015 AppNeta, Inc.
|
2
|
+
# All rights reserved.
|
3
|
+
|
4
|
+
class DJDBWorkerJob
|
5
|
+
@queue = :normal
|
6
|
+
|
7
|
+
def self.perform(*args)
|
8
|
+
return unless defined?(::Sequel) && !defined?(JRUBY_VERSION)
|
9
|
+
|
10
|
+
if ENV.key?('TRAVIS_MYSQL_PASS')
|
11
|
+
@db = Sequel.connect("mysql2://root:#{ENV['TRAVIS_MYSQL_PASS']}@127.0.0.1:3306/travis_ci_test")
|
12
|
+
else
|
13
|
+
@db = Sequel.connect('mysql2://root@127.0.0.1:3306/travis_ci_test')
|
14
|
+
end
|
15
|
+
|
16
|
+
unless @db.table_exists?(:items)
|
17
|
+
@db.create_table :items do
|
18
|
+
primary_key :id
|
19
|
+
String :name
|
20
|
+
Float :price
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
@db.run('select 1')
|
25
|
+
|
26
|
+
items = @db[:items]
|
27
|
+
items.count
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# Copyright (c) 2015 AppNeta, Inc.
|
2
|
+
# All rights reserved.
|
3
|
+
|
4
|
+
class DJRemoteCallWorkerJob
|
5
|
+
@queue = :critical
|
6
|
+
|
7
|
+
def self.perform(*args)
|
8
|
+
# Make some random Dalli (memcache) calls and top it
|
9
|
+
# off with an excon call to the background rack webserver.
|
10
|
+
@dc = Dalli::Client.new
|
11
|
+
@dc.get(rand(10).to_s)
|
12
|
+
uri = URI('http://gameface.in/gamers')
|
13
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
14
|
+
request = Net::HTTP::Get.new(uri.request_uri)
|
15
|
+
http.request(request)
|
16
|
+
@dc.get(rand(10).to_s)
|
17
|
+
@dc.get(rand(10).to_s)
|
18
|
+
@dc.get_multi([:one, :two, :three, :four, :five, :six])
|
19
|
+
end
|
20
|
+
end
|
data/test/minitest_helper.rb
CHANGED
@@ -49,16 +49,21 @@ TraceView.logger.level = Logger::DEBUG
|
|
49
49
|
# puts %x{psql -c 'create database travis_ci_test;' -U postgres}
|
50
50
|
|
51
51
|
# Our background Rack-app for http client testing
|
52
|
-
require
|
52
|
+
require './test/servers/rackapp_8101'
|
53
53
|
|
54
54
|
# Conditionally load other background servers
|
55
55
|
# depending on what we're testing
|
56
56
|
#
|
57
57
|
case File.basename(ENV['BUNDLE_GEMFILE'])
|
58
|
+
when /delayed_job/
|
59
|
+
require './test/servers/delayed_job'
|
60
|
+
|
58
61
|
when /rails4/
|
59
|
-
require
|
62
|
+
require './test/servers/rails4x_8140'
|
63
|
+
|
60
64
|
when /rails3/
|
61
|
-
require
|
65
|
+
require './test/servers/rails3x_8140'
|
66
|
+
|
62
67
|
when /frameworks/
|
63
68
|
when /libraries/
|
64
69
|
if RUBY_VERSION >= '2.0'
|