oboe 2.3.3.7 → 2.3.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,15 +8,17 @@ rvm:
8
8
 
9
9
  # Attempt Travis/Cassandra fix re: https://github.com/travis-ci/travis-ci/issues/1484
10
10
  before_install:
11
- - echo "127.0.0.1 " `hostname` | sudo tee /etc/hosts
12
- - sudo service cassandra start
11
+ # - sudo sh -c "echo 'JVM_OPTS=\"\${JVM_OPTS} -Djava.net.preferIPv4Stack=false\"' >> /usr/local/cassandra/conf/cassandra-env.sh"
12
+ # - echo "127.0.0.1 " `hostname` | sudo tee /etc/hosts
13
+ # - sudo service cassandra start
14
+ # - sleep 5
13
15
 
14
16
  install:
15
17
  - wget https://www.tracelytics.com/install_tracelytics.sh
16
18
  - sudo sh ./install_tracelytics.sh f51e2a43-0ee5-4851-8a54-825773b3218e
17
19
 
18
20
  before_script:
19
- - bundle install
21
+ - bundle install --without development
20
22
  - bundle exec rake compile
21
23
 
22
24
  services:
data/CHANGELOG CHANGED
@@ -1,4 +1,8 @@
1
- # oboe 2.3.3 (11/06/13)
1
+ # oboe 2.3.4.1 (11/21/13)
2
+
3
+ * Stacks that use a caching system like Varnish could see corrupted traces; fixed.
4
+
5
+ # oboe 2.3.3.7 (11/06/13)
2
6
 
3
7
  * Rename the _Init layer to "rack"
4
8
  * Decode URLS when reporting them
data/Gemfile CHANGED
@@ -4,13 +4,19 @@ source 'https://rubygems.org'
4
4
  gemspec :name => 'oboe'
5
5
 
6
6
  gem 'rake'
7
- gem 'appraisal'
8
7
 
9
8
  group :development, :test do
10
9
  gem 'minitest'
11
10
  gem 'minitest-reporters'
12
- gem 'debugger' unless (RUBY_VERSION =~ /^1.8/) == 0
13
11
  gem 'rack-test'
12
+ gem 'appraisal'
13
+ end
14
+
15
+ group :development do
16
+ gem 'ruby-debug', :platform => :mri_18
17
+ gem 'ruby-debug19', :platform => :mri_19, :require => 'ruby-debug'
18
+ gem 'debugger', :platform => :mri_20
19
+ gem 'perftools.rb', :platform => :mri, :require => 'perftools'
14
20
  end
15
21
 
16
22
  # Instrumented gems
@@ -5,6 +5,7 @@ begin
5
5
  require 'oboe/version'
6
6
  require 'oboe/logger'
7
7
  require 'oboe/util'
8
+ require 'oboe/xtrace'
8
9
  require 'base.rb'
9
10
 
10
11
  # If Oboe_metal is already defined then we are in a PaaS environment
@@ -16,6 +16,10 @@ if Oboe::Config[:nethttp][:enabled]
16
16
 
17
17
  Oboe::API.trace('net-http') do
18
18
  opts = {}
19
+ context = Oboe::Context.toString()
20
+ task_id = Oboe::XTrace.task_id(context)
21
+
22
+ # Collect KVs to report in the info event
19
23
  if args.length and args[0]
20
24
  req = args[0]
21
25
 
@@ -26,21 +30,34 @@ if Oboe::Config[:nethttp][:enabled]
26
30
  opts['HTTPMethod'] = req.method
27
31
  opts['Blacklisted'] = true if blacklisted
28
32
  opts['Backtrace'] = Oboe::API.backtrace if Oboe::Config[:nethttp][:collect_backtraces]
29
-
30
- req['X-Trace'] = Oboe::Context.toString() unless blacklisted
33
+
34
+ req['X-Trace'] = context unless blacklisted
31
35
  end
32
36
 
37
+ # The actual net::http call
33
38
  resp = request_without_oboe(*args, &block)
34
39
 
35
- opts['HTTPStatus'] = resp.code
36
- Oboe::API.log('net-http', 'info', opts)
37
-
40
+ # Re-attach net::http edge unless blacklisted and is a valid X-Trace ID
38
41
  unless blacklisted
39
42
  xtrace = resp.get_fields('X-Trace')
40
- if xtrace and xtrace.size and Oboe.tracing?
41
- Oboe::Context.fromString(xtrace[0])
43
+ xtrace = xtrace[0] if xtrace and xtrace.is_a?(Array)
44
+
45
+ if Oboe::XTrace.valid?(xtrace) and Oboe.tracing?
46
+
47
+ # Assure that we received back a valid X-Trace with the same task_id
48
+ if task_id == Oboe::XTrace.task_id(xtrace)
49
+ Oboe::Context.fromString(xtrace)
50
+ else
51
+ Oboe.logger.debug "Mismatched returned X-Trace ID : #{xtrace}"
52
+ end
42
53
  end
43
54
  end
55
+
56
+ opts['HTTPStatus'] = resp.code
57
+
58
+ # Log the info event with the KVs in opts
59
+ Oboe::API.log('net-http', 'info', opts)
60
+
44
61
  next resp
45
62
  end
46
63
  end
@@ -5,8 +5,8 @@ module Oboe
5
5
  module Version
6
6
  MAJOR = 2
7
7
  MINOR = 3
8
- PATCH = 3
9
- BUILD = 7
8
+ PATCH = 4
9
+ BUILD = 1
10
10
 
11
11
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
12
12
  end
