traceview 3.3.3-java → 3.4.0-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +18 -18
- data/CHANGELOG.md +13 -0
- data/README.md +3 -1
- data/Rakefile +18 -9
- data/gemfiles/delayed_job.gemfile +38 -0
- data/gemfiles/frameworks.gemfile +1 -2
- data/gemfiles/libraries.gemfile +1 -2
- data/gemfiles/rails23.gemfile +1 -2
- data/gemfiles/rails30.gemfile +4 -2
- data/gemfiles/rails31.gemfile +4 -2
- data/gemfiles/rails32.gemfile +4 -2
- data/gemfiles/rails40.gemfile +4 -2
- data/gemfiles/rails41.gemfile +4 -2
- data/gemfiles/rails42.gemfile +4 -2
- data/lib/traceview/api/layerinit.rb +3 -5
- data/lib/traceview/api/logging.rb +63 -50
- data/lib/traceview/api/memcache.rb +10 -9
- data/lib/traceview/api/profiling.rb +6 -7
- data/lib/traceview/api/util.rb +1 -1
- data/lib/traceview/base.rb +21 -7
- data/lib/traceview/config.rb +8 -4
- data/lib/traceview/frameworks/padrino.rb +2 -2
- data/lib/traceview/frameworks/rails/inst/action_controller.rb +3 -3
- data/lib/traceview/frameworks/rails/inst/action_view.rb +4 -2
- data/lib/traceview/frameworks/rails/inst/action_view_2x.rb +4 -2
- data/lib/traceview/frameworks/rails/inst/action_view_30.rb +4 -2
- data/lib/traceview/frameworks/rails/inst/connection_adapters/utils.rb +3 -3
- data/lib/traceview/frameworks/rails.rb +26 -32
- data/lib/traceview/frameworks/sinatra/templates.rb +1 -1
- data/lib/traceview/frameworks/sinatra.rb +1 -1
- data/lib/traceview/inst/dalli.rb +4 -5
- data/lib/traceview/inst/delayed_job.rb +92 -0
- data/lib/traceview/inst/em-http-request.rb +3 -0
- data/lib/traceview/inst/excon.rb +3 -3
- data/lib/traceview/inst/faraday.rb +4 -1
- data/lib/traceview/inst/mongo.rb +10 -5
- data/lib/traceview/inst/moped.rb +4 -4
- data/lib/traceview/inst/redis.rb +5 -7
- data/lib/traceview/inst/resque.rb +3 -3
- data/lib/traceview/inst/rest-client.rb +2 -2
- data/lib/traceview/inst/sidekiq-client.rb +3 -0
- data/lib/traceview/inst/sidekiq-worker.rb +3 -0
- data/lib/traceview/inst/twitter-cassandra.rb +8 -4
- data/lib/traceview/test.rb +30 -1
- data/lib/traceview/util.rb +7 -0
- data/lib/traceview/version.rb +2 -2
- data/test/frameworks/rails3x_test.rb +12 -2
- data/test/frameworks/rails4x_test.rb +12 -2
- data/test/instrumentation/curb_test.rb +2 -2
- data/test/instrumentation/dalli_test.rb +121 -118
- data/test/instrumentation/httpclient_test.rb +0 -1
- data/test/jobs/delayed_job/db_worker_job.rb +29 -0
- data/test/jobs/delayed_job/error_worker_job.rb +10 -0
- data/test/jobs/delayed_job/remote_call_worker_job.rb +20 -0
- data/test/minitest_helper.rb +8 -3
- data/test/models/widget.rb +19 -0
- data/test/queues/delayed_job-client_test.rb +95 -0
- data/test/queues/delayed_job-worker_test.rb +91 -0
- data/test/servers/delayed_job.rb +102 -0
- data/test/servers/rails3x_8140.rb +17 -1
- data/test/servers/rails4x_8140.rb +18 -1
- data/test/support/auto_tracing.rb +40 -0
- data/test/support/config_test.rb +5 -1
- data/traceview.gemspec +1 -0
- metadata +34 -6
- data/test/instrumentation/delayed_job-client_test.rb +0 -128
- data/test/instrumentation/delayed_job-worker_test.rb +0 -177
@@ -0,0 +1,19 @@
|
|
1
|
+
class Widget < ActiveRecord::Base
|
2
|
+
def do_work(*args)
|
3
|
+
Widget.first
|
4
|
+
end
|
5
|
+
|
6
|
+
def do_error(*args)
|
7
|
+
raise "FakeTestError"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
class CreateWidgets < ActiveRecord::Migration
|
12
|
+
def change
|
13
|
+
create_table :widgets do |t|
|
14
|
+
t.string :name
|
15
|
+
t.text :description
|
16
|
+
t.timestamps
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# Copyright (c) 2015 AppNeta, Inc.
|
2
|
+
# All rights reserved.
|
3
|
+
|
4
|
+
require 'minitest_helper'
|
5
|
+
require_relative "../jobs/delayed_job/remote_call_worker_job"
|
6
|
+
require_relative "../jobs/delayed_job/db_worker_job"
|
7
|
+
require_relative "../jobs/delayed_job/error_worker_job"
|
8
|
+
require_relative '../models/widget'
|
9
|
+
|
10
|
+
# Delete all pre-existing jobs before we start
|
11
|
+
Delayed::Job.delete_all
|
12
|
+
|
13
|
+
class DelayedJobClientTest < Minitest::Test
|
14
|
+
def setup
|
15
|
+
clear_all_traces
|
16
|
+
@collect_backtraces = TraceView::Config[:delayed_jobclient][:collect_backtraces]
|
17
|
+
@log_args = TraceView::Config[:delayed_jobclient][:log_args]
|
18
|
+
end
|
19
|
+
|
20
|
+
def teardown
|
21
|
+
TraceView::Config[:delayed_jobclient][:collect_backtraces] = @collect_backtraces
|
22
|
+
TraceView::Config[:delayed_jobclient][:log_args] = @log_args
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_delay
|
26
|
+
w = Widget.new(:name => 'blah', :description => 'This is a wonderful widget.')
|
27
|
+
w.save
|
28
|
+
|
29
|
+
TV::API.start_trace('dj_delay') do
|
30
|
+
w.delay.do_work(1, 2, 3)
|
31
|
+
end
|
32
|
+
|
33
|
+
sleep 15
|
34
|
+
|
35
|
+
traces = get_all_traces
|
36
|
+
valid_edges?(traces)
|
37
|
+
|
38
|
+
assert_equal 'dj_delay', traces[0]['Layer']
|
39
|
+
assert_equal 'entry', traces[0]['Label']
|
40
|
+
assert_equal 'delayed_job-client', traces[1]['Layer']
|
41
|
+
assert_equal 'entry', traces[1]['Label']
|
42
|
+
assert_equal 'pushq', traces[1]['Spec']
|
43
|
+
assert_equal 'DelayedJob', traces[1]['Flavor']
|
44
|
+
assert_equal 'Widget#do_work', traces[1]['JobName']
|
45
|
+
assert_equal 'delayed_job-client', traces[2]['Layer']
|
46
|
+
assert_equal 'exit', traces[2]['Label']
|
47
|
+
assert_equal 'dj_delay', traces[3]['Layer']
|
48
|
+
assert_equal 'exit', traces[3]['Label']
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_collect_backtraces_default_value
|
53
|
+
assert_equal TV::Config[:delayed_jobclient][:collect_backtraces], false, "default backtrace collection"
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_log_args_default_value
|
57
|
+
assert_equal TV::Config[:delayed_jobclient][:log_args], true, "log_args default "
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_obey_collect_backtraces_when_false
|
61
|
+
TraceView::Config[:delayed_jobclient][:collect_backtraces] = false
|
62
|
+
|
63
|
+
w = Widget.new(:name => 'blah', :description => 'This is a wonderful widget.')
|
64
|
+
w.save
|
65
|
+
|
66
|
+
TV::API.start_trace('dj_delay') do
|
67
|
+
w.delay.do_work(1, 2, 3)
|
68
|
+
end
|
69
|
+
|
70
|
+
traces = get_all_traces
|
71
|
+
valid_edges?(traces)
|
72
|
+
|
73
|
+
assert_equal 'delayed_job-client', traces[1]['Layer']
|
74
|
+
assert_equal 'entry', traces[1]['Label']
|
75
|
+
assert_equal false, traces[1].key?('Backtrace')
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_obey_collect_backtraces_when_true
|
79
|
+
TraceView::Config[:delayed_jobclient][:collect_backtraces] = true
|
80
|
+
|
81
|
+
w = Widget.new(:name => 'blah', :description => 'This is a wonderful widget.')
|
82
|
+
w.save
|
83
|
+
|
84
|
+
TV::API.start_trace('dj_delay') do
|
85
|
+
w.delay.do_work(1, 2, 3)
|
86
|
+
end
|
87
|
+
|
88
|
+
traces = get_all_traces
|
89
|
+
valid_edges?(traces)
|
90
|
+
|
91
|
+
assert_equal 'delayed_job-client', traces[1]['Layer']
|
92
|
+
assert_equal 'entry', traces[1]['Label']
|
93
|
+
assert_equal true, traces[1].key?('Backtrace')
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# Copyright (c) 2015 AppNeta, Inc.
|
2
|
+
# All rights reserved.
|
3
|
+
|
4
|
+
require 'minitest_helper'
|
5
|
+
require_relative '../jobs/delayed_job/remote_call_worker_job'
|
6
|
+
require_relative '../jobs/delayed_job/db_worker_job'
|
7
|
+
require_relative '../jobs/delayed_job/error_worker_job'
|
8
|
+
require_relative '../models/widget'
|
9
|
+
|
10
|
+
class DelayedJobWorkerTest < Minitest::Test
|
11
|
+
def setup
|
12
|
+
# Delete all pre-existing jobs before we start
|
13
|
+
Delayed::Job.delete_all
|
14
|
+
|
15
|
+
clear_all_traces
|
16
|
+
@collect_backtraces = TraceView::Config[:delayed_jobworker][:collect_backtraces]
|
17
|
+
@log_args = TraceView::Config[:delayed_jobworker][:log_args]
|
18
|
+
end
|
19
|
+
|
20
|
+
def teardown
|
21
|
+
TraceView::Config[:delayed_jobworker][:collect_backtraces] = @collect_backtraces
|
22
|
+
TraceView::Config[:delayed_jobworker][:log_args] = @log_args
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_reports_version_init
|
26
|
+
init_kvs = ::TraceView::Util.build_init_report
|
27
|
+
assert init_kvs.key?('Ruby.DelayedJob.Version')
|
28
|
+
assert_equal "DelayedJob-#{Gem.loaded_specs['delayed_job'].version.to_s}", init_kvs['Ruby.DelayedJob.Version']
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_job_run
|
32
|
+
w = Widget.new(:name => 'blah', :description => 'This is a wonderful wonderful widget.')
|
33
|
+
w.save
|
34
|
+
|
35
|
+
w.delay.do_work(1, 2, 3)
|
36
|
+
|
37
|
+
sleep 15
|
38
|
+
|
39
|
+
traces = get_all_traces
|
40
|
+
assert_equal 2, traces.count, "Trace count"
|
41
|
+
valid_edges?(traces)
|
42
|
+
|
43
|
+
assert_equal 'delayed_job-worker', traces[0]['Layer']
|
44
|
+
assert_equal 'entry', traces[0]['Label']
|
45
|
+
assert_equal 'job', traces[0]['Spec']
|
46
|
+
assert_equal 'DelayedJob', traces[0]['Flavor']
|
47
|
+
assert_equal 'Widget#do_work', traces[0]['JobName']
|
48
|
+
assert_equal 0, traces[0]['priority']
|
49
|
+
assert_equal 0, traces[0]['attempts']
|
50
|
+
assert traces[0].key?('WorkerName'), "Worker Name"
|
51
|
+
assert traces[0].key?('SampleRate')
|
52
|
+
assert traces[0].key?('SampleSource')
|
53
|
+
assert_equal false, traces[0].key?('Backtrace')
|
54
|
+
|
55
|
+
assert_equal 'delayed_job-worker', traces[1]['Layer']
|
56
|
+
assert_equal 'exit', traces[1]['Label']
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_jobs_with_errors
|
60
|
+
w = Widget.new(:name => 'blah', :description => 'This is a wonderful wonderful widget.')
|
61
|
+
w.save
|
62
|
+
|
63
|
+
w.delay.do_error(1, 2, 3)
|
64
|
+
|
65
|
+
sleep 15
|
66
|
+
|
67
|
+
traces = get_all_traces
|
68
|
+
assert_equal 3, traces.count, "Trace count"
|
69
|
+
valid_edges?(traces)
|
70
|
+
|
71
|
+
assert_equal 'delayed_job-worker', traces[0]['Layer']
|
72
|
+
assert_equal 'entry', traces[0]['Label']
|
73
|
+
|
74
|
+
assert_equal 'error', traces[1]['Label']
|
75
|
+
assert_equal 'FakeTestError', traces[1]['ErrorMsg']
|
76
|
+
assert traces[1].key?('Backtrace')
|
77
|
+
assert traces[1].key?('ErrorClass')
|
78
|
+
|
79
|
+
assert_equal 'delayed_job-worker', traces[2]['Layer']
|
80
|
+
assert_equal 'exit', traces[2]['Label']
|
81
|
+
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_collect_backtraces_default_value
|
85
|
+
assert_equal TV::Config[:delayed_jobworker][:collect_backtraces], false, "default backtrace collection"
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_log_args_default_value
|
89
|
+
assert_equal TV::Config[:delayed_jobworker][:log_args], true, "log_args default "
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# Copyright (c) 2015 AppNeta, Inc.
|
2
|
+
# All rights reserved.
|
3
|
+
|
4
|
+
require "rails/all"
|
5
|
+
require "delayed_job"
|
6
|
+
require "action_controller/railtie" # require more if needed
|
7
|
+
require 'rack/handler/puma'
|
8
|
+
require File.expand_path(File.dirname(__FILE__) + '/../models/widget')
|
9
|
+
|
10
|
+
TraceView.logger.level = Logger::DEBUG
|
11
|
+
TraceView.logger.info "[traceview/info] Starting background utility rails app on localhost:8140."
|
12
|
+
|
13
|
+
if ENV.key?('TRAVIS_PSQL_PASS')
|
14
|
+
DJ_DB_URL = "postgres://postgres:#{ENV['TRAVIS_PSQL_PASS']}@127.0.0.1:5432/travis_ci_test"
|
15
|
+
else
|
16
|
+
DJ_DB_URL = 'postgres://postgres@127.0.0.1:5432/travis_ci_test'
|
17
|
+
end
|
18
|
+
|
19
|
+
ActiveRecord::Base.establish_connection(DJ_DB_URL)
|
20
|
+
|
21
|
+
unless ActiveRecord::Base.connection.table_exists? :delayed_jobs
|
22
|
+
TraceView.logger.info "[traceview/servers] Creating DelayedJob DB table."
|
23
|
+
require 'generators/delayed_job/templates/migration'
|
24
|
+
ActiveRecord::Migration.run(CreateDelayedJobs)
|
25
|
+
end
|
26
|
+
|
27
|
+
unless ActiveRecord::Base.connection.table_exists? 'widgets'
|
28
|
+
ActiveRecord::Migration.run(CreateWidgets)
|
29
|
+
end
|
30
|
+
|
31
|
+
class Rails40MetalStack < Rails::Application
|
32
|
+
routes.append do
|
33
|
+
get "/hello/world" => "hello#world"
|
34
|
+
get "/hello/metal" => "ferro#world"
|
35
|
+
end
|
36
|
+
|
37
|
+
# Enable cache classes. Production style.
|
38
|
+
config.cache_classes = true
|
39
|
+
config.eager_load = false
|
40
|
+
|
41
|
+
# uncomment below to display errors
|
42
|
+
# config.consider_all_requests_local = true
|
43
|
+
|
44
|
+
config.active_support.deprecation = :stderr
|
45
|
+
|
46
|
+
# Here you could remove some middlewares, for example
|
47
|
+
# Rack::Lock, ActionDispatch::Flash and ActionDispatch::BestStandardsSupport below.
|
48
|
+
# The remaining stack is printed on rackup (for fun!).
|
49
|
+
# Rails API has config.middleware.api_only! to get
|
50
|
+
# rid of browser related middleware.
|
51
|
+
config.middleware.delete "Rack::Lock"
|
52
|
+
config.middleware.delete "ActionDispatch::Flash"
|
53
|
+
config.middleware.delete "ActionDispatch::BestStandardsSupport"
|
54
|
+
|
55
|
+
# We need a secret token for session, cookies, etc.
|
56
|
+
config.secret_token = "49837489qkuweoiuoqwehisuakshdjksadhaisdy78o34y138974xyqp9rmye8yrpiokeuioqwzyoiuxftoyqiuxrhm3iou1hrzmjk"
|
57
|
+
config.secret_key_base = "2048671-96803948"
|
58
|
+
end
|
59
|
+
|
60
|
+
#################################################
|
61
|
+
# Controllers
|
62
|
+
#################################################
|
63
|
+
|
64
|
+
class HelloController < ActionController::Base
|
65
|
+
def world
|
66
|
+
render :text => "Hello world!"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
class FerroController < ActionController::Metal
|
71
|
+
include AbstractController::Rendering
|
72
|
+
|
73
|
+
def world
|
74
|
+
render :text => "Hello world!"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
Delayed::Job.delete_all
|
79
|
+
|
80
|
+
@worker_options = {
|
81
|
+
:min_priority => ENV['MIN_PRIORITY'],
|
82
|
+
:max_priority => ENV['MAX_PRIORITY'],
|
83
|
+
:queues => (ENV['QUEUES'] || ENV['QUEUE'] || '').split(','),
|
84
|
+
:quiet => ENV['QUIET']
|
85
|
+
}
|
86
|
+
|
87
|
+
@worker_options[:sleep_delay] = ENV['SLEEP_DELAY'].to_i if ENV['SLEEP_DELAY']
|
88
|
+
@worker_options[:read_ahead] = ENV['READ_AHEAD'].to_i if ENV['READ_AHEAD']
|
89
|
+
|
90
|
+
TraceView.logger.info "[traceview/servers] Starting up background DelayedJob."
|
91
|
+
|
92
|
+
#Delayed::Worker.delay_jobs = false
|
93
|
+
Delayed::Worker.max_attempts = 1
|
94
|
+
Delayed::Worker.sleep_delay = 10
|
95
|
+
|
96
|
+
Thread.new do
|
97
|
+
Delayed::Worker.new(@worker_options).start
|
98
|
+
end
|
99
|
+
|
100
|
+
# Allow it to boot
|
101
|
+
TraceView.logger.info "[traceview/servers] Waiting 5 seconds for DJ to boot..."
|
102
|
+
sleep 5
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# Taken from: https://www.amberbit.com/blog/2014/2/14/putting-ruby-on-rails-on-a-diet/
|
2
2
|
# Port of https://gist.github.com/josevalim/1942658 to Rails 4
|
3
3
|
# Original author: Jose Valim
|
4
|
+
# Updated by: Peter Giacomo Lombardo
|
4
5
|
#
|
5
6
|
# Run this file with:
|
6
7
|
#
|
@@ -15,12 +16,25 @@
|
|
15
16
|
# config/application.rb, config/environment.rb and config.ru
|
16
17
|
# existing in any Rails 4 app. Here they are simply in one
|
17
18
|
# file and without the comments.
|
18
|
-
require "rails"
|
19
|
+
require "rails/all"
|
19
20
|
require "action_controller/railtie" # require more if needed
|
20
21
|
require 'rack/handler/puma'
|
22
|
+
require File.expand_path(File.dirname(__FILE__) + '/../models/widget')
|
21
23
|
|
22
24
|
TraceView.logger.info "[traceview/info] Starting background utility rails app on localhost:8140."
|
23
25
|
|
26
|
+
if ENV.key?('TRAVIS_PSQL_PASS')
|
27
|
+
ENV['DATABASE_URL'] = "postgresql://postgres:#{ENV['TRAVIS_PSQL_PASS']}@127.0.0.1:5432/travis_ci_test"
|
28
|
+
else
|
29
|
+
ENV['DATABASE_URL'] = 'postgresql://postgres@127.0.0.1:5432/travis_ci_test'
|
30
|
+
end
|
31
|
+
|
32
|
+
ActiveRecord::Base.establish_connection(ENV['DATABASE_URL'])
|
33
|
+
|
34
|
+
unless ActiveRecord::Base.connection.table_exists? 'widgets'
|
35
|
+
CreateWidgets.migrate(:up)
|
36
|
+
end
|
37
|
+
|
24
38
|
class Rails32MetalStack < Rails::Application
|
25
39
|
routes.append do
|
26
40
|
get "/hello/world" => "hello#world"
|
@@ -34,6 +48,8 @@ class Rails32MetalStack < Rails::Application
|
|
34
48
|
# uncomment below to display errors
|
35
49
|
# config.consider_all_requests_local = true
|
36
50
|
|
51
|
+
config.active_support.deprecation = :stderr
|
52
|
+
|
37
53
|
# Here you could remove some middlewares, for example
|
38
54
|
# Rack::Lock, ActionDispatch::Flash and ActionDispatch::BestStandardsSupport below.
|
39
55
|
# The remaining stack is printed on rackup (for fun!).
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# Taken from: https://www.amberbit.com/blog/2014/2/14/putting-ruby-on-rails-on-a-diet/
|
2
2
|
# Port of https://gist.github.com/josevalim/1942658 to Rails 4
|
3
3
|
# Original author: Jose Valim
|
4
|
+
# Updated by: Peter Giacomo Lombardo
|
4
5
|
#
|
5
6
|
# Run this file with:
|
6
7
|
#
|
@@ -15,12 +16,26 @@
|
|
15
16
|
# config/application.rb, config/environment.rb and config.ru
|
16
17
|
# existing in any Rails 4 app. Here they are simply in one
|
17
18
|
# file and without the comments.
|
18
|
-
|
19
|
+
#
|
20
|
+
if ENV.key?('TRAVIS_PSQL_PASS')
|
21
|
+
ENV['DATABASE_URL'] = "postgresql://postgres:#{ENV['TRAVIS_PSQL_PASS']}@127.0.0.1:5432/travis_ci_test"
|
22
|
+
else
|
23
|
+
ENV['DATABASE_URL'] = 'postgresql://postgres@127.0.0.1:5432/travis_ci_test'
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rails/all"
|
19
27
|
require "action_controller/railtie" # require more if needed
|
20
28
|
require 'rack/handler/puma'
|
29
|
+
require File.expand_path(File.dirname(__FILE__) + '/../models/widget')
|
21
30
|
|
22
31
|
TraceView.logger.info "[traceview/info] Starting background utility rails app on localhost:8140."
|
23
32
|
|
33
|
+
ActiveRecord::Base.establish_connection(ENV['DATABASE_URL'])
|
34
|
+
|
35
|
+
unless ActiveRecord::Base.connection.table_exists? 'widgets'
|
36
|
+
ActiveRecord::Migration.run(CreateWidgets)
|
37
|
+
end
|
38
|
+
|
24
39
|
class Rails40MetalStack < Rails::Application
|
25
40
|
routes.append do
|
26
41
|
get "/hello/world" => "hello#world"
|
@@ -34,6 +49,8 @@ class Rails40MetalStack < Rails::Application
|
|
34
49
|
# uncomment below to display errors
|
35
50
|
# config.consider_all_requests_local = true
|
36
51
|
|
52
|
+
config.active_support.deprecation = :stderr
|
53
|
+
|
37
54
|
# Here you could remove some middlewares, for example
|
38
55
|
# Rack::Lock, ActionDispatch::Flash and ActionDispatch::BestStandardsSupport below.
|
39
56
|
# The remaining stack is printed on rackup (for fun!).
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# Copyright (c) 2015 AppNeta, Inc.
|
2
|
+
# All rights reserved.
|
3
|
+
|
4
|
+
require 'minitest_helper'
|
5
|
+
|
6
|
+
class AutoTraceTest < Minitest::Test
|
7
|
+
def setup
|
8
|
+
@tm = TraceView::Config[:tracing_mode]
|
9
|
+
end
|
10
|
+
|
11
|
+
def teardown
|
12
|
+
TraceView::Config[:tracing_mode] = @tm
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_entry_layers
|
16
|
+
TraceView.entry_layer?('delayed_job-worker').must_equal true
|
17
|
+
TraceView.entry_layer?('asdf-worker').must_equal false
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_entry_layers_supports_symbols
|
21
|
+
TraceView.entry_layer?(:'delayed_job-worker').must_equal true
|
22
|
+
TraceView.entry_layer?(:asdfworker).must_equal false
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_trace_when_default_tm
|
26
|
+
TraceView::Config[:tracing_mode] = :through
|
27
|
+
|
28
|
+
TV::API.start_trace('delayed_job-worker') do
|
29
|
+
TraceView.tracing?.must_equal true
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_dont_trace_when_never
|
34
|
+
TraceView::Config[:tracing_mode] = :never
|
35
|
+
|
36
|
+
TV::API.start_trace('delayed_job-worker') do
|
37
|
+
TraceView.tracing?.must_equal false
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/test/support/config_test.rb
CHANGED
@@ -30,7 +30,7 @@ describe "TraceView::Config" do
|
|
30
30
|
instrumentation = TraceView::Config.instrumentation
|
31
31
|
|
32
32
|
# Verify the number of individual instrumentations
|
33
|
-
instrumentation.count.must_equal
|
33
|
+
instrumentation.count.must_equal 27
|
34
34
|
|
35
35
|
TraceView::Config[:action_controller][:enabled].must_equal true
|
36
36
|
TraceView::Config[:action_view][:enabled].must_equal true
|
@@ -38,6 +38,8 @@ describe "TraceView::Config" do
|
|
38
38
|
TraceView::Config[:cassandra][:enabled].must_equal true
|
39
39
|
TraceView::Config[:curb][:enabled].must_equal true
|
40
40
|
TraceView::Config[:dalli][:enabled].must_equal true
|
41
|
+
TraceView::Config[:delayed_jobclient][:enabled].must_equal true
|
42
|
+
TraceView::Config[:delayed_jobworker][:enabled].must_equal true
|
41
43
|
TraceView::Config[:em_http_request][:enabled].must_equal false
|
42
44
|
TraceView::Config[:excon][:enabled].must_equal true
|
43
45
|
TraceView::Config[:faraday][:enabled].must_equal true
|
@@ -64,6 +66,8 @@ describe "TraceView::Config" do
|
|
64
66
|
TraceView::Config[:cassandra][:log_args].must_equal true
|
65
67
|
TraceView::Config[:curb][:log_args].must_equal true
|
66
68
|
TraceView::Config[:dalli][:log_args].must_equal true
|
69
|
+
TraceView::Config[:delayed_jobclient][:log_args].must_equal true
|
70
|
+
TraceView::Config[:delayed_jobworker][:log_args].must_equal true
|
67
71
|
TraceView::Config[:em_http_request][:log_args].must_equal true
|
68
72
|
TraceView::Config[:excon][:log_args].must_equal true
|
69
73
|
TraceView::Config[:faraday][:log_args].must_equal true
|
data/traceview.gemspec
CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.extensions = ['ext/oboe_metal/extconf.rb'] unless defined?(JRUBY_VERSION)
|
23
23
|
|
24
24
|
s.add_runtime_dependency('json', '>= 0')
|
25
|
+
s.add_runtime_dependency('bson', '< 4.0')
|
25
26
|
s.add_development_dependency('rake', '>= 0')
|
26
27
|
|
27
28
|
s.required_ruby_version = '>= 1.8.6'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: traceview
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.4.0
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Peter Giacomo Lombardo
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-12-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -25,6 +25,20 @@ dependencies:
|
|
25
25
|
version: '0'
|
26
26
|
prerelease: false
|
27
27
|
type: :runtime
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: bson
|
30
|
+
version_requirements: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "<"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '4.0'
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "<"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '4.0'
|
40
|
+
prerelease: false
|
41
|
+
type: :runtime
|
28
42
|
- !ruby/object:Gem::Dependency
|
29
43
|
name: rake
|
30
44
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -71,6 +85,7 @@ files:
|
|
71
85
|
- ext/oboe_metal/src/oboe.hpp
|
72
86
|
- ext/oboe_metal/src/oboe_wrap.cxx
|
73
87
|
- ext/oboe_metal/tests/test.rb
|
88
|
+
- gemfiles/delayed_job.gemfile
|
74
89
|
- gemfiles/frameworks.gemfile
|
75
90
|
- gemfiles/libraries.gemfile
|
76
91
|
- gemfiles/rails23.gemfile
|
@@ -121,6 +136,7 @@ files:
|
|
121
136
|
- lib/traceview/frameworks/sinatra/templates.rb
|
122
137
|
- lib/traceview/inst/curb.rb
|
123
138
|
- lib/traceview/inst/dalli.rb
|
139
|
+
- lib/traceview/inst/delayed_job.rb
|
124
140
|
- lib/traceview/inst/em-http-request.rb
|
125
141
|
- lib/traceview/inst/excon.rb
|
126
142
|
- lib/traceview/inst/faraday.rb
|
@@ -163,8 +179,6 @@ files:
|
|
163
179
|
- test/instrumentation/cassandra_test.rb
|
164
180
|
- test/instrumentation/curb_test.rb
|
165
181
|
- test/instrumentation/dalli_test.rb
|
166
|
-
- test/instrumentation/delayed_job-client_test.rb
|
167
|
-
- test/instrumentation/delayed_job-worker_test.rb
|
168
182
|
- test/instrumentation/em_http_request_test.rb
|
169
183
|
- test/instrumentation/excon_test.rb
|
170
184
|
- test/instrumentation/faraday_test.rb
|
@@ -190,6 +204,9 @@ files:
|
|
190
204
|
- test/instrumentation/sidekiq-client_test.rb
|
191
205
|
- test/instrumentation/sidekiq-worker_test.rb
|
192
206
|
- test/instrumentation/typhoeus_test.rb
|
207
|
+
- test/jobs/delayed_job/db_worker_job.rb
|
208
|
+
- test/jobs/delayed_job/error_worker_job.rb
|
209
|
+
- test/jobs/delayed_job/remote_call_worker_job.rb
|
193
210
|
- test/jobs/resque/db_worker_job.rb
|
194
211
|
- test/jobs/resque/error_worker_job.rb
|
195
212
|
- test/jobs/resque/remote_call_worker_job.rb
|
@@ -197,15 +214,20 @@ files:
|
|
197
214
|
- test/jobs/sidekiq/error_worker_job.rb
|
198
215
|
- test/jobs/sidekiq/remote_call_worker_job.rb
|
199
216
|
- test/minitest_helper.rb
|
217
|
+
- test/models/widget.rb
|
200
218
|
- test/profiling/legacy_method_profiling_test.rb
|
201
219
|
- test/profiling/method_profiling_test.rb
|
220
|
+
- test/queues/delayed_job-client_test.rb
|
221
|
+
- test/queues/delayed_job-worker_test.rb
|
202
222
|
- test/reporter/reporter_test.rb
|
223
|
+
- test/servers/delayed_job.rb
|
203
224
|
- test/servers/rackapp_8101.rb
|
204
225
|
- test/servers/rails3x_8140.rb
|
205
226
|
- test/servers/rails4x_8140.rb
|
206
227
|
- test/servers/sidekiq.rb
|
207
228
|
- test/servers/sidekiq.yml
|
208
229
|
- test/servers/sidekiq_initializer.rb
|
230
|
+
- test/support/auto_tracing.rb
|
209
231
|
- test/support/backcompat_test.rb
|
210
232
|
- test/support/config_test.rb
|
211
233
|
- test/support/dnt_test.rb
|
@@ -244,11 +266,11 @@ test_files:
|
|
244
266
|
- test/servers/sidekiq_initializer.rb
|
245
267
|
- test/servers/rails4x_8140.rb
|
246
268
|
- test/servers/rails3x_8140.rb
|
269
|
+
- test/servers/delayed_job.rb
|
247
270
|
- test/servers/sidekiq.rb
|
248
271
|
- test/servers/rackapp_8101.rb
|
249
272
|
- test/instrumentation/excon_test.rb
|
250
273
|
- test/instrumentation/sequel_pg_test.rb
|
251
|
-
- test/instrumentation/delayed_job-worker_test.rb
|
252
274
|
- test/instrumentation/moped_test.rb
|
253
275
|
- test/instrumentation/httpclient_test.rb
|
254
276
|
- test/instrumentation/sequel_mysql_test.rb
|
@@ -260,7 +282,6 @@ test_files:
|
|
260
282
|
- test/instrumentation/cassandra_test.rb
|
261
283
|
- test/instrumentation/redis_strings_test.rb
|
262
284
|
- test/instrumentation/typhoeus_test.rb
|
263
|
-
- test/instrumentation/delayed_job-client_test.rb
|
264
285
|
- test/instrumentation/sequel_mysql2_test.rb
|
265
286
|
- test/instrumentation/sidekiq-worker_test.rb
|
266
287
|
- test/instrumentation/redis_misc_test.rb
|
@@ -277,6 +298,7 @@ test_files:
|
|
277
298
|
- test/instrumentation/em_http_request_test.rb
|
278
299
|
- test/instrumentation/rest-client_test.rb
|
279
300
|
- test/reporter/reporter_test.rb
|
301
|
+
- test/models/widget.rb
|
280
302
|
- test/profiling/method_profiling_test.rb
|
281
303
|
- test/profiling/legacy_method_profiling_test.rb
|
282
304
|
- test/frameworks/sinatra_test.rb
|
@@ -288,8 +310,11 @@ test_files:
|
|
288
310
|
- test/frameworks/apps/sinatra_simple.rb
|
289
311
|
- test/frameworks/apps/padrino_simple.rb
|
290
312
|
- test/frameworks/apps/grape_nested.rb
|
313
|
+
- test/queues/delayed_job-worker_test.rb
|
314
|
+
- test/queues/delayed_job-client_test.rb
|
291
315
|
- test/support/config_test.rb
|
292
316
|
- test/support/noop_test.rb
|
317
|
+
- test/support/auto_tracing.rb
|
293
318
|
- test/support/dnt_test.rb
|
294
319
|
- test/support/sql_sanitize_test.rb
|
295
320
|
- test/support/tvalias_test.rb
|
@@ -302,3 +327,6 @@ test_files:
|
|
302
327
|
- test/jobs/resque/remote_call_worker_job.rb
|
303
328
|
- test/jobs/resque/error_worker_job.rb
|
304
329
|
- test/jobs/resque/db_worker_job.rb
|
330
|
+
- test/jobs/delayed_job/remote_call_worker_job.rb
|
331
|
+
- test/jobs/delayed_job/error_worker_job.rb
|
332
|
+
- test/jobs/delayed_job/db_worker_job.rb
|