traceview 3.3.3-java → 3.4.0-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 (68) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +18 -18
  3. data/CHANGELOG.md +13 -0
  4. data/README.md +3 -1
  5. data/Rakefile +18 -9
  6. data/gemfiles/delayed_job.gemfile +38 -0
  7. data/gemfiles/frameworks.gemfile +1 -2
  8. data/gemfiles/libraries.gemfile +1 -2
  9. data/gemfiles/rails23.gemfile +1 -2
  10. data/gemfiles/rails30.gemfile +4 -2
  11. data/gemfiles/rails31.gemfile +4 -2
  12. data/gemfiles/rails32.gemfile +4 -2
  13. data/gemfiles/rails40.gemfile +4 -2
  14. data/gemfiles/rails41.gemfile +4 -2
  15. data/gemfiles/rails42.gemfile +4 -2
  16. data/lib/traceview/api/layerinit.rb +3 -5
  17. data/lib/traceview/api/logging.rb +63 -50
  18. data/lib/traceview/api/memcache.rb +10 -9
  19. data/lib/traceview/api/profiling.rb +6 -7
  20. data/lib/traceview/api/util.rb +1 -1
  21. data/lib/traceview/base.rb +21 -7
  22. data/lib/traceview/config.rb +8 -4
  23. data/lib/traceview/frameworks/padrino.rb +2 -2
  24. data/lib/traceview/frameworks/rails/inst/action_controller.rb +3 -3
  25. data/lib/traceview/frameworks/rails/inst/action_view.rb +4 -2
  26. data/lib/traceview/frameworks/rails/inst/action_view_2x.rb +4 -2
  27. data/lib/traceview/frameworks/rails/inst/action_view_30.rb +4 -2
  28. data/lib/traceview/frameworks/rails/inst/connection_adapters/utils.rb +3 -3
  29. data/lib/traceview/frameworks/rails.rb +26 -32
  30. data/lib/traceview/frameworks/sinatra/templates.rb +1 -1
  31. data/lib/traceview/frameworks/sinatra.rb +1 -1
  32. data/lib/traceview/inst/dalli.rb +4 -5
  33. data/lib/traceview/inst/delayed_job.rb +92 -0
  34. data/lib/traceview/inst/em-http-request.rb +3 -0
  35. data/lib/traceview/inst/excon.rb +3 -3
  36. data/lib/traceview/inst/faraday.rb +4 -1
  37. data/lib/traceview/inst/mongo.rb +10 -5
  38. data/lib/traceview/inst/moped.rb +4 -4
  39. data/lib/traceview/inst/redis.rb +5 -7
  40. data/lib/traceview/inst/resque.rb +3 -3
  41. data/lib/traceview/inst/rest-client.rb +2 -2
  42. data/lib/traceview/inst/sidekiq-client.rb +3 -0
  43. data/lib/traceview/inst/sidekiq-worker.rb +3 -0
  44. data/lib/traceview/inst/twitter-cassandra.rb +8 -4
  45. data/lib/traceview/test.rb +30 -1
  46. data/lib/traceview/util.rb +7 -0
  47. data/lib/traceview/version.rb +2 -2
  48. data/test/frameworks/rails3x_test.rb +12 -2
  49. data/test/frameworks/rails4x_test.rb +12 -2
  50. data/test/instrumentation/curb_test.rb +2 -2
  51. data/test/instrumentation/dalli_test.rb +121 -118
  52. data/test/instrumentation/httpclient_test.rb +0 -1
  53. data/test/jobs/delayed_job/db_worker_job.rb +29 -0
  54. data/test/jobs/delayed_job/error_worker_job.rb +10 -0
  55. data/test/jobs/delayed_job/remote_call_worker_job.rb +20 -0
  56. data/test/minitest_helper.rb +8 -3
  57. data/test/models/widget.rb +19 -0
  58. data/test/queues/delayed_job-client_test.rb +95 -0
  59. data/test/queues/delayed_job-worker_test.rb +91 -0
  60. data/test/servers/delayed_job.rb +102 -0
  61. data/test/servers/rails3x_8140.rb +17 -1
  62. data/test/servers/rails4x_8140.rb +18 -1
  63. data/test/support/auto_tracing.rb +40 -0
  64. data/test/support/config_test.rb +5 -1
  65. data/traceview.gemspec +1 -0
  66. metadata +34 -6
  67. data/test/instrumentation/delayed_job-client_test.rb +0 -128
  68. data/test/instrumentation/delayed_job-worker_test.rb +0 -177