@@ -0,0 +1,52 @@
1
+ # Copyright (c) 2013 AppNeta, Inc.
2
+ # All rights reserved.
3
+
4
+ module Oboe
5
+ module XTrace
6
+ class << self
7
+
8
+ ##
9
+ # Oboe::XTrace.valid?
10
+ #
11
+ # Perform basic validation on a potential X-Trace ID
12
+ #
13
+ def valid?(xtrace)
14
+ begin
15
+ xtrace = xtrace.to_s
16
+ valid = true
17
+
18
+ # Valid X-Trace IDs have a length of 58 bytes and start with '1b'
19
+ valid = false unless xtrace.length == 58 and (xtrace =~ /^1b/i) == 0
20
+
21
+ # The X-Trace ID shouldn't be an initialized empty ID
22
+ valid = false if (xtrace =~ /^1b0000000/i) == 0
23
+
24
+ valid
25
+ rescue StandardError => e
26
+ Oboe.logger.debug e.message
27
+ Oboe.logger.debug e.backtrace
28
+ false
29
+ end
30
+ end
31
+
32
+ ##
33
+ # Oboe::XTrace.task_id
34
+ #
35
+ # Extract and return the task_id portion of an X-Trace ID
36
+ #
37
+ def task_id(xtrace)
38
+ begin
39
+ return nil unless Oboe::XTrace.valid?(xtrace)
40
+
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
47
+ end
48
+
49
+ end
50
+ end
51
+ end
52
+
@@ -1,377 +1,386 @@
1
1
  require 'minitest_helper'
2
2
 
3
- describe Oboe::Inst::Cassandra do
4
- before do
5
- clear_all_traces
3
+ # Disable Cassandra tests until TravisCI issues are cleared up.
4
+ # https://github.com/travis-ci/travis-ci/issues/1053
5
+ # https://github.com/travis-ci/travis-ci/issues/840
6
+ # https://github.com/travis-ci/travis-ci/issues/1203
7
+ # https://github.com/travis-ci/travis-ci/issues/1053
8
+ if false
6
9
 
7
- @client = Cassandra.new("system", "127.0.0.1:9160", { :timeout => 10 })
8
- @client.disable_node_auto_discovery!
10
+ describe Oboe::Inst::Cassandra do
11
+ before do
12
+ clear_all_traces
9
13
 
10
- @ks_name = "AppNetaCassandraTest"
11
-
12
- ks_def = CassandraThrift::KsDef.new(:name => @ks_name,
13
- :strategy_class => "SimpleStrategy",
14
- :strategy_options => { 'replication_factor' => '2' },
15
- :cf_defs => [])
16
-
17
- @client.add_keyspace(ks_def) unless @client.keyspaces.include? @ks_name
18
- @client.keyspace = @ks_name
19
-
20
- unless @client.column_families.include? "Users"
21
- cf_def = CassandraThrift::CfDef.new(:keyspace => @ks_name, :name => "Users")
22
- @client.add_column_family(cf_def)
23
- end
24
-
25
- unless @client.column_families.include? "Statuses"
26
- cf_def = CassandraThrift::CfDef.new(:keyspace => @ks_name, :name => "Statuses")
27
- @client.add_column_family(cf_def)
28
- end
29
-
30
- # These are standard entry/exit KVs that are passed up with all mongo operations
31
- @entry_kvs = {
32
- 'Layer' => 'cassandra',
33
- 'Label' => 'entry',
34
- 'RemoteHost' => '127.0.0.1',
35
- 'RemotePort' => '9160' }
36
-
37
- @exit_kvs = { 'Layer' => 'cassandra', 'Label' => 'exit' }
38
- @collect_backtraces = Oboe::Config[:cassandra][:collect_backtraces]
39
- end
40
-
41
- after do
42
- Oboe::Config[:cassandra][:collect_backtraces] = @collect_backtraces
43
- @client.disconnect!
44
- end
14
+ @client = Cassandra.new("system", "127.0.0.1:9160", { :timeout => 10 })
15
+ @client.disable_node_auto_discovery!
45
16
 
46
- it 'Stock Cassandra should be loaded, defined and ready' do
47
- defined?(::Cassandra).wont_match nil
48
- end
17
+ @ks_name = "AppNetaCassandraTest"
18
+
19
+ ks_def = CassandraThrift::KsDef.new(:name => @ks_name,
20
+ :strategy_class => "SimpleStrategy",
21
+ :strategy_options => { 'replication_factor' => '2' },
22
+ :cf_defs => [])
23
+
24
+ @client.add_keyspace(ks_def) unless @client.keyspaces.include? @ks_name
25
+ @client.keyspace = @ks_name
26
+
27
+ unless @client.column_families.include? "Users"
28
+ cf_def = CassandraThrift::CfDef.new(:keyspace => @ks_name, :name => "Users")
29
+ @client.add_column_family(cf_def)
30
+ end
31
+
32
+ unless @client.column_families.include? "Statuses"
33
+ cf_def = CassandraThrift::CfDef.new(:keyspace => @ks_name, :name => "Statuses")
34
+ @client.add_column_family(cf_def)
35
+ end
36
+
37
+ # These are standard entry/exit KVs that are passed up with all mongo operations
38
+ @entry_kvs = {
39
+ 'Layer' => 'cassandra',
40
+ 'Label' => 'entry',
41
+ 'RemoteHost' => '127.0.0.1',
42
+ 'RemotePort' => '9160' }
43
+
44
+ @exit_kvs = { 'Layer' => 'cassandra', 'Label' => 'exit' }
45
+ @collect_backtraces = Oboe::Config[:cassandra][:collect_backtraces]
46
+ end
49
47
 
50
- it 'Cassandra should have oboe methods defined' do
51
- [ :insert, :remove, :count_columns, :get_columns, :multi_get_columns, :get,
52
- :multi_get, :get_range_single, :get_range_batch, :get_indexed_slices,
53
- :create_index, :drop_index, :add_column_family, :drop_column_family,
54
- :add_keyspace, :drop_keyspace ].each do |m|
55
- ::Cassandra.method_defined?("#{m}_with_oboe").must_equal true
48
+ after do
49
+ Oboe::Config[:cassandra][:collect_backtraces] = @collect_backtraces
50
+ @client.disconnect!
56
51
  end
57
- # Special 'exists?' case
58
- ::Cassandra.method_defined?("exists_with_oboe?").must_equal true
59
- end
60
-
61
- it 'should trace insert' do
62
- Oboe::API.start_trace('cassandra_test', '', {}) do
63
- user = {'screen_name' => 'larry', "blah" => "ok"}
64
- @client.insert(:Users, '5', user, { :ttl => 600, :consistency => 1})
52
+
53
+ it 'Stock Cassandra should be loaded, defined and ready' do
54
+ defined?(::Cassandra).wont_match nil
65
55
  end
