oboe 2.7.1.7-java → 2.7.2.2-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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -0
  3. data/Gemfile +2 -0
  4. data/README.md +3 -3
  5. data/ext/oboe_metal/extconf.rb +11 -11
  6. data/lib/joboe_metal.rb +36 -42
  7. data/lib/oboe.rb +29 -27
  8. data/lib/oboe/api.rb +4 -0
  9. data/lib/oboe/api/layerinit.rb +9 -6
  10. data/lib/oboe/api/logging.rb +50 -28
  11. data/lib/oboe/api/memcache.rb +7 -5
  12. data/lib/oboe/api/profiling.rb +4 -4
  13. data/lib/oboe/api/tracing.rb +6 -5
  14. data/lib/oboe/api/util.rb +13 -9
  15. data/lib/oboe/base.rb +50 -15
  16. data/lib/oboe/config.rb +17 -15
  17. data/lib/oboe/frameworks/padrino.rb +0 -2
  18. data/lib/oboe/frameworks/padrino/templates.rb +5 -6
  19. data/lib/oboe/frameworks/rails.rb +0 -1
  20. data/lib/oboe/frameworks/rails/inst/action_controller.rb +4 -5
  21. data/lib/oboe/frameworks/rails/inst/action_view.rb +4 -4
  22. data/lib/oboe/frameworks/rails/inst/action_view_2x.rb +4 -4
  23. data/lib/oboe/frameworks/rails/inst/action_view_30.rb +2 -2
  24. data/lib/oboe/frameworks/rails/inst/active_record.rb +5 -5
  25. data/lib/oboe/frameworks/rails/inst/connection_adapters/mysql.rb +6 -6
  26. data/lib/oboe/frameworks/rails/inst/connection_adapters/mysql2.rb +3 -3
  27. data/lib/oboe/frameworks/rails/inst/connection_adapters/oracle.rb +1 -1
  28. data/lib/oboe/frameworks/rails/inst/connection_adapters/postgresql.rb +3 -3
  29. data/lib/oboe/frameworks/rails/inst/connection_adapters/utils.rb +18 -19
  30. data/lib/oboe/frameworks/sinatra.rb +4 -5
  31. data/lib/oboe/inst/cassandra.rb +17 -19
  32. data/lib/oboe/inst/dalli.rb +5 -5
  33. data/lib/oboe/inst/em-http-request.rb +13 -13
  34. data/lib/oboe/inst/faraday.rb +71 -0
  35. data/lib/oboe/inst/http.rb +4 -4
  36. data/lib/oboe/inst/memcache.rb +7 -10
  37. data/lib/oboe/inst/memcached.rb +7 -9
  38. data/lib/oboe/inst/mongo.rb +26 -28
  39. data/lib/oboe/inst/moped.rb +23 -24
  40. data/lib/oboe/inst/rack.rb +10 -11
  41. data/lib/oboe/inst/redis.rb +18 -20
  42. data/lib/oboe/inst/resque.rb +8 -9
  43. data/lib/oboe/instrumentation.rb +3 -0
  44. data/lib/oboe/loading.rb +19 -23
  45. data/lib/{method_profiling.rb → oboe/method_profiling.rb} +22 -8
  46. data/lib/oboe/ruby.rb +23 -3
  47. data/lib/oboe/thread_local.rb +9 -1
  48. data/lib/oboe/util.rb +15 -19
  49. data/lib/oboe/version.rb +5 -2
  50. data/lib/oboe/xtrace.rb +20 -24
  51. data/lib/oboe_metal.rb +16 -13
  52. data/lib/rails/generators/oboe/templates/oboe_initializer.rb +2 -0
  53. data/test/instrumentation/faraday_test.rb +142 -0
  54. data/test/instrumentation/moped_test.rb +2 -0
  55. data/test/minitest_helper.rb +0 -1
  56. data/test/support/config_test.rb +3 -1
  57. metadata +7 -3
data/lib/oboe/version.rb CHANGED
@@ -2,11 +2,14 @@
2
2
  # All rights reserved.
3
3
 
4
4
  module Oboe
5
+ ##
6
+ # The current version of the gem. Used mainly by
7
+ # oboe.gemspec during gem build process
5
8
  module Version
6
9
  MAJOR = 2
7
10
  MINOR = 7
8
- PATCH = 1
9
- BUILD = 7
11
+ PATCH = 2
12
+ BUILD = 2
10
13
 
11
14
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
12
15
  end
data/lib/oboe/xtrace.rb CHANGED
@@ -2,31 +2,31 @@
2
2
  # All rights reserved.
3
3
 
4
4
  module Oboe