@@ -32,11 +32,10 @@ module TraceView
32
32
  report_kvs[:Args] = kv_args
33
33
  end
34
34
  end
35
-
36
35
  report_kvs[:Backtrace] = TraceView::API.backtrace if TraceView::Config[:resqueclient][:collect_backtraces]
37
36
  report_kvs[:Queue] = klass.instance_variable_get(:@queue)
38
37
  rescue => e
39
- TraceView.logger.debug "[traceview/resque] Error collecting resqueclient KVs: #{e.message}"
38
+ TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
40
39
  end
41
40
 
42
41
  report_kvs
@@ -114,7 +113,8 @@ module TraceView
114
113
  end
115
114
 
116
115
  report_kvs[:Backtrace] = TraceView::API.backtrace if TraceView::Config[:resqueworker][:collect_backtraces]
117
- rescue
116
+ rescue => e
117
+ TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
118
118
  end
119
119
 
120
120
  TraceView::API.start_trace('resque-worker', nil, report_kvs) do
@@ -16,7 +16,7 @@ module TraceView
16
16
  def execute_with_traceview & block
17
17
  kvs = {}
18
18
  kvs['Backtrace'] = TraceView::API.backtrace if TraceView::Config[:rest_client][:collect_backtraces]
19
- TraceView::API.log_entry("rest-client", kvs)
19
+ TraceView::API.log_entry('rest-client', kvs)
20
20
 
21
21
  # The core rest-client call
22
22
  execute_without_traceview(&block)
@@ -24,7 +24,7 @@ module TraceView
24
24
  TraceView::API.log_exception('rest-client', e)
25
25
  raise e
26
26
  ensure
27
- TraceView::API.log_exit("rest-client")
27
+ TraceView::API.log_exit('rest-client')
28
28
  end
29
29
  end
30
30
  end
@@ -1,3 +1,6 @@
1
+ # Copyright (c) 2015 AppNeta, Inc.
2
+ # All rights reserved.
3
+
1
4
  module TraceView
2
5
  class SidekiqClient
3
6
  def collect_kvs(args)
@@ -1,3 +1,6 @@
1
+ # Copyright (c) 2015 AppNeta, Inc.
2
+ # All rights reserved.
3
+
1
4
  module TraceView
2
5
  class SidekiqWorker
3
6
  def collect_kvs(args)
@@ -36,7 +36,8 @@ module TraceView
36
36
  end
37
37
  end
38
38
  end
39
- rescue
39
+ rescue => e
40
+ TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
40
41
  end
41
42
 
42
43
  report_kvs
@@ -178,7 +179,8 @@ module TraceView
178
179
  report_kvs[:Keyspace] = keyspace.to_s
179
180
  report_kvs[:Column_name] = column_name.to_s
180
181
  report_kvs[:Validation_class] = validation_class.to_s
181
- rescue
182
+ rescue => e
183
+ TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
182
184
  end
183
185
 
184
186
  TraceView::API.trace('cassandra', report_kvs) do
@@ -193,7 +195,8 @@ module TraceView
193
195
  begin
194
196
  report_kvs[:Keyspace] = keyspace.to_s
195
197
  report_kvs[:Column_name] = column_name.to_s
196
- rescue
198
+ rescue => e
199
+ TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
197
200
  end
198
201
 
199
202
  TraceView::API.trace('cassandra', report_kvs) do