66
-
67
- traces = get_all_traces
68
-
69
- traces.count.must_equal 4
70
- validate_outer_layers(traces, 'cassandra_test')
71
-
72
- validate_event_keys(traces[1], @entry_kvs)
73
- traces[1]['Op'].must_equal "insert"
74
- traces[1]['Cf'].must_equal "Users"
75
- traces[1]['Key'].must_equal "\"5\""
76
- traces[1]['Consistency'].must_equal "1"
77
- traces[1]['Ttl'].must_equal "600"
78
- traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
79
- validate_event_keys(traces[2], @exit_kvs)
80
- end
81
56
 
82
- it 'should trace remove' do
83
- Oboe::API.start_trace('cassandra_test', '', {}) do
84
- @client.remove(:Users, '5', 'blah')
57
+ it 'Cassandra should have oboe methods defined' do
58
+ [ :insert, :remove, :count_columns, :get_columns, :multi_get_columns, :get,
59
+ :multi_get, :get_range_single, :get_range_batch, :get_indexed_slices,
60
+ :create_index, :drop_index, :add_column_family, :drop_column_family,
61
+ :add_keyspace, :drop_keyspace ].each do |m|
62
+ ::Cassandra.method_defined?("#{m}_with_oboe").must_equal true
63
+ end
64
+ # Special 'exists?' case
65
+ ::Cassandra.method_defined?("exists_with_oboe?").must_equal true
85
66
  end
86
67
 
87
- traces = get_all_traces
88
-
89
- traces.count.must_equal 4
90
- validate_outer_layers(traces, 'cassandra_test')
91
-
92
- validate_event_keys(traces[1], @entry_kvs)
93
- traces[1]['Op'].must_equal "remove"
94
- traces[1]['Cf'].must_equal "Users"
95
- traces[1]['Key'].must_equal "\"5\""
96
- traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
97
- validate_event_keys(traces[2], @exit_kvs)
98
- end
99
-
100
- it 'should trace count_columns' do
101
- @client.insert(:Statuses, '12', {'body' => 'v1', 'user' => 'v2'})
102
-
103
- Oboe::API.start_trace('cassandra_test', '', {}) do
104
- @client.count_columns(:Statuses, '12', :count => 50)
68
+ it 'should trace insert' do
69
+ Oboe::API.start_trace('cassandra_test', '', {}) do
70
+ user = {'screen_name' => 'larry', "blah" => "ok"}
71
+ @client.insert(:Users, '5', user, { :ttl => 600, :consistency => 1})
72
+ end
73
+
74
+ traces = get_all_traces
75
+
76
+ traces.count.must_equal 4
77
+ validate_outer_layers(traces, 'cassandra_test')
78
+
79
+ validate_event_keys(traces[1], @entry_kvs)
80
+ traces[1]['Op'].must_equal "insert"
81
+ traces[1]['Cf'].must_equal "Users"
82
+ traces[1]['Key'].must_equal "\"5\""
83
+ traces[1]['Consistency'].must_equal "1"
84
+ traces[1]['Ttl'].must_equal "600"
85
+ traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
86
+ validate_event_keys(traces[2], @exit_kvs)
105
87
  end
106
-
107
- traces = get_all_traces
108
-
109
- traces.count.must_equal 4
110
- validate_outer_layers(traces, 'cassandra_test')
111
-
112
- validate_event_keys(traces[1], @entry_kvs)
113
- traces[1]['Op'].must_equal "count_columns"
114
- traces[1]['Cf'].must_equal "Statuses"
115
- traces[1]['Key'].must_equal "\"12\""
116
- traces[1]['Count'].must_equal "50"
117
- traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
118
- validate_event_keys(traces[2], @exit_kvs)
119
- end
120
88
 
121
- it 'should trace get_columns' do
122
- Oboe::API.start_trace('cassandra_test', '', {}) do
123
- @client.get_columns(:Statuses, '12', ['body'])
89
+ it 'should trace remove' do
90
+ Oboe::API.start_trace('cassandra_test', '', {}) do
91
+ @client.remove(:Users, '5', 'blah')
92
+ end
93
+
94
+ traces = get_all_traces
95
+
96
+ traces.count.must_equal 4
97
+ validate_outer_layers(traces, 'cassandra_test')
98
+
99
+ validate_event_keys(traces[1], @entry_kvs)
100
+ traces[1]['Op'].must_equal "remove"
101
+ traces[1]['Cf'].must_equal "Users"
102
+ traces[1]['Key'].must_equal "\"5\""
103
+ traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
104
+ validate_event_keys(traces[2], @exit_kvs)
124
105
  end
125
106
 
126
- traces = get_all_traces
127
-
128
- traces.count.must_equal 4
129
- validate_outer_layers(traces, 'cassandra_test')
130
-
131
- validate_event_keys(traces[1], @entry_kvs)
132
- traces[1]['Op'].must_equal "get_columns"
133
- traces[1]['Cf'].must_equal "Statuses"
134
- traces[1]['Key'].must_equal "\"12\""
135
- traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
136
- validate_event_keys(traces[2], @exit_kvs)
137
- end
107
+ it 'should trace count_columns' do
108
+ @client.insert(:Statuses, '12', {'body' => 'v1', 'user' => 'v2'})
109
+
110
+ Oboe::API.start_trace('cassandra_test', '', {}) do
111
+ @client.count_columns(:Statuses, '12', :count => 50)
112
+ end
113
+
114
+ traces = get_all_traces
115
+
116
+ traces.count.must_equal 4
117
+ validate_outer_layers(traces, 'cassandra_test')
118
+
119
+ validate_event_keys(traces[1], @entry_kvs)
120
+ traces[1]['Op'].must_equal "count_columns"
121
+ traces[1]['Cf'].must_equal "Statuses"
122
+ traces[1]['Key'].must_equal "\"12\""
123
+ traces[1]['Count'].must_equal "50"
124
+ traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
125
+ validate_event_keys(traces[2], @exit_kvs)
126
+ end
138
127
 