5
+ ##
6
+ # Methods to act on, manipulate or investigate an X-Trace
7
+ # value
5
8
  module XTrace
6
9
  class << self
7
-
8
10
  ##
9
11
  # Oboe::XTrace.valid?
10
12
  #
11
13
  # Perform basic validation on a potential X-Trace ID
12
14
  #
13
15
  def valid?(xtrace)
14
- begin
15
- # Shouldn't be nil
16
- return false unless xtrace
16
+ # Shouldn't be nil
17
+ return false unless xtrace
17
18
 
18
- # The X-Trace ID shouldn't be an initialized empty ID
19
- return false if (xtrace =~ /^1b0000000/i) == 0
19
+ # The X-Trace ID shouldn't be an initialized empty ID
20
+ return false if (xtrace =~ /^1b0000000/i) == 0
20
21
 
21
- # Valid X-Trace IDs have a length of 58 bytes and start with '1b'
22
- return false unless xtrace.length == 58 and (xtrace =~ /^1b/i) == 0
22
+ # Valid X-Trace IDs have a length of 58 bytes and start with '1b'
23
+ return false unless xtrace.length == 58 && (xtrace =~ /^1b/i) == 0
23
24
 
24
- true
25
- rescue StandardError => e
26
- Oboe.logger.debug e.message
27
- Oboe.logger.debug e.backtrace
28
- false
29
- end
25
+ true
26
+ rescue StandardError => e
27
+ Oboe.logger.debug e.message
28
+ Oboe.logger.debug e.backtrace
29
+ false
30
30
  end
31
31
 
32
32
  ##
@@ -35,18 +35,14 @@ module Oboe
35
35
  # Extract and return the task_id portion of an X-Trace ID
36
36
  #
37
37
  def task_id(xtrace)
38
- begin
39
- return nil unless Oboe::XTrace.valid?(xtrace)
38
+ return nil unless Oboe::XTrace.valid?(xtrace)
40
39
 
41
- xtrace[2..41]
42
- rescue StandardError => e
43
- Oboe.logger.debug e.message
44
- Oboe.logger.debug e.backtrace
45
- return nil
46
- end
40
+ xtrace[2..41]
41
+ rescue StandardError => e
42
+ Oboe.logger.debug e.message
43
+ Oboe.logger.debug e.backtrace
44
+ return nil
47
45
  end
48
-
49
46
  end
50
47
  end
51
48
  end
52
-
data/lib/oboe_metal.rb CHANGED
@@ -1,6 +1,9 @@
1
1
  # Copyright (c) 2013 AppNeta, Inc.
2
2
  # All rights reserved.
3
3
 
4
+ # Disable docs and Camelcase warns since we're implementing
5
+ # an interface here. See OboeBase for details.
6
+ # rubocop:disable Style/Documentation, Style/MethodName
4
7
  module Oboe
5
8
  extend OboeBase
6
9
  include Oboe_metal
@@ -13,21 +16,21 @@ module Oboe
13
16
  return unless Oboe.loaded
14
17
 
15
18
  begin
16
- Oboe_metal::Context.init()
19
+ Oboe_metal::Context.init
17
20
 
18
- if ENV.has_key?("OBOE_GEM_TEST")
19
- Oboe.reporter = Oboe::FileReporter.new("/tmp/trace_output.bson")
21
+ if ENV.key?('OBOE_GEM_TEST')
22
+ Oboe.reporter = Oboe::FileReporter.new('/tmp/trace_output.bson')
20
23
  else
21
24
  Oboe.reporter = Oboe::UdpReporter.new(Oboe::Config[:reporter_host], Oboe::Config[:reporter_port])
22
25
  end
23
26
 
24
27
  # Only report __Init from here if we are not instrumenting a framework.
25
28
  # Otherwise, frameworks will handle reporting __Init after full initialization
26
- unless defined?(::Rails) or defined?(::Sinatra) or defined?(::Padrino) or defined?(::Grape)
29
+ unless defined?(::Rails) || defined?(::Sinatra) || defined?(::Padrino) || defined?(::Grape)
27
30
  Oboe::API.report_init
28
31
  end
29
32
 
30
- rescue Exception => e
33
+ rescue => e
31
34
  $stderr.puts e.message
32
35
  raise
33
36
  end
@@ -52,7 +55,7 @@ module Oboe
52
55
  # Retrieves all traces written to the trace file
53
56
  #
54
57
  def self.get_all_traces
55
- io = File.open($trace_file, "r")
58
+ io = File.open($trace_file, 'r')
56
59
  contents = io.readlines(nil)
57
60
 
58
61
  return contents if contents.empty?