@@ -207,7 +210,8 @@ module TraceView
207
210
  report_kvs = extract_trace_details(:add_column_family, nil, nil, nil)
208
211
  begin
209
212
  report_kvs[:Cf] = cf_def[:name] if cf_def.is_a?(Hash) && cf_def.key?(:name)
210
- rescue
213
+ rescue => e
214
+ TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
211
215
  end
212
216
 
213
217
  TraceView::API.trace('cassandra', report_kvs) do
@@ -4,9 +4,15 @@
4
4
  module TraceView
5
5
  module Test
6
6
  class << self
7
+ ##
8
+ # load_extras
9
+ #
10
+ # This method simply loads all the extras needed to run
11
+ # tests such as models, jobs etc...
12
+ #
7
13
  def load_extras
8
14
  # If we're using the libraries gemfile (with sidekiq and resque)
9
- if File.basename(ENV['BUNDLE_GEMFILE']) =~ /libraries/
15
+ if TV::Test.gemfile?(:libraries)
10
16
  # Load all of the test workers
11
17
  pattern = File.join(File.dirname(__FILE__), '../../test/jobs/**/', '*.rb')
12
18
  Dir.glob(pattern) do |f|
@@ -15,6 +21,29 @@ module TraceView
15
21
  end
16
22
  end
17
23
  end
24
+
25
+ ##
26
+ # gemfile?
27
+ #
28
+ # Method used to determine under which gemfile we're running.
29
+ # Pass <tt>name</tt> as the gemfile name only (without the
30
+ # .gemfile extension)
31
+ #
32
+ # returns true or fase depending on result
33
+ #
34
+ def gemfile?(name)
35
+ File.basename(ENV['BUNDLE_GEMFILE']) == (name.to_s + '.gemfile')
36
+ end
37
+
38
+ ##
39
+ # gemfile
40
+ #
41
+ # Used to determine under which gemfile we are running. This
42
+ # method will return the name of the active gemfile
43
+ #
44
+ def gemfile
45
+ File.basename(ENV['BUNDLE_GEMFILE']).split('.').first
46
+ end
18
47
  end
19
48
  end
20
49
  end
@@ -218,6 +218,13 @@ module TraceView
218
218
  platform_info['Ruby.Sidekiq.Version'] = "Sidekiq-#{::Sidekiq::VERSION}" if defined?(::Sidekiq::VERSION)
219
219
  platform_info['Ruby.Typhoeus.Version'] = "Typhoeus-#{::Typhoeus::VERSION}" if defined?(::Typhoeus::VERSION)
220
220
 
221
+ if Gem.loaded_specs.key?('delayed_job')
222
+ # Oddly, DelayedJob doesn't have an embedded version number so we get it from the loaded
223
+ # gem specs.
224
+ version = Gem.loaded_specs['delayed_job'].version.to_s
225
+ platform_info['Ruby.DelayedJob.Version'] = "DelayedJob-#{version}"
226
+ end
227
+
221
228
  # Special case since the Mongo 1.x driver doesn't embed the version number in the gem directly
222
229
  if ::Gem.loaded_specs.key?('mongo')
223
230
  platform_info['Ruby.Mongo.Version'] = "Mongo-#{::Gem.loaded_specs['mongo'].version}"
@@ -7,8 +7,8 @@ module TraceView
7
7
  # traceview.gemspec during gem build process
8
8
  module Version
9
9
  MAJOR = 3
10
- MINOR = 3
11
- PATCH = 3
10
+ MINOR = 4
11
+ PATCH = 0
12
12
  BUILD = nil
13
13
 
14
14
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
@@ -18,7 +18,12 @@ if defined?(::Rails)
18
18
  traces = get_all_traces
19
19
 
20
20
  traces.count.must_equal 8
21
- valid_edges?(traces).must_equal true
21
+ unless defined?(JRUBY_VERSION)
22
+ # We don't test this under JRuby because the Java instrumentation
23
+ # for the DB drivers doesn't use our test reporter hence we won't
24
+ # see all trace events. :-( To be improved.
25
+ valid_edges?(traces).must_equal true
26
+ end
22
27
  validate_outer_layers(traces, 'rack')