139
- it 'should trace multi_get_columns' do
140
- Oboe::API.start_trace('cassandra_test', '', {}) do
141
- @client.multi_get_columns(:Users, ['12', '5'], ['body'])
128
+ it 'should trace get_columns' do
129
+ Oboe::API.start_trace('cassandra_test', '', {}) do
130
+ @client.get_columns(:Statuses, '12', ['body'])
131
+ end
132
+
133
+ traces = get_all_traces
134
+
135
+ traces.count.must_equal 4
136
+ validate_outer_layers(traces, 'cassandra_test')
137
+
138
+ validate_event_keys(traces[1], @entry_kvs)
139
+ traces[1]['Op'].must_equal "get_columns"
140
+ traces[1]['Cf'].must_equal "Statuses"
141
+ traces[1]['Key'].must_equal "\"12\""
142
+ traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
143
+ validate_event_keys(traces[2], @exit_kvs)
142
144
  end
143
-
144
- traces = get_all_traces
145
-
146
- traces.count.must_equal 4
147
- validate_outer_layers(traces, 'cassandra_test')
148
-
149
- validate_event_keys(traces[1], @entry_kvs)
150
- traces[1]['Op'].must_equal "multi_get_columns"
151
- traces[1]['Cf'].must_equal "Users"
152
- traces[1]['Key'].must_equal "[\"12\", \"5\"]"
153
- traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
154
- validate_event_keys(traces[2], @exit_kvs)
155
- end
156
145
 
157
- it 'should trace get' do
158
- Oboe::API.start_trace('cassandra_test', '', {}) do
159
- @client.get(:Statuses, '12', :reversed => true)
146
+ it 'should trace multi_get_columns' do
147
+ Oboe::API.start_trace('cassandra_test', '', {}) do
148
+ @client.multi_get_columns(:Users, ['12', '5'], ['body'])
149
+ end
150
+
151
+ traces = get_all_traces
152
+
153
+ traces.count.must_equal 4
154
+ validate_outer_layers(traces, 'cassandra_test')
155
+
156
+ validate_event_keys(traces[1], @entry_kvs)
157
+ traces[1]['Op'].must_equal "multi_get_columns"
158
+ traces[1]['Cf'].must_equal "Users"
159
+ traces[1]['Key'].must_equal "[\"12\", \"5\"]"
160
+ traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
161
+ validate_event_keys(traces[2], @exit_kvs)
160
162
  end
161
-
162
- traces = get_all_traces
163
-
164
- traces.count.must_equal 4
165
- validate_outer_layers(traces, 'cassandra_test')
166
-
167
- validate_event_keys(traces[1], @entry_kvs)
168
- traces[1]['Op'].must_equal "get"
169
- traces[1]['Cf'].must_equal "Statuses"
170
- traces[1]['Key'].must_equal "\"12\""
171
- traces[1]['Reversed'].must_equal "true"
172
- traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
173
- validate_event_keys(traces[2], @exit_kvs)
174
- end
175
163
 
176
- it 'should trace exists?' do
177
- Oboe::API.start_trace('cassandra_test', '', {}) do
178
- @client.exists?(:Statuses, '12')
179
- @client.exists?(:Statuses, '12', 'body')
164
+ it 'should trace get' do
165
+ Oboe::API.start_trace('cassandra_test', '', {}) do
166
+ @client.get(:Statuses, '12', :reversed => true)
167
+ end
168
+
169
+ traces = get_all_traces
170
+
171
+ traces.count.must_equal 4
172
+ validate_outer_layers(traces, 'cassandra_test')
173
+
174
+ validate_event_keys(traces[1], @entry_kvs)
175
+ traces[1]['Op'].must_equal "get"
176
+ traces[1]['Cf'].must_equal "Statuses"
177
+ traces[1]['Key'].must_equal "\"12\""
178
+ traces[1]['Reversed'].must_equal "true"
179
+ traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
180
+ validate_event_keys(traces[2], @exit_kvs)
180
181
  end
181
-
182
- traces = get_all_traces
183
-
184
- traces.count.must_equal 6
185
- validate_outer_layers(traces, 'cassandra_test')
186
-
187
- validate_event_keys(traces[1], @entry_kvs)
188
- traces[1]['Op'].must_equal "exists?"
189
- traces[1]['Cf'].must_equal "Statuses"
190
- traces[1]['Key'].must_equal "\"12\""
191
- traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
192
- validate_event_keys(traces[2], @exit_kvs)
193
-
194
- traces[3]['Op'].must_equal "exists?"
195
- traces[3]['Cf'].must_equal "Statuses"
196
- traces[3]['Key'].must_equal "\"12\""
197
- traces[3].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
198
- end
199
182
 
200
- it 'should trace get_range_keys' do
201
- Oboe::API.start_trace('cassandra_test', '', {}) do
202
- @client.get_range_keys(:Statuses, :key_count => 4)
183
+ it 'should trace exists?' do
184
+ Oboe::API.start_trace('cassandra_test', '', {}) do
185
+ @client.exists?(:Statuses, '12')
186
+ @client.exists?(:Statuses, '12', 'body')
187
+ end
188
+
189
+ traces = get_all_traces
190
+
191
+ traces.count.must_equal 6
192
+ validate_outer_layers(traces, 'cassandra_test')
193
+
194
+ validate_event_keys(traces[1], @entry_kvs)
195
+ traces[1]['Op'].must_equal "exists?"
196
+ traces[1]['Cf'].must_equal "Statuses"
197
+ traces[1]['Key'].must_equal "\"12\""
198
+ traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
199
+ validate_event_keys(traces[2], @exit_kvs)
200
+
201
+ traces[3]['Op'].must_equal "exists?"
202
+ traces[3]['Cf'].must_equal "Statuses"
203
+ traces[3]['Key'].must_equal "\"12\""
204
+ traces[3].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
203
205
  end
204
-
205
- traces = get_all_traces
206
-
207
- traces.count.must_equal 4
208
- validate_outer_layers(traces, 'cassandra_test')
209
-
210
- validate_event_keys(traces[1], @entry_kvs)
211
- traces[1]['Op'].must_equal "get_range_batch"
212
- traces[1]['Cf'].must_equal "Statuses"
213
- traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
214
- validate_event_keys(traces[2], @exit_kvs)
215
- end
216
206
 
