traceview 3.2.1-java → 3.3.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.
data/lib/traceview.rb CHANGED
@@ -57,6 +57,8 @@ begin
57
57
  # it will load all of the Ruby instrumentation
58
58
  require 'traceview/ruby'
59
59
  require 'oboe/backward_compatibility'
60
+
61
+ require 'traceview/test' if ENV['TRACEVIEW_GEM_TEST']
60
62
  rescue => e
61
63
  $stderr.puts "[traceview/error] Problem loading: #{e.inspect}"
62
64
  $stderr.puts e.backtrace
@@ -11,11 +11,13 @@ module TraceView
11
11
  # layer.
12
12
  #
13
13
  def report_init(layer = 'rack')
14
- # Don't send __Init in development or test
15
- return if %w(development test).include? ENV['RACK_ENV']
16
-
17
- # Don't send __Init if the c-extension hasn't loaded
18
- return unless TraceView.loaded
14
+ # Don't send __Init in development, test or if the gem
15
+ # isn't fully loaded (e.g. missing c-extension)
16
+ if %w(development test).include? ENV['RACK_ENV'] ||
17
+ ENV.key?('TRACEVIEW_GEM_TEST') ||
18
+ !TraceView.loaded
19
+ return
20
+ end
19
21
 
20
22
  platform_info = TraceView::Util.build_init_report
21
23
 
@@ -1,6 +1,13 @@
1
1
  # Copyright (c) 2013 AppNeta, Inc.
2
2
  # All rights reserved.
3
3
 
4
+ # Make sure Set is loaded if possible.
5
+ begin
6
+ require 'set'
7
+ rescue LoadError
8
+ class Set; end
9
+ end
10
+
4
11
  module TraceView
5
12
  module API
6
13
  ##
@@ -105,7 +112,7 @@ module TraceView
105
112
  # sample rate and sample source
106
113
  opts[:SampleRate] = TraceView.sample_rate
107
114
  opts[:SampleSource] = TraceView.sample_source
108
- opts[:TraceOrigin] = :always_sampled
115
+ opts[:TraceOrigin] = :always_sampled
109
116
 
110
117
  log_event(layer, 'entry', TraceView::Context.startTrace, opts)
111
118
  end
@@ -14,8 +14,8 @@ module TraceView
14
14
  @@instrumentation = [:action_controller, :action_view, :active_record,
15
15
  :cassandra, :curb, :dalli, :em_http_request, :excon, :faraday,
16
16
  :grape, :httpclient, :nethttp, :memcached, :memcache, :mongo,
17
- :moped, :rack, :redis, :resque, :rest_client, :sequel,
18
- :typhoeus]
17
+ :moped, :rack, :redis, :resque, :rest_client, :sequel, :sidekiqclient,
18
+ :sidekiqworker, :typhoeus]
19
19
 
20
20
  # Subgrouping of instrumentation
21
21
  @@http_clients = [:curb, :excon, :em_http_request, :faraday, :httpclient, :nethttp, :rest_client, :typhoeus]
@@ -60,6 +60,8 @@ module TraceView
60
60
  TraceView::Config[:resque][:collect_backtraces] = true
61
61
  TraceView::Config[:rest_client][:collect_backtraces] = false
62
62
  TraceView::Config[:sequel][:collect_backtraces] = true
63
+ TraceView::Config[:sidekiqclient][:collect_backtraces] = false
64
+ TraceView::Config[:sidekiqworker][:collect_backtraces] = false
63
65
  TraceView::Config[:typhoeus][:collect_backtraces] = false
64
66
 
65
67
  # Special instrument specific flags
@@ -214,6 +216,9 @@ module TraceView
214
216
  @@config[key.to_sym] = value.to_i
215
217
  TraceView.set_sample_rate(value) if TraceView.loaded
216
218
 
219
+ elsif key == :action_blacklist
220
+ TraceView.logger.warn "[traceview/deprecation] :action_blacklist will be deprecated in a future version."
221
+
217
222
  elsif key == :include_url_query_params
218
223
  # Obey the global flag and update all of the per instrumentation
219
224
  # <tt>:log_args</tt> values.