23
28
 
24
29
  traces[0]['Layer'].must_equal "rack"
@@ -60,7 +65,12 @@ if defined?(::Rails)
60
65
  traces = get_all_traces
61
66
 
62
67
  traces.count.must_equal 5
63
- valid_edges?(traces).must_equal true
68
+ unless defined?(JRUBY_VERSION)
69
+ # We don't test this under JRuby because the Java instrumentation
70
+ # for the DB drivers doesn't use our test reporter hence we won't
71
+ # see all trace events. :-( To be improved.
72
+ valid_edges?(traces).must_equal true
73
+ end
64
74
  validate_outer_layers(traces, 'rack')
65
75
 
66
76
  traces[0]['Layer'].must_equal "rack"
@@ -18,7 +18,12 @@ if defined?(::Rails)
18
18
  traces = get_all_traces
19
19
 
20
20
  traces.count.must_equal 7
21
- valid_edges?(traces).must_equal true
21
+ unless defined?(JRUBY_VERSION)
22
+ # We don't test this under JRuby because the Java instrumentation
23
+ # for the DB drivers doesn't use our test reporter hence we won't
24
+ # see all trace events. :-( To be improved.
25
+ valid_edges?(traces).must_equal true
26
+ end
22
27
  validate_outer_layers(traces, 'rack')
23
28
 
24
29
  traces[0]['Layer'].must_equal "rack"
@@ -58,7 +63,12 @@ if defined?(::Rails)
58
63
  traces = get_all_traces
59
64
 
60
65
  traces.count.must_equal 5
61
- valid_edges?(traces).must_equal true
66
+ unless defined?(JRUBY_VERSION)
67
+ # We don't test this under JRuby because the Java instrumentation
68
+ # for the DB drivers doesn't use our test reporter hence we won't
69
+ # see all trace events. :-( To be improved.
70
+ valid_edges?(traces).must_equal true
71
+ end
62
72
  validate_outer_layers(traces, 'rack')
63
73
 
64
74
  traces[0]['Layer'].must_equal "rack"
@@ -283,7 +283,7 @@ if RUBY_VERSION > '1.8.7' && !defined?(JRUBY_VERSION)
283
283
  assert_equal 'entry', traces[1]['Label']
284
284
  assert_equal 1, traces[1]['IsService']
285
285
  assert_equal 'GET', traces[1]['HTTPMethod'], "HTTP Method"
286
- assert_equal "http://127.0.0.1:8101/?curb_cross_host=1&", traces[1]['RemoteURL']
286
+ assert_equal "http://127.0.0.1:8101/?curb_cross_host=1", traces[1]['RemoteURL']
287
287
  assert traces[1].key?('Backtrace')
288
288
 
289
289
  assert_equal 'curb', traces[5]['Layer']
@@ -466,7 +466,7 @@ if RUBY_VERSION > '1.8.7' && !defined?(JRUBY_VERSION)
466
466
 
467
467
  traces = get_all_traces
468
468
  assert_equal 7, traces.count, "Trace count"
469
- assert_equal "http://127.0.0.1:8101/?blah=1&", traces[1]['RemoteURL']
469
+ assert_equal "http://127.0.0.1:8101/?blah=1", traces[1]['RemoteURL']
470
470
  end
471
471
 
472
472
  def test_without_tracing_class_get
@@ -1,174 +1,177 @@
1
1
  # Copyright (c) 2015 AppNeta, Inc.
2
2
  # All rights reserved.
3
3
 
4
- require 'minitest_helper'
4
+ if RUBY_VERSION > '1.8.7'
5
5
 
6
- describe "Dalli" do
7
- before do
8
- clear_all_traces
9
- @dc = Dalli::Client.new
10
- @collect_backtraces = TraceView::Config[:dalli][:collect_backtraces]
11
- end
6
+ require 'minitest_helper'
12
7
 