217
- it 'should trace create_index' do
218
- Oboe::API.start_trace('cassandra_test', '', {}) do
219
- @client.create_index(@ks_name, 'Statuses', 'column_name', 'LongType')
207
+ it 'should trace get_range_keys' do
208
+ Oboe::API.start_trace('cassandra_test', '', {}) do
209
+ @client.get_range_keys(:Statuses, :key_count => 4)
210
+ end
211
+
212
+ traces = get_all_traces
213
+
214
+ traces.count.must_equal 4
215
+ validate_outer_layers(traces, 'cassandra_test')
216
+
217
+ validate_event_keys(traces[1], @entry_kvs)
218
+ traces[1]['Op'].must_equal "get_range_batch"
219
+ traces[1]['Cf'].must_equal "Statuses"
220
+ traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
221
+ validate_event_keys(traces[2], @exit_kvs)
220
222
  end
221
223
 
222
- traces = get_all_traces
223
-
224
- traces.count.must_equal 4
225
- validate_outer_layers(traces, 'cassandra_test')
226
-
227
- validate_event_keys(traces[1], @entry_kvs)
228
- traces[1]['Op'].must_equal "create_index"
229
- traces[1]['Cf'].must_equal "Statuses"
230
- traces[1]['Keyspace'].must_equal @ks_name
231
- traces[1]['Column_name'].must_equal "column_name"
232
- traces[1]['Validation_class'].must_equal "LongType"
233
- traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
234
- validate_event_keys(traces[2], @exit_kvs)
235
-
236
- # Clean up
237
- @client.drop_index(@ks_name, 'Statuses', 'column_name')
238
- end
239
-
240
- it 'should trace drop_index' do
241
- # Prep
242
- @client.create_index(@ks_name, 'Statuses', 'column_name', 'LongType')
224
+ it 'should trace create_index' do
225
+ Oboe::API.start_trace('cassandra_test', '', {}) do
226
+ @client.create_index(@ks_name, 'Statuses', 'column_name', 'LongType')
227
+ end
243
228
 
244
- Oboe::API.start_trace('cassandra_test', '', {}) do
229
+ traces = get_all_traces
230
+
231
+ traces.count.must_equal 4
232
+ validate_outer_layers(traces, 'cassandra_test')
233
+
234
+ validate_event_keys(traces[1], @entry_kvs)
235
+ traces[1]['Op'].must_equal "create_index"
236
+ traces[1]['Cf'].must_equal "Statuses"
237
+ traces[1]['Keyspace'].must_equal @ks_name
238
+ traces[1]['Column_name'].must_equal "column_name"
239
+ traces[1]['Validation_class'].must_equal "LongType"
240
+ traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
241
+ validate_event_keys(traces[2], @exit_kvs)
242
+
243
+ # Clean up
245
244
  @client.drop_index(@ks_name, 'Statuses', 'column_name')
246
245
  end
247
246
 
248
- traces = get_all_traces
249
-
250
- traces.count.must_equal 4
251
- validate_outer_layers(traces, 'cassandra_test')
252
-
253
- validate_event_keys(traces[1], @entry_kvs)
254
- traces[1]['Op'].must_equal "drop_index"
255
- traces[1]['Cf'].must_equal "Statuses"
256
- traces[1]['Keyspace'].must_equal @ks_name
257
- traces[1]['Column_name'].must_equal "column_name"
258
- traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
259
- validate_event_keys(traces[2], @exit_kvs)
260
- end
247
+ it 'should trace drop_index' do
248
+ # Prep
249
+ @client.create_index(@ks_name, 'Statuses', 'column_name', 'LongType')
261
250
 
262
- it 'should trace get_indexed_slices' do
263
- @client.create_index(@ks_name, 'Statuses', 'x', 'LongType')
264
- Oboe::API.start_trace('cassandra_test', '', {}) do
265
- expressions = [
266
- { :column_name => 'x',
267
- :value => [0,20].pack("NN"),
268
- :comparison => "=="},
269
- { :column_name => 'non_indexed',
270
- :value => [5].pack("N*"),
271
- :comparison => ">"} ]
272
- @client.get_indexed_slices(:Statuses, expressions).length
251
+ Oboe::API.start_trace('cassandra_test', '', {}) do
252
+ @client.drop_index(@ks_name, 'Statuses', 'column_name')
253
+ end
254
+
255
+ traces = get_all_traces
256
+
257
+ traces.count.must_equal 4
258
+ validate_outer_layers(traces, 'cassandra_test')
259
+
260
+ validate_event_keys(traces[1], @entry_kvs)
261
+ traces[1]['Op'].must_equal "drop_index"
262
+ traces[1]['Cf'].must_equal "Statuses"
263
+ traces[1]['Keyspace'].must_equal @ks_name
264
+ traces[1]['Column_name'].must_equal "column_name"
265
+ traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
266
+ validate_event_keys(traces[2], @exit_kvs)
273
267
  end
274
-
275
- traces = get_all_traces
276
-
277
- traces.count.must_equal 4
278
- validate_outer_layers(traces, 'cassandra_test')
279
-
280
- validate_event_keys(traces[1], @entry_kvs)
281
- traces[1]['Op'].must_equal "get_indexed_slices"
282
- traces[1]['Cf'].must_equal "Statuses"
283
- traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
284
- validate_event_keys(traces[2], @exit_kvs)
285
- end
286
-
287
- it 'should trace add and remove of column family' do
288
- cf_name = (0...10).map{ ('a'..'z').to_a[rand(26)] }.join
289
- cf_def = CassandraThrift::CfDef.new(:keyspace => @ks_name, :name => cf_name)
290
-
291
- Oboe::API.start_trace('cassandra_test', '', {}) do
292
- @client.add_column_family(cf_def)
293
- @client.drop_column_family(cf_name)
268
+
269
+ it 'should trace get_indexed_slices' do
270
+ @client.create_index(@ks_name, 'Statuses', 'x', 'LongType')
271
+ Oboe::API.start_trace('cassandra_test', '', {}) do
272
+ expressions = [
273
+ { :column_name => 'x',
274
+ :value => [0,20].pack("NN"),
275
+ :comparison => "=="},
276
+ { :column_name => 'non_indexed',
277
+ :value => [5].pack("N*"),
278
+ :comparison => ">"} ]
279
+ @client.get_indexed_slices(:Statuses, expressions).length
280
+ end
281
+
282
+ traces = get_all_traces
283
+
284
+ traces.count.must_equal 4
285
+ validate_outer_layers(traces, 'cassandra_test')
286
+
287
+ validate_event_keys(traces[1], @entry_kvs)
288
+ traces[1]['Op'].must_equal "get_indexed_slices"
289
+ traces[1]['Cf'].must_equal "Statuses"
290
+ traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
291
+ validate_event_keys(traces[2], @exit_kvs)
294
292
  end