@@ -0,0 +1,54 @@
1
+ module TraceView
2
+ class SidekiqClient
3
+ def collect_kvs(args)
4
+ begin
5
+ # Attempt to collect up pertinent info. If we hit something unexpected,
6
+ # keep calm and instrument on.
7
+
8
+ report_kvs = {}
9
+ worker_class, msg, queue, _ = args
10
+
11
+ report_kvs[:Spec] = :msgclient
12
+ report_kvs[:Flavor] = :sidekiq
13
+ report_kvs[:Queue] = queue
14
+ report_kvs[:Retry] = msg['retry']
15
+ report_kvs[:JobName] = worker_class
16
+ report_kvs[:MsgID] = msg['jid']
17
+ report_kvs[:Args] = msg['args'].to_s[0..1024] if TV::Config[:sidekiqclient][:log_args]
18
+ report_kvs[:Backtrace] = TV::API.backtrace if TV::Config[:sidekiqclient][:collect_backtraces]
19
+ rescue => e
20
+ TraceView.logger.warn "[traceview/sidekiq] Non-fatal error capturing KVs: #{e.message}"
21
+ end
22
+ report_kvs
23
+ end
24
+
25
+ def call(*args)
26
+ # args: 0: worker_class, 1: msg, 2: queue, 3: redis_pool
27
+
28
+ result = nil
29
+ report_kvs = collect_kvs(args)
30
+
31
+ TraceView::API.log_entry('sidekiq-client', report_kvs)
32
+ args[1]['X-Trace'] = TraceView::Context.toString if TraceView.tracing?
33
+
34
+ result = yield
35
+
36
+ report_kvs = { :JobID => result["jid"] }
37
+ result
38
+ rescue => e
39
+ TraceView::API.log_exception('sidekiq-client', e, report_kvs)
40
+ raise
41
+ ensure
42
+ TraceView::API.log_exit('sidekiq-client', report_kvs)
43
+ end
44
+ end
45
+ end
46
+
47
+ if defined?(::Sidekiq) && RUBY_VERSION >= '2.0' && TraceView::Config[:sidekiqclient][:enabled]
48
+ ::Sidekiq.configure_client do |config|
49
+ config.client_middleware do |chain|
50
+ ::TraceView.logger.info '[traceview/loading] Adding Sidekiq client middleware' if TraceView::Config[:verbose]
51
+ chain.add ::TraceView::SidekiqClient
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,61 @@
1
+ module TraceView
2
+ class SidekiqWorker
3
+ def collect_kvs(args)
4
+ begin
5
+ # Attempt to collect up pertinent info. If we hit something unexpected,
6
+ # keep calm and instrument on.
7
+ report_kvs = {}
8
+ worker, msg, queue = args
9
+
10
+ # Background Job Spec KVs
11
+ report_kvs[:Spec] = :job
12
+ report_kvs[:Flavor] = :sidekiq
13
+ report_kvs[:Queue] = queue
14
+ report_kvs[:Retry] = msg['retry']
15
+ report_kvs[:JobName] = worker.class.to_s
16
+ report_kvs[:MsgID] = msg['jid']
17
+ report_kvs[:Args] = msg['args'].to_s[0..1024] if TV::Config[:sidekiqworker][:log_args]
18
+ report_kvs['Backtrace'] = TV::API.backtrace if TV::Config[:sidekiqworker][:collect_backtraces]
19
+
20
+ # Webserver Spec KVs
21
+ report_kvs['HTTP-Host'] = Socket.gethostname
22
+ report_kvs[:Controller] = "Sidekiq_#{queue}"
23
+ report_kvs[:Action] = msg['class']
24
+ report_kvs[:URL] = "/sidekiq/#{queue}/#{msg['class'].to_s}"
25
+ rescue => e
26
+ TraceView.logger.warn "[traceview/sidekiq] Non-fatal error capturing KVs: #{e.message}"
27
+ end
28
+ report_kvs
29
+ end
30
+
31
+ def call(*args)
32
+ # args: 0: worker, 1: msg, 2: queue
33
+ result = nil
34
+ report_kvs = collect_kvs(args)
35
+
36
+ # Continue the trace from the enqueue side?
37
+ incoming_context = nil
38
+ if args[1].is_a?(Hash) && TraceView::XTrace.valid?(args[1]['X-Trace'])
39
+ incoming_context = args[1]['X-Trace']
40
+ report_kvs[:Async] = true
41
+ end
42
+
43
+ result = TraceView::API.start_trace('sidekiq-worker', incoming_context, report_kvs) do
44
+ yield
45
+ end
46
+
47
+ result[0]
48
+ end
49
+ end
50
+ end
51
+
52
+ if defined?(::Sidekiq) && RUBY_VERSION >= '2.0' && TraceView::Config[:sidekiqworker][:enabled]
53
+ ::TraceView.logger.info '[traceview/loading] Instrumenting sidekiq' if TraceView::Config[:verbose]
54
+
55
+ ::Sidekiq.configure_server do |config|
56
+ config.server_middleware do |chain|
57
+ ::TraceView.logger.info '[traceview/loading] Adding Sidekiq worker middleware' if TraceView::Config[:verbose]
58
+ chain.add ::TraceView::SidekiqWorker
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,20 @@
1
+ # Copyright (c) 2015 AppNeta, Inc.
2
+ # All rights reserved.
3
+
4
+ module TraceView
5
+ module Test
6
+ class << self
7
+ def load_extras
8
+ # If we're using the libraries gemfile (with sidekiq and resque)
9
+ if File.basename(ENV['BUNDLE_GEMFILE']) =~ /libraries/
10
+ # Load all of the test workers
11
+ pattern = File.join(File.dirname(__FILE__), '../../test/jobs/', '*.rb')
12
+ Dir.glob(pattern) do |f|
13
+ TV.logger.debug "Loading test job file: #{f}"
14
+ require f
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -215,6 +215,7 @@ module TraceView
215
215
  platform_info['Ruby.Redis.Version'] = "Redis-#{::Redis::VERSION}" if defined?(::Redis::VERSION)