13
- after do
14
- TraceView::Config[:dalli][:collect_backtraces] = @collect_backtraces
15
- end
8
+ describe "Dalli" do
9
+ before do
10
+ clear_all_traces
11
+ @dc = Dalli::Client.new
12
+ @collect_backtraces = TraceView::Config[:dalli][:collect_backtraces]
13
+ end
16
14
 
17
- it 'Stock Dalli should be loaded, defined and ready' do
18
- defined?(::Dalli).wont_match nil
19
- defined?(::Dalli::Client).wont_match nil
20
- end
15
+ after do
16
+ TraceView::Config[:dalli][:collect_backtraces] = @collect_backtraces
17
+ end
21
18
 
22
- it 'should have traceview methods defined' do
23
- [ :perform_with_traceview, :get_multi_with_traceview].each do |m|
24
- ::Dalli::Client.method_defined?(m).must_equal true
19
+ it 'Stock Dalli should be loaded, defined and ready' do
20
+ defined?(::Dalli).wont_match nil
21
+ defined?(::Dalli::Client).wont_match nil
25
22
  end
26
- end
27
23
 
28
- it 'should trace set' do
29
- TraceView::API.start_trace('dalli_test', '', {}) do
30
- @dc.set('some_key', 1234)
24
+ it 'should have traceview methods defined' do
25
+ [ :perform_with_traceview, :get_multi_with_traceview].each do |m|
26
+ ::Dalli::Client.method_defined?(m).must_equal true
27
+ end
31
28
  end
32
29
 
33
- traces = get_all_traces
34
- traces.count.must_equal 4
30
+ it 'should trace set' do
31
+ TraceView::API.start_trace('dalli_test', '', {}) do
32
+ @dc.set('some_key', 1234)
33
+ end
35
34
 
36
- validate_outer_layers(traces, 'dalli_test')
35
+ traces = get_all_traces
36
+ traces.count.must_equal 4
37
37
 
38
- traces[1].has_key?("KVOp").must_equal true
39
- traces[1].has_key?("KVKey").must_equal true
40
- traces[1]['Layer'].must_equal "memcache"
41
- traces[1]['KVKey'].must_equal "some_key"
42
- traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
43
- end
38
+ validate_outer_layers(traces, 'dalli_test')
44
39
 
45
- it 'should trace get' do
46
- TraceView::API.start_trace('dalli_test', '', {}) do
47
- @dc.get('some_key')
40
+ traces[1].has_key?("KVOp").must_equal true
41
+ traces[1].has_key?("KVKey").must_equal true
42
+ traces[1]['Layer'].must_equal "memcache"
43
+ traces[1]['KVKey'].must_equal "some_key"
44
+ traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
48
45
  end
49
46
 
50
- traces = get_all_traces
51
- traces.count.must_equal 5
47
+ it 'should trace get' do
48
+ TraceView::API.start_trace('dalli_test', '', {}) do
49
+ @dc.get('some_key')
50
+ end
52
51
 
53
- validate_outer_layers(traces, 'dalli_test')
52
+ traces = get_all_traces
53
+ traces.count.must_equal 5
54
54
 
55
- traces[1]['KVOp'].must_equal "get"
56
- traces[1]['KVKey'].must_equal "some_key"
57
- traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
58
- traces[2]['Label'].must_equal "info"
59
- traces[2].has_key?('KVHit').must_equal true
60
- traces[3]['Label'].must_equal "exit"
61
- end
55
+ validate_outer_layers(traces, 'dalli_test')
62
56
 
63
- it 'should trace get_multi' do
64
- TraceView::API.start_trace('dalli_test', '', {}) do
65
- @dc.get_multi([:one, :two, :three, :four, :five, :six])
57
+ traces[1]['KVOp'].must_equal "get"
58
+ traces[1]['KVKey'].must_equal "some_key"
59
+ traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
60
+ traces[2]['Label'].must_equal "info"
61
+ traces[2].has_key?('KVHit').must_equal true
62
+ traces[3]['Label'].must_equal "exit"
66
63
  end