295
293
 
296
- traces = get_all_traces
297
-
298
- traces.count.must_equal 6
299
- validate_outer_layers(traces, 'cassandra_test')
294
+ it 'should trace add and remove of column family' do
295
+ cf_name = (0...10).map{ ('a'..'z').to_a[rand(26)] }.join
296
+ cf_def = CassandraThrift::CfDef.new(:keyspace => @ks_name, :name => cf_name)
300
297
 
301
- validate_event_keys(traces[1], @entry_kvs)
302
- traces[1]['Op'].must_equal "add_column_family"
303
- traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
304
- validate_event_keys(traces[2], @exit_kvs)
305
-
306
- traces[3]['Op'].must_equal "drop_column_family"
307
- traces[3]['Cf'].must_equal cf_name
308
- traces[3].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
309
- end
310
-
311
- it 'should trace adding a keyspace' do
312
- ks_name = (0...10).map{ ('a'..'z').to_a[rand(26)] }.join
313
- column_families = [{:name =>"a"}, {:name => "b", :type => :super}]
314
- ks_def = CassandraThrift::KsDef.new(:name => ks_name,
315
- :strategy_class => "org.apache.cassandra.locator.SimpleStrategy",
316
- :strategy_options => { 'replication_factor' => '2' },
317
- :cf_defs => [])
318
-
319
- Oboe::API.start_trace('cassandra_test', '', {}) do
320
- @client.add_keyspace(ks_def)
321
- @client.keyspace = ks_name
298
+ Oboe::API.start_trace('cassandra_test', '', {}) do
299
+ @client.add_column_family(cf_def)
300
+ @client.drop_column_family(cf_name)
301
+ end
302
+
303
+ traces = get_all_traces
304
+
305
+ traces.count.must_equal 6
306
+ validate_outer_layers(traces, 'cassandra_test')
307
+
308
+ validate_event_keys(traces[1], @entry_kvs)
309
+ traces[1]['Op'].must_equal "add_column_family"
310
+ traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
311
+ validate_event_keys(traces[2], @exit_kvs)
312
+
313
+ traces[3]['Op'].must_equal "drop_column_family"
314
+ traces[3]['Cf'].must_equal cf_name
315
+ traces[3].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
322
316
  end
323
317
 
324
- traces = get_all_traces
325
-
326
- traces.count.must_equal 4
327
- validate_outer_layers(traces, 'cassandra_test')
328
-
329
- validate_event_keys(traces[1], @entry_kvs)
330
- traces[1]['Op'].must_equal "add_keyspace"
331
- traces[1]['Name'].must_equal ks_name
332
- traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
333
- validate_event_keys(traces[2], @exit_kvs)
334
- end
335
-
336
- it 'should trace the removal of a keyspace' do
337
- Oboe::API.start_trace('cassandra_test', '', {}) do
338
- @client.drop_keyspace(@ks_name)
318
+ it 'should trace adding a keyspace' do
319
+ ks_name = (0...10).map{ ('a'..'z').to_a[rand(26)] }.join
320
+ column_families = [{:name =>"a"}, {:name => "b", :type => :super}]
321
+ ks_def = CassandraThrift::KsDef.new(:name => ks_name,
322
+ :strategy_class => "org.apache.cassandra.locator.SimpleStrategy",
323
+ :strategy_options => { 'replication_factor' => '2' },
324
+ :cf_defs => [])
325
+
326
+ Oboe::API.start_trace('cassandra_test', '', {}) do
327
+ @client.add_keyspace(ks_def)
328
+ @client.keyspace = ks_name
329
+ end
330
+
331
+ traces = get_all_traces
332
+
333
+ traces.count.must_equal 4
334
+ validate_outer_layers(traces, 'cassandra_test')
335
+
336
+ validate_event_keys(traces[1], @entry_kvs)
337
+ traces[1]['Op'].must_equal "add_keyspace"
338
+ traces[1]['Name'].must_equal ks_name
339
+ traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
340
+ validate_event_keys(traces[2], @exit_kvs)
339
341
  end
340
342
 
341
- traces = get_all_traces
343
+ it 'should trace the removal of a keyspace' do
344
+ Oboe::API.start_trace('cassandra_test', '', {}) do
345
+ @client.drop_keyspace(@ks_name)
346
+ end
347
+
348
+ traces = get_all_traces
349
+
350
+ traces.count.must_equal 4
351
+ validate_outer_layers(traces, 'cassandra_test')
352
+
353
+ validate_event_keys(traces[1], @entry_kvs)
354
+ traces[1]['Op'].must_equal "drop_keyspace"
355
+ traces[1]['Name'].must_equal @ks_name
356
+ traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
357
+ validate_event_keys(traces[2], @exit_kvs)
358
+ end
342
359
 
343
- traces.count.must_equal 4
344
- validate_outer_layers(traces, 'cassandra_test')
345
-
346
- validate_event_keys(traces[1], @entry_kvs)
347
- traces[1]['Op'].must_equal "drop_keyspace"
348
- traces[1]['Name'].must_equal @ks_name
349
- traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces]
350
- validate_event_keys(traces[2], @exit_kvs)
351
- end
352
-
353
- it "should obey :collect_backtraces setting when true" do
354
- Oboe::Config[:cassandra][:collect_backtraces] = true
360
+ it "should obey :collect_backtraces setting when true" do
361
+ Oboe::Config[:cassandra][:collect_backtraces] = true
355
362
 
356
- Oboe::API.start_trace('cassandra_test', '', {}) do
357
- user = {'screen_name' => 'larry', "blah" => "ok"}
358
- @client.insert(:Users, '5', user, { :ttl => 600, :consistency => 1})
363
+ Oboe::API.start_trace('cassandra_test', '', {}) do
364
+ user = {'screen_name' => 'larry', "blah" => "ok"}
365
+ @client.insert(:Users, '5', user, { :ttl => 600, :consistency => 1})
366
+ end
367
+
368
+ traces = get_all_traces
369
+ layer_has_key(traces, 'cassandra', 'Backtrace')
359
370
  end