216
216
  platform_info['Ruby.Resque.Version'] = "Resque-#{::Resque::VERSION}" if defined?(::Resque::VERSION)
217
217
  platform_info['Ruby.RestClient.Version'] = "RestClient-#{::RestClient::VERSION}" if defined?(::RestClient::VERSION)
218
+ platform_info['Ruby.Sidekiq.Version'] = "Sidekiq-#{::Sidekiq::VERSION}" if defined?(::Sidekiq::VERSION)
218
219
  platform_info['Ruby.Typhoeus.Version'] = "Typhoeus-#{::Typhoeus::VERSION}" if defined?(::Typhoeus::VERSION)
219
220
 
220
221
  # Special case since the Mongo 1.x driver doesn't embed the version number in the gem directly
@@ -7,8 +7,8 @@ module TraceView
7
7
  # traceview.gemspec during gem build process
8
8
  module Version
9
9
  MAJOR = 3
10
- MINOR = 2
11
- PATCH = 1
10
+ MINOR = 3
11
+ PATCH = 0
12
12
  BUILD = nil
13
13
 
14
14
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
@@ -1,7 +1,7 @@
1
1
  # Copyright (c) 2015 AppNeta, Inc.
2
2
  # All rights reserved.
3
3
 
4
- if RUBY_VERSION > '1.8.7'
4
+ if RUBY_VERSION > '1.8.7' && !defined?(JRUBY_VERSION)
5
5
 
6
6
  require 'minitest_helper'
7
7
  require 'traceview/inst/rack'