@@ -75,7 +78,7 @@ module Oboe
75
78
 
76
79
  class Event
77
80
  def self.metadataString(evt)
78
- evt.metadataString()
81
+ evt.metadataString
79
82
  end
80
83
  end
81
84
 
@@ -92,7 +95,7 @@ module Oboe
92
95
  rv = Oboe::Context.sampleRequest(layer, xtrace, tv_meta)
93
96
 
94
97
  # For older liboboe that returns true/false, just return that.
95
- return rv if [TrueClass, FalseClass].include?(rv.class) or (rv == 0)
98
+ return rv if [TrueClass, FalseClass].include?(rv.class) || (rv == 0)
96
99
 
97
100
  # liboboe version > 1.3.1 returning a bit masked integer with SampleRate and
98
101
  # source embedded
@@ -126,13 +129,13 @@ module Oboe
126
129
  end
127
130
 
128
131
  def set_sample_rate(rate)
129
- if Oboe.loaded
130
- # Update liboboe with the new SampleRate value
131
- Oboe::Context.setDefaultSampleRate(rate.to_i)
132
- end
132
+ return unless Oboe.loaded
133
+
134
+ # Update liboboe with the new SampleRate value
135
+ Oboe::Context.setDefaultSampleRate(rate.to_i)
133
136
  end
134
137
  end
135
138
  end
139
+ # rubocop:enable Style/Documentation
136
140
 
137
141
  Oboe.loaded = true
138
-
@@ -52,6 +52,7 @@ if defined?(Oboe::Config)
52
52
  # Oboe::Config[:action_view][:enabled] = true
53
53
  # Oboe::Config[:cassandra][:enabled] = true
54
54
  # Oboe::Config[:dalli][:enabled] = true
55
+ # Oboe::Config[:faraday][:enabled] = true
55
56
  # Oboe::Config[:memcache][:enabled] = true
56
57
  # Oboe::Config[:memcached][:enabled] = true
57
58
  # Oboe::Config[:mongo][:enabled] = true
@@ -74,6 +75,7 @@ if defined?(Oboe::Config)
74
75
  # Oboe::Config[:action_view][:collect_backtraces] = true
75
76
  # Oboe::Config[:cassandra][:collect_backtraces] = true
76
77
  # Oboe::Config[:dalli][:collect_backtraces] = false
78
+ # Oboe::Config[:faraday][:collect_backtraces] = false
77
79
  # Oboe::Config[:memcache][:collect_backtraces] = false
78
80
  # Oboe::Config[:memcached][:collect_backtraces] = false
79
81
  # Oboe::Config[:mongo][:collect_backtraces] = true