360
371
 
361
- traces = get_all_traces
362
- layer_has_key(traces, 'cassandra', 'Backtrace')
363
- end
372
+ it "should obey :collect_backtraces setting when false" do
373
+ Oboe::Config[:cassandra][:collect_backtraces] = false
364
374
 
365
- it "should obey :collect_backtraces setting when false" do
366
- Oboe::Config[:cassandra][:collect_backtraces] = false
375
+ Oboe::API.start_trace('cassandra_test', '', {}) do
376
+ user = {'screen_name' => 'larry', "blah" => "ok"}
377
+ @client.insert(:Users, '5', user, { :ttl => 600, :consistency => 1})
378
+ end
367
379
 
368
- Oboe::API.start_trace('cassandra_test', '', {}) do
369
- user = {'screen_name' => 'larry', "blah" => "ok"}
370
- @client.insert(:Users, '5', user, { :ttl => 600, :consistency => 1})
380
+ traces = get_all_traces
381
+ layer_doesnt_have_key(traces, 'cassandra', 'Backtrace')
371
382
  end
372
-
373
- traces = get_all_traces
374
- layer_doesnt_have_key(traces, 'cassandra', 'Backtrace')
383
+
375
384
  end
376
-
377
- end
385
+
386
+ end # false
@@ -21,7 +21,7 @@ describe Oboe::Inst do
21
21
  end
22
22
  end
23
23
 
24
- it "should trace a Net::HTTP request" do
24
+ it "should trace a Net::HTTP request to an instr'd app" do
25
25
  Oboe::API.start_trace('net-http_test', '', {}) do
26
26
  uri = URI('https://www.appneta.com')
27
27
  http = Net::HTTP.new(uri.host, uri.port)
@@ -44,6 +44,29 @@ describe Oboe::Inst do
44
44
  traces[2].has_key?('Backtrace').must_equal Oboe::Config[:nethttp][:collect_backtraces]
45
45
  end
46
46
 
47
+ it "should trace a Net::HTTP request" do
48
+ Oboe::API.start_trace('net-http_test', '', {}) do
49
+ uri = URI('https://www.google.com')
50
+ http = Net::HTTP.new(uri.host, uri.port)
51
+ http.use_ssl = true
52
+ http.get('/?q=test').read_body
53
+ end
54
+
55
+ traces = get_all_traces
56
+ traces.count.must_equal 5
57
+
58
+ validate_outer_layers(traces, 'net-http_test')
59
+
60
+ traces[1]['Layer'].must_equal 'net-http'
61
+ traces[2]['IsService'].must_equal "1"
62
+ traces[2]['RemoteProtocol'].must_equal "HTTPS"
63
+ traces[2]['RemoteHost'].must_equal "www.google.com"
64
+ traces[2]['ServiceArg'].must_equal "/?q=test"
65
+ traces[2]['HTTPMethod'].must_equal "GET"
66
+ traces[2]['HTTPStatus'].must_equal "200"
67
+ traces[2].has_key?('Backtrace').must_equal Oboe::Config[:nethttp][:collect_backtraces]
68
+ end
69
+
47
70
  it "should obey :collect_backtraces setting when true" do
48
71
  Oboe::Config[:nethttp][:collect_backtraces] = true
49
72
 
@@ -283,7 +283,7 @@ describe Oboe::Inst::Mongo do
283
283
  traces[1]['Collection'].must_equal "testCollection"
284
284
  traces[1].has_key?('Backtrace').must_equal Oboe::Config[:mongo][:collect_backtraces]
285
285
  traces[1]['QueryOp'].must_equal "find"
286
- traces[1]['Query'].must_equal "{\"name\":\"MyName\",\"limit\":1}"
286
+ traces[1].has_key?('Query').must_equal true
287
287
  traces[1]['Limit'].must_equal "1"
288
288
  end
289
289
 
@@ -0,0 +1,35 @@
1
+ require 'minitest_helper'
2
+
3
+ describe Oboe::XTrace do
4
+
5
+ it 'should correctly validate X-Trace IDs' do
6
+ # Invalid X-Trace IDs
7
+ Oboe::XTrace.valid?("").must_equal false
8
+ Oboe::XTrace.valid?(nil).must_equal false
9
+ Oboe::XTrace.valid?("1B00000000000000000000000000000000000000000000000000000000").must_equal false
10
+ Oboe::XTrace.valid?("1b").must_equal false
11
+ Oboe::XTrace.valid?("29348209348").must_equal false
12
+
13
+ # Standard X-Trace IDs
14
+ Oboe::XTrace.valid?("1B7435A9FE510AE4533414D425DADF4E180D2B4E3649E60702469DB05F").must_equal true
15
+ Oboe::XTrace.valid?("1BA462ADE6CFE479081764CC476AA983351DC51B1BCB3468DA6F06EEFA").must_equal true
16
+ Oboe::XTrace.valid?("1BADFDFB3DBA36323B2E0975925D0DAE12D10BA5946809504DC4B81FF6").must_equal true
17
+
18
+ # X-Trace IDs with lower-case alpha chars
19
+ Oboe::XTrace.valid?("1bf9861cb12e2a257247a8195654e56d30b2f4e2d4fce67c321ad58495").must_equal true
20
+ Oboe::XTrace.valid?("1b258b2c1d6914f3c6085cb72e7cc93e145b401d4356aa24ef7294b2d6").must_equal true
21
+ end
22
+
23
+ it 'should correctly extract task IDs from X-Trace IDs' do
24
+ task_id = Oboe::XTrace.task_id("1BF86B3D3342FCECAECE33C6411379BB171505DB6A136DFAEBDF742362")
25
+ task_id.is_a?(String).must_equal true
26
+ task_id.must_equal "F86B3D3342FCECAECE33C6411379BB171505DB6A"
27
+ task_id.length.must_equal 40
28
+
29
+ task_id = Oboe::XTrace.task_id("1B77970F82332EE22FF04C249FCBA8F63E8AFA2C6730E209453259B2D6")
30
+ task_id.is_a?(String).must_equal true
31
+ task_id.must_equal "77970F82332EE22FF04C249FCBA8F63E8AFA2C67"
32
+ task_id.length.must_equal 40
33
+ end
34
+
35
+ end
metadata CHANGED
@@ -1,66 +1,75 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: oboe
3
- version: !ruby/object:Gem::Version
4
- version: 2.3.3.7
3
+ version: !ruby/object:Gem::Version
4
+ hash: 101
5
+ prerelease:
6
+ segments:
7
+ - 2
8
+ - 3
9
+ - 4
10
+ - 1
11
+ version: 2.3.4.1
5
12
  platform: ruby