@@ -0,0 +1,131 @@
1
+ # Copyright (c) 2015 AppNeta, Inc.
2
+ # All rights reserved.
3
+
4
+ if RUBY_VERSION >= '2.0'
5
+ require 'minitest_helper'
6
+ require 'sidekiq'
7
+ require_relative "../jobs/remote_call_worker_job"
8
+ require_relative "../jobs/db_worker_job"
9
+ require_relative "../jobs/error_worker_job"
10
+
11
+ class SidekiqClientTest < Minitest::Test
12
+ def setup
13
+ clear_all_traces
14
+ @collect_backtraces = TraceView::Config[:sidekiqclient][:collect_backtraces]
15
+ @log_args = TraceView::Config[:sidekiqclient][:log_args]
16
+ end
17
+
18
+ def teardown
19
+ TraceView::Config[:sidekiqclient][:collect_backtraces] = @collect_backtraces
20
+ TraceView::Config[:sidekiqclient][:log_args] = @log_args
21
+ end
22
+
23
+ def test_enqueue
24
+ # Queue up a job to be run
25
+ jid, _ = ::TraceView::API.start_trace(:enqueue_test) do
26
+ Sidekiq::Client.push('queue' => 'critical', 'class' => ::RemoteCallWorkerJob, 'args' => [1, 2, 3], 'retry' => false)
27
+ end
28
+
29
+ # Allow the job to be run
30
+ sleep 5
31
+
32
+ traces = get_all_traces
33
+ assert_equal 23, traces.count, "Trace count"
34
+ valid_edges?(traces)
35
+
36
+ assert_equal 'sidekiq-client', traces[1]['Layer']
37
+ assert_equal 'entry', traces[1]['Label']
38
+
39
+ assert_equal 'msgclient', traces[1]['Spec']
40
+ assert_equal 'sidekiq', traces[1]['Flavor']
41
+ assert_equal 'critical', traces[1]['Queue']
42
+ assert_equal jid, traces[1]['MsgID']
43
+ assert_equal '[1, 2, 3]', traces[1]['Args']
44
+ assert_equal "RemoteCallWorkerJob", traces[1]['JobName']
45
+ assert_equal 'false', traces[1]['Retry']
46
+ assert_equal false, traces[1].key?('Backtrace')
47
+
48
+ assert_equal 'sidekiq-client', traces[2]['Layer']
49
+ assert_equal 'exit', traces[2]['Label']
50
+ end
51
+
52
+ def test_collect_backtraces_default_value
53
+ assert_equal TV::Config[:sidekiqclient][:collect_backtraces], false, "default backtrace collection"
54
+ end
55
+
56
+ def test_log_args_default_value
57
+ assert_equal TV::Config[:sidekiqclient][:log_args], true, "log_args default "
58
+ end
59
+
60
+ def test_obey_collect_backtraces_when_false
61
+ TraceView::Config[:sidekiqclient][:collect_backtraces] = false
62
+
63
+ # Queue up a job to be run
64
+ ::TraceView::API.start_trace(:enqueue_test) do
65
+ Sidekiq::Client.push('queue' => 'critical', 'class' => ::RemoteCallWorkerJob, 'args' => [1, 2, 3], 'retry' => false)
66
+ end
67
+
68
+ # Allow the job to be run
69
+ sleep 5
70
+
71
+ traces = get_all_traces
72
+ assert_equal 23, traces.count, "Trace count"
73
+ valid_edges?(traces)
74
+ assert_equal 'sidekiq-client', traces[1]['Layer']
75
+ assert_equal false, traces[1].key?('Backtrace')
76
+ end
77
+
78
+ def test_obey_collect_backtraces_when_true
79
+ TraceView::Config[:sidekiqclient][:collect_backtraces] = true
80
+
81
+ # Queue up a job to be run
82
+ ::TraceView::API.start_trace(:enqueue_test) do
83
+ Sidekiq::Client.push('queue' => 'critical', 'class' => ::RemoteCallWorkerJob, 'args' => [1, 2, 3], 'retry' => false)
84
+ end
85
+
86
+ # Allow the job to be run
87
+ sleep 5
88
+
89
+ traces = get_all_traces
90
+ assert_equal 23, traces.count, "Trace count"
91
+ valid_edges?(traces)
92
+ assert_equal 'sidekiq-client', traces[1]['Layer']
93
+ assert_equal true, traces[1].key?('Backtrace')
94
+ end
95
+
96
+ def test_obey_log_args_when_false
97
+ TraceView::Config[:sidekiqclient][:log_args] = false
98
+
99
+ # Queue up a job to be run
100
+ ::TraceView::API.start_trace(:enqueue_test) do
101
+ Sidekiq::Client.push('queue' => 'critical', 'class' => ::RemoteCallWorkerJob, 'args' => [1, 2, 3], 'retry' => false)
102
+ end
103
+
104
+ # Allow the job to be run
105
+ sleep 5
106
+
107
+ traces = get_all_traces
108
+ assert_equal 23, traces.count, "Trace count"
109
+ valid_edges?(traces)
110
+ assert_equal false, traces[1].key?('Args')
111
+ end
112
+
113
+ def test_obey_log_args_when_true
114
+ TraceView::Config[:sidekiqclient][:log_args] = true
115
+
116
+ # Queue up a job to be run
117
+ ::TraceView::API.start_trace(:enqueue_test) do
118
+ Sidekiq::Client.push('queue' => 'critical', 'class' => ::RemoteCallWorkerJob, 'args' => [1, 2, 3], 'retry' => false)
119
+ end
120
+
121
+ # Allow the job to be run
122
+ sleep 5
123
+
124
+ traces = get_all_traces
125
+ assert_equal 23, traces.count, "Trace count"
126
+ valid_edges?(traces)
127
+ assert_equal true, traces[1].key?('Args')
128
+ assert_equal '[1, 2, 3]', traces[1]['Args']
129
+ end
130
+ end
131
+ end
@@ -0,0 +1,180 @@
1
+ # Copyright (c) 2015 AppNeta, Inc.
2
+ # All rights reserved.
3
+
4
+ if RUBY_VERSION >= '2.0'
5
+ require 'minitest_helper'
6
+ require 'sidekiq'
7
+ require_relative "../jobs/remote_call_worker_job"
8
+ require_relative "../jobs/db_worker_job"
9
+ require_relative "../jobs/error_worker_job"
10
+
11
+ class SidekiqWorkerTest < Minitest::Test
12
+ def setup
13
+ clear_all_traces
14
+ @collect_backtraces = TraceView::Config[:sidekiqworker][:collect_backtraces]
15
+ @log_args = TraceView::Config[:sidekiqworker][:log_args]
16
+ end
17
+
18
+ def teardown
19
+ TraceView::Config[:sidekiqworker][:collect_backtraces] = @collect_backtraces
20
+ TraceView::Config[:sidekiqworker][:log_args] = @log_args
21
+ end
22
+
23
+ def test_reports_version_init
24
+ init_kvs = ::TraceView::Util.build_init_report
25
+ assert init_kvs.key?('Ruby.Sidekiq.Version')
26
+ assert_equal "Sidekiq-#{::Sidekiq::VERSION}", init_kvs['Ruby.Sidekiq.Version']
27
+ end
28
+
29
+ def test_job_run
30
+ # Queue up a job to be run
31
+ jid = Sidekiq::Client.push('queue' => 'critical', 'class' => RemoteCallWorkerJob, 'args' => [1, 2, 3], 'retry' => false)
32
+
33
+ # Allow the job to be run
34
+ sleep 5
35
+
36
+ traces = get_all_traces
37
+ assert_equal 17, traces.count, "Trace count"
38
+ validate_outer_layers(traces, "sidekiq-worker")
39
+ valid_edges?(traces)
40
+
41
+ # Validate entry layer KVs
42
+ assert_equal 'always_sampled', traces[0]['TraceOrigin'], "is always_sampled"
43
+ assert_equal true, traces[0].key?('SampleRate'), "has SampleRate KV"
44
+ assert_equal true, traces[0].key?('SampleSource'), "has SampleSource KV"
45
+
46
+ # Validate Webserver Spec KVs
47
+ assert_equal Socket.gethostname, traces[0]['HTTP-Host']
48
+ assert_equal "Sidekiq_critical", traces[0]['Controller']
49
+ assert_equal "RemoteCallWorkerJob", traces[0]['Action']
50
+ assert_equal "/sidekiq/critical/RemoteCallWorkerJob", traces[0]['URL']
51
+
52
+ # Validate Job Spec KVs
53
+ assert_equal "job", traces[0]['Spec']
54
+ assert_equal 'sidekiq', traces[0]['Flavor']
55
+ assert_equal "RemoteCallWorkerJob", traces[0]['JobName']
56
+ assert_equal jid, traces[0]['MsgID']
57
+ assert_equal "critical", traces[0]['Queue']
58
+ assert_equal "[1, 2, 3]", traces[0]['Args']
59
+ assert_equal "false", traces[0]['Retry']
60
+
61
+ assert_equal false, traces[0].key?('Backtrace')
62
+ assert_equal "net-http", traces[4]['Layer']
63
+ assert_equal "entry", traces[4]['Label']
64
+ assert_equal "memcache", traces[15]['Layer']
65
+ end
66
+
67
+ def test_jobs_with_errors
68
+ # Queue up a job to be run
69
+ jid = Sidekiq::Client.push('queue' => 'critical', 'class' => ErrorWorkerJob, 'args' => [1, 2, 3], 'retry' => false)
70
+
71
+ # Allow the job to be run
72
+ sleep 5
73
+
74
+ traces = get_all_traces
75
+ assert_equal 3, traces.count, "Trace count"
76
+ validate_outer_layers(traces, "sidekiq-worker")
77
+ valid_edges?(traces)
78
+
79
+ # Validate Webserver Spec KVs
80
+ assert_equal Socket.gethostname, traces[0]['HTTP-Host']
81
+ assert_equal "Sidekiq_critical", traces[0]['Controller']
82
+ assert_equal "ErrorWorkerJob", traces[0]['Action']
83
+ assert_equal "/sidekiq/critical/ErrorWorkerJob", traces[0]['URL']
84
+
85
+ # Validate Job Spec KVs
86
+ assert_equal "job", traces[0]['Spec']
87
+ assert_equal 'sidekiq', traces[0]['Flavor']
88
+ assert_equal "ErrorWorkerJob", traces[0]['JobName']
89
+ assert_equal jid, traces[0]['MsgID']
90
+ assert_equal "critical", traces[0]['Queue']
91
+ assert_equal "[1, 2, 3]", traces[0]['Args']
92
+ assert_equal "false", traces[0]['Retry']
93
+
94
+ assert_equal traces[1]['Layer'], 'sidekiq-worker'
95
+ assert_equal traces[1]['Label'], 'error'
96
+ assert_equal traces[1]['ErrorClass'], "RuntimeError"
97
+ assert traces[1].key?('ErrorMsg')
98
+ assert traces[1].key?('Backtrace')
99
+ end
100
+
101
+ def test_collect_backtraces_default_value
102
+ assert_equal TV::Config[:sidekiqworker][:collect_backtraces], false, "default backtrace collection"
103
+ end
104
+
105
+ def test_log_args_default_value
106
+ assert_equal TV::Config[:sidekiqworker][:log_args], true, "log_args default "
107
+ end
108
+
109
+ def test_obey_collect_backtraces_when_false
110
+ TraceView::Config[:sidekiqworker][:collect_backtraces] = false
111
+
112
+ # Queue up a job to be run
113
+ Sidekiq::Client.push('queue' => 'critical', 'class' => ::RemoteCallWorkerJob, 'args' => [1, 2, 3], 'retry' => false)
114
+
115
+ # Allow the job to be run
116
+ sleep 5
117
+
118
+ traces = get_all_traces
119
+ assert_equal 17, traces.count, "Trace count"
120
+ valid_edges?(traces)
121
+ assert_equal 'sidekiq-worker', traces[0]['Layer']
122
+ assert_equal false, traces[0].key?('Backtrace')
123
+ end
124
+
125
+ def test_obey_collect_backtraces_when_true
126
+ # FIXME: This can't be tested with the current Sidekiq minitest integration (e.g. already booted
127
+ # sidekiq in a different process)
128
+ skip
129
+
130
+ TraceView::Config[:sidekiqworker][:collect_backtraces] = true
131
+
132
+ # Queue up a job to be run
133
+ Sidekiq::Client.push('queue' => 'critical', 'class' => ::RemoteCallWorkerJob, 'args' => [1, 2, 3], 'retry' => false)
134
+
135
+ # Allow the job to be run
136
+ sleep 5
137
+
138
+ traces = get_all_traces
139
+ assert_equal 17, traces.count, "Trace count"
140
+ valid_edges?(traces)
141
+ assert_equal 'sidekiq-worker', traces[0]['Layer']
142
+ assert_equal true, traces[0].key?('Backtrace')
143
+ end
144
+
145
+ def test_obey_log_args_when_false
146
+ # FIXME: This can't be tested with the current Sidekiq minitest integration (e.g. already booted
147
+ # sidekiq in a different process)
148
+ skip
149
+
150
+ TraceView::Config[:sidekiqworker][:log_args] = false
151
+
152
+ # Queue up a job to be run
153
+ Sidekiq::Client.push('queue' => 'critical', 'class' => ::RemoteCallWorkerJob, 'args' => [1, 2, 3], 'retry' => false)
154
+
155
+ # Allow the job to be run
156
+ sleep 5
157
+
158
+ traces = get_all_traces
159
+ assert_equal 17, traces.count, "Trace count"
160
+ valid_edges?(traces)
161
+ assert_equal false, traces[0].key?('Args')
162
+ end
163
+
164
+ def test_obey_log_args_when_true
165
+ TraceView::Config[:sidekiqworker][:log_args] = true
166
+
167
+ # Queue up a job to be run
168
+ Sidekiq::Client.push('queue' => 'critical', 'class' => ::RemoteCallWorkerJob, 'args' => [1, 2, 3], 'retry' => false)
169
+
170
+ # Allow the job to be run
171
+ sleep 5
172
+
173
+ traces = get_all_traces
174
+ assert_equal 17, traces.count, "Trace count"
175
+ valid_edges?(traces)
176
+ assert_equal true, traces[0].key?('Args')
177
+ assert_equal '[1, 2, 3]', traces[0]['Args']
178
+ end
179
+ end
180
+ end