67
64
 
68
- traces = get_all_traces
69
- traces.count.must_equal 5
70
-
71
- validate_outer_layers(traces, 'dalli_test')
65
+ it 'should trace get_multi' do
66
+ TraceView::API.start_trace('dalli_test', '', {}) do
67
+ @dc.get_multi([:one, :two, :three, :four, :five, :six])
68
+ end
72
69
 
73
- traces[1]['KVOp'].must_equal "get_multi"
74
- traces[2]['Label'].must_equal "info"
75
- traces[2]['RemoteHost'].must_equal "127.0.0.1:11211"
76
- traces[2].has_key?('KVKeyCount').must_equal true
77
- traces[2].has_key?('KVHitCount').must_equal true
78
- traces[3]['Label'].must_equal "exit"
79
- end
70
+ traces = get_all_traces
71
+ traces.count.must_equal 5
80
72
 
81
- it "should trace increment" do
82
- @dc.incr("dalli_key_counter", 1, nil, 0)
73
+ validate_outer_layers(traces, 'dalli_test')
83
74
 
84
- TraceView::API.start_trace('dalli_test', '', {}) do
85
- @dc.incr("dalli_key_counter")
75
+ traces[1]['KVOp'].must_equal "get_multi"
76
+ traces[2]['Label'].must_equal "info"
77
+ traces[2]['RemoteHost'].must_equal "127.0.0.1:11211"
78
+ traces[2].has_key?('KVKeyCount').must_equal true
79
+ traces[2].has_key?('KVHitCount').must_equal true
80
+ traces[3]['Label'].must_equal "exit"
86
81
  end
87
82
 
88
- traces = get_all_traces
89
- traces.count.must_equal 4
83
+ it "should trace increment" do
84
+ @dc.incr("dalli_key_counter", 1, nil, 0)
90
85
 
91
- validate_outer_layers(traces, 'dalli_test')
86
+ TraceView::API.start_trace('dalli_test', '', {}) do
87
+ @dc.incr("dalli_key_counter")
88
+ end
92
89
 
93
- traces[1]['KVOp'].must_equal "incr"
94
- traces[1]['KVKey'].must_equal "dalli_key_counter"
95
- traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
96
- traces[2]['Label'].must_equal "exit"
97
- end
90
+ traces = get_all_traces
91
+ traces.count.must_equal 4
98
92
 
99
- it "should trace decrement" do
100
- @dc.incr("dalli_key_counter", 1, nil, 0)
93
+ validate_outer_layers(traces, 'dalli_test')
101
94
 
102
- TraceView::API.start_trace('dalli_test', '', {}) do
103
- @dc.decr("dalli_key_counter")
95
+ traces[1]['KVOp'].must_equal "incr"
96
+ traces[1]['KVKey'].must_equal "dalli_key_counter"
97
+ traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
98
+ traces[2]['Label'].must_equal "exit"
104
99
  end
105
100
 
106
- traces = get_all_traces
107
- traces.count.must_equal 4
101
+ it "should trace decrement" do
102
+ @dc.incr("dalli_key_counter", 1, nil, 0)
108
103
 
109
- validate_outer_layers(traces, 'dalli_test')
104
+ TraceView::API.start_trace('dalli_test', '', {}) do
105
+ @dc.decr("dalli_key_counter")
106
+ end
110
107
 
111
- traces[1]['KVOp'].must_equal "decr"
112
- traces[1]['KVKey'].must_equal "dalli_key_counter"
113
- traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
114
- traces[2]['Label'].must_equal "exit"
115
- end
108
+ traces = get_all_traces
109
+ traces.count.must_equal 4
116
110
 
117
- it "should trace replace" do
118
- @dc.set('some_key', 1)
111
+ validate_outer_layers(traces, 'dalli_test')
119
112
 