6
- authors:
13
+ authors:
7
14
  - Peter Giacomo Lombardo
8
15
  - Spiros Eliopoulos
9
16
  autorequire:
10
17
  bindir: bin
11
18
  cert_chain: []
12
- date: 2013-11-15 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
19
+
20
+ date: 2013-11-22 00:00:00 Z
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
15
23
  name: rake
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - '>='
19
- - !ruby/object:Gem::Version
20
- version: '0'
21
- type: :development
22
24
  prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - '>='
26
- - !ruby/object:Gem::Version
27
- version: '0'
28
- - !ruby/object:Gem::Dependency
29
- name: minitest
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - '>='
33
- - !ruby/object:Gem::Version
34
- version: '0'
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ hash: 3
31
+ segments:
32
+ - 0
33
+ version: "0"
35
34
  type: :development
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: minitest
36
38
  prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - '>='
40
- - !ruby/object:Gem::Version
41
- version: '0'
42
- - !ruby/object:Gem::Dependency
43
- name: bson
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - '>='
47
- - !ruby/object:Gem::Version
48
- version: '0'
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ hash: 3
45
+ segments:
46
+ - 0
47
+ version: "0"
49
48
  type: :development
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ name: bson
50
52
  prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - '>='
54
- - !ruby/object:Gem::Version
55
- version: '0'
53
+ requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ hash: 3
59
+ segments:
60
+ - 0
61
+ version: "0"
62
+ type: :development
63
+ version_requirements: *id003
56
64
  description: The oboe gem provides TraceView instrumentation for Ruby and Ruby frameworks.
57
65
  email: traceviewsupport@appneta.com
58
66
  executables: []
59
- extensions:
67
+
68
+ extensions:
60
69
  - ext/oboe_metal/extconf.rb
61
- extra_rdoc_files:
70
+ extra_rdoc_files:
62
71
  - LICENSE
63
- files:
72
+ files:
64
73
  - .gitignore
65
74
  - .travis.yml
66
75
  - Appraisals
@@ -128,6 +137,7 @@ files:
128
137
  - lib/oboe/ruby.rb
129
138
  - lib/oboe/util.rb
130
139
  - lib/oboe/version.rb
140
+ - lib/oboe/xtrace.rb
131
141
  - lib/oboe_fu.rb
132
142
  - lib/oboe_metal.rb
133
143
  - lib/rails/generators/oboe/install_generator.rb
@@ -147,39 +157,51 @@ files:
147
157
  - test/minitest_helper.rb
148
158
  - test/profiling/method_test.rb
149
159
  - test/support/config_test.rb
160
+ - test/support/xtrace_test.rb
150
161
  homepage: http://www.appneta.com/application-performance-management
151
162
  licenses: []
152
- metadata: {}
163
+
153
164
  post_install_message:
154
165
  rdoc_options: []
155
- require_paths:
166
+
167
+ require_paths:
156
168
  - lib
157
- required_ruby_version: !ruby/object:Gem::Requirement
158
- requirements:
159
- - - '>='
160
- - !ruby/object:Gem::Version
161
- version: '0'
162
- required_rubygems_version: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - '>='
165
- - !ruby/object:Gem::Version
166
- version: '0'
169
+ required_ruby_version: !ruby/object:Gem::Requirement
170
+ none: false
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ hash: 3
175
+ segments:
176
+ - 0
177
+ version: "0"
178
+ required_rubygems_version: !ruby/object:Gem::Requirement
179
+ none: false
180
+ requirements:
181
+ - - ">="
182
+ - !ruby/object:Gem::Version
183
+ hash: 3
184
+ segments:
185
+ - 0
186
+ version: "0"
167
187
  requirements: []
188
+
168
189
  rubyforge_project:
169
- rubygems_version: 2.0.3
190
+ rubygems_version: 1.8.15
170
191
  signing_key:
171
- specification_version: 4
192
+ specification_version: 3
172
193
  summary: AppNeta TraceView performance instrumentation gem for Ruby
173
- test_files:
194
+ test_files:
174
195
  - test/minitest_helper.rb
175
- - test/instrumentation/mongo_test.rb
196
+ - test/support/config_test.rb
197
+ - test/support/xtrace_test.rb
198
+ - test/profiling/method_test.rb
199
+ - test/instrumentation/memcached_test.rb
200
+ - test/instrumentation/memcache_test.rb
176
201
  - test/instrumentation/dalli_test.rb
177
202
  - test/instrumentation/http_test.rb
203
+ - test/instrumentation/cassandra_test.rb
178
204
  - test/instrumentation/resque_test.rb
179
- - test/instrumentation/moped_test.rb
180
205
  - test/instrumentation/rack_test.rb
181
- - test/instrumentation/memcache_test.rb
182
- - test/instrumentation/cassandra_test.rb
183
- - test/instrumentation/memcached_test.rb
184
- - test/profiling/method_test.rb
185
- - test/support/config_test.rb
206
+ - test/instrumentation/moped_test.rb
207
+ - test/instrumentation/mongo_test.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 45fc7604fa67548997b691856dbd87e2e769a1a6
4
- data.tar.gz: 4c1b623a594db6e3894482f018af8c68dea5562c
5
- SHA512:
6
- metadata.gz: ce0e2ad674ade428b114ab3f3431d57cd573bb59110e49ebde9ccf55804076632190b904174ef3a511cf260e8f651765aa0591544073df5fba7164de311b3334
7
- data.tar.gz: 89e7abdfa4c4d0a0adae647b5ac231043e9620097cd97c158bdea3071f02759c95a970554b5b35c5b9eaedaa568596deda634c17231f7844291aa0826cb8a6ef