traceview 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.rubocop.yml +5 -0
- data/.travis.yml +58 -0
- data/Appraisals +10 -0
- data/CHANGELOG.md +490 -0
- data/CONFIG.md +16 -0
- data/Gemfile +95 -0
- data/LICENSE +199 -0
- data/README.md +380 -0
- data/Rakefile +109 -0
- data/examples/DNT.md +35 -0
- data/examples/carrying_context.rb +225 -0
- data/examples/instrumenting_metal_controller.rb +8 -0
- data/examples/puma_on_heroku_config.rb +17 -0
- data/examples/tracing_async_threads.rb +125 -0
- data/examples/tracing_background_jobs.rb +52 -0
- data/examples/tracing_forked_processes.rb +100 -0
- data/examples/unicorn_on_heroku_config.rb +28 -0
- data/ext/oboe_metal/extconf.rb +61 -0
- data/ext/oboe_metal/noop/noop.c +7 -0
- data/ext/oboe_metal/src/bson/bson.h +221 -0
- data/ext/oboe_metal/src/bson/platform_hacks.h +91 -0
- data/ext/oboe_metal/src/oboe.h +275 -0
- data/ext/oboe_metal/src/oboe.hpp +352 -0
- data/ext/oboe_metal/src/oboe_wrap.cxx +3886 -0
- data/ext/oboe_metal/tests/test.rb +11 -0
- data/gemfiles/mongo.gemfile +33 -0
- data/gemfiles/moped.gemfile +33 -0
- data/get_version.rb +5 -0
- data/init.rb +4 -0
- data/lib/joboe_metal.rb +206 -0
- data/lib/oboe.rb +7 -0
- data/lib/oboe/README +2 -0
- data/lib/oboe/backward_compatibility.rb +59 -0
- data/lib/oboe/inst/rack.rb +11 -0
- data/lib/oboe_metal.rb +151 -0
- data/lib/rails/generators/traceview/install_generator.rb +76 -0
- data/lib/rails/generators/traceview/templates/traceview_initializer.rb +159 -0
- data/lib/traceview.rb +62 -0
- data/lib/traceview/api.rb +18 -0
- data/lib/traceview/api/layerinit.rb +51 -0
- data/lib/traceview/api/logging.rb +209 -0
- data/lib/traceview/api/memcache.rb +31 -0
- data/lib/traceview/api/profiling.rb +50 -0
- data/lib/traceview/api/tracing.rb +135 -0
- data/lib/traceview/api/util.rb +121 -0
- data/lib/traceview/base.rb +225 -0
- data/lib/traceview/config.rb +238 -0
- data/lib/traceview/frameworks/grape.rb +97 -0
- data/lib/traceview/frameworks/padrino.rb +64 -0
- data/lib/traceview/frameworks/padrino/templates.rb +58 -0
- data/lib/traceview/frameworks/rails.rb +145 -0
- data/lib/traceview/frameworks/rails/helpers/rum/rum_ajax_header.js.erb +5 -0
- data/lib/traceview/frameworks/rails/helpers/rum/rum_footer.js.erb +1 -0
- data/lib/traceview/frameworks/rails/helpers/rum/rum_header.js.erb +3 -0
- data/lib/traceview/frameworks/rails/inst/action_controller.rb +216 -0
- data/lib/traceview/frameworks/rails/inst/action_view.rb +56 -0
- data/lib/traceview/frameworks/rails/inst/action_view_2x.rb +54 -0
- data/lib/traceview/frameworks/rails/inst/action_view_30.rb +48 -0
- data/lib/traceview/frameworks/rails/inst/active_record.rb +24 -0
- data/lib/traceview/frameworks/rails/inst/connection_adapters/mysql.rb +43 -0
- data/lib/traceview/frameworks/rails/inst/connection_adapters/mysql2.rb +28 -0
- data/lib/traceview/frameworks/rails/inst/connection_adapters/oracle.rb +18 -0
- data/lib/traceview/frameworks/rails/inst/connection_adapters/postgresql.rb +30 -0
- data/lib/traceview/frameworks/rails/inst/connection_adapters/utils.rb +117 -0
- data/lib/traceview/frameworks/sinatra.rb +95 -0
- data/lib/traceview/frameworks/sinatra/templates.rb +56 -0
- data/lib/traceview/inst/cassandra.rb +279 -0
- data/lib/traceview/inst/dalli.rb +86 -0
- data/lib/traceview/inst/em-http-request.rb +99 -0
- data/lib/traceview/inst/excon.rb +111 -0
- data/lib/traceview/inst/faraday.rb +73 -0
- data/lib/traceview/inst/http.rb +87 -0
- data/lib/traceview/inst/httpclient.rb +173 -0
- data/lib/traceview/inst/memcache.rb +102 -0
- data/lib/traceview/inst/memcached.rb +94 -0
- data/lib/traceview/inst/mongo.rb +238 -0
- data/lib/traceview/inst/moped.rb +474 -0
- data/lib/traceview/inst/rack.rb +122 -0
- data/lib/traceview/inst/redis.rb +271 -0
- data/lib/traceview/inst/resque.rb +192 -0
- data/lib/traceview/inst/rest-client.rb +38 -0
- data/lib/traceview/inst/sequel.rb +162 -0
- data/lib/traceview/inst/typhoeus.rb +102 -0
- data/lib/traceview/instrumentation.rb +21 -0
- data/lib/traceview/loading.rb +94 -0
- data/lib/traceview/logger.rb +41 -0
- data/lib/traceview/method_profiling.rb +84 -0
- data/lib/traceview/ruby.rb +36 -0
- data/lib/traceview/support.rb +113 -0
- data/lib/traceview/thread_local.rb +26 -0
- data/lib/traceview/util.rb +250 -0
- data/lib/traceview/version.rb +16 -0
- data/lib/traceview/xtrace.rb +90 -0
- data/test/frameworks/apps/grape_nested.rb +30 -0
- data/test/frameworks/apps/grape_simple.rb +24 -0
- data/test/frameworks/apps/padrino_simple.rb +45 -0
- data/test/frameworks/apps/sinatra_simple.rb +24 -0
- data/test/frameworks/grape_test.rb +142 -0
- data/test/frameworks/padrino_test.rb +30 -0
- data/test/frameworks/sinatra_test.rb +30 -0
- data/test/instrumentation/cassandra_test.rb +380 -0
- data/test/instrumentation/dalli_test.rb +171 -0
- data/test/instrumentation/em_http_request_test.rb +86 -0
- data/test/instrumentation/excon_test.rb +207 -0
- data/test/instrumentation/faraday_test.rb +235 -0
- data/test/instrumentation/http_test.rb +140 -0
- data/test/instrumentation/httpclient_test.rb +296 -0
- data/test/instrumentation/memcache_test.rb +251 -0
- data/test/instrumentation/memcached_test.rb +226 -0
- data/test/instrumentation/mongo_test.rb +462 -0
- data/test/instrumentation/moped_test.rb +496 -0
- data/test/instrumentation/rack_test.rb +116 -0
- data/test/instrumentation/redis_hashes_test.rb +265 -0
- data/test/instrumentation/redis_keys_test.rb +318 -0
- data/test/instrumentation/redis_lists_test.rb +310 -0
- data/test/instrumentation/redis_misc_test.rb +160 -0
- data/test/instrumentation/redis_sets_test.rb +293 -0
- data/test/instrumentation/redis_sortedsets_test.rb +325 -0
- data/test/instrumentation/redis_strings_test.rb +333 -0
- data/test/instrumentation/resque_test.rb +62 -0
- data/test/instrumentation/rest-client_test.rb +294 -0
- data/test/instrumentation/sequel_mysql2_test.rb +326 -0
- data/test/instrumentation/sequel_mysql_test.rb +326 -0
- data/test/instrumentation/sequel_pg_test.rb +330 -0
- data/test/instrumentation/typhoeus_test.rb +285 -0
- data/test/minitest_helper.rb +187 -0
- data/test/profiling/method_test.rb +198 -0
- data/test/servers/rackapp_8101.rb +22 -0
- data/test/support/backcompat_test.rb +269 -0
- data/test/support/config_test.rb +128 -0
- data/test/support/dnt_test.rb +73 -0
- data/test/support/liboboe_settings_test.rb +104 -0
- data/test/support/xtrace_test.rb +35 -0
- data/traceview.gemspec +29 -0
- metadata +250 -0
@@ -0,0 +1,128 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
|
3
|
+
describe "TraceView::Config" do
|
4
|
+
after do
|
5
|
+
# Set back to always trace mode
|
6
|
+
TraceView::Config[:tracing_mode] = "always"
|
7
|
+
TraceView::Config[:sample_rate] = 1000000
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should have the correct default values' do
|
11
|
+
# Reset TraceView::Config to defaults
|
12
|
+
TraceView::Config.initialize
|
13
|
+
|
14
|
+
# FIXME: We set the TRACEVIEW_GEM_VERBOSE env for the
|
15
|
+
# test suite so this assertion is not going to fly
|
16
|
+
#
|
17
|
+
# TraceView::Config[:verbose].must_equal false
|
18
|
+
|
19
|
+
TraceView::Config[:tracing_mode].must_equal "through"
|
20
|
+
TraceView::Config[:reporter_host].must_equal "127.0.0.1"
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should have the correct instrumentation defaults' do
|
24
|
+
# Reset TraceView::Config to defaults
|
25
|
+
TraceView::Config.initialize
|
26
|
+
|
27
|
+
instrumentation = TraceView::Config.instrumentation
|
28
|
+
|
29
|
+
# Verify the number of individual instrumentations
|
30
|
+
instrumentation.count.must_equal 21
|
31
|
+
|
32
|
+
TraceView::Config[:action_controller][:enabled].must_equal true
|
33
|
+
TraceView::Config[:action_view][:enabled].must_equal true
|
34
|
+
TraceView::Config[:active_record][:enabled].must_equal true
|
35
|
+
TraceView::Config[:cassandra][:enabled].must_equal true
|
36
|
+
TraceView::Config[:dalli][:enabled].must_equal true
|
37
|
+
TraceView::Config[:em_http_request][:enabled].must_equal false
|
38
|
+
TraceView::Config[:excon][:enabled].must_equal true
|
39
|
+
TraceView::Config[:faraday][:enabled].must_equal true
|
40
|
+
TraceView::Config[:grape][:enabled].must_equal true
|
41
|
+
TraceView::Config[:httpclient][:enabled].must_equal true
|
42
|
+
TraceView::Config[:nethttp][:enabled].must_equal true
|
43
|
+
TraceView::Config[:memcached][:enabled].must_equal true
|
44
|
+
TraceView::Config[:memcache][:enabled].must_equal true
|
45
|
+
TraceView::Config[:mongo][:enabled].must_equal true
|
46
|
+
TraceView::Config[:moped][:enabled].must_equal true
|
47
|
+
TraceView::Config[:rack][:enabled].must_equal true
|
48
|
+
TraceView::Config[:redis][:enabled].must_equal true
|
49
|
+
TraceView::Config[:resque][:enabled].must_equal true
|
50
|
+
TraceView::Config[:rest_client][:enabled].must_equal true
|
51
|
+
TraceView::Config[:sequel][:enabled].must_equal true
|
52
|
+
TraceView::Config[:typhoeus][:enabled].must_equal true
|
53
|
+
|
54
|
+
TraceView::Config[:action_controller][:log_args].must_equal true
|
55
|
+
TraceView::Config[:action_view][:log_args].must_equal true
|
56
|
+
TraceView::Config[:active_record][:log_args].must_equal true
|
57
|
+
TraceView::Config[:cassandra][:log_args].must_equal true
|
58
|
+
TraceView::Config[:dalli][:log_args].must_equal true
|
59
|
+
TraceView::Config[:em_http_request][:log_args].must_equal true
|
60
|
+
TraceView::Config[:excon][:log_args].must_equal true
|
61
|
+
TraceView::Config[:faraday][:log_args].must_equal true
|
62
|
+
TraceView::Config[:grape][:log_args].must_equal true
|
63
|
+
TraceView::Config[:httpclient][:log_args].must_equal true
|
64
|
+
TraceView::Config[:nethttp][:log_args].must_equal true
|
65
|
+
TraceView::Config[:memcached][:log_args].must_equal true
|
66
|
+
TraceView::Config[:memcache][:log_args].must_equal true
|
67
|
+
TraceView::Config[:mongo][:log_args].must_equal true
|
68
|
+
TraceView::Config[:moped][:log_args].must_equal true
|
69
|
+
TraceView::Config[:rack][:log_args].must_equal true
|
70
|
+
TraceView::Config[:redis][:log_args].must_equal true
|
71
|
+
TraceView::Config[:resque][:log_args].must_equal true
|
72
|
+
TraceView::Config[:rest_client][:log_args].must_equal true
|
73
|
+
TraceView::Config[:sequel][:log_args].must_equal true
|
74
|
+
TraceView::Config[:typhoeus][:log_args].must_equal true
|
75
|
+
|
76
|
+
TraceView::Config[:resque][:link_workers].must_equal false
|
77
|
+
TraceView::Config[:blacklist].is_a?(Array).must_equal true
|
78
|
+
|
79
|
+
TraceView::Config[:dnt_regexp].must_equal "\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|ttf|woff|svg|less)$"
|
80
|
+
TraceView::Config[:dnt_opts].must_equal Regexp::IGNORECASE
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_should_obey_globals
|
84
|
+
# Reset TraceView::Config to defaults
|
85
|
+
TraceView::Config.initialize
|
86
|
+
|
87
|
+
http_clients = TraceView::Config.http_clients
|
88
|
+
|
89
|
+
# Restore these at the end
|
90
|
+
@url_query_params = TraceView::Config[:include_url_query_params]
|
91
|
+
@remote_url_params = TraceView::Config[:include_remote_url_params]
|
92
|
+
|
93
|
+
# After setting global options, the per instrumentation
|
94
|
+
# equivalents should follow suit.
|
95
|
+
|
96
|
+
#
|
97
|
+
# :include_url_query_params
|
98
|
+
#
|
99
|
+
|
100
|
+
# Check defaults
|
101
|
+
TraceView::Config[:include_url_query_params].must_equal true
|
102
|
+
http_clients.each do |i|
|
103
|
+
TraceView::Config[i][:log_args].must_equal true
|
104
|
+
end
|
105
|
+
|
106
|
+
# Check obedience
|
107
|
+
TraceView::Config[:include_url_query_params] = false
|
108
|
+
http_clients.each do |i|
|
109
|
+
TraceView::Config[i][:log_args].must_equal false
|
110
|
+
end
|
111
|
+
|
112
|
+
#
|
113
|
+
# :include_remote_url_params
|
114
|
+
#
|
115
|
+
|
116
|
+
# Check default
|
117
|
+
TraceView::Config[:include_remote_url_params].must_equal true
|
118
|
+
TraceView::Config[:rack][:log_args].must_equal true
|
119
|
+
|
120
|
+
# Check obedience
|
121
|
+
TraceView::Config[:include_remote_url_params] = false
|
122
|
+
TraceView::Config[:rack][:log_args].must_equal false
|
123
|
+
|
124
|
+
# Restore the previous values
|
125
|
+
TraceView::Config[:include_url_query_params] = @url_query_params
|
126
|
+
TraceView::Config[:include_remote_url_params] = @remote_url_params
|
127
|
+
end
|
128
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
require 'rack/test'
|
3
|
+
require 'rack/lobster'
|
4
|
+
require 'traceview/inst/rack'
|
5
|
+
|
6
|
+
class RackTestApp < Minitest::Test
|
7
|
+
include Rack::Test::Methods
|
8
|
+
|
9
|
+
def app
|
10
|
+
@app = Rack::Builder.new {
|
11
|
+
use Rack::CommonLogger
|
12
|
+
use Rack::ShowExceptions
|
13
|
+
use TraceView::Rack
|
14
|
+
map "/lobster" do
|
15
|
+
use Rack::Lint
|
16
|
+
run Rack::Lobster.new
|
17
|
+
end
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_custom_do_not_trace
|
22
|
+
clear_all_traces
|
23
|
+
|
24
|
+
dnt_original = TraceView::Config[:dnt_regexp]
|
25
|
+
TraceView::Config[:dnt_regexp] = "lobster$"
|
26
|
+
|
27
|
+
get "/lobster"
|
28
|
+
|
29
|
+
traces = get_all_traces
|
30
|
+
assert traces.empty?
|
31
|
+
|
32
|
+
TraceView::Config[:dnt_regexp] = dnt_original
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_do_not_trace_static_assets
|
36
|
+
clear_all_traces
|
37
|
+
|
38
|
+
get "/assets/static_asset.png"
|
39
|
+
|
40
|
+
traces = get_all_traces
|
41
|
+
assert traces.empty?
|
42
|
+
|
43
|
+
assert last_response.status == 404
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_complex_do_not_trace
|
47
|
+
skip "not supported" if RUBY_VERSION < '1.9'
|
48
|
+
|
49
|
+
clear_all_traces
|
50
|
+
|
51
|
+
dnt_original = TraceView::Config[:dnt_regexp]
|
52
|
+
|
53
|
+
# Do not trace .js files _except for_ show.js
|
54
|
+
TraceView::Config[:dnt_regexp] = "(\.js$)(?<!show.js)"
|
55
|
+
|
56
|
+
# First: We shouldn't trace general .js files
|
57
|
+
get "/javascripts/application.js"
|
58
|
+
|
59
|
+
traces = get_all_traces
|
60
|
+
assert traces.empty?
|
61
|
+
|
62
|
+
# Second: We should trace show.js
|
63
|
+
clear_all_traces
|
64
|
+
|
65
|
+
get "/javascripts/show.js"
|
66
|
+
|
67
|
+
traces = get_all_traces
|
68
|
+
assert !traces.empty?
|
69
|
+
|
70
|
+
TraceView::Config[:dnt_regexp] = dnt_original
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
@@ -0,0 +1,104 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
require 'rack/test'
|
3
|
+
require 'rack/lobster'
|
4
|
+
require 'traceview/inst/rack'
|
5
|
+
|
6
|
+
unless defined?(JRUBY_VERSION)
|
7
|
+
TraceView::Config[:tracing_mode] = 'always'
|
8
|
+
TraceView::Config[:sample_rate] = 1e6
|
9
|
+
|
10
|
+
class RackTestApp < Minitest::Test
|
11
|
+
include Rack::Test::Methods
|
12
|
+
|
13
|
+
def app
|
14
|
+
@app = Rack::Builder.new {
|
15
|
+
use Rack::CommonLogger
|
16
|
+
use Rack::ShowExceptions
|
17
|
+
use TraceView::Rack
|
18
|
+
map "/lobster" do
|
19
|
+
use Rack::Lint
|
20
|
+
run Rack::Lobster.new
|
21
|
+
end
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_localset_sample_source
|
26
|
+
# We make an initial call here which will force the traceview gem to retrieve
|
27
|
+
# the sample_rate and sample_source from liboboe (via sample? method)
|
28
|
+
get "/lobster"
|
29
|
+
|
30
|
+
clear_all_traces
|
31
|
+
|
32
|
+
get "/lobster"
|
33
|
+
|
34
|
+
traces = get_all_traces
|
35
|
+
traces.count.must_equal 3
|
36
|
+
|
37
|
+
validate_outer_layers(traces, 'rack')
|
38
|
+
|
39
|
+
kvs = {}
|
40
|
+
kvs["SampleRate"] = 1000000
|
41
|
+
kvs["SampleSource"] = OBOE_SAMPLE_RATE_SOURCE_FILE
|
42
|
+
validate_event_keys(traces[0], kvs)
|
43
|
+
end
|
44
|
+
|
45
|
+
# Test logging of all Ruby datatypes against the SWIG wrapper
|
46
|
+
# of addInfo which only has four overloads.
|
47
|
+
def test_swig_datatypes_conversion
|
48
|
+
event = TraceView::Context.createEvent
|
49
|
+
report_kvs = {}
|
50
|
+
|
51
|
+
# Array
|
52
|
+
report_kvs[:TestData] = [0, 1, 2, 5, 7.0]
|
53
|
+
result = TraceView::API.log_event('test_layer', 'entry', event, report_kvs)
|
54
|
+
|
55
|
+
# Class
|
56
|
+
report_kvs[:TestData] = TraceView::Reporter
|
57
|
+
result = TraceView::API.log_event('test_layer', 'entry', event, report_kvs)
|
58
|
+
|
59
|
+
# FalseClass
|
60
|
+
report_kvs[:TestData] = false
|
61
|
+
result = TraceView::API.log_event('test_layer', 'entry', event, report_kvs)
|
62
|
+
|
63
|
+
# Fixnum
|
64
|
+
report_kvs[:TestData] = 1_873_293_293
|
65
|
+
result = TraceView::API.log_event('test_layer', 'entry', event, report_kvs)
|
66
|
+
|
67
|
+
# Float
|
68
|
+
report_kvs[:TestData] = 1.0001
|
69
|
+
result = TraceView::API.log_event('test_layer', 'entry', event, report_kvs)
|
70
|
+
|
71
|
+
# Hash
|
72
|
+
report_kvs[:TestData] = Hash.new
|
73
|
+
result = TraceView::API.log_event('test_layer', 'entry', event, report_kvs)
|
74
|
+
|
75
|
+
# Integer
|
76
|
+
report_kvs[:TestData] = 1
|
77
|
+
result = TraceView::API.log_event('test_layer', 'entry', event, report_kvs)
|
78
|
+
|
79
|
+
# Module
|
80
|
+
report_kvs[:TestData] = TraceView
|
81
|
+
result = TraceView::API.log_event('test_layer', 'entry', event, report_kvs)
|
82
|
+
|
83
|
+
# NilClass
|
84
|
+
report_kvs[:TestData] = nil
|
85
|
+
result = TraceView::API.log_event('test_layer', 'entry', event, report_kvs)
|
86
|
+
|
87
|
+
# Set
|
88
|
+
report_kvs[:TestData] = Set.new(1..10)
|
89
|
+
result = TraceView::API.log_event('test_layer', 'entry', event, report_kvs)
|
90
|
+
|
91
|
+
# String
|
92
|
+
report_kvs[:TestData] = 'test value'
|
93
|
+
result = TraceView::API.log_event('test_layer', 'entry', event, report_kvs)
|
94
|
+
|
95
|
+
# Symbol
|
96
|
+
report_kvs[:TestData] = :TestValue
|
97
|
+
result = TraceView::API.log_event('test_layer', 'entry', event, report_kvs)
|
98
|
+
|
99
|
+
# TrueClass
|
100
|
+
report_kvs[:TestData] = true
|
101
|
+
result = TraceView::API.log_event('test_layer', 'entry', event, report_kvs)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
|
3
|
+
describe "XTrace" do
|
4
|
+
|
5
|
+
it 'should correctly validate X-Trace IDs' do
|
6
|
+
# Invalid X-Trace IDs
|
7
|
+
TraceView::XTrace.valid?("").must_equal false
|
8
|
+
TraceView::XTrace.valid?(nil).must_equal false
|
9
|
+
TraceView::XTrace.valid?("1B00000000000000000000000000000000000000000000000000000000").must_equal false
|
10
|
+
TraceView::XTrace.valid?("1b").must_equal false
|
11
|
+
TraceView::XTrace.valid?("29348209348").must_equal false
|
12
|
+
|
13
|
+
# Standard X-Trace IDs
|
14
|
+
TraceView::XTrace.valid?("1B7435A9FE510AE4533414D425DADF4E180D2B4E3649E60702469DB05F").must_equal true
|
15
|
+
TraceView::XTrace.valid?("1BA462ADE6CFE479081764CC476AA983351DC51B1BCB3468DA6F06EEFA").must_equal true
|
16
|
+
TraceView::XTrace.valid?("1BADFDFB3DBA36323B2E0975925D0DAE12D10BA5946809504DC4B81FF6").must_equal true
|
17
|
+
|
18
|
+
# X-Trace IDs with lower-case alpha chars
|
19
|
+
TraceView::XTrace.valid?("1bf9861cb12e2a257247a8195654e56d30b2f4e2d4fce67c321ad58495").must_equal true
|
20
|
+
TraceView::XTrace.valid?("1b258b2c1d6914f3c6085cb72e7cc93e145b401d4356aa24ef7294b2d6").must_equal true
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should correctly extract task IDs from X-Trace IDs' do
|
24
|
+
task_id = TraceView::XTrace.task_id("1BF86B3D3342FCECAECE33C6411379BB171505DB6A136DFAEBDF742362")
|
25
|
+
task_id.is_a?(String).must_equal true
|
26
|
+
task_id.must_equal "F86B3D3342FCECAECE33C6411379BB171505DB6A"
|
27
|
+
task_id.length.must_equal 40
|
28
|
+
|
29
|
+
task_id = TraceView::XTrace.task_id("1B77970F82332EE22FF04C249FCBA8F63E8AFA2C6730E209453259B2D6")
|
30
|
+
task_id.is_a?(String).must_equal true
|
31
|
+
task_id.must_equal "77970F82332EE22FF04C249FCBA8F63E8AFA2C67"
|
32
|
+
task_id.length.must_equal 40
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
data/traceview.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
2
|
+
require "traceview/version"
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = %q{traceview}
|
6
|
+
s.version = TraceView::Version::STRING
|
7
|
+
s.date = Time.now.strftime('%Y-%m-%d')
|
8
|
+
|
9
|
+
s.license = "AppNeta Open License, Version 1.0"
|
10
|
+
|
11
|
+
s.authors = ["Peter Giacomo Lombardo", "Spiros Eliopoulos"]
|
12
|
+
s.email = %q{traceviewsupport@appneta.com}
|
13
|
+
s.homepage = %q{http://www.appneta.com/products/traceview/}
|
14
|
+
s.summary = %q{AppNeta TraceView performance instrumentation gem for Ruby}
|
15
|
+
s.description = %q{The TraceView gem provides performance instrumentation for MRI Ruby, JRuby and related frameworks.}
|
16
|
+
|
17
|
+
s.extra_rdoc_files = ["LICENSE"]
|
18
|
+
s.files = `git ls-files`.split("\n")
|
19
|
+
s.test_files = Dir.glob("{test}/**/*.rb")
|
20
|
+
|
21
|
+
s.platform = defined?(JRUBY_VERSION) ? 'java' : Gem::Platform::RUBY
|
22
|
+
s.extensions = ['ext/oboe_metal/extconf.rb'] unless defined?(JRUBY_VERSION)
|
23
|
+
|
24
|
+
s.add_runtime_dependency('json', '>= 0')
|
25
|
+
s.add_development_dependency('rake', '>= 0')
|
26
|
+
|
27
|
+
s.required_ruby_version = '>= 1.8.6'
|
28
|
+
end
|
29
|
+
|
metadata
ADDED
@@ -0,0 +1,250 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: traceview
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 3.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Peter Giacomo Lombardo
|
8
|
+
- Spiros Eliopoulos
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2015-05-28 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: json
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ">="
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: rake
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
description: The TraceView gem provides performance instrumentation for MRI Ruby,
|
43
|
+
JRuby and related frameworks.
|
44
|
+
email: traceviewsupport@appneta.com
|
45
|
+
executables: []
|
46
|
+
extensions:
|
47
|
+
- ext/oboe_metal/extconf.rb
|
48
|
+
extra_rdoc_files:
|
49
|
+
- LICENSE
|
50
|
+
files:
|
51
|
+
- ".gitignore"
|
52
|
+
- ".rubocop.yml"
|
53
|
+
- ".travis.yml"
|
54
|
+
- Appraisals
|
55
|
+
- CHANGELOG.md
|
56
|
+
- CONFIG.md
|
57
|
+
- Gemfile
|
58
|
+
- LICENSE
|
59
|
+
- README.md
|
60
|
+
- Rakefile
|
61
|
+
- examples/DNT.md
|
62
|
+
- examples/carrying_context.rb
|
63
|
+
- examples/instrumenting_metal_controller.rb
|
64
|
+
- examples/puma_on_heroku_config.rb
|
65
|
+
- examples/tracing_async_threads.rb
|
66
|
+
- examples/tracing_background_jobs.rb
|
67
|
+
- examples/tracing_forked_processes.rb
|
68
|
+
- examples/unicorn_on_heroku_config.rb
|
69
|
+
- ext/oboe_metal/extconf.rb
|
70
|
+
- ext/oboe_metal/noop/noop.c
|
71
|
+
- ext/oboe_metal/src/bson/bson.h
|
72
|
+
- ext/oboe_metal/src/bson/platform_hacks.h
|
73
|
+
- ext/oboe_metal/src/oboe.h
|
74
|
+
- ext/oboe_metal/src/oboe.hpp
|
75
|
+
- ext/oboe_metal/src/oboe_wrap.cxx
|
76
|
+
- ext/oboe_metal/tests/test.rb
|
77
|
+
- gemfiles/mongo.gemfile
|
78
|
+
- gemfiles/moped.gemfile
|
79
|
+
- get_version.rb
|
80
|
+
- init.rb
|
81
|
+
- lib/joboe_metal.rb
|
82
|
+
- lib/oboe.rb
|
83
|
+
- lib/oboe/README
|
84
|
+
- lib/oboe/backward_compatibility.rb
|
85
|
+
- lib/oboe/inst/rack.rb
|
86
|
+
- lib/oboe_metal.rb
|
87
|
+
- lib/rails/generators/traceview/install_generator.rb
|
88
|
+
- lib/rails/generators/traceview/templates/traceview_initializer.rb
|
89
|
+
- lib/traceview.rb
|
90
|
+
- lib/traceview/api.rb
|
91
|
+
- lib/traceview/api/layerinit.rb
|
92
|
+
- lib/traceview/api/logging.rb
|
93
|
+
- lib/traceview/api/memcache.rb
|
94
|
+
- lib/traceview/api/profiling.rb
|
95
|
+
- lib/traceview/api/tracing.rb
|
96
|
+
- lib/traceview/api/util.rb
|
97
|
+
- lib/traceview/base.rb
|
98
|
+
- lib/traceview/config.rb
|
99
|
+
- lib/traceview/frameworks/grape.rb
|
100
|
+
- lib/traceview/frameworks/padrino.rb
|
101
|
+
- lib/traceview/frameworks/padrino/templates.rb
|
102
|
+
- lib/traceview/frameworks/rails.rb
|
103
|
+
- lib/traceview/frameworks/rails/helpers/rum/rum_ajax_header.js.erb
|
104
|
+
- lib/traceview/frameworks/rails/helpers/rum/rum_footer.js.erb
|
105
|
+
- lib/traceview/frameworks/rails/helpers/rum/rum_header.js.erb
|
106
|
+
- lib/traceview/frameworks/rails/inst/action_controller.rb
|
107
|
+
- lib/traceview/frameworks/rails/inst/action_view.rb
|
108
|
+
- lib/traceview/frameworks/rails/inst/action_view_2x.rb
|
109
|
+
- lib/traceview/frameworks/rails/inst/action_view_30.rb
|
110
|
+
- lib/traceview/frameworks/rails/inst/active_record.rb
|
111
|
+
- lib/traceview/frameworks/rails/inst/connection_adapters/mysql.rb
|
112
|
+
- lib/traceview/frameworks/rails/inst/connection_adapters/mysql2.rb
|
113
|
+
- lib/traceview/frameworks/rails/inst/connection_adapters/oracle.rb
|
114
|
+
- lib/traceview/frameworks/rails/inst/connection_adapters/postgresql.rb
|
115
|
+
- lib/traceview/frameworks/rails/inst/connection_adapters/utils.rb
|
116
|
+
- lib/traceview/frameworks/sinatra.rb
|
117
|
+
- lib/traceview/frameworks/sinatra/templates.rb
|
118
|
+
- lib/traceview/inst/cassandra.rb
|
119
|
+
- lib/traceview/inst/dalli.rb
|
120
|
+
- lib/traceview/inst/em-http-request.rb
|
121
|
+
- lib/traceview/inst/excon.rb
|
122
|
+
- lib/traceview/inst/faraday.rb
|
123
|
+
- lib/traceview/inst/http.rb
|
124
|
+
- lib/traceview/inst/httpclient.rb
|
125
|
+
- lib/traceview/inst/memcache.rb
|
126
|
+
- lib/traceview/inst/memcached.rb
|
127
|
+
- lib/traceview/inst/mongo.rb
|
128
|
+
- lib/traceview/inst/moped.rb
|
129
|
+
- lib/traceview/inst/rack.rb
|
130
|
+
- lib/traceview/inst/redis.rb
|
131
|
+
- lib/traceview/inst/resque.rb
|
132
|
+
- lib/traceview/inst/rest-client.rb
|
133
|
+
- lib/traceview/inst/sequel.rb
|
134
|
+
- lib/traceview/inst/typhoeus.rb
|
135
|
+
- lib/traceview/instrumentation.rb
|
136
|
+
- lib/traceview/loading.rb
|
137
|
+
- lib/traceview/logger.rb
|
138
|
+
- lib/traceview/method_profiling.rb
|
139
|
+
- lib/traceview/ruby.rb
|
140
|
+
- lib/traceview/support.rb
|
141
|
+
- lib/traceview/thread_local.rb
|
142
|
+
- lib/traceview/util.rb
|
143
|
+
- lib/traceview/version.rb
|
144
|
+
- lib/traceview/xtrace.rb
|
145
|
+
- test/frameworks/apps/grape_nested.rb
|
146
|
+
- test/frameworks/apps/grape_simple.rb
|
147
|
+
- test/frameworks/apps/padrino_simple.rb
|
148
|
+
- test/frameworks/apps/sinatra_simple.rb
|
149
|
+
- test/frameworks/grape_test.rb
|
150
|
+
- test/frameworks/padrino_test.rb
|
151
|
+
- test/frameworks/sinatra_test.rb
|
152
|
+
- test/instrumentation/cassandra_test.rb
|
153
|
+
- test/instrumentation/dalli_test.rb
|
154
|
+
- test/instrumentation/em_http_request_test.rb
|
155
|
+
- test/instrumentation/excon_test.rb
|
156
|
+
- test/instrumentation/faraday_test.rb
|
157
|
+
- test/instrumentation/http_test.rb
|
158
|
+
- test/instrumentation/httpclient_test.rb
|
159
|
+
- test/instrumentation/memcache_test.rb
|
160
|
+
- test/instrumentation/memcached_test.rb
|
161
|
+
- test/instrumentation/mongo_test.rb
|
162
|
+
- test/instrumentation/moped_test.rb
|
163
|
+
- test/instrumentation/rack_test.rb
|
164
|
+
- test/instrumentation/redis_hashes_test.rb
|
165
|
+
- test/instrumentation/redis_keys_test.rb
|
166
|
+
- test/instrumentation/redis_lists_test.rb
|
167
|
+
- test/instrumentation/redis_misc_test.rb
|
168
|
+
- test/instrumentation/redis_sets_test.rb
|
169
|
+
- test/instrumentation/redis_sortedsets_test.rb
|
170
|
+
- test/instrumentation/redis_strings_test.rb
|
171
|
+
- test/instrumentation/resque_test.rb
|
172
|
+
- test/instrumentation/rest-client_test.rb
|
173
|
+
- test/instrumentation/sequel_mysql2_test.rb
|
174
|
+
- test/instrumentation/sequel_mysql_test.rb
|
175
|
+
- test/instrumentation/sequel_pg_test.rb
|
176
|
+
- test/instrumentation/typhoeus_test.rb
|
177
|
+
- test/minitest_helper.rb
|
178
|
+
- test/profiling/method_test.rb
|
179
|
+
- test/servers/rackapp_8101.rb
|
180
|
+
- test/support/backcompat_test.rb
|
181
|
+
- test/support/config_test.rb
|
182
|
+
- test/support/dnt_test.rb
|
183
|
+
- test/support/liboboe_settings_test.rb
|
184
|
+
- test/support/xtrace_test.rb
|
185
|
+
- traceview.gemspec
|
186
|
+
homepage: http://www.appneta.com/products/traceview/
|
187
|
+
licenses:
|
188
|
+
- AppNeta Open License, Version 1.0
|
189
|
+
metadata: {}
|
190
|
+
post_install_message:
|
191
|
+
rdoc_options: []
|
192
|
+
require_paths:
|
193
|
+
- lib
|
194
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
195
|
+
requirements:
|
196
|
+
- - ">="
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: 1.8.6
|
199
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
200
|
+
requirements:
|
201
|
+
- - ">="
|
202
|
+
- !ruby/object:Gem::Version
|
203
|
+
version: '0'
|
204
|
+
requirements: []
|
205
|
+
rubyforge_project:
|
206
|
+
rubygems_version: 2.4.5
|
207
|
+
signing_key:
|
208
|
+
specification_version: 4
|
209
|
+
summary: AppNeta TraceView performance instrumentation gem for Ruby
|
210
|
+
test_files:
|
211
|
+
- test/servers/rackapp_8101.rb
|
212
|
+
- test/instrumentation/excon_test.rb
|
213
|
+
- test/instrumentation/sequel_pg_test.rb
|
214
|
+
- test/instrumentation/moped_test.rb
|
215
|
+
- test/instrumentation/httpclient_test.rb
|
216
|
+
- test/instrumentation/sequel_mysql_test.rb
|
217
|
+
- test/instrumentation/http_test.rb
|
218
|
+
- test/instrumentation/dalli_test.rb
|
219
|
+
- test/instrumentation/redis_sortedsets_test.rb
|
220
|
+
- test/instrumentation/rack_test.rb
|
221
|
+
- test/instrumentation/cassandra_test.rb
|
222
|
+
- test/instrumentation/redis_strings_test.rb
|
223
|
+
- test/instrumentation/typhoeus_test.rb
|
224
|
+
- test/instrumentation/sequel_mysql2_test.rb
|
225
|
+
- test/instrumentation/redis_misc_test.rb
|
226
|
+
- test/instrumentation/faraday_test.rb
|
227
|
+
- test/instrumentation/redis_keys_test.rb
|
228
|
+
- test/instrumentation/redis_sets_test.rb
|
229
|
+
- test/instrumentation/memcache_test.rb
|
230
|
+
- test/instrumentation/resque_test.rb
|
231
|
+
- test/instrumentation/redis_hashes_test.rb
|
232
|
+
- test/instrumentation/mongo_test.rb
|
233
|
+
- test/instrumentation/redis_lists_test.rb
|
234
|
+
- test/instrumentation/memcached_test.rb
|
235
|
+
- test/instrumentation/em_http_request_test.rb
|
236
|
+
- test/instrumentation/rest-client_test.rb
|
237
|
+
- test/profiling/method_test.rb
|
238
|
+
- test/frameworks/apps/grape_simple.rb
|
239
|
+
- test/frameworks/apps/sinatra_simple.rb
|
240
|
+
- test/frameworks/apps/padrino_simple.rb
|
241
|
+
- test/frameworks/apps/grape_nested.rb
|
242
|
+
- test/frameworks/sinatra_test.rb
|
243
|
+
- test/frameworks/grape_test.rb
|
244
|
+
- test/frameworks/padrino_test.rb
|
245
|
+
- test/support/config_test.rb
|
246
|
+
- test/support/dnt_test.rb
|
247
|
+
- test/support/liboboe_settings_test.rb
|
248
|
+
- test/support/backcompat_test.rb
|
249
|
+
- test/support/xtrace_test.rb
|
250
|
+
- test/minitest_helper.rb
|