120
- TraceView::API.start_trace('dalli_test', '', {}) do
121
- @dc.replace("some_key", "woop")
113
+ traces[1]['KVOp'].must_equal "decr"
114
+ traces[1]['KVKey'].must_equal "dalli_key_counter"
115
+ traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
116
+ traces[2]['Label'].must_equal "exit"
122
117
  end
123
118
 
124
- traces = get_all_traces
125
- traces.count.must_equal 4
119
+ it "should trace replace" do
120
+ @dc.set('some_key', 1)
126
121
 
127
- validate_outer_layers(traces, 'dalli_test')
122
+ TraceView::API.start_trace('dalli_test', '', {}) do
123
+ @dc.replace("some_key", "woop")
124
+ end
128
125
 
129
- traces[1]['KVOp'].must_equal "replace"
130
- traces[1]['KVKey'].must_equal "some_key"
131
- traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
132
- traces[2]['Label'].must_equal "exit"
133
- end
126
+ traces = get_all_traces
127
+ traces.count.must_equal 4
134
128
 
135
- it "should trace delete" do
136
- @dc.set('some_key', 1)
129
+ validate_outer_layers(traces, 'dalli_test')
137
130
 
138
- TraceView::API.start_trace('dalli_test', '', {}) do
139
- @dc.delete("some_key")
131
+ traces[1]['KVOp'].must_equal "replace"
132
+ traces[1]['KVKey'].must_equal "some_key"
133
+ traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
134
+ traces[2]['Label'].must_equal "exit"
140
135
  end
141
136
 
142
- traces = get_all_traces
143
- traces.count.must_equal 4
137
+ it "should trace delete" do
138
+ @dc.set('some_key', 1)
144
139
 
145
- validate_outer_layers(traces, 'dalli_test')
140
+ TraceView::API.start_trace('dalli_test', '', {}) do
141
+ @dc.delete("some_key")
142
+ end
146
143
 
147
- traces[1]['KVOp'].must_equal "delete"
148
- traces[1]['KVKey'].must_equal "some_key"
149
- traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
150
- end
144
+ traces = get_all_traces
145
+ traces.count.must_equal 4
151
146
 
152
- it "should obey :collect_backtraces setting when true" do
153
- @dc.set('some_key', 1)
154
- TraceView::Config[:dalli][:collect_backtraces] = true
147
+ validate_outer_layers(traces, 'dalli_test')
155
148
 
156
- TraceView::API.start_trace('dalli_test', '', {}) do
157
- @dc.get('some_key')
149
+ traces[1]['KVOp'].must_equal "delete"
150
+ traces[1]['KVKey'].must_equal "some_key"
151
+ traces[1]['RemoteHost'].must_equal "127.0.0.1:11211"
158
152
  end
159
153
 
160
- traces = get_all_traces
161
- layer_has_key(traces, 'memcache', 'Backtrace')
162
- end
154
+ it "should obey :collect_backtraces setting when true" do
155
+ @dc.set('some_key', 1)
156
+ TraceView::Config[:dalli][:collect_backtraces] = true
163
157
 
164
- it "should obey :collect_backtraces setting when false" do
165
- TraceView::Config[:dalli][:collect_backtraces] = false
158
+ TraceView::API.start_trace('dalli_test', '', {}) do
159
+ @dc.get('some_key')
160
+ end
166
161
 
167
- TraceView::API.start_trace('dalli_test', '', {}) do
168
- @dc.get('some_key')
162
+ traces = get_all_traces
163
+ layer_has_key(traces, 'memcache', 'Backtrace')
169
164
  end
170
165
 
171
- traces = get_all_traces
172
- layer_doesnt_have_key(traces, 'memcache', 'Backtrace')
166
+ it "should obey :collect_backtraces setting when false" do
167
+ TraceView::Config[:dalli][:collect_backtraces] = false
168
+
169
+ TraceView::API.start_trace('dalli_test', '', {}) do
170
+ @dc.get('some_key')
171
+ end
172
+
173
+ traces = get_all_traces
174
+ layer_doesnt_have_key(traces, 'memcache', 'Backtrace')
175
+ end
173
176
  end
