oboe 2.7.11.1-java → 2.7.12.1-java
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/lib/oboe/api/logging.rb +12 -1
- data/lib/oboe/inst/rack.rb +34 -7
- data/lib/oboe/version.rb +1 -1
- data/test/frameworks/apps/grape_nested.rb +30 -0
- data/test/frameworks/grape_test.rb +80 -23
- data/test/frameworks/padrino_test.rb +5 -5
- data/test/frameworks/sinatra_test.rb +6 -6
- data/test/instrumentation/cassandra_test.rb +3 -3
- data/test/instrumentation/faraday_test.rb +5 -5
- data/test/instrumentation/http_test.rb +2 -2
- data/test/instrumentation/memcache_test.rb +1 -1
- data/test/instrumentation/memcached_test.rb +1 -1
- data/test/instrumentation/moped_test.rb +1 -1
- data/test/instrumentation/rack_test.rb +6 -4
- data/test/instrumentation/redis_hashes_test.rb +6 -6
- data/test/instrumentation/redis_keys_test.rb +4 -4
- data/test/instrumentation/redis_lists_test.rb +3 -3
- data/test/instrumentation/redis_misc_test.rb +3 -3
- data/test/instrumentation/redis_sortedsets_test.rb +4 -4
- data/test/instrumentation/redis_strings_test.rb +18 -18
- data/test/instrumentation/sequel_mysql2_test.rb +18 -12
- data/test/instrumentation/sequel_mysql_test.rb +18 -12
- data/test/instrumentation/sequel_pg_test.rb +18 -12
- data/test/instrumentation/typhoeus_test.rb +35 -32
- data/test/support/liboboe_settings_test.rb +62 -3
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed315d0f9e5f36adecebe34d086b48865ebdabf6
|
4
|
+
data.tar.gz: 0d0b3c77973877132c0d4edf98034ef017f03201
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: caaf6eff6286de7ff3adf1d8d7d22c5d4f66b339a9051b5c9aea62bf52322a66abde34b479295d522a218df5cdb392c882c4c08dcad903242ebdad315c1bb7fc
|
7
|
+
data.tar.gz: 926c3f257c70c8d32e15c07fb2d7998c52fd4e728166b82a8c55dc6da762210e44fd859bdf2d4d7532f085be1b144d7d9dcbec78520c70e7640f3b1da3fc4eb1
|
data/lib/oboe/api/logging.rb
CHANGED
@@ -181,7 +181,18 @@ module Oboe
|
|
181
181
|
Oboe.layer = nil if label == 'exit'
|
182
182
|
|
183
183
|
opts.each do |k, v|
|
184
|
-
|
184
|
+
if valid_key? k
|
185
|
+
if [Class, Module, Symbol, Array, Hash,
|
186
|
+
TrueClass, FalseClass].include?(v.class)
|
187
|
+
value = v.to_s
|
188
|
+
elsif v.class == Set
|
189
|
+
value = v.to_a.to_s
|
190
|
+
else
|
191
|
+
value = v
|
192
|
+
end
|
193
|
+
|
194
|
+
event.addInfo(k.to_s, value)
|
195
|
+
end
|
185
196
|
end if !opts.nil? && opts.any?
|
186
197
|
|
187
198
|
Oboe::Reporter.sendReport(event) if Oboe.loaded
|
data/lib/oboe/inst/rack.rb
CHANGED
@@ -47,6 +47,20 @@ module Oboe
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def call(env)
|
50
|
+
rack_skipped = false
|
51
|
+
|
52
|
+
# In the case of nested Ruby apps such as Grape inside of Rails
|
53
|
+
# or Grape inside of Grape, each app has it's own instance
|
54
|
+
# of rack middleware. We avoid tracing rack more than once and
|
55
|
+
# instead start instrumenting from the first rack pass.
|
56
|
+
|
57
|
+
# If we're already tracing a rack layer, dont't start another one.
|
58
|
+
if Oboe.tracing? && Oboe.layer == 'rack'
|
59
|
+
rack_skipped = true
|
60
|
+
Oboe.logger.debug "[oboe/rack] Rack skipped!"
|
61
|
+
return @app.call(env)
|
62
|
+
end
|
63
|
+
|
50
64
|
req = ::Rack::Request.new(env)
|
51
65
|
|
52
66
|
report_kvs = {}
|
@@ -63,21 +77,34 @@ module Oboe
|
|
63
77
|
Oboe.is_continued_trace = Oboe.has_incoming_context or Oboe.has_xtrace_header
|
64
78
|
|
65
79
|
Oboe::API.log_start('rack', xtrace_header, report_kvs)
|
66
|
-
report_kvs = collect(req, env) if Oboe.tracing?
|
67
|
-
|
68
|
-
status, headers, response = @app.call(env)
|
69
80
|
|
81
|
+
# We only trace a subset of requests based off of sample rate so if
|
82
|
+
# Oboe::API.log_start really did start a trace, we act accordingly here.
|
70
83
|
if Oboe.tracing?
|
71
|
-
|
84
|
+
report_kvs = collect(req, env)
|
85
|
+
|
86
|
+
# We log an info event with the HTTP KVs found in Oboe::Rack.collect
|
87
|
+
# This is done here so in the case of stacks that try/catch/abort
|
88
|
+
# (looking at you Grape) we're sure the KVs get reported now as
|
89
|
+
# this code may not be returned to later.
|
90
|
+
Oboe::API.log_info('rack', report_kvs)
|
91
|
+
|
92
|
+
status, headers, response = @app.call(env)
|
93
|
+
|
94
|
+
xtrace = Oboe::API.log_end('rack', :Status => status)
|
95
|
+
else
|
96
|
+
status, headers, response = @app.call(env)
|
72
97
|
end
|
73
98
|
|
74
99
|
[status, headers, response]
|
75
100
|
rescue Exception => e
|
76
|
-
|
77
|
-
|
101
|
+
unless rack_skipped
|
102
|
+
Oboe::API.log_exception('rack', e)
|
103
|
+
xtrace = Oboe::API.log_end('rack', :Status => 500)
|
104
|
+
end
|
78
105
|
raise
|
79
106
|
ensure
|
80
|
-
if headers && Oboe::XTrace.valid?(xtrace)
|
107
|
+
if !rack_skipped && headers && Oboe::XTrace.valid?(xtrace)
|
81
108
|
unless defined?(JRUBY_VERSION) && Oboe.is_continued_trace?
|
82
109
|
headers['X-Trace'] = xtrace if headers.is_a?(Hash)
|
83
110
|
end
|
data/lib/oboe/version.rb
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'grape'
|
2
|
+
|
3
|
+
class Wrapper < Grape::API
|
4
|
+
class GrapeSimple < Grape::API
|
5
|
+
rescue_from :all do |e|
|
6
|
+
error_response({ message: "rescued from #{e.class.name}" })
|
7
|
+
end
|
8
|
+
|
9
|
+
get '/json_endpoint' do
|
10
|
+
present({ :test => true })
|
11
|
+
end
|
12
|
+
|
13
|
+
get "/break" do
|
14
|
+
raise Exception.new("This should have http status code 500!")
|
15
|
+
end
|
16
|
+
|
17
|
+
get "/error" do
|
18
|
+
error!("This is a error with 'error'!")
|
19
|
+
end
|
20
|
+
|
21
|
+
get "/breakstring" do
|
22
|
+
raise "This should have http status code 500!"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
class GrapeNested < Grape::API
|
28
|
+
mount Wrapper::GrapeSimple
|
29
|
+
end
|
30
|
+
|
@@ -1,6 +1,7 @@
|
|
1
1
|
if RUBY_VERSION >= '1.9.3'
|
2
2
|
require 'minitest_helper'
|
3
3
|
require File.expand_path(File.dirname(__FILE__) + '/apps/grape_simple')
|
4
|
+
require File.expand_path(File.dirname(__FILE__) + '/apps/grape_nested')
|
4
5
|
|
5
6
|
describe Grape do
|
6
7
|
before do
|
@@ -16,21 +17,77 @@ if RUBY_VERSION >= '1.9.3'
|
|
16
17
|
r.headers.key?('X-Trace').must_equal true
|
17
18
|
|
18
19
|
traces = get_all_traces
|
19
|
-
traces.count.must_equal
|
20
|
+
traces.count.must_equal 5
|
20
21
|
|
21
22
|
validate_outer_layers(traces, 'rack')
|
22
23
|
|
23
|
-
traces[1]['Layer'].must_equal "grape"
|
24
24
|
traces[2]['Layer'].must_equal "grape"
|
25
|
-
traces[
|
26
|
-
traces[
|
25
|
+
traces[3]['Layer'].must_equal "grape"
|
26
|
+
traces[3].has_key?('Controller').must_equal true
|
27
|
+
traces[3].has_key?('Action').must_equal true
|
28
|
+
traces[4]['Label'].must_equal "exit"
|
29
|
+
|
30
|
+
# Validate the existence of the response header
|
31
|
+
r.headers.key?('X-Trace').must_equal true
|
32
|
+
r.headers['X-Trace'].must_equal traces[4]['X-Trace']
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should trace a request to a nested grape stack" do
|
36
|
+
@app = GrapeNested
|
37
|
+
|
38
|
+
r = get "/json_endpoint"
|
39
|
+
|
40
|
+
r.status.must_equal 200
|
41
|
+
r.headers.key?('X-Trace').must_equal true
|
42
|
+
|
43
|
+
traces = get_all_traces
|
44
|
+
traces.count.must_equal 5
|
45
|
+
|
46
|
+
validate_outer_layers(traces, 'rack')
|
47
|
+
|
48
|
+
traces[2]['Layer'].must_equal "grape"
|
49
|
+
traces[3]['Layer'].must_equal "grape"
|
50
|
+
traces[3].has_key?('Controller').must_equal true
|
51
|
+
traces[3].has_key?('Action').must_equal true
|
52
|
+
traces[4]['Label'].must_equal "exit"
|
53
|
+
|
54
|
+
# Validate the existence of the response header
|
55
|
+
r.headers.key?('X-Trace').must_equal true
|
56
|
+
r.headers['X-Trace'].must_equal traces[4]['X-Trace']
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should trace a an error in a nested grape stack" do
|
60
|
+
@app = GrapeNested
|
61
|
+
|
62
|
+
r = get "/error"
|
63
|
+
|
64
|
+
r.status.must_equal 500
|
65
|
+
r.headers.key?('X-Trace').must_equal true
|
66
|
+
|
67
|
+
traces = get_all_traces
|
68
|
+
traces.count.must_equal 6
|
69
|
+
|
70
|
+
validate_outer_layers(traces, 'rack')
|
71
|
+
|
72
|
+
traces[2]['Layer'].must_equal "grape"
|
73
|
+
traces[2]['Label'].must_equal "entry"
|
74
|
+
traces[3]['Layer'].must_equal "grape"
|
27
75
|
traces[3]['Label'].must_equal "exit"
|
76
|
+
traces[3].has_key?('Controller').must_equal true
|
77
|
+
traces[3].has_key?('Action').must_equal true
|
78
|
+
traces[4]['Label'].must_equal "error"
|
79
|
+
traces[4]['ErrorClass'].must_equal "GrapeError"
|
80
|
+
traces[4]['ErrorMsg'].must_equal "This is a error with 'error'!"
|
81
|
+
traces[4].has_key?('Backtrace').must_equal true
|
82
|
+
traces[5]['Layer'].must_equal "rack"
|
83
|
+
traces[5]['Label'].must_equal "exit"
|
28
84
|
|
29
85
|
# Validate the existence of the response header
|
30
86
|
r.headers.key?('X-Trace').must_equal true
|
31
|
-
r.headers['X-Trace'].must_equal traces[
|
87
|
+
r.headers['X-Trace'].must_equal traces[5]['X-Trace']
|
32
88
|
end
|
33
89
|
|
90
|
+
|
34
91
|
it "should trace a request with an exception" do
|
35
92
|
@app = GrapeSimple
|
36
93
|
|
@@ -42,18 +99,18 @@ if RUBY_VERSION >= '1.9.3'
|
|
42
99
|
end
|
43
100
|
|
44
101
|
traces = get_all_traces
|
45
|
-
traces.count.must_equal
|
102
|
+
traces.count.must_equal 6
|
46
103
|
|
47
104
|
validate_outer_layers(traces, 'rack')
|
48
105
|
|
49
|
-
traces[1]['Layer'].must_equal "grape"
|
50
106
|
traces[2]['Layer'].must_equal "grape"
|
51
|
-
traces[
|
52
|
-
traces[
|
53
|
-
traces[3]
|
54
|
-
traces[
|
55
|
-
traces[
|
56
|
-
traces[4]['
|
107
|
+
traces[3]['Layer'].must_equal "grape"
|
108
|
+
traces[3].has_key?('Controller').must_equal true
|
109
|
+
traces[3].has_key?('Action').must_equal true
|
110
|
+
traces[4]['Label'].must_equal "error"
|
111
|
+
traces[4]['ErrorClass'].must_equal "Exception"
|
112
|
+
traces[4]['ErrorMsg'].must_equal "This should have http status code 500!"
|
113
|
+
traces[5]['Label'].must_equal "exit"
|
57
114
|
end
|
58
115
|
|
59
116
|
it "should trace a request with an error" do
|
@@ -62,7 +119,7 @@ if RUBY_VERSION >= '1.9.3'
|
|
62
119
|
r = get "/error"
|
63
120
|
|
64
121
|
traces = get_all_traces
|
65
|
-
traces.count.must_equal
|
122
|
+
traces.count.must_equal 6
|
66
123
|
|
67
124
|
r.status.must_equal 500
|
68
125
|
r.headers.key?('X-Trace').must_equal true
|
@@ -70,16 +127,16 @@ if RUBY_VERSION >= '1.9.3'
|
|
70
127
|
validate_outer_layers(traces, 'rack')
|
71
128
|
|
72
129
|
traces[0]['Layer'].must_equal "rack"
|
73
|
-
traces[1]['Layer'].must_equal "grape"
|
74
130
|
traces[2]['Layer'].must_equal "grape"
|
75
|
-
traces[
|
76
|
-
traces[
|
77
|
-
traces[3]
|
78
|
-
traces[
|
79
|
-
traces[
|
80
|
-
traces[4]['
|
81
|
-
traces[
|
82
|
-
traces[
|
131
|
+
traces[3]['Layer'].must_equal "grape"
|
132
|
+
traces[3].has_key?('Controller').must_equal true
|
133
|
+
traces[3].has_key?('Action').must_equal true
|
134
|
+
traces[4]['Label'].must_equal "error"
|
135
|
+
traces[4]['ErrorClass'].must_equal "GrapeError"
|
136
|
+
traces[4]['ErrorMsg'].must_equal "This is a error with 'error'!"
|
137
|
+
traces[5]['Layer'].must_equal "rack"
|
138
|
+
traces[5]['Label'].must_equal "exit"
|
139
|
+
traces[5]['Status'].must_equal 500
|
83
140
|
end
|
84
141
|
end
|
85
142
|
end
|
@@ -13,17 +13,17 @@ if RUBY_VERSION >= '1.9.3'
|
|
13
13
|
r = get "/render"
|
14
14
|
|
15
15
|
traces = get_all_traces
|
16
|
-
traces.count.must_equal
|
16
|
+
traces.count.must_equal 9
|
17
17
|
|
18
18
|
validate_outer_layers(traces, 'rack')
|
19
19
|
|
20
|
-
traces[
|
21
|
-
traces[
|
22
|
-
traces[
|
20
|
+
traces[2]['Layer'].must_equal "padrino"
|
21
|
+
traces[7]['Controller'].must_equal "SimpleDemo"
|
22
|
+
traces[8]['Label'].must_equal "exit"
|
23
23
|
|
24
24
|
# Validate the existence of the response header
|
25
25
|
r.headers.key?('X-Trace').must_equal true
|
26
|
-
r.headers['X-Trace'].must_equal traces[
|
26
|
+
r.headers['X-Trace'].must_equal traces[8]['X-Trace']
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
@@ -12,18 +12,18 @@ describe Sinatra do
|
|
12
12
|
r = get "/render"
|
13
13
|
|
14
14
|
traces = get_all_traces
|
15
|
-
traces.count.must_equal
|
15
|
+
traces.count.must_equal 9
|
16
16
|
|
17
17
|
validate_outer_layers(traces, 'rack')
|
18
18
|
|
19
|
-
traces[
|
20
|
-
traces[
|
21
|
-
traces[
|
22
|
-
traces[
|
19
|
+
traces[2]['Layer'].must_equal "sinatra"
|
20
|
+
traces[4]['Label'].must_equal "profile_entry"
|
21
|
+
traces[7]['Controller'].must_equal "SinatraSimple"
|
22
|
+
traces[8]['Label'].must_equal "exit"
|
23
23
|
|
24
24
|
# Validate the existence of the response header
|
25
25
|
r.headers.key?('X-Trace').must_equal true
|
26
|
-
r.headers['X-Trace'].must_equal traces[
|
26
|
+
r.headers['X-Trace'].must_equal traces[8]['X-Trace']
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
@@ -76,8 +76,8 @@ unless defined?(JRUBY_VERSION)
|
|
76
76
|
traces[1]['Op'].must_equal "insert"
|
77
77
|
traces[1]['Cf'].must_equal "Users"
|
78
78
|
traces[1]['Key'].must_equal "\"5\""
|
79
|
-
traces[1]['Consistency'].must_equal
|
80
|
-
traces[1]['Ttl'].must_equal
|
79
|
+
traces[1]['Consistency'].must_equal 1
|
80
|
+
traces[1]['Ttl'].must_equal 600
|
81
81
|
traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
|
82
82
|
validate_event_keys(traces[2], @exit_kvs)
|
83
83
|
end
|
@@ -116,7 +116,7 @@ unless defined?(JRUBY_VERSION)
|
|
116
116
|
traces[1]['Op'].must_equal "count_columns"
|
117
117
|
traces[1]['Cf'].must_equal "Statuses"
|
118
118
|
traces[1]['Key'].must_equal "\"12\""
|
119
|
-
traces[1]['Count'].must_equal
|
119
|
+
traces[1]['Count'].must_equal 50
|
120
120
|
traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
|
121
121
|
validate_event_keys(traces[2], @exit_kvs)
|
122
122
|
end
|
@@ -38,7 +38,7 @@ describe Oboe::Inst::FaradayConnection do
|
|
38
38
|
traces[1].key?('Backtrace').must_equal Oboe::Config[:faraday][:collect_backtraces]
|
39
39
|
|
40
40
|
traces[3]['Layer'].must_equal 'net-http'
|
41
|
-
traces[3]['IsService'].must_equal
|
41
|
+
traces[3]['IsService'].must_equal 1
|
42
42
|
traces[3]['RemoteProtocol'].must_equal 'HTTP'
|
43
43
|
traces[3]['RemoteHost'].must_equal 'www.gameface.in'
|
44
44
|
traces[3]['ServiceArg'].must_equal '/games?q=1'
|
@@ -69,7 +69,7 @@ describe Oboe::Inst::FaradayConnection do
|
|
69
69
|
traces[1].key?('Backtrace').must_equal Oboe::Config[:faraday][:collect_backtraces]
|
70
70
|
|
71
71
|
traces[3]['Layer'].must_equal 'net-http'
|
72
|
-
traces[3]['IsService'].must_equal
|
72
|
+
traces[3]['IsService'].must_equal 1
|
73
73
|
traces[3]['RemoteProtocol'].must_equal 'HTTP'
|
74
74
|
traces[3]['RemoteHost'].must_equal 'www.curlmyip.com'
|
75
75
|
traces[3]['ServiceArg'].must_equal '/?q=ruby_test_suite'
|
@@ -100,7 +100,7 @@ describe Oboe::Inst::FaradayConnection do
|
|
100
100
|
traces[1].key?('Backtrace').must_equal Oboe::Config[:faraday][:collect_backtraces]
|
101
101
|
|
102
102
|
traces[3]['Layer'].must_equal 'net-http'
|
103
|
-
traces[3]['IsService'].must_equal
|
103
|
+
traces[3]['IsService'].must_equal 1
|
104
104
|
traces[3]['RemoteProtocol'].must_equal 'HTTP'
|
105
105
|
traces[3]['RemoteHost'].must_equal 'www.curlmyip.com'
|
106
106
|
traces[3]['ServiceArg'].must_equal '/?a=1'
|
@@ -133,7 +133,7 @@ describe Oboe::Inst::FaradayConnection do
|
|
133
133
|
traces[1]['Layer'].must_equal 'faraday'
|
134
134
|
traces[1].key?('Backtrace').must_equal Oboe::Config[:faraday][:collect_backtraces]
|
135
135
|
|
136
|
-
traces[2]['IsService'].must_equal
|
136
|
+
traces[2]['IsService'].must_equal 1
|
137
137
|
traces[2]['RemoteProtocol'].must_equal 'HTTP'
|
138
138
|
traces[2]['RemoteHost'].must_equal 'www.curlmyip.com'
|
139
139
|
traces[2]['ServiceArg'].must_equal '/?q=1'
|
@@ -141,7 +141,7 @@ describe Oboe::Inst::FaradayConnection do
|
|
141
141
|
|
142
142
|
traces[2]['Layer'].must_equal 'faraday'
|
143
143
|
traces[2]['Label'].must_equal 'info'
|
144
|
-
traces[2]['HTTPStatus'].must_equal
|
144
|
+
traces[2]['HTTPStatus'].must_equal 200
|
145
145
|
|
146
146
|
traces[3]['Layer'].must_equal 'faraday'
|
147
147
|
traces[3]['Label'].must_equal 'exit'
|
@@ -37,7 +37,7 @@ describe Oboe::Inst do
|
|
37
37
|
validate_outer_layers(traces, 'net-http_test')
|
38
38
|
|
39
39
|
traces[1]['Layer'].must_equal 'net-http'
|
40
|
-
traces[2]['IsService'].must_equal
|
40
|
+
traces[2]['IsService'].must_equal 1
|
41
41
|
traces[2]['RemoteProtocol'].must_equal "HTTP"
|
42
42
|
traces[2]['RemoteHost'].must_equal "www.gameface.in"
|
43
43
|
traces[2]['ServiceArg'].must_equal "/games?q=1"
|
@@ -59,7 +59,7 @@ describe Oboe::Inst do
|
|
59
59
|
validate_outer_layers(traces, 'net-http_test')
|
60
60
|
|
61
61
|
traces[1]['Layer'].must_equal 'net-http'
|
62
|
-
traces[2]['IsService'].must_equal
|
62
|
+
traces[2]['IsService'].must_equal 1
|
63
63
|
traces[2]['RemoteProtocol'].must_equal "HTTP"
|
64
64
|
traces[2]['RemoteHost'].must_equal "www.curlmyip.com"
|
65
65
|
traces[2]['ServiceArg'].must_equal "/?q=1"
|
@@ -101,7 +101,7 @@ describe Oboe::API::Memcache do
|
|
101
101
|
traces[1]['KVOp'].must_equal "get_multi"
|
102
102
|
|
103
103
|
validate_event_keys(traces[2], @info_kvs)
|
104
|
-
traces[2]['KVKeyCount'].must_equal
|
104
|
+
traces[2]['KVKeyCount'].must_equal 6
|
105
105
|
traces[2].has_key?('KVHitCount').must_equal true
|
106
106
|
traces[2].has_key?('Backtrace').must_equal Oboe::Config[:memcache][:collect_backtraces]
|
107
107
|
|
@@ -18,7 +18,7 @@ if RUBY_VERSION >= '1.9.3'
|
|
18
18
|
'Flavor' => 'mongodb',
|
19
19
|
'Database' => 'moped_test',
|
20
20
|
'RemoteHost' => '127.0.0.1',
|
21
|
-
'RemotePort' =>
|
21
|
+
'RemotePort' => 27017 }
|
22
22
|
|
23
23
|
@exit_kvs = { 'Layer' => 'mongo', 'Label' => 'exit' }
|
24
24
|
@collect_backtraces = Oboe::Config[:moped][:collect_backtraces]
|
@@ -24,7 +24,7 @@ class RackTestApp < Minitest::Test
|
|
24
24
|
get "/lobster"
|
25
25
|
|
26
26
|
traces = get_all_traces
|
27
|
-
traces.count.must_equal
|
27
|
+
traces.count.must_equal 3
|
28
28
|
|
29
29
|
validate_outer_layers(traces, 'rack')
|
30
30
|
|
@@ -33,10 +33,9 @@ class RackTestApp < Minitest::Test
|
|
33
33
|
validate_event_keys(traces[0], kvs)
|
34
34
|
|
35
35
|
kvs.clear
|
36
|
-
kvs["Label"] = "
|
37
|
-
kvs["Status"] = "200"
|
36
|
+
kvs["Label"] = "info"
|
38
37
|
kvs["HTTP-Host"] = "example.org"
|
39
|
-
kvs["Port"] =
|
38
|
+
kvs["Port"] = 80
|
40
39
|
kvs["Proto"] = "http"
|
41
40
|
kvs["URL"] = "/lobster"
|
42
41
|
kvs["Method"] = "GET"
|
@@ -48,6 +47,9 @@ class RackTestApp < Minitest::Test
|
|
48
47
|
assert traces[1].has_key?('ProcessID')
|
49
48
|
assert traces[1].has_key?('ThreadID')
|
50
49
|
|
50
|
+
assert traces[2]["Label"] == 'exit'
|
51
|
+
assert traces[2]["Status"] == 200
|
52
|
+
|
51
53
|
assert last_response.ok?
|
52
54
|
|
53
55
|
assert last_response['X-Trace']
|
@@ -90,9 +90,9 @@ describe Oboe::Inst::Redis, :hashes do
|
|
90
90
|
traces.count.must_equal 6
|
91
91
|
traces[2]['KVOp'].must_equal "hget"
|
92
92
|
traces[2]['KVKey'].must_equal "whale"
|
93
|
-
traces[2]['KVHit'].must_equal
|
93
|
+
traces[2]['KVHit'].must_equal 1
|
94
94
|
traces[2]['field'].must_equal "color"
|
95
|
-
traces[4]['KVHit'].must_equal
|
95
|
+
traces[4]['KVHit'].must_equal 0
|
96
96
|
end
|
97
97
|
|
98
98
|
it "should trace hgetall" do
|
@@ -124,7 +124,7 @@ describe Oboe::Inst::Redis, :hashes do
|
|
124
124
|
traces[2]['KVOp'].must_equal "hincrby"
|
125
125
|
traces[2]['KVKey'].must_equal "whale"
|
126
126
|
traces[2]['field'].must_equal "age"
|
127
|
-
traces[2]['increment'].must_equal
|
127
|
+
traces[2]['increment'].must_equal 1
|
128
128
|
end
|
129
129
|
|
130
130
|
it "should trace hincrbyfloat" do
|
@@ -141,7 +141,7 @@ describe Oboe::Inst::Redis, :hashes do
|
|
141
141
|
traces[2]['KVOp'].must_equal "hincrbyfloat"
|
142
142
|
traces[2]['KVKey'].must_equal "whale"
|
143
143
|
traces[2]['field'].must_equal "age"
|
144
|
-
traces[2]['increment'].must_equal
|
144
|
+
traces[2]['increment'].must_equal 1.3
|
145
145
|
end
|
146
146
|
|
147
147
|
it "should trace hkeys" do
|
@@ -189,8 +189,8 @@ describe Oboe::Inst::Redis, :hashes do
|
|
189
189
|
traces.count.must_equal 4
|
190
190
|
traces[2]['KVOp'].must_equal "hmget"
|
191
191
|
traces[2]['KVKey'].must_equal "whale"
|
192
|
-
traces[2]['KVKeyCount'].must_equal
|
193
|
-
traces[2]['KVHitCount'].must_equal
|
192
|
+
traces[2]['KVKeyCount'].must_equal 4
|
193
|
+
traces[2]['KVHitCount'].must_equal 2
|
194
194
|
end
|
195
195
|
|
196
196
|
it "should trace hmset" do
|
@@ -130,7 +130,7 @@ describe Oboe::Inst::Redis, :keys do
|
|
130
130
|
traces.count.must_equal 4
|
131
131
|
traces[2]['KVOp'].must_equal "move"
|
132
132
|
traces[2]['KVKey'].must_equal "piano"
|
133
|
-
traces[2]['db'].must_equal
|
133
|
+
traces[2]['db'].must_equal 1
|
134
134
|
end
|
135
135
|
|
136
136
|
it "should trace persist" do
|
@@ -163,7 +163,7 @@ describe Oboe::Inst::Redis, :keys do
|
|
163
163
|
traces.count.must_equal 4
|
164
164
|
traces[2]['KVOp'].must_equal "pexpire"
|
165
165
|
traces[2]['KVKey'].must_equal "sand"
|
166
|
-
traces[2]['milliseconds'].must_equal
|
166
|
+
traces[2]['milliseconds'].must_equal 8000
|
167
167
|
end
|
168
168
|
|
169
169
|
it "should trace pexpireat" do
|
@@ -181,7 +181,7 @@ describe Oboe::Inst::Redis, :keys do
|
|
181
181
|
traces.count.must_equal 4
|
182
182
|
traces[2]['KVOp'].must_equal "pexpireat"
|
183
183
|
traces[2]['KVKey'].must_equal "sand"
|
184
|
-
traces[2]['milliseconds'].must_equal
|
184
|
+
traces[2]['milliseconds'].must_equal 8000
|
185
185
|
end
|
186
186
|
|
187
187
|
it "should trace pttl" do
|
@@ -252,7 +252,7 @@ describe Oboe::Inst::Redis, :keys do
|
|
252
252
|
traces.count.must_equal 4
|
253
253
|
traces[2]['KVOp'].must_equal "restore"
|
254
254
|
traces[2]['KVKey'].must_equal "blue"
|
255
|
-
traces[2]['ttl'].must_equal
|
255
|
+
traces[2]['ttl'].must_equal 0
|
256
256
|
end
|
257
257
|
|
258
258
|
it "should trace sort" do
|
@@ -85,7 +85,7 @@ describe Oboe::Inst::Redis, :lists do
|
|
85
85
|
traces = get_all_traces
|
86
86
|
traces.count.must_equal 4
|
87
87
|
traces[2]['KVOp'].must_equal "lindex"
|
88
|
-
traces[2]['index'].must_equal
|
88
|
+
traces[2]['index'].must_equal 1
|
89
89
|
end
|
90
90
|
|
91
91
|
it "should trace linsert" do
|
@@ -182,8 +182,8 @@ describe Oboe::Inst::Redis, :lists do
|
|
182
182
|
traces.count.must_equal 4
|
183
183
|
traces[2]['KVOp'].must_equal "lrange"
|
184
184
|
traces[2]['KVKey'].must_equal "protein types"
|
185
|
-
traces[2]['start'].must_equal
|
186
|
-
traces[2]['stop'].must_equal
|
185
|
+
traces[2]['start'].must_equal 2
|
186
|
+
traces[2]['stop'].must_equal 4
|
187
187
|
end
|
188
188
|
|
189
189
|
it "should trace lrem" do
|
@@ -46,7 +46,7 @@ describe Oboe::Inst::Redis, :misc do
|
|
46
46
|
traces = get_all_traces
|
47
47
|
traces.count.must_equal 4
|
48
48
|
traces[2]['KVOp'].must_equal "select"
|
49
|
-
traces[2]['db'].must_equal
|
49
|
+
traces[2]['db'].must_equal 2
|
50
50
|
end
|
51
51
|
|
52
52
|
it "should trace pipelined operations" do
|
@@ -66,7 +66,7 @@ describe Oboe::Inst::Redis, :misc do
|
|
66
66
|
|
67
67
|
traces = get_all_traces
|
68
68
|
traces.count.must_equal 4
|
69
|
-
traces[2]['KVOpCount'].must_equal
|
69
|
+
traces[2]['KVOpCount'].must_equal 6
|
70
70
|
traces[2]['KVOps'].must_equal "zadd, zadd, zadd, lpush, lpush, lpush"
|
71
71
|
end
|
72
72
|
|
@@ -87,7 +87,7 @@ describe Oboe::Inst::Redis, :misc do
|
|
87
87
|
|
88
88
|
traces = get_all_traces
|
89
89
|
traces.count.must_equal 4
|
90
|
-
traces[2]['KVOpCount'].must_equal
|
90
|
+
traces[2]['KVOpCount'].must_equal 8
|
91
91
|
traces[2]['KVOps'].must_equal "multi, zadd, zadd, zadd, lpush, lpush, lpush, exec"
|
92
92
|
end
|
93
93
|
|
@@ -206,8 +206,8 @@ describe Oboe::Inst::Redis, :sortedsets do
|
|
206
206
|
traces.count.must_equal 4
|
207
207
|
traces[2]['KVOp'].must_equal "zremrangebyrank"
|
208
208
|
traces[2]['KVKey'].must_equal "sauce"
|
209
|
-
traces[2]['start'].must_equal
|
210
|
-
traces[2]['stop'].must_equal
|
209
|
+
traces[2]['start'].must_equal -5
|
210
|
+
traces[2]['stop'].must_equal -1
|
211
211
|
end
|
212
212
|
|
213
213
|
it "should trace zremrangebyscore" do
|
@@ -246,8 +246,8 @@ describe Oboe::Inst::Redis, :sortedsets do
|
|
246
246
|
traces.count.must_equal 4
|
247
247
|
traces[2]['KVOp'].must_equal "zrevrange"
|
248
248
|
traces[2]['KVKey'].must_equal "sauce"
|
249
|
-
traces[2]['start'].must_equal
|
250
|
-
traces[2]['stop'].must_equal
|
249
|
+
traces[2]['start'].must_equal 0
|
250
|
+
traces[2]['stop'].must_equal -1
|
251
251
|
end
|
252
252
|
|
253
253
|
it "should trace zrevrangebyscore" do
|
@@ -46,8 +46,8 @@ describe Oboe::Inst::Redis, :strings do
|
|
46
46
|
traces = get_all_traces
|
47
47
|
traces.count.must_equal 4
|
48
48
|
traces[2]['KVOp'].must_equal "bitcount"
|
49
|
-
traces[2]['start'].must_equal
|
50
|
-
traces[2]['stop'].must_equal
|
49
|
+
traces[2]['start'].must_equal 0
|
50
|
+
traces[2]['stop'].must_equal -1
|
51
51
|
end
|
52
52
|
|
53
53
|
it "should trace bitop (>=2.6)" do
|
@@ -89,7 +89,7 @@ describe Oboe::Inst::Redis, :strings do
|
|
89
89
|
traces.count.must_equal 4
|
90
90
|
traces[2]['KVOp'].must_equal "decrby"
|
91
91
|
traces[2]['KVKey'].must_equal "decr"
|
92
|
-
traces[2]['decrement'].must_equal
|
92
|
+
traces[2]['decrement'].must_equal 1
|
93
93
|
end
|
94
94
|
|
95
95
|
it "should trace get" do
|
@@ -120,7 +120,7 @@ describe Oboe::Inst::Redis, :strings do
|
|
120
120
|
traces.count.must_equal 4
|
121
121
|
traces[2]['KVOp'].must_equal "getbit"
|
122
122
|
traces[2]['KVKey'].must_equal "diwore"
|
123
|
-
traces[2]['offset'].must_equal
|
123
|
+
traces[2]['offset'].must_equal 3
|
124
124
|
end
|
125
125
|
|
126
126
|
it "should trace getrange" do
|
@@ -134,8 +134,8 @@ describe Oboe::Inst::Redis, :strings do
|
|
134
134
|
traces.count.must_equal 4
|
135
135
|
traces[2]['KVOp'].must_equal "getrange"
|
136
136
|
traces[2]['KVKey'].must_equal "yourkey"
|
137
|
-
traces[2]['start'].must_equal
|
138
|
-
traces[2]['end'].must_equal
|
137
|
+
traces[2]['start'].must_equal 0
|
138
|
+
traces[2]['end'].must_equal 3
|
139
139
|
end
|
140
140
|
|
141
141
|
it "should trace getset" do
|
@@ -176,7 +176,7 @@ describe Oboe::Inst::Redis, :strings do
|
|
176
176
|
traces.count.must_equal 4
|
177
177
|
traces[2]['KVOp'].must_equal "incrby"
|
178
178
|
traces[2]['KVKey'].must_equal "incr"
|
179
|
-
traces[2]['increment'].must_equal
|
179
|
+
traces[2]['increment'].must_equal 1
|
180
180
|
end
|
181
181
|
|
182
182
|
it "should trace incrbyfloat" do
|
@@ -192,7 +192,7 @@ describe Oboe::Inst::Redis, :strings do
|
|
192
192
|
traces.count.must_equal 4
|
193
193
|
traces[2]['KVOp'].must_equal "incrbyfloat"
|
194
194
|
traces[2]['KVKey'].must_equal "incrfloat"
|
195
|
-
traces[2]['increment'].must_equal
|
195
|
+
traces[2]['increment'].must_equal 1.01
|
196
196
|
end
|
197
197
|
|
198
198
|
it "should trace mget" do
|
@@ -208,11 +208,11 @@ describe Oboe::Inst::Redis, :strings do
|
|
208
208
|
traces = get_all_traces
|
209
209
|
traces.count.must_equal 6
|
210
210
|
traces[2]['KVOp'].must_equal "mget"
|
211
|
-
traces[2]['KVKeyCount'].must_equal
|
212
|
-
traces[2]['KVHitCount'].must_equal
|
211
|
+
traces[2]['KVKeyCount'].must_equal 3
|
212
|
+
traces[2]['KVHitCount'].must_equal 2
|
213
213
|
traces[4]['KVOp'].must_equal "mget"
|
214
|
-
traces[4]['KVKeyCount'].must_equal
|
215
|
-
traces[4]['KVHitCount'].must_equal
|
214
|
+
traces[4]['KVKeyCount'].must_equal 1
|
215
|
+
traces[4]['KVHitCount'].must_equal 1
|
216
216
|
end
|
217
217
|
|
218
218
|
it "should trace mset" do
|
@@ -224,9 +224,9 @@ describe Oboe::Inst::Redis, :strings do
|
|
224
224
|
traces = get_all_traces
|
225
225
|
traces.count.must_equal 6
|
226
226
|
traces[2]['KVOp'].must_equal "mset"
|
227
|
-
traces[2]['KVKeyCount'].must_equal
|
227
|
+
traces[2]['KVKeyCount'].must_equal 3
|
228
228
|
traces[4]['KVOp'].must_equal "mset"
|
229
|
-
traces[4]['KVKeyCount'].must_equal
|
229
|
+
traces[4]['KVKeyCount'].must_equal 1
|
230
230
|
end
|
231
231
|
|
232
232
|
it "should trace msetnx" do
|
@@ -249,7 +249,7 @@ describe Oboe::Inst::Redis, :strings do
|
|
249
249
|
traces.count.must_equal 4
|
250
250
|
traces[2]['KVOp'].must_equal "psetex"
|
251
251
|
traces[2]['KVKey'].must_equal "one"
|
252
|
-
traces[2]['ttl'].must_equal
|
252
|
+
traces[2]['ttl'].must_equal 60
|
253
253
|
end
|
254
254
|
|
255
255
|
it "should trace basic set" do
|
@@ -274,7 +274,7 @@ describe Oboe::Inst::Redis, :strings do
|
|
274
274
|
traces.count.must_equal 4
|
275
275
|
traces[2]['KVOp'].must_equal "setbit"
|
276
276
|
traces[2]['KVKey'].must_equal "yourkey"
|
277
|
-
traces[2]['offset'].must_equal
|
277
|
+
traces[2]['offset'].must_equal 3
|
278
278
|
end
|
279
279
|
|
280
280
|
it "should trace setex" do
|
@@ -286,7 +286,7 @@ describe Oboe::Inst::Redis, :strings do
|
|
286
286
|
traces.count.must_equal 4
|
287
287
|
traces[2]['KVOp'].must_equal "setex"
|
288
288
|
traces[2]['KVKey'].must_equal "one"
|
289
|
-
traces[2]['ttl'].must_equal
|
289
|
+
traces[2]['ttl'].must_equal 60
|
290
290
|
end
|
291
291
|
|
292
292
|
it "should trace setnx" do
|
@@ -313,7 +313,7 @@ describe Oboe::Inst::Redis, :strings do
|
|
313
313
|
traces.count.must_equal 4
|
314
314
|
traces[2]['KVOp'].must_equal "setrange"
|
315
315
|
traces[2]['KVKey'].must_equal "yourkey"
|
316
|
-
traces[2]['offset'].must_equal
|
316
|
+
traces[2]['offset'].must_equal 2
|
317
317
|
end
|
318
318
|
|
319
319
|
it "should trace strlen" do
|
@@ -26,7 +26,7 @@ unless defined?(JRUBY_VERSION)
|
|
26
26
|
'Label' => 'entry',
|
27
27
|
'Database' => 'travis_ci_test',
|
28
28
|
'RemoteHost' => '127.0.0.1',
|
29
|
-
'RemotePort' =>
|
29
|
+
'RemotePort' => 3306 }
|
30
30
|
|
31
31
|
@exit_kvs = { 'Layer' => 'sequel', 'Label' => 'exit' }
|
32
32
|
@collect_backtraces = Oboe::Config[:sequel][:collect_backtraces]
|
@@ -112,7 +112,7 @@ unless defined?(JRUBY_VERSION)
|
|
112
112
|
items.count
|
113
113
|
|
114
114
|
Oboe::API.start_trace('sequel_test', '', {}) do
|
115
|
-
items.insert(:name => 'abc', :price => 2.
|
115
|
+
items.insert(:name => 'abc', :price => 2.514)
|
116
116
|
items.count
|
117
117
|
end
|
118
118
|
|
@@ -122,11 +122,14 @@ unless defined?(JRUBY_VERSION)
|
|
122
122
|
validate_outer_layers(traces, 'sequel_test')
|
123
123
|
|
124
124
|
validate_event_keys(traces[1], @entry_kvs)
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
125
|
+
|
126
|
+
# SQL column/value order can vary between Ruby and gem versions
|
127
|
+
# Use must_include to test against one or the other
|
128
|
+
[
|
129
|
+
"INSERT INTO `items` (`price`, `name`) VALUES (2.514, 'abc')",
|
130
|
+
"INSERT INTO `items` (`name`, `price`) VALUES ('abc', 2.514)"
|
131
|
+
].must_include traces[1]['Query']
|
132
|
+
|
130
133
|
traces[1].has_key?('Backtrace').must_equal Oboe::Config[:sequel][:collect_backtraces]
|
131
134
|
traces[2]['Layer'].must_equal "sequel"
|
132
135
|
traces[2]['Label'].must_equal "exit"
|
@@ -149,11 +152,14 @@ unless defined?(JRUBY_VERSION)
|
|
149
152
|
validate_outer_layers(traces, 'sequel_test')
|
150
153
|
|
151
154
|
validate_event_keys(traces[1], @entry_kvs)
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
155
|
+
|
156
|
+
# SQL column/value order can vary between Ruby and gem versions
|
157
|
+
# Use must_include to test against one or the other
|
158
|
+
[
|
159
|
+
"INSERT INTO `items` (`price`, `name`) VALUES (?, ?)",
|
160
|
+
"INSERT INTO `items` (`name`, `price`) VALUES (?, ?)"
|
161
|
+
].must_include traces[1]['Query']
|
162
|
+
|
157
163
|
traces[1].has_key?('Backtrace').must_equal Oboe::Config[:sequel][:collect_backtraces]
|
158
164
|
validate_event_keys(traces[2], @exit_kvs)
|
159
165
|
end
|
@@ -26,7 +26,7 @@ unless defined?(JRUBY_VERSION)
|
|
26
26
|
'Label' => 'entry',
|
27
27
|
'Database' => 'travis_ci_test',
|
28
28
|
'RemoteHost' => '127.0.0.1',
|
29
|
-
'RemotePort' =>
|
29
|
+
'RemotePort' => 3306 }
|
30
30
|
|
31
31
|
@exit_kvs = { 'Layer' => 'sequel', 'Label' => 'exit' }
|
32
32
|
@collect_backtraces = Oboe::Config[:sequel][:collect_backtraces]
|
@@ -112,7 +112,7 @@ unless defined?(JRUBY_VERSION)
|
|
112
112
|
items.count
|
113
113
|
|
114
114
|
Oboe::API.start_trace('sequel_test', '', {}) do
|
115
|
-
items.insert(:name => 'abc', :price => 2.
|
115
|
+
items.insert(:name => 'abc', :price => 2.514)
|
116
116
|
items.count
|
117
117
|
end
|
118
118
|
|
@@ -122,11 +122,14 @@ unless defined?(JRUBY_VERSION)
|
|
122
122
|
validate_outer_layers(traces, 'sequel_test')
|
123
123
|
|
124
124
|
validate_event_keys(traces[1], @entry_kvs)
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
125
|
+
|
126
|
+
# SQL column/value order can vary between Ruby and gem versions
|
127
|
+
# Use must_include to test against one or the other
|
128
|
+
[
|
129
|
+
"INSERT INTO `items` (`price`, `name`) VALUES (2.514, 'abc')",
|
130
|
+
"INSERT INTO `items` (`name`, `price`) VALUES ('abc', 2.514)"
|
131
|
+
].must_include traces[1]['Query']
|
132
|
+
|
130
133
|
traces[1].has_key?('Backtrace').must_equal Oboe::Config[:sequel][:collect_backtraces]
|
131
134
|
traces[2]['Layer'].must_equal "sequel"
|
132
135
|
traces[2]['Label'].must_equal "exit"
|
@@ -149,11 +152,14 @@ unless defined?(JRUBY_VERSION)
|
|
149
152
|
validate_outer_layers(traces, 'sequel_test')
|
150
153
|
|
151
154
|
validate_event_keys(traces[1], @entry_kvs)
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
155
|
+
|
156
|
+
# SQL column/value order can vary between Ruby and gem versions
|
157
|
+
# Use must_include to test against one or the other
|
158
|
+
[
|
159
|
+
"INSERT INTO `items` (`price`, `name`) VALUES (?, ?)",
|
160
|
+
"INSERT INTO `items` (`name`, `price`) VALUES (?, ?)"
|
161
|
+
].must_include traces[1]['Query']
|
162
|
+
|
157
163
|
traces[1].has_key?('Backtrace').must_equal Oboe::Config[:sequel][:collect_backtraces]
|
158
164
|
validate_event_keys(traces[2], @exit_kvs)
|
159
165
|
end
|
@@ -26,7 +26,7 @@ unless defined?(JRUBY_VERSION)
|
|
26
26
|
'Label' => 'entry',
|
27
27
|
'Database' => 'travis_ci_test',
|
28
28
|
'RemoteHost' => '127.0.0.1',
|
29
|
-
'RemotePort' =>
|
29
|
+
'RemotePort' => 5432 }
|
30
30
|
|
31
31
|
@exit_kvs = { 'Layer' => 'sequel', 'Label' => 'exit' }
|
32
32
|
@collect_backtraces = Oboe::Config[:sequel][:collect_backtraces]
|
@@ -114,7 +114,7 @@ unless defined?(JRUBY_VERSION)
|
|
114
114
|
PG_DB.primary_key(:items)
|
115
115
|
|
116
116
|
Oboe::API.start_trace('sequel_test', '', {}) do
|
117
|
-
items.insert(:name => 'abc', :price => 2.
|
117
|
+
items.insert(:name => 'abc', :price => 2.514)
|
118
118
|
items.count
|
119
119
|
end
|
120
120
|
|
@@ -124,11 +124,14 @@ unless defined?(JRUBY_VERSION)
|
|
124
124
|
validate_outer_layers(traces, 'sequel_test')
|
125
125
|
|
126
126
|
validate_event_keys(traces[1], @entry_kvs)
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
127
|
+
|
128
|
+
# SQL column/value order can vary between Ruby and gem versions
|
129
|
+
# Use must_include to test against one or the other
|
130
|
+
[
|
131
|
+
"INSERT INTO \"items\" (\"price\", \"name\") VALUES (2.514, 'abc') RETURNING \"id\"",
|
132
|
+
"INSERT INTO \"items\" (\"name\", \"price\") VALUES ('abc', 2.514) RETURNING \"id\""
|
133
|
+
].must_include traces[1]['Query']
|
134
|
+
|
132
135
|
traces[1].has_key?('Backtrace').must_equal Oboe::Config[:sequel][:collect_backtraces]
|
133
136
|
traces[2]['Layer'].must_equal "sequel"
|
134
137
|
traces[2]['Label'].must_equal "exit"
|
@@ -153,11 +156,14 @@ unless defined?(JRUBY_VERSION)
|
|
153
156
|
validate_outer_layers(traces, 'sequel_test')
|
154
157
|
|
155
158
|
validate_event_keys(traces[1], @entry_kvs)
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
159
|
+
|
160
|
+
# SQL column/value order can vary between Ruby and gem versions
|
161
|
+
# Use must_include to test against one or the other
|
162
|
+
[
|
163
|
+
"INSERT INTO \"items\" (\"price\", \"name\") VALUES (?, ?) RETURNING \"id\"",
|
164
|
+
"INSERT INTO \"items\" (\"name\", \"price\") VALUES (?, ?) RETURNING \"id\""
|
165
|
+
].must_include traces[1]['Query']
|
166
|
+
|
161
167
|
traces[1].has_key?('Backtrace').must_equal Oboe::Config[:sequel][:collect_backtraces]
|
162
168
|
validate_event_keys(traces[2], @exit_kvs)
|
163
169
|
end
|
@@ -36,12 +36,12 @@ describe Oboe::Inst::TyphoeusRequestOps do
|
|
36
36
|
|
37
37
|
traces[2]['Layer'].must_equal 'typhoeus'
|
38
38
|
traces[2]['Label'].must_equal 'info'
|
39
|
-
traces[2]['IsService'].must_equal
|
39
|
+
traces[2]['IsService'].must_equal 1
|
40
40
|
traces[2]['RemoteProtocol'].downcase.must_equal 'http'
|
41
41
|
traces[2]['RemoteHost'].must_equal 'www.appneta.com'
|
42
42
|
traces[2]['ServiceArg'].must_equal '/products/traceview/'
|
43
43
|
traces[2]['HTTPMethod'].must_equal 'get'
|
44
|
-
traces[2]['HTTPStatus'].must_equal
|
44
|
+
traces[2]['HTTPStatus'].must_equal 200
|
45
45
|
|
46
46
|
traces[3]['Layer'].must_equal 'typhoeus'
|
47
47
|
traces[3]['Label'].must_equal 'exit'
|
@@ -63,13 +63,13 @@ describe Oboe::Inst::TyphoeusRequestOps do
|
|
63
63
|
|
64
64
|
traces[2]['Layer'].must_equal 'typhoeus'
|
65
65
|
traces[2]['Label'].must_equal 'info'
|
66
|
-
traces[2]['IsService'].must_equal
|
66
|
+
traces[2]['IsService'].must_equal 1
|
67
67
|
traces[2]['RemoteProtocol'].downcase.must_equal 'https'
|
68
68
|
traces[2]['RemoteHost'].must_equal 'internal.tv.appneta.com'
|
69
|
-
traces[2]['RemotePort'].must_equal
|
69
|
+
traces[2]['RemotePort'].must_equal 443
|
70
70
|
traces[2]['ServiceArg'].must_equal '/api-v2/log_message'
|
71
71
|
traces[2]['HTTPMethod'].must_equal 'post'
|
72
|
-
traces[2]['HTTPStatus'].must_equal
|
72
|
+
traces[2]['HTTPStatus'].must_equal 302
|
73
73
|
|
74
74
|
traces[3]['Layer'].must_equal 'typhoeus'
|
75
75
|
traces[3]['Label'].must_equal 'exit'
|
@@ -91,13 +91,13 @@ describe Oboe::Inst::TyphoeusRequestOps do
|
|
91
91
|
|
92
92
|
traces[2]['Layer'].must_equal 'typhoeus'
|
93
93
|
traces[2]['Label'].must_equal 'info'
|
94
|
-
traces[2]['IsService'].must_equal
|
94
|
+
traces[2]['IsService'].must_equal 1
|
95
95
|
traces[2]['RemoteProtocol'].downcase.must_equal 'https'
|
96
96
|
traces[2]['RemoteHost'].must_equal 'internal.tv.appneta.com'
|
97
|
-
traces[2]['RemotePort'].must_equal
|
97
|
+
traces[2]['RemotePort'].must_equal 443
|
98
98
|
traces[2]['ServiceArg'].must_equal '/api-v2/log_message'
|
99
99
|
traces[2]['HTTPMethod'].must_equal 'put'
|
100
|
-
traces[2]['HTTPStatus'].must_equal
|
100
|
+
traces[2]['HTTPStatus'].must_equal 405
|
101
101
|
|
102
102
|
traces[3]['Layer'].must_equal 'typhoeus'
|
103
103
|
traces[3]['Label'].must_equal 'exit'
|
@@ -118,13 +118,13 @@ describe Oboe::Inst::TyphoeusRequestOps do
|
|
118
118
|
|
119
119
|
traces[2]['Layer'].must_equal 'typhoeus'
|
120
120
|
traces[2]['Label'].must_equal 'info'
|
121
|
-
traces[2]['IsService'].must_equal
|
121
|
+
traces[2]['IsService'].must_equal 1
|
122
122
|
traces[2]['RemoteProtocol'].downcase.must_equal 'https'
|
123
123
|
traces[2]['RemoteHost'].must_equal 'internal.tv.appneta.com'
|
124
|
-
traces[2]['RemotePort'].must_equal
|
124
|
+
traces[2]['RemotePort'].must_equal 443
|
125
125
|
traces[2]['ServiceArg'].must_equal '/api-v2/log_message'
|
126
126
|
traces[2]['HTTPMethod'].must_equal 'delete'
|
127
|
-
traces[2]['HTTPStatus'].must_equal
|
127
|
+
traces[2]['HTTPStatus'].must_equal 405
|
128
128
|
|
129
129
|
traces[3]['Layer'].must_equal 'typhoeus'
|
130
130
|
traces[3]['Label'].must_equal 'exit'
|
@@ -145,12 +145,12 @@ describe Oboe::Inst::TyphoeusRequestOps do
|
|
145
145
|
|
146
146
|
traces[2]['Layer'].must_equal 'typhoeus'
|
147
147
|
traces[2]['Label'].must_equal 'info'
|
148
|
-
traces[2]['IsService'].must_equal
|
148
|
+
traces[2]['IsService'].must_equal 1
|
149
149
|
traces[2]['RemoteProtocol'].downcase.must_equal 'http'
|
150
150
|
traces[2]['RemoteHost'].must_equal 'www.appneta.com'
|
151
151
|
traces[2]['ServiceArg'].must_equal '/'
|
152
152
|
traces[2]['HTTPMethod'].must_equal 'head'
|
153
|
-
traces[2]['HTTPStatus'].must_equal
|
153
|
+
traces[2]['HTTPStatus'].must_equal 200
|
154
154
|
|
155
155
|
traces[3]['Layer'].must_equal 'typhoeus'
|
156
156
|
traces[3]['Label'].must_equal 'exit'
|
@@ -171,12 +171,12 @@ describe Oboe::Inst::TyphoeusRequestOps do
|
|
171
171
|
|
172
172
|
traces[2]['Layer'].must_equal 'typhoeus'
|
173
173
|
traces[2]['Label'].must_equal 'info'
|
174
|
-
traces[2]['IsService'].must_equal
|
174
|
+
traces[2]['IsService'].must_equal 1
|
175
175
|
traces[2]['RemoteProtocol'].downcase.must_equal 'http'
|
176
176
|
traces[2]['RemoteHost'].must_equal 'www.gameface.in'
|
177
177
|
traces[2]['ServiceArg'].must_equal '/gamers'
|
178
178
|
traces[2]['HTTPMethod'].must_equal 'get'
|
179
|
-
traces[2]['HTTPStatus'].must_equal
|
179
|
+
traces[2]['HTTPStatus'].must_equal 200
|
180
180
|
|
181
181
|
traces[3]['Layer'].must_equal 'typhoeus'
|
182
182
|
traces[3]['Label'].must_equal 'exit'
|
@@ -204,34 +204,37 @@ describe Oboe::Inst::TyphoeusRequestOps do
|
|
204
204
|
end
|
205
205
|
|
206
206
|
traces = get_all_traces
|
207
|
-
traces.count.must_equal
|
207
|
+
traces.count.must_equal 8
|
208
208
|
|
209
209
|
validate_outer_layers(traces, 'outer')
|
210
210
|
|
211
|
+
#require 'byebug'
|
212
|
+
#debugger
|
213
|
+
|
211
214
|
traces[2]['Layer'].must_equal 'rack'
|
212
215
|
traces[2]['Label'].must_equal 'entry'
|
213
|
-
traces[
|
214
|
-
traces[
|
216
|
+
traces[4]['Layer'].must_equal 'rack'
|
217
|
+
traces[4]['Label'].must_equal 'exit'
|
215
218
|
|
216
219
|
# Verify typhoeus info edges to inner exit
|
217
|
-
traces[
|
220
|
+
traces[6]['Edge'].must_equal traces[5]['X-Trace'][42...58]
|
218
221
|
|
219
222
|
# Verify typhoeus events
|
220
223
|
traces[1]['Layer'].must_equal 'typhoeus'
|
221
224
|
traces[1].key?('Backtrace').must_equal Oboe::Config[:typhoeus][:collect_backtraces]
|
222
225
|
|
223
|
-
traces[4]['Layer'].must_equal 'typhoeus'
|
224
|
-
traces[4]['Label'].must_equal 'info'
|
225
|
-
traces[4]['IsService'].must_equal '1'
|
226
|
-
traces[4]['RemoteProtocol'].downcase.must_equal 'http'
|
227
|
-
traces[4]['RemoteHost'].must_equal '127.0.0.1'
|
228
|
-
traces[4]['RemotePort'].must_equal '8000'
|
229
|
-
traces[4]['ServiceArg'].must_equal '/'
|
230
|
-
traces[4]['HTTPMethod'].must_equal 'get'
|
231
|
-
traces[4]['HTTPStatus'].must_equal '200'
|
232
|
-
|
233
226
|
traces[5]['Layer'].must_equal 'typhoeus'
|
234
|
-
traces[5]['Label'].must_equal '
|
227
|
+
traces[5]['Label'].must_equal 'info'
|
228
|
+
traces[5]['IsService'].must_equal 1
|
229
|
+
traces[5]['RemoteProtocol'].downcase.must_equal 'http'
|
230
|
+
traces[5]['RemoteHost'].must_equal '127.0.0.1'
|
231
|
+
traces[5]['RemotePort'].must_equal 8000
|
232
|
+
traces[5]['ServiceArg'].must_equal '/'
|
233
|
+
traces[5]['HTTPMethod'].must_equal 'get'
|
234
|
+
traces[5]['HTTPStatus'].must_equal 200
|
235
|
+
|
236
|
+
traces[6]['Layer'].must_equal 'typhoeus'
|
237
|
+
traces[6]['Label'].must_equal 'exit'
|
235
238
|
end
|
236
239
|
|
237
240
|
it 'should trace a typhoeus GET request with DNS error' do
|
@@ -252,12 +255,12 @@ describe Oboe::Inst::TyphoeusRequestOps do
|
|
252
255
|
|
253
256
|
traces[3]['Layer'].must_equal 'typhoeus'
|
254
257
|
traces[3]['Label'].must_equal 'info'
|
255
|
-
traces[3]['IsService'].must_equal
|
258
|
+
traces[3]['IsService'].must_equal 1
|
256
259
|
traces[3]['RemoteProtocol'].downcase.must_equal 'http'
|
257
260
|
traces[3]['RemoteHost'].must_equal 'thisdomaindoesntexisthopefully.asdf'
|
258
261
|
traces[3]['ServiceArg'].must_equal '/products/traceview/'
|
259
262
|
traces[3]['HTTPMethod'].must_equal 'get'
|
260
|
-
traces[3]['HTTPStatus'].must_equal
|
263
|
+
traces[3]['HTTPStatus'].must_equal 0
|
261
264
|
|
262
265
|
traces[3]['Layer'].must_equal 'typhoeus'
|
263
266
|
traces[3]['Label'].must_equal 'info'
|
@@ -32,15 +32,74 @@ unless defined?(JRUBY_VERSION)
|
|
32
32
|
get "/lobster"
|
33
33
|
|
34
34
|
traces = get_all_traces
|
35
|
-
traces.count.must_equal
|
35
|
+
traces.count.must_equal 3
|
36
36
|
|
37
37
|
validate_outer_layers(traces, 'rack')
|
38
38
|
|
39
39
|
kvs = {}
|
40
|
-
kvs["SampleRate"] =
|
41
|
-
kvs["SampleSource"] = OBOE_SAMPLE_RATE_SOURCE_FILE
|
40
|
+
kvs["SampleRate"] = 1000000
|
41
|
+
kvs["SampleSource"] = OBOE_SAMPLE_RATE_SOURCE_FILE
|
42
42
|
validate_event_keys(traces[0], kvs)
|
43
|
+
end
|
44
|
+
|
45
|
+
# Test logging of all Ruby datatypes against the SWIG wrapper
|
46
|
+
# of addInfo which only has four overloads.
|
47
|
+
def test_swig_datatypes_conversion
|
48
|
+
event = Oboe::Context.createEvent
|
49
|
+
report_kvs = {}
|
50
|
+
|
51
|
+
# Array
|
52
|
+
report_kvs[:TestData] = [0, 1, 2, 5, 7.0]
|
53
|
+
result = Oboe::API.log_event('test_layer', 'entry', event, report_kvs)
|
54
|
+
|
55
|
+
# Class
|
56
|
+
report_kvs[:TestData] = Oboe::Reporter
|
57
|
+
result = Oboe::API.log_event('test_layer', 'entry', event, report_kvs)
|
58
|
+
|
59
|
+
# FalseClass
|
60
|
+
report_kvs[:TestData] = false
|
61
|
+
result = Oboe::API.log_event('test_layer', 'entry', event, report_kvs)
|
62
|
+
|
63
|
+
# Fixnum
|
64
|
+
report_kvs[:TestData] = 1_873_293_293
|
65
|
+
result = Oboe::API.log_event('test_layer', 'entry', event, report_kvs)
|
66
|
+
|
67
|
+
# Float
|
68
|
+
report_kvs[:TestData] = 1.0001
|
69
|
+
result = Oboe::API.log_event('test_layer', 'entry', event, report_kvs)
|
70
|
+
|
71
|
+
# Hash
|
72
|
+
report_kvs[:TestData] = Hash.new
|
73
|
+
result = Oboe::API.log_event('test_layer', 'entry', event, report_kvs)
|
43
74
|
|
75
|
+
# Integer
|
76
|
+
report_kvs[:TestData] = 1
|
77
|
+
result = Oboe::API.log_event('test_layer', 'entry', event, report_kvs)
|
78
|
+
|
79
|
+
# Module
|
80
|
+
report_kvs[:TestData] = Oboe
|
81
|
+
result = Oboe::API.log_event('test_layer', 'entry', event, report_kvs)
|
82
|
+
|
83
|
+
# NilClass
|
84
|
+
report_kvs[:TestData] = nil
|
85
|
+
result = Oboe::API.log_event('test_layer', 'entry', event, report_kvs)
|
86
|
+
|
87
|
+
# Set
|
88
|
+
report_kvs[:TestData] = Set.new(1..10)
|
89
|
+
result = Oboe::API.log_event('test_layer', 'entry', event, report_kvs)
|
90
|
+
|
91
|
+
# String
|
92
|
+
report_kvs[:TestData] = 'test value'
|
93
|
+
result = Oboe::API.log_event('test_layer', 'entry', event, report_kvs)
|
94
|
+
|
95
|
+
# Symbol
|
96
|
+
report_kvs[:TestData] = :TestValue
|
97
|
+
result = Oboe::API.log_event('test_layer', 'entry', event, report_kvs)
|
98
|
+
|
99
|
+
# TrueClass
|
100
|
+
report_kvs[:TestData] = true
|
101
|
+
result = Oboe::API.log_event('test_layer', 'entry', event, report_kvs)
|
44
102
|
end
|
45
103
|
end
|
104
|
+
|
46
105
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oboe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.7.
|
4
|
+
version: 2.7.12.1
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Peter Giacomo Lombardo
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-03-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -127,6 +127,7 @@ files:
|
|
127
127
|
- lib/rails/generators/oboe/templates/oboe_initializer.rb
|
128
128
|
- oboe.gemspec
|
129
129
|
- release.sh
|
130
|
+
- test/frameworks/apps/grape_nested.rb
|
130
131
|
- test/frameworks/apps/grape_simple.rb
|
131
132
|
- test/frameworks/apps/padrino_simple.rb
|
132
133
|
- test/frameworks/apps/sinatra_simple.rb
|
@@ -193,6 +194,7 @@ test_files:
|
|
193
194
|
- test/frameworks/apps/sinatra_simple.rb
|
194
195
|
- test/frameworks/apps/padrino_simple.rb
|
195
196
|
- test/frameworks/apps/grape_simple.rb
|
197
|
+
- test/frameworks/apps/grape_nested.rb
|
196
198
|
- test/instrumentation/mongo_test.rb
|
197
199
|
- test/instrumentation/redis_hashes_test.rb
|
198
200
|
- test/instrumentation/sequel_pg_test.rb
|