oboe 2.7.11.1-java → 2.7.12.1-java
Sign up to get free protection for your applications and to get access to all the features.
- 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
|