@@ -0,0 +1,142 @@
1
+ require 'minitest_helper'
2
+
3
+ describe Oboe::Inst::FaradayConnection do
4
+ before do
5
+ clear_all_traces
6
+ @collect_backtraces = Oboe::Config[:faraday][:collect_backtraces]
7
+ end
8
+
9
+ after do
10
+ Oboe::Config[:faraday][:collect_backtraces] = @collect_backtraces
11
+ end
12
+
13
+ it 'Faraday should be defined and ready' do
14
+ defined?(::Faraday).wont_match nil
15
+ end
16
+
17
+ it 'Faraday should have oboe methods defined' do
18
+ [ :run_request_with_oboe ].each do |m|
19
+ ::Faraday::Connection.method_defined?(m).must_equal true
20
+ end
21
+ end
22
+
23
+ it "should trace a Faraday request to an instr'd app" do
24
+ Oboe::API.start_trace('faraday_test') do
25
+ conn = Faraday.new(:url => 'http://www.appneta.com') do |faraday|
26
+ faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
27
+ end
28
+ response = conn.get '/?q=ruby_test_suite'
29
+ end
30
+
31
+ traces = get_all_traces
32
+ traces.count.must_equal 7
33
+
34
+ validate_outer_layers(traces, 'faraday_test')
35
+
36
+ traces[1]['Layer'].must_equal 'faraday'
37
+ traces[1].key?('Backtrace').must_equal Oboe::Config[:faraday][:collect_backtraces]
38
+
39
+ traces[3]['Layer'].must_equal 'net-http'
40
+ traces[3]['IsService'].must_equal '1'
41
+ traces[3]['RemoteProtocol'].must_equal 'HTTP'
42
+ traces[3]['RemoteHost'].must_equal 'www.appneta.com'
43
+ traces[3]['ServiceArg'].must_equal '/?q=ruby_test_suite'
44
+ traces[3]['HTTPMethod'].must_equal 'GET'
45
+ traces[3]['HTTPStatus'].must_equal '200'
46
+
47
+ traces[4]['Layer'].must_equal 'net-http'
48
+ traces[4]['Label'].must_equal 'exit'
49
+
50
+ traces[5]['Layer'].must_equal 'faraday'
51
+ traces[5]['Label'].must_equal 'exit'
52
+ end
53
+
54
+ it 'should trace a Faraday request' do
55
+ Oboe::API.start_trace('faraday_test') do
56
+ conn = Faraday.new(:url => 'http://www.google.com') do |faraday|
57
+ faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
58
+ end
59
+ response = conn.get '/?q=ruby_test_suite'
60
+ end
61
+
62
+ traces = get_all_traces
63
+ traces.count.must_equal 7
64
+
65
+ validate_outer_layers(traces, 'faraday_test')
66
+
67
+ traces[1]['Layer'].must_equal 'faraday'
68
+ traces[1].key?('Backtrace').must_equal Oboe::Config[:faraday][:collect_backtraces]
69
+
70
+ traces[3]['Layer'].must_equal 'net-http'
71
+ traces[3]['IsService'].must_equal '1'
72
+ traces[3]['RemoteProtocol'].must_equal 'HTTP'
73
+ traces[3]['RemoteHost'].must_equal 'www.google.com'
74
+ traces[3]['ServiceArg'].must_equal '/?q=ruby_test_suite'
75
+ traces[3]['HTTPMethod'].must_equal 'GET'
76
+ traces[3]['HTTPStatus'].must_equal '200'
77
+
78
+ traces[4]['Layer'].must_equal 'net-http'
79
+ traces[4]['Label'].must_equal 'exit'
80
+
81
+ traces[5]['Layer'].must_equal 'faraday'
82
+ traces[5]['Label'].must_equal 'exit'
83
+ end
84
+
85
+ it 'should trace a Faraday with an alternate adapter' do
86
+ Oboe::API.start_trace('faraday_test') do
87
+ conn = Faraday.new(:url => 'http://www.google.com') do |faraday|
88
+ faraday.adapter :excon
89
+ end
90
+ response = conn.get '/?q=ruby_test_suite'
91
+ end
92
+
93
+ traces = get_all_traces
94
+ traces.count.must_equal 5
95
+
96
+ validate_outer_layers(traces, 'faraday_test')
97
+
98
+ traces[1]['Layer'].must_equal 'faraday'
99
+ traces[1].key?('Backtrace').must_equal Oboe::Config[:faraday][:collect_backtraces]
100
+
101
+ traces[1]['IsService'].must_equal '1'
102
+ traces[1]['RemoteProtocol'].must_equal 'HTTP'
103
+ traces[1]['RemoteHost'].must_equal 'www.google.com'
104
+ traces[1]['ServiceArg'].must_equal '/?q=ruby_test_suite'
105
+ traces[1]['HTTPMethod'].downcase.must_equal 'get'
106
+
107
+ traces[2]['Layer'].must_equal 'faraday'
108
+ traces[2]['Label'].must_equal 'info'
109
+ traces[2]['HTTPStatus'].must_equal '200'
110
+
111
+ traces[3]['Layer'].must_equal 'faraday'
112
+ traces[3]['Label'].must_equal 'exit'
113
+ end
114
+
115
+ it 'should obey :collect_backtraces setting when true' do
116
+ Oboe::Config[:faraday][:collect_backtraces] = true
117
+
118
+ Oboe::API.start_trace('faraday_test') do
119
+ conn = Faraday.new(:url => 'http://www.google.com') do |faraday|
120
+ faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
121
+ end
122
+ response = conn.get '/?q=ruby_test_suite'
123
+ end
124
+
125
+ traces = get_all_traces
126
+ layer_has_key(traces, 'faraday', 'Backtrace')
127
+ end
128
+
129
+ it 'should obey :collect_backtraces setting when false' do
130
+ Oboe::Config[:faraday][:collect_backtraces] = false
131
+
132
+ Oboe::API.start_trace('faraday_test') do
133
+ conn = Faraday.new(:url => 'http://www.google.com') do |faraday|
134
+ faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
135
+ end
136
+ response = conn.get '/?q=ruby_test_suite'
137
+ end
138
+
139
+ traces = get_all_traces
140
+ layer_doesnt_have_key(traces, 'faraday', 'Backtrace')
141
+ end
142
+ end
@@ -67,6 +67,8 @@ if RUBY_VERSION >= '1.9.3'
67
67
  end
68
68
 
69
69
  it 'should trace command' do
70
+ # TODO: This randomly fails for a yet unknown reason.
71
+ skip
70
72
  Oboe::API.start_trace('moped_test', '', {}) do
71
73
  command = {}