174
177
  end
@@ -155,7 +155,6 @@ unless defined?(JRUBY_VERSION)
155
155
  Thread.pass until conn.finished?
156
156
 
157
157
  traces = get_all_traces
158
- #require 'byebug'; debugger
159
158
  assert_equal traces.count, 7
160
159
  valid_edges?(traces)
161
160
 
@@ -0,0 +1,29 @@
1
+ # Copyright (c) 2015 AppNeta, Inc.
2
+ # All rights reserved.
3
+
4
+ class DJDBWorkerJob
5
+ @queue = :normal
6
+
7
+ def self.perform(*args)
8
+ return unless defined?(::Sequel) && !defined?(JRUBY_VERSION)
9
+
10
+ if ENV.key?('TRAVIS_MYSQL_PASS')
11
+ @db = Sequel.connect("mysql2://root:#{ENV['TRAVIS_MYSQL_PASS']}@127.0.0.1:3306/travis_ci_test")
12
+ else
13
+ @db = Sequel.connect('mysql2://root@127.0.0.1:3306/travis_ci_test')
14
+ end
15
+
16
+ unless @db.table_exists?(:items)
17
+ @db.create_table :items do
18
+ primary_key :id
19
+ String :name
20
+ Float :price
21
+ end
22
+ end
23
+
24
+ @db.run('select 1')
25
+
26
+ items = @db[:items]
27
+ items.count
28
+ end
29
+ end
@@ -0,0 +1,10 @@
1
+ # Copyright (c) 2015 AppNeta, Inc.
2
+ # All rights reserved.
3
+
4
+ class DJErrorWorkerJob
5
+ @queue = :critical
6
+
7
+ def self.perform(*args)
8
+ raise "This is a worker error yeah!"
9
+ end
10
+ end
@@ -0,0 +1,20 @@
1
+ # Copyright (c) 2015 AppNeta, Inc.
2
+ # All rights reserved.
3
+
4
+ class DJRemoteCallWorkerJob
5
+ @queue = :critical
6
+
7
+ def self.perform(*args)
8
+ # Make some random Dalli (memcache) calls and top it
9
+ # off with an excon call to the background rack webserver.
10
+ @dc = Dalli::Client.new
11
+ @dc.get(rand(10).to_s)
12
+ uri = URI('http://gameface.in/gamers')
13
+ http = Net::HTTP.new(uri.host, uri.port)
14
+ request = Net::HTTP::Get.new(uri.request_uri)
15
+ http.request(request)
16
+ @dc.get(rand(10).to_s)
17
+ @dc.get(rand(10).to_s)
18
+ @dc.get_multi([:one, :two, :three, :four, :five, :six])
19
+ end
20
+ end
@@ -49,16 +49,21 @@ TraceView.logger.level = Logger::DEBUG
49
49
  # puts %x{psql -c 'create database travis_ci_test;' -U postgres}
50
50
 
51
51
  # Our background Rack-app for http client testing
52
- require "./test/servers/rackapp_8101"
52
+ require './test/servers/rackapp_8101'
53
53
 
54
54
  # Conditionally load other background servers
55
55
  # depending on what we're testing
56
56
  #
57
57
  case File.basename(ENV['BUNDLE_GEMFILE'])
58
+ when /delayed_job/
59
+ require './test/servers/delayed_job'
60
+
58
61
  when /rails4/
59
- require "./test/servers/rails4x_8140"
62
+ require './test/servers/rails4x_8140'
63
+
60
64
  when /rails3/
61
- require "./test/servers/rails3x_8140"
65
+ require './test/servers/rails3x_8140'
66
+
62
67
  when /frameworks/
63
68
  when /libraries/
64
69
  if RUBY_VERSION >= '2.0'