traceview 3.8.2 → 3.8.3
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -1
- data/gemfiles/frameworks.gemfile +12 -8
- data/gemfiles/libraries.gemfile +17 -3
- data/lib/traceview/api/layerinit.rb +2 -4
- data/lib/traceview/inst/curb.rb +5 -6
- data/lib/traceview/inst/sequel.rb +9 -1
- data/lib/traceview/inst/sidekiq-client.rb +1 -1
- data/lib/traceview/version.rb +1 -1
- data/test/benchmarks/allocations_test.rb +14 -0
- data/test/benchmarks/tracing_api_test.rb +15 -0
- data/test/instrumentation/excon_test.rb +3 -3
- data/test/instrumentation/rest-client_test.rb +1 -1
- data/test/instrumentation/sequel_mysql2_test.rb +25 -6
- data/test/instrumentation/sidekiq-client_test.rb +1 -1
- data/test/servers/delayed_job.rb +4 -14
- data/test/servers/rackapp_8101.rb +3 -0
- data/test/servers/rails3x_8140.rb +8 -33
- data/test/servers/rails4x_8140.rb +8 -35
- data/test/servers/rails5x_8140.rb +6 -33
- data/test/servers/rails5x_api_8150.rb +7 -38
- data/test/servers/sidekiq.rb +3 -1
- data/test/servers/sidekiq_initializer.rb +3 -0
- data/test/support/noop_test.rb +3 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32b865d51e3fb70e212c5fb02f043c1af940dff1
|
4
|
+
data.tar.gz: 37f29c3fc9cb2caf79a5e872e39e5f058e622f2d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2415dbcc5597523fae2e474c6f2c1c90900a9b6f800e35fc6b23fb8c63b8139fdcba2ab27c690b6dd674a1cb9d87fc9e5dababb6fe6f9aa6ecaea4e6562a09fd
|
7
|
+
data.tar.gz: b362aa442657b6b8161e7fc82fc01b5cf7a3834d3780a0a44f9f63927a10c0cfdf9e4d5e1ed35987d97c2030ba298dbe6259a142670ba9ba674b8a99d5b8acda
|
data/CHANGELOG.md
CHANGED
@@ -4,7 +4,20 @@ https://github.com/appneta/ruby-traceview/releases
|
|
4
4
|
|
5
5
|
Dates in this file are in the format MM/DD/YYYY.
|
6
6
|
|
7
|
-
# traceview 3.8.
|
7
|
+
# traceview 3.8.3 (08/29/2016)
|
8
|
+
|
9
|
+
This patch release includes the following fixes:
|
10
|
+
|
11
|
+
* Updates to test suite: Rails servers and Curb instrumentation
|
12
|
+
* Updated Sequel instrumentation to follow latest gem changes: bc2b715b6fd6575de2969e25705ec1fd8e51c236
|
13
|
+
* Updated Excon instrumentation to follow latest gem changes: c35ac53d6fd614e86d388e3f6c0f050341cc4f37
|
14
|
+
|
15
|
+
Pushed to Rubygems:
|
16
|
+
|
17
|
+
https://rubygems.org/gems/traceview/versions/3.8.3
|
18
|
+
https://rubygems.org/gems/traceview/versions/3.8.3-java
|
19
|
+
|
20
|
+
# traceview 3.8.2 (06/09/2016)
|
8
21
|
|
9
22
|
This patch release includes the following fixes:
|
10
23
|
|
data/gemfiles/frameworks.gemfile
CHANGED
@@ -16,7 +16,8 @@ end
|
|
16
16
|
|
17
17
|
# New mime-types/mime-types-data requires ruby 2.0
|
18
18
|
if RUBY_VERSION < '2.0'
|
19
|
-
|
19
|
+
# these gems dropped suport for < ruby version 2.0
|
20
|
+
gem 'json', '< 2.0.0'
|
20
21
|
end
|
21
22
|
|
22
23
|
if defined?(JRUBY_VERSION)
|
@@ -25,15 +26,18 @@ else
|
|
25
26
|
gem 'sinatra'
|
26
27
|
end
|
27
28
|
|
28
|
-
|
29
|
+
if RUBY_VERSION > '1.9.3'
|
30
|
+
gem "grape"
|
29
31
|
|
30
|
-
if defined?(JRUBY_VERSION)
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
else
|
35
|
-
|
32
|
+
if defined?(JRUBY_VERSION)
|
33
|
+
# Limit padrino gem under JRuby as version 0.13.0 throws
|
34
|
+
# a bundler load error
|
35
|
+
gem "padrino", '< 0.13.0'
|
36
|
+
else
|
37
|
+
gem 'padrino'
|
38
|
+
end
|
36
39
|
end
|
37
40
|
|
41
|
+
|
38
42
|
gemspec :path => File.expand_path(File.dirname(__FILE__) + '/../')
|
39
43
|
# vim:syntax=ruby
|
data/gemfiles/libraries.gemfile
CHANGED
@@ -1,15 +1,21 @@
|
|
1
1
|
source "https://rubygems.org"
|
2
2
|
|
3
|
+
|
3
4
|
if RUBY_VERSION >= '1.9.3'
|
4
|
-
# rest-client depends on mime-types gem which only supports
|
5
|
-
# ruby 1.9.3 and up
|
6
|
-
gem 'rest-client'
|
7
5
|
gem 'moped'
|
8
6
|
gem 'eventmachine', '< 1.2.0'
|
9
7
|
gem 'em-synchrony'
|
10
8
|
gem 'em-http-request'
|
11
9
|
end
|
12
10
|
|
11
|
+
if RUBY_VERSION >= '2.0.0'
|
12
|
+
# rest-client depends on mime-types gem which only supports
|
13
|
+
# ruby 1.9.3 and up. Latest rest-client only
|
14
|
+
# supports Ruby 2.0+
|
15
|
+
gem 'rest-client'
|
16
|
+
end
|
17
|
+
|
18
|
+
|
13
19
|
group :development, :test do
|
14
20
|
gem 'minitest'
|
15
21
|
gem 'minitest-reporters', '< 1.0.18'
|
@@ -32,8 +38,16 @@ else
|
|
32
38
|
gem 'sinatra'
|
33
39
|
end
|
34
40
|
|
41
|
+
if RUBY_VERSION.between?('1.8.7', '1.9.3')
|
42
|
+
# Nothing
|
43
|
+
elsif RUBY_VERSION == '1.9.3'
|
44
|
+
gem 'mime-types', '< 3.0'
|
45
|
+
end
|
46
|
+
|
35
47
|
if RUBY_VERSION < '2.0.0'
|
36
48
|
gem 'bunny', '< 2.0.0'
|
49
|
+
# these gems dropped suport for < ruby version 2.0
|
50
|
+
gem 'json', '< 2.0.0'
|
37
51
|
else
|
38
52
|
gem 'bunny'
|
39
53
|
end
|
@@ -11,11 +11,9 @@ module TraceView
|
|
11
11
|
# layer.
|
12
12
|
#
|
13
13
|
def report_init(layer = :rack)
|
14
|
-
# Don't send __Init in
|
14
|
+
# Don't send __Init in test or if we're
|
15
15
|
# isn't fully loaded (e.g. missing c-extension)
|
16
|
-
return if
|
17
|
-
ENV.key?('TRACEVIEW_GEM_TEST') ||
|
18
|
-
!TraceView.loaded
|
16
|
+
return if ENV.key?('TRACEVIEW_GEM_TEST') || !TraceView.loaded
|
19
17
|
|
20
18
|
platform_info = TraceView::Util.build_init_report
|
21
19
|
|
data/lib/traceview/inst/curb.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c)
|
1
|
+
# Copyright (c) 2016 AppNeta, Inc.
|
2
2
|
# All rights reserved.
|
3
3
|
|
4
4
|
module TraceView
|
@@ -38,7 +38,10 @@ module TraceView
|
|
38
38
|
kvs
|
39
39
|
rescue => e
|
40
40
|
TraceView.logger.debug "[traceview/debug] Error capturing curb KVs: #{e.message}"
|
41
|
-
|
41
|
+
if TraceView::Config[:verbose]
|
42
|
+
TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}"
|
43
|
+
TraceView.logger.debug e.backtrace.join('\n')
|
44
|
+
end
|
42
45
|
ensure
|
43
46
|
return kvs
|
44
47
|
end
|
@@ -78,9 +81,6 @@ module TraceView
|
|
78
81
|
kvs[:Location] = headers["Location"]
|
79
82
|
end
|
80
83
|
|
81
|
-
# Curb only provides a single long string of all response headers (yuck!). So we are forced
|
82
|
-
# to process that string to pull out the response X-Trace value.
|
83
|
-
# Taken from https://stackoverflow.com/questions/14345805/curb-get-response-headers
|
84
84
|
_, *response_headers = header_str.split(/[\r\n]+/).map(&:strip)
|
85
85
|
response_headers = Hash[response_headers.flat_map{ |s| s.scan(/^(\S+): (.+)/) }]
|
86
86
|
|
@@ -97,7 +97,6 @@ module TraceView
|
|
97
97
|
ensure
|
98
98
|
TraceView::API.log_exit(:curb, kvs)
|
99
99
|
end
|
100
|
-
|
101
100
|
end
|
102
101
|
end # CurlUtility
|
103
102
|
|
@@ -19,6 +19,15 @@ module TraceView
|
|
19
19
|
def extract_trace_details(sql, opts)
|
20
20
|
kvs = {}
|
21
21
|
|
22
|
+
if !sql.is_a?(String)
|
23
|
+
kvs[:IsPreparedStatement] = true
|
24
|
+
end
|
25
|
+
|
26
|
+
if ::Sequel::VERSION > '4.36.0' && !sql.is_a?(String)
|
27
|
+
# In 4.37.0, sql was converted to a prepared statement object
|
28
|
+
sql = sql.prepared_sql unless sql.is_a?(Symbol)
|
29
|
+
end
|
30
|
+
|
22
31
|
if TraceView::Config[:sanitize_sql]
|
23
32
|
# Sanitize SQL and don't report binds
|
24
33
|
if sql.is_a?(Symbol)
|
@@ -31,7 +40,6 @@ module TraceView
|
|
31
40
|
kvs[:Query] = sql.to_s
|
32
41
|
kvs[:QueryArgs] = opts[:arguments] if opts.is_a?(Hash) && opts.key?(:arguments)
|
33
42
|
end
|
34
|
-
kvs[:IsPreparedStatement] = true if sql.is_a?(Symbol)
|
35
43
|
|
36
44
|
kvs[:Backtrace] = TraceView::API.backtrace if TraceView::Config[:sequel][:collect_backtraces]
|
37
45
|
|
data/lib/traceview/version.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
# Copyright (c) 2015 AppNeta, Inc.
|
2
|
+
# All rights reserved.
|
3
|
+
|
4
|
+
require 'minitest_helper'
|
5
|
+
|
6
|
+
class BenchAllocations < Minitest::Test
|
7
|
+
def test_trace_api
|
8
|
+
assert_allocations 42 do
|
9
|
+
TraceView::API.start_trace('bench') do
|
10
|
+
nil
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Copyright (c) 2015 AppNeta, Inc.
|
2
|
+
# All rights reserved.
|
3
|
+
|
4
|
+
require 'minitest_helper'
|
5
|
+
|
6
|
+
class BenchTracingAPI < MiniTest::Benchmark
|
7
|
+
def bench_api
|
8
|
+
skip
|
9
|
+
assert_performance_linear 0.99 do |input|
|
10
|
+
TraceView::API.start_trace('bench') do
|
11
|
+
nil
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -169,9 +169,9 @@ class ExconTest < Minitest::Test
|
|
169
169
|
assert_equal 'GET', traces[1]['HTTPMethod']
|
170
170
|
assert traces[1].key?('Backtrace')
|
171
171
|
|
172
|
-
assert_equal 'excon',
|
173
|
-
assert_equal 'error',
|
174
|
-
assert_equal "Excon::
|
172
|
+
assert_equal 'excon', traces[2]['Layer']
|
173
|
+
assert_equal 'error', traces[2]['Label']
|
174
|
+
assert_equal "Excon::Error::Socket", traces[2]['ErrorClass']
|
175
175
|
assert traces[2].key?('ErrorMsg')
|
176
176
|
assert traces[2].key?('Backtrace')
|
177
177
|
|
@@ -269,10 +269,17 @@ if defined?(::Sequel) && !defined?(JRUBY_VERSION)
|
|
269
269
|
validate_outer_layers(traces, 'sequel_test')
|
270
270
|
|
271
271
|
validate_event_keys(traces[1], @entry_kvs)
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
272
|
+
if ::Sequel::VERSION > '4.36.0'
|
273
|
+
traces[1]['Query'].must_equal "SELECT * FROM `items` WHERE (`name` = ?)"
|
274
|
+
traces[1].has_key?('Backtrace').must_equal TraceView::Config[:sequel][:collect_backtraces]
|
275
|
+
traces[3]['Query'].must_equal "DELETE FROM `items` WHERE (`name` = ?)"
|
276
|
+
traces[3].has_key?('Backtrace').must_equal TraceView::Config[:sequel][:collect_backtraces]
|
277
|
+
else
|
278
|
+
traces[1]['Query'].must_equal "SELECT * FROM `items` WHERE (`name` = 'abc')"
|
279
|
+
traces[1].has_key?('Backtrace').must_equal TraceView::Config[:sequel][:collect_backtraces]
|
280
|
+
traces[3]['Query'].must_equal "DELETE FROM `items` WHERE (`name` = 'cba')"
|
281
|
+
traces[3].has_key?('Backtrace').must_equal TraceView::Config[:sequel][:collect_backtraces]
|
282
|
+
end
|
276
283
|
validate_event_keys(traces[2], @exit_kvs)
|
277
284
|
end
|
278
285
|
|
@@ -290,7 +297,13 @@ if defined?(::Sequel) && !defined?(JRUBY_VERSION)
|
|
290
297
|
validate_outer_layers(traces, 'sequel_test')
|
291
298
|
|
292
299
|
validate_event_keys(traces[1], @entry_kvs)
|
293
|
-
|
300
|
+
|
301
|
+
if ::Sequel::VERSION > '4.36.0'
|
302
|
+
traces[1]['Query'].must_equal "SELECT * FROM `items` WHERE (`name` = ?)"
|
303
|
+
else
|
304
|
+
traces[1]['Query'].must_equal "select_by_name"
|
305
|
+
end
|
306
|
+
|
294
307
|
if RUBY_VERSION < "1.9"
|
295
308
|
traces[1]['QueryArgs'].must_equal "abc"
|
296
309
|
else
|
@@ -316,7 +329,13 @@ if defined?(::Sequel) && !defined?(JRUBY_VERSION)
|
|
316
329
|
validate_outer_layers(traces, 'sequel_test')
|
317
330
|
|
318
331
|
validate_event_keys(traces[1], @entry_kvs)
|
319
|
-
|
332
|
+
|
333
|
+
if ::Sequel::VERSION > '4.36.0'
|
334
|
+
traces[1]['Query'].must_equal "SELECT * FROM `items` WHERE (`name` = ?)"
|
335
|
+
else
|
336
|
+
traces[1]['Query'].must_equal "select_by_name"
|
337
|
+
end
|
338
|
+
|
320
339
|
traces[1]['QueryArgs'].must_equal nil
|
321
340
|
traces[1]['IsPreparedStatement'].must_equal "true"
|
322
341
|
traces[1].has_key?('Backtrace').must_equal TraceView::Config[:sequel][:collect_backtraces]
|
@@ -36,7 +36,7 @@ if RUBY_VERSION >= '2.0' && !defined?(JRUBY_VERSION)
|
|
36
36
|
assert_equal 'sidekiq-client', traces[1]['Layer']
|
37
37
|
assert_equal 'entry', traces[1]['Label']
|
38
38
|
|
39
|
-
assert_equal '
|
39
|
+
assert_equal 'pushq', traces[1]['Spec']
|
40
40
|
assert_equal 'sidekiq', traces[1]['Flavor']
|
41
41
|
assert_equal 'critical', traces[1]['Queue']
|
42
42
|
assert_equal jid, traces[1]['MsgID']
|
data/test/servers/delayed_job.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
# Copyright (c) 2015 AppNeta, Inc.
|
2
2
|
# All rights reserved.
|
3
3
|
|
4
|
+
# This is a Rails app that launches a DelayedJob worker
|
5
|
+
# in a background thread.
|
6
|
+
#
|
4
7
|
require "rails/all"
|
5
8
|
require "delayed_job"
|
6
|
-
require "action_controller/railtie"
|
9
|
+
require "action_controller/railtie"
|
7
10
|
require 'rack/handler/puma'
|
8
11
|
require File.expand_path(File.dirname(__FILE__) + '/../models/widget')
|
9
12
|
|
@@ -30,25 +33,12 @@ class Rails40MetalStack < Rails::Application
|
|
30
33
|
get "/hello/metal" => "ferro#world"
|
31
34
|
end
|
32
35
|
|
33
|
-
# Enable cache classes. Production style.
|
34
36
|
config.cache_classes = true
|
35
37
|
config.eager_load = false
|
36
|
-
|
37
|
-
# uncomment below to display errors
|
38
|
-
# config.consider_all_requests_local = true
|
39
|
-
|
40
38
|
config.active_support.deprecation = :stderr
|
41
|
-
|
42
|
-
# Here you could remove some middlewares, for example
|
43
|
-
# Rack::Lock, ActionDispatch::Flash and ActionDispatch::BestStandardsSupport below.
|
44
|
-
# The remaining stack is printed on rackup (for fun!).
|
45
|
-
# Rails API has config.middleware.api_only! to get
|
46
|
-
# rid of browser related middleware.
|
47
39
|
config.middleware.delete "Rack::Lock"
|
48
40
|
config.middleware.delete "ActionDispatch::Flash"
|
49
41
|
config.middleware.delete "ActionDispatch::BestStandardsSupport"
|
50
|
-
|
51
|
-
# We need a secret token for session, cookies, etc.
|
52
42
|
config.secret_token = "49837489qkuweoiuoqwehisuakshdjksadhaisdy78o34y138974xyqp9rmye8yrpiokeuioqwzyoiuxftoyqiuxrhm3iou1hrzmjk"
|
53
43
|
config.secret_key_base = "2048671-96803948"
|
54
44
|
end
|
@@ -1,29 +1,17 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
#
|
4
|
-
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
# bundle exec RAILS_ENV=production rackup -p 3000 -s thin
|
9
|
-
#
|
10
|
-
# And access:
|
11
|
-
#
|
12
|
-
# http://localhost:3000/hello/world
|
1
|
+
##
|
2
|
+
# Copyright (c) 2016 AppNeta, Inc.
|
3
|
+
# All rights reserved.
|
4
|
+
|
5
|
+
# This is a Rails stack that launches on a background
|
6
|
+
# thread and listens on port 8140.
|
13
7
|
#
|
14
|
-
# The following lines should come as no surprise. Except by
|
15
|
-
# ActionController::Metal, it follows the same structure of
|
16
|
-
# config/application.rb, config/environment.rb and config.ru
|
17
|
-
# existing in any Rails 4 app. Here they are simply in one
|
18
|
-
# file and without the comments.
|
19
8
|
require "rails/all"
|
20
|
-
require "action_controller/railtie"
|
9
|
+
require "action_controller/railtie"
|
21
10
|
require 'rack/handler/puma'
|
22
11
|
require File.expand_path(File.dirname(__FILE__) + '/../models/widget')
|
23
12
|
|
24
13
|
TraceView.logger.info "[traceview/info] Starting background utility rails app on localhost:8140."
|
25
14
|
|
26
|
-
# Set the database. Default is postgresql.
|
27
15
|
if ENV['DBTYPE'] == 'mysql2'
|
28
16
|
TraceView::Test.set_mysql2_env
|
29
17
|
elsif ENV['DBTYPE'] == 'mysql'
|
@@ -47,26 +35,13 @@ class Rails32MetalStack < Rails::Application
|
|
47
35
|
get "/hello/db" => "hello#db"
|
48
36
|
end
|
49
37
|
|
50
|
-
# Enable cache classes. Production style.
|
51
38
|
config.cache_classes = true
|
52
39
|
config.eager_load = false
|
53
|
-
|
54
|
-
# uncomment below to display errors
|
55
|
-
# config.consider_all_requests_local = true
|
56
|
-
|
57
40
|
config.active_support.deprecation = :stderr
|
58
|
-
|
59
|
-
# Here you could remove some middlewares, for example
|
60
|
-
# Rack::Lock, ActionDispatch::Flash and ActionDispatch::BestStandardsSupport below.
|
61
|
-
# The remaining stack is printed on rackup (for fun!).
|
62
|
-
# Rails API has config.middleware.api_only! to get
|
63
|
-
# rid of browser related middleware.
|
64
41
|
config.middleware.delete "Rack::Lock"
|
65
42
|
config.middleware.delete "ActionDispatch::Flash"
|
66
43
|
config.middleware.delete "ActionDispatch::BestStandardsSupport"
|
67
|
-
|
68
|
-
# We need a secret token for session, cookies, etc.
|
69
|
-
config.secret_token = "49837489qkuweoiuoqwehisuakshdjksadhaisdy78o34y138974xyqp9rmye8yrpiokeuioqwzyoiuxftoyqiuxrhm3iou1hrzmjk"
|
44
|
+
config.secret_token = "498374i49qkuweoiuoqwehisuakshdhksadhaisdy78o34y138974xyqu9rmye8yrpiokeuioqwzyo8uxftoyqiuxrhm3iou1hrzmjk"
|
70
45
|
config.secret_key_base = "2048671-96803948"
|
71
46
|
end
|
72
47
|
|
@@ -1,31 +1,17 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
#
|
4
|
-
# Updated by: Peter Giacomo Lombardo
|
5
|
-
#
|
6
|
-
# Run this file with:
|
7
|
-
#
|
8
|
-
# bundle exec RAILS_ENV=production rackup -p 3000 -s thin
|
9
|
-
#
|
10
|
-
# And access:
|
11
|
-
#
|
12
|
-
# http://localhost:3000/hello/world
|
13
|
-
#
|
14
|
-
# The following lines should come as no surprise. Except by
|
15
|
-
# ActionController::Metal, it follows the same structure of
|
16
|
-
# config/application.rb, config/environment.rb and config.ru
|
17
|
-
# existing in any Rails 4 app. Here they are simply in one
|
18
|
-
# file and without the comments.
|
19
|
-
#
|
1
|
+
##
|
2
|
+
# Copyright (c) 2016 AppNeta, Inc.
|
3
|
+
# All rights reserved.
|
20
4
|
|
5
|
+
# This is a Rails stack that launches on a background
|
6
|
+
# thread and listens on port 8140.
|
7
|
+
#
|
21
8
|
require "rails/all"
|
22
|
-
require "action_controller/railtie"
|
9
|
+
require "action_controller/railtie"
|
23
10
|
require 'rack/handler/puma'
|
24
11
|
require File.expand_path(File.dirname(__FILE__) + '/../models/widget')
|
25
12
|
|
26
13
|
TraceView.logger.info "[traceview/info] Starting background utility rails app on localhost:8140."
|
27
14
|
|
28
|
-
# Set the database. Default is postgresql.
|
29
15
|
if ENV['DBTYPE'] == 'mysql2'
|
30
16
|
TraceView::Test.set_mysql2_env
|
31
17
|
elsif ENV['DBTYPE'] == 'mysql'
|
@@ -49,26 +35,13 @@ class Rails40MetalStack < Rails::Application
|
|
49
35
|
get "/hello/db" => "hello#db"
|
50
36
|
end
|
51
37
|
|
52
|
-
# Enable cache classes. Production style.
|
53
38
|
config.cache_classes = true
|
54
39
|
config.eager_load = false
|
55
|
-
|
56
|
-
# uncomment below to display errors
|
57
|
-
# config.consider_all_requests_local = true
|
58
|
-
|
59
40
|
config.active_support.deprecation = :stderr
|
60
|
-
|
61
|
-
# Here you could remove some middlewares, for example
|
62
|
-
# Rack::Lock, ActionDispatch::Flash and ActionDispatch::BestStandardsSupport below.
|
63
|
-
# The remaining stack is printed on rackup (for fun!).
|
64
|
-
# Rails API has config.middleware.api_only! to get
|
65
|
-
# rid of browser related middleware.
|
66
41
|
config.middleware.delete "Rack::Lock"
|
67
42
|
config.middleware.delete "ActionDispatch::Flash"
|
68
43
|
config.middleware.delete "ActionDispatch::BestStandardsSupport"
|
69
|
-
|
70
|
-
# We need a secret token for session, cookies, etc.
|
71
|
-
config.secret_token = "49837489qkuweoiuoqwehisuakshdjksadhaisdy78o34y138974xyqp9rmye8yrpiokeuioqwzyoiuxftoyqiuxrhm3iou1hrzmjk"
|
44
|
+
config.secret_token = "49830489qkuweoiuoqwehisuakshdjksadhaisdy78o34y138974xyqp9rmye8yypiokeuioqwzyoiuxftoyqiuxrhm3iou1hrzmjk"
|
72
45
|
config.secret_key_base = "2048671-96803948"
|
73
46
|
end
|
74
47
|
|
@@ -1,24 +1,10 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
#
|
4
|
-
# Updated by: Peter Giacomo Lombardo
|
5
|
-
#
|
6
|
-
# Run this file with:
|
7
|
-
#
|
8
|
-
# bundle exec RAILS_ENV=production rackup -p 3000 -s thin
|
9
|
-
#
|
10
|
-
# And access:
|
11
|
-
#
|
12
|
-
# http://localhost:3000/hello/world
|
13
|
-
#
|
14
|
-
# The following lines should come as no surprise. Except by
|
15
|
-
# ActionController::Metal, it follows the same structure of
|
16
|
-
# config/application.rb, config/environment.rb and config.ru
|
17
|
-
# existing in any Rails 4 app. Here they are simply in one
|
18
|
-
# file and without the comments.
|
19
|
-
#
|
1
|
+
##
|
2
|
+
# Copyright (c) 2016 AppNeta, Inc.
|
3
|
+
# All rights reserved.
|
20
4
|
|
21
|
-
#
|
5
|
+
# This is a Rails stack that launches on a background
|
6
|
+
# thread and listens on port 8140.
|
7
|
+
#
|
22
8
|
if ENV['DBTYPE'] == 'mysql2'
|
23
9
|
TraceView::Test.set_mysql2_env
|
24
10
|
elsif ENV['DBTYPE'] == 'postgresql'
|
@@ -49,24 +35,11 @@ class Rails50MetalStack < Rails::Application
|
|
49
35
|
get "/hello/db" => "hello#db"
|
50
36
|
end
|
51
37
|
|
52
|
-
# Enable cache classes. Production style.
|
53
38
|
config.cache_classes = true
|
54
39
|
config.eager_load = false
|
55
|
-
|
56
|
-
# uncomment below to display errors
|
57
|
-
# config.consider_all_requests_local = true
|
58
|
-
|
59
40
|
config.active_support.deprecation = :stderr
|
60
|
-
|
61
|
-
# Here you could remove some middlewares, for example
|
62
|
-
# Rack::Lock, ActionDispatch::Flash and ActionDispatch::BestStandardsSupport below.
|
63
|
-
# The remaining stack is printed on rackup (for fun!).
|
64
|
-
# Rails API has config.middleware.api_only! to get
|
65
|
-
# rid of browser related middleware.
|
66
41
|
config.middleware.delete Rack::Lock
|
67
42
|
config.middleware.delete ActionDispatch::Flash
|
68
|
-
|
69
|
-
# We need a secret token for session, cookies, etc.
|
70
43
|
config.secret_token = "49837489qkuweoiuoqwehisuakshdjksadhaisdy78o34y138974xyqp9rmye8yrpiokeuioqwzyoiuxftoyqiuxrhm3iou1hrzmjk"
|
71
44
|
config.secret_key_base = "2048671-96803948"
|
72
45
|
end
|
@@ -1,24 +1,10 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
#
|
4
|
-
# Updated by: Peter Giacomo Lombardo
|
5
|
-
#
|
6
|
-
# Run this file with:
|
7
|
-
#
|
8
|
-
# bundle exec RAILS_ENV=production rackup -p 3000 -s thin
|
9
|
-
#
|
10
|
-
# And access:
|
11
|
-
#
|
12
|
-
# http://localhost:3000/hello/world
|
13
|
-
#
|
14
|
-
# The following lines should come as no surprise. Except by
|
15
|
-
# ActionController::Metal, it follows the same structure of
|
16
|
-
# config/application.rb, config/environment.rb and config.ru
|
17
|
-
# existing in any Rails 4 app. Here they are simply in one
|
18
|
-
# file and without the comments.
|
19
|
-
#
|
1
|
+
##
|
2
|
+
# Copyright (c) 2016 AppNeta, Inc.
|
3
|
+
# All rights reserved.
|
20
4
|
|
21
|
-
#
|
5
|
+
# This is a Rails API stack that launches on a background
|
6
|
+
# thread and listens on port 8150.
|
7
|
+
#
|
22
8
|
if ENV['DBTYPE'] == 'mysql2'
|
23
9
|
TraceView::Test.set_mysql2_env
|
24
10
|
elsif ENV['DBTYPE'] == 'postgresql'
|
@@ -30,7 +16,6 @@ else
|
|
30
16
|
end
|
31
17
|
|
32
18
|
require "rails"
|
33
|
-
# Pick the frameworks you want:
|
34
19
|
require "active_model/railtie"
|
35
20
|
require "active_job/railtie"
|
36
21
|
require "active_record/railtie"
|
@@ -38,7 +23,6 @@ require "action_controller/railtie"
|
|
38
23
|
require "action_mailer/railtie"
|
39
24
|
require "action_view/railtie"
|
40
25
|
require "action_cable/engine"
|
41
|
-
# require "sprockets/railtie"
|
42
26
|
require "rails/test_unit/railtie"
|
43
27
|
|
44
28
|
require 'rack/handler/puma'
|
@@ -61,24 +45,11 @@ module Rails50APIStack
|
|
61
45
|
get "/monkey/error" => "monkey#error"
|
62
46
|
end
|
63
47
|
|
64
|
-
# Enable cache classes. Production style.
|
65
48
|
config.cache_classes = true
|
66
49
|
config.eager_load = false
|
67
|
-
|
68
|
-
# uncomment below to display errors
|
69
|
-
# config.consider_all_requests_local = true
|
70
|
-
|
71
50
|
config.active_support.deprecation = :stderr
|
72
|
-
|
73
|
-
# Here you could remove some middlewares, for example
|
74
|
-
# Rack::Lock, ActionDispatch::Flash and ActionDispatch::BestStandardsSupport below.
|
75
|
-
# The remaining stack is printed on rackup (for fun!).
|
76
|
-
# Rails API has config.middleware.api_only! to get
|
77
|
-
# rid of browser related middleware.
|
78
51
|
config.middleware.delete Rack::Lock
|
79
52
|
config.middleware.delete ActionDispatch::Flash
|
80
|
-
|
81
|
-
# We need a secret token for session, cookies, etc.
|
82
53
|
config.secret_token = "48837489qkuweoiuoqwehisuakshdjksadhaisdy78o34y138974xyqp9rmye8yrpiokeuioqwzyoiuxftoyqiuxrhm3iou1hrzmjk"
|
83
54
|
config.secret_key_base = "2049671-96803948"
|
84
55
|
end
|
@@ -90,9 +61,7 @@ end
|
|
90
61
|
|
91
62
|
class MonkeyController < ActionController::API
|
92
63
|
def hello
|
93
|
-
|
94
|
-
# Work around for Rails beta issue with rendering json
|
95
|
-
render :plain => { :Response => "Hello API!"}.to_json, content_type: 'application/json'
|
64
|
+
render :plain => {:Response => "Hello API!"}.to_json, content_type: 'application/json'
|
96
65
|
end
|
97
66
|
|
98
67
|
def error
|
data/test/servers/sidekiq.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
# Copyright (c) 2015 AppNeta, Inc.
|
2
2
|
# All rights reserved.
|
3
3
|
|
4
|
+
# We configure and launch Sidekiq in a background
|
5
|
+
# thread here.
|
6
|
+
#
|
4
7
|
require 'sidekiq/cli'
|
5
8
|
|
6
9
|
TraceView.logger.info "[traceview/servers] Starting up background Sidekiq."
|
@@ -18,7 +21,6 @@ end
|
|
18
21
|
|
19
22
|
TraceView.logger.debug "[traceview/servers] sidekiq #{arguments}"
|
20
23
|
|
21
|
-
# Boot Sidekiq in a new thread
|
22
24
|
Thread.new do
|
23
25
|
system("OBOE_GEM_TEST=true sidekiq #{arguments}")
|
24
26
|
end
|
data/test/support/noop_test.rb
CHANGED
@@ -56,6 +56,9 @@ class NoopTest < Minitest::Test
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def test_method_profiling_doesnt_barf
|
59
|
+
# FIXME: Skip this because it screws up tests that follow this one
|
60
|
+
# We should put in a way to remove custom instrumentation from a running process.
|
61
|
+
skip
|
59
62
|
TraceView::API.profile_method(Array, :sort)
|
60
63
|
|
61
64
|
x = [1, 3, 2]
|
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.8.
|
4
|
+
version: 3.8.3
|
5
5
|
platform: ruby
|
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: 2016-
|
12
|
+
date: 2016-08-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -207,6 +207,8 @@ files:
|
|
207
207
|
- lib/traceview/util.rb
|
208
208
|
- lib/traceview/version.rb
|
209
209
|
- lib/traceview/xtrace.rb
|
210
|
+
- test/benchmarks/allocations_test.rb
|
211
|
+
- test/benchmarks/tracing_api_test.rb
|
210
212
|
- test/frameworks/apps/grape_nested.rb
|
211
213
|
- test/frameworks/apps/grape_simple.rb
|
212
214
|
- test/frameworks/apps/padrino_simple.rb
|
@@ -358,6 +360,8 @@ test_files:
|
|
358
360
|
- test/instrumentation/mongo_v1_test.rb
|
359
361
|
- test/reporter/reporter_test.rb
|
360
362
|
- test/models/widget.rb
|
363
|
+
- test/benchmarks/tracing_api_test.rb
|
364
|
+
- test/benchmarks/allocations_test.rb
|
361
365
|
- test/profiling/method_profiling_test.rb
|
362
366
|
- test/profiling/legacy_method_profiling_test.rb
|
363
367
|
- test/frameworks/apps/grape_simple.rb
|