72
74
  command[:mapreduce] = "users"
@@ -34,7 +34,6 @@ $trace_file = @trace_dir + "trace_output.bson"
34
34
  Oboe::Config[:verbose] = true
35
35
  Oboe::Config[:tracing_mode] = "always"
36
36
  Oboe::Config[:sample_rate] = 1000000
37
- Oboe::Ruby.initialize
38
37
  Oboe.logger.level = Logger::DEBUG
39
38
 
40
39
  ##
@@ -23,7 +23,7 @@ describe Oboe::Config do
23
23
  instrumentation = Oboe::Config.instrumentation_list
24
24
 
25
25
  # Verify the number of individual instrumentations
26
- instrumentation.count.must_equal 14
26
+ instrumentation.count.must_equal 15
27
27
 
28
28
  Oboe::Config[:action_controller][:enabled].must_equal true
29
29
  Oboe::Config[:action_view][:enabled].must_equal true
@@ -31,6 +31,7 @@ describe Oboe::Config do
31
31
  Oboe::Config[:cassandra][:enabled].must_equal true
32
32
  Oboe::Config[:dalli][:enabled].must_equal true
33
33
  Oboe::Config[:em_http_request][:enabled].must_equal false
34
+ Oboe::Config[:faraday][:enabled].must_equal true
34
35
  Oboe::Config[:nethttp][:enabled].must_equal true
35
36
  Oboe::Config[:memcached][:enabled].must_equal true
36
37
  Oboe::Config[:memcache][:enabled].must_equal true
@@ -46,6 +47,7 @@ describe Oboe::Config do
46
47
  Oboe::Config[:cassandra][:log_args].must_equal true
47
48
  Oboe::Config[:dalli][:log_args].must_equal true
48
49
  Oboe::Config[:em_http_request][:log_args].must_equal true
50
+ Oboe::Config[:faraday][:log_args].must_equal true
49
51
  Oboe::Config[:nethttp][:log_args].must_equal true
50
52
  Oboe::Config[:memcached][:log_args].must_equal true
51
53
  Oboe::Config[:memcache][:log_args].must_equal true
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.1.7
4
+ version: 2.7.2.2
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: 2014-09-08 00:00:00.000000000 Z
12
+ date: 2014-09-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -47,6 +47,7 @@ extra_rdoc_files:
47
47
  - LICENSE
48
48
  files:
49
49
  - .gitignore
50
+ - .rubocop.yml
50
51
  - .travis.yml
51
52
  - Appraisals
52
53
  - CHANGELOG.md
@@ -67,7 +68,6 @@ files:
67
68
  - get_version.rb
68
69
  - init.rb
69
70
  - lib/joboe_metal.rb
70
- - lib/method_profiling.rb
71
71
  - lib/oboe.rb
72
72
  - lib/oboe/api.rb
73
73
  - lib/oboe/api/layerinit.rb
@@ -100,6 +100,7 @@ files:
100
100
  - lib/oboe/inst/cassandra.rb
101
101
  - lib/oboe/inst/dalli.rb
102
102
  - lib/oboe/inst/em-http-request.rb
103
+ - lib/oboe/inst/faraday.rb
103
104
  - lib/oboe/inst/http.rb
104
105
  - lib/oboe/inst/memcache.rb
105
106
  - lib/oboe/inst/memcached.rb
@@ -111,6 +112,7 @@ files:
111
112
  - lib/oboe/instrumentation.rb
112
113
  - lib/oboe/loading.rb
113
114
  - lib/oboe/logger.rb
115
+ - lib/oboe/method_profiling.rb
114
116
  - lib/oboe/ruby.rb
115
117
  - lib/oboe/thread_local.rb
116
118
  - lib/oboe/util.rb
@@ -130,6 +132,7 @@ files:
130
132
  - test/instrumentation/cassandra_test.rb
131
133
  - test/instrumentation/dalli_test.rb
132
134
  - test/instrumentation/em_http_request_test.rb
135
+ - test/instrumentation/faraday_test.rb
133
136
  - test/instrumentation/http_test.rb
134
137
  - test/instrumentation/memcache_test.rb
135
138
  - test/instrumentation/memcached_test.rb
@@ -195,6 +198,7 @@ test_files:
195
198
  - test/instrumentation/moped_test.rb
196
199
  - test/instrumentation/rack_test.rb
197
200
  - test/instrumentation/memcache_test.rb
201
+ - test/instrumentation/faraday_test.rb
198
202
  - test/instrumentation/redis_lists_test.rb
199
203
  - test/instrumentation/cassandra_test.rb
200
204
  - test/instrumentation/memcached_test.rb