traceview 3.0.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.
- 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/README +2 -0
- data/lib/oboe/backward_compatibility.rb +59 -0
- data/lib/oboe/inst/rack.rb +11 -0
- data/lib/oboe.rb +7 -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/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/api.rb +18 -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/templates.rb +58 -0
- data/lib/traceview/frameworks/padrino.rb +64 -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/rails.rb +145 -0
- data/lib/traceview/frameworks/sinatra/templates.rb +56 -0
- data/lib/traceview/frameworks/sinatra.rb +95 -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/lib/traceview.rb +62 -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 +248 -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,248 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: traceview
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 3.0.0
|
|
5
|
+
platform: java
|
|
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
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
17
|
+
requirements:
|
|
18
|
+
- - '>='
|
|
19
|
+
- !ruby/object:Gem::Version
|
|
20
|
+
version: '0'
|
|
21
|
+
requirement: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - '>='
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '0'
|
|
26
|
+
prerelease: false
|
|
27
|
+
type: :runtime
|
|
28
|
+
- !ruby/object:Gem::Dependency
|
|
29
|
+
name: rake
|
|
30
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
31
|
+
requirements:
|
|
32
|
+
- - '>='
|
|
33
|
+
- !ruby/object:Gem::Version
|
|
34
|
+
version: '0'
|
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - '>='
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '0'
|
|
40
|
+
prerelease: false
|
|
41
|
+
type: :development
|
|
42
|
+
description: The TraceView gem provides performance instrumentation for MRI Ruby, JRuby and related frameworks.
|
|
43
|
+
email: traceviewsupport@appneta.com
|
|
44
|
+
executables: []
|
|
45
|
+
extensions: []
|
|
46
|
+
extra_rdoc_files:
|
|
47
|
+
- LICENSE
|
|
48
|
+
files:
|
|
49
|
+
- .gitignore
|
|
50
|
+
- .rubocop.yml
|
|
51
|
+
- .travis.yml
|
|
52
|
+
- Appraisals
|
|
53
|
+
- CHANGELOG.md
|
|
54
|
+
- CONFIG.md
|
|
55
|
+
- Gemfile
|
|
56
|
+
- LICENSE
|
|
57
|
+
- README.md
|
|
58
|
+
- Rakefile
|
|
59
|
+
- examples/DNT.md
|
|
60
|
+
- examples/carrying_context.rb
|
|
61
|
+
- examples/instrumenting_metal_controller.rb
|
|
62
|
+
- examples/puma_on_heroku_config.rb
|
|
63
|
+
- examples/tracing_async_threads.rb
|
|
64
|
+
- examples/tracing_background_jobs.rb
|
|
65
|
+
- examples/tracing_forked_processes.rb
|
|
66
|
+
- examples/unicorn_on_heroku_config.rb
|
|
67
|
+
- ext/oboe_metal/extconf.rb
|
|
68
|
+
- ext/oboe_metal/noop/noop.c
|
|
69
|
+
- ext/oboe_metal/src/bson/bson.h
|
|
70
|
+
- ext/oboe_metal/src/bson/platform_hacks.h
|
|
71
|
+
- ext/oboe_metal/src/oboe.h
|
|
72
|
+
- ext/oboe_metal/src/oboe.hpp
|
|
73
|
+
- ext/oboe_metal/src/oboe_wrap.cxx
|
|
74
|
+
- ext/oboe_metal/tests/test.rb
|
|
75
|
+
- gemfiles/mongo.gemfile
|
|
76
|
+
- gemfiles/moped.gemfile
|
|
77
|
+
- get_version.rb
|
|
78
|
+
- init.rb
|
|
79
|
+
- lib/joboe_metal.rb
|
|
80
|
+
- lib/oboe.rb
|
|
81
|
+
- lib/oboe/README
|
|
82
|
+
- lib/oboe/backward_compatibility.rb
|
|
83
|
+
- lib/oboe/inst/rack.rb
|
|
84
|
+
- lib/oboe_metal.rb
|
|
85
|
+
- lib/rails/generators/traceview/install_generator.rb
|
|
86
|
+
- lib/rails/generators/traceview/templates/traceview_initializer.rb
|
|
87
|
+
- lib/traceview.rb
|
|
88
|
+
- lib/traceview/api.rb
|
|
89
|
+
- lib/traceview/api/layerinit.rb
|
|
90
|
+
- lib/traceview/api/logging.rb
|
|
91
|
+
- lib/traceview/api/memcache.rb
|
|
92
|
+
- lib/traceview/api/profiling.rb
|
|
93
|
+
- lib/traceview/api/tracing.rb
|
|
94
|
+
- lib/traceview/api/util.rb
|
|
95
|
+
- lib/traceview/base.rb
|
|
96
|
+
- lib/traceview/config.rb
|
|
97
|
+
- lib/traceview/frameworks/grape.rb
|
|
98
|
+
- lib/traceview/frameworks/padrino.rb
|
|
99
|
+
- lib/traceview/frameworks/padrino/templates.rb
|
|
100
|
+
- lib/traceview/frameworks/rails.rb
|
|
101
|
+
- lib/traceview/frameworks/rails/helpers/rum/rum_ajax_header.js.erb
|
|
102
|
+
- lib/traceview/frameworks/rails/helpers/rum/rum_footer.js.erb
|
|
103
|
+
- lib/traceview/frameworks/rails/helpers/rum/rum_header.js.erb
|
|
104
|
+
- lib/traceview/frameworks/rails/inst/action_controller.rb
|
|
105
|
+
- lib/traceview/frameworks/rails/inst/action_view.rb
|
|
106
|
+
- lib/traceview/frameworks/rails/inst/action_view_2x.rb
|
|
107
|
+
- lib/traceview/frameworks/rails/inst/action_view_30.rb
|
|
108
|
+
- lib/traceview/frameworks/rails/inst/active_record.rb
|
|
109
|
+
- lib/traceview/frameworks/rails/inst/connection_adapters/mysql.rb
|
|
110
|
+
- lib/traceview/frameworks/rails/inst/connection_adapters/mysql2.rb
|
|
111
|
+
- lib/traceview/frameworks/rails/inst/connection_adapters/oracle.rb
|
|
112
|
+
- lib/traceview/frameworks/rails/inst/connection_adapters/postgresql.rb
|
|
113
|
+
- lib/traceview/frameworks/rails/inst/connection_adapters/utils.rb
|
|
114
|
+
- lib/traceview/frameworks/sinatra.rb
|
|
115
|
+
- lib/traceview/frameworks/sinatra/templates.rb
|
|
116
|
+
- lib/traceview/inst/cassandra.rb
|
|
117
|
+
- lib/traceview/inst/dalli.rb
|
|
118
|
+
- lib/traceview/inst/em-http-request.rb
|
|
119
|
+
- lib/traceview/inst/excon.rb
|
|
120
|
+
- lib/traceview/inst/faraday.rb
|
|
121
|
+
- lib/traceview/inst/http.rb
|
|
122
|
+
- lib/traceview/inst/httpclient.rb
|
|
123
|
+
- lib/traceview/inst/memcache.rb
|
|
124
|
+
- lib/traceview/inst/memcached.rb
|
|
125
|
+
- lib/traceview/inst/mongo.rb
|
|
126
|
+
- lib/traceview/inst/moped.rb
|
|
127
|
+
- lib/traceview/inst/rack.rb
|
|
128
|
+
- lib/traceview/inst/redis.rb
|
|
129
|
+
- lib/traceview/inst/resque.rb
|
|
130
|
+
- lib/traceview/inst/rest-client.rb
|
|
131
|
+
- lib/traceview/inst/sequel.rb
|
|
132
|
+
- lib/traceview/inst/typhoeus.rb
|
|
133
|
+
- lib/traceview/instrumentation.rb
|
|
134
|
+
- lib/traceview/loading.rb
|
|
135
|
+
- lib/traceview/logger.rb
|
|
136
|
+
- lib/traceview/method_profiling.rb
|
|
137
|
+
- lib/traceview/ruby.rb
|
|
138
|
+
- lib/traceview/support.rb
|
|
139
|
+
- lib/traceview/thread_local.rb
|
|
140
|
+
- lib/traceview/util.rb
|
|
141
|
+
- lib/traceview/version.rb
|
|
142
|
+
- lib/traceview/xtrace.rb
|
|
143
|
+
- test/frameworks/apps/grape_nested.rb
|
|
144
|
+
- test/frameworks/apps/grape_simple.rb
|
|
145
|
+
- test/frameworks/apps/padrino_simple.rb
|
|
146
|
+
- test/frameworks/apps/sinatra_simple.rb
|
|
147
|
+
- test/frameworks/grape_test.rb
|
|
148
|
+
- test/frameworks/padrino_test.rb
|
|
149
|
+
- test/frameworks/sinatra_test.rb
|
|
150
|
+
- test/instrumentation/cassandra_test.rb
|
|
151
|
+
- test/instrumentation/dalli_test.rb
|
|
152
|
+
- test/instrumentation/em_http_request_test.rb
|
|
153
|
+
- test/instrumentation/excon_test.rb
|
|
154
|
+
- test/instrumentation/faraday_test.rb
|
|
155
|
+
- test/instrumentation/http_test.rb
|
|
156
|
+
- test/instrumentation/httpclient_test.rb
|
|
157
|
+
- test/instrumentation/memcache_test.rb
|
|
158
|
+
- test/instrumentation/memcached_test.rb
|
|
159
|
+
- test/instrumentation/mongo_test.rb
|
|
160
|
+
- test/instrumentation/moped_test.rb
|
|
161
|
+
- test/instrumentation/rack_test.rb
|
|
162
|
+
- test/instrumentation/redis_hashes_test.rb
|
|
163
|
+
- test/instrumentation/redis_keys_test.rb
|
|
164
|
+
- test/instrumentation/redis_lists_test.rb
|
|
165
|
+
- test/instrumentation/redis_misc_test.rb
|
|
166
|
+
- test/instrumentation/redis_sets_test.rb
|
|
167
|
+
- test/instrumentation/redis_sortedsets_test.rb
|
|
168
|
+
- test/instrumentation/redis_strings_test.rb
|
|
169
|
+
- test/instrumentation/resque_test.rb
|
|
170
|
+
- test/instrumentation/rest-client_test.rb
|
|
171
|
+
- test/instrumentation/sequel_mysql2_test.rb
|
|
172
|
+
- test/instrumentation/sequel_mysql_test.rb
|
|
173
|
+
- test/instrumentation/sequel_pg_test.rb
|
|
174
|
+
- test/instrumentation/typhoeus_test.rb
|
|
175
|
+
- test/minitest_helper.rb
|
|
176
|
+
- test/profiling/method_test.rb
|
|
177
|
+
- test/servers/rackapp_8101.rb
|
|
178
|
+
- test/support/backcompat_test.rb
|
|
179
|
+
- test/support/config_test.rb
|
|
180
|
+
- test/support/dnt_test.rb
|
|
181
|
+
- test/support/liboboe_settings_test.rb
|
|
182
|
+
- test/support/xtrace_test.rb
|
|
183
|
+
- traceview.gemspec
|
|
184
|
+
homepage: http://www.appneta.com/products/traceview/
|
|
185
|
+
licenses:
|
|
186
|
+
- AppNeta Open License, Version 1.0
|
|
187
|
+
metadata: {}
|
|
188
|
+
post_install_message:
|
|
189
|
+
rdoc_options: []
|
|
190
|
+
require_paths:
|
|
191
|
+
- lib
|
|
192
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
193
|
+
requirements:
|
|
194
|
+
- - '>='
|
|
195
|
+
- !ruby/object:Gem::Version
|
|
196
|
+
version: 1.8.6
|
|
197
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
198
|
+
requirements:
|
|
199
|
+
- - '>='
|
|
200
|
+
- !ruby/object:Gem::Version
|
|
201
|
+
version: '0'
|
|
202
|
+
requirements: []
|
|
203
|
+
rubyforge_project:
|
|
204
|
+
rubygems_version: 2.4.5
|
|
205
|
+
signing_key:
|
|
206
|
+
specification_version: 4
|
|
207
|
+
summary: AppNeta TraceView performance instrumentation gem for Ruby
|
|
208
|
+
test_files:
|
|
209
|
+
- test/minitest_helper.rb
|
|
210
|
+
- test/servers/rackapp_8101.rb
|
|
211
|
+
- test/instrumentation/excon_test.rb
|
|
212
|
+
- test/instrumentation/sequel_pg_test.rb
|
|
213
|
+
- test/instrumentation/moped_test.rb
|
|
214
|
+
- test/instrumentation/httpclient_test.rb
|
|
215
|
+
- test/instrumentation/sequel_mysql_test.rb
|
|
216
|
+
- test/instrumentation/http_test.rb
|
|
217
|
+
- test/instrumentation/dalli_test.rb
|
|
218
|
+
- test/instrumentation/redis_sortedsets_test.rb
|
|
219
|
+
- test/instrumentation/rack_test.rb
|
|
220
|
+
- test/instrumentation/cassandra_test.rb
|
|
221
|
+
- test/instrumentation/redis_strings_test.rb
|
|
222
|
+
- test/instrumentation/typhoeus_test.rb
|
|
223
|
+
- test/instrumentation/sequel_mysql2_test.rb
|
|
224
|
+
- test/instrumentation/redis_misc_test.rb
|
|
225
|
+
- test/instrumentation/faraday_test.rb
|
|
226
|
+
- test/instrumentation/redis_keys_test.rb
|
|
227
|
+
- test/instrumentation/redis_sets_test.rb
|
|
228
|
+
- test/instrumentation/memcache_test.rb
|
|
229
|
+
- test/instrumentation/resque_test.rb
|
|
230
|
+
- test/instrumentation/redis_hashes_test.rb
|
|
231
|
+
- test/instrumentation/mongo_test.rb
|
|
232
|
+
- test/instrumentation/redis_lists_test.rb
|
|
233
|
+
- test/instrumentation/memcached_test.rb
|
|
234
|
+
- test/instrumentation/em_http_request_test.rb
|
|
235
|
+
- test/instrumentation/rest-client_test.rb
|
|
236
|
+
- test/profiling/method_test.rb
|
|
237
|
+
- test/frameworks/sinatra_test.rb
|
|
238
|
+
- test/frameworks/grape_test.rb
|
|
239
|
+
- test/frameworks/padrino_test.rb
|
|
240
|
+
- test/frameworks/apps/grape_simple.rb
|
|
241
|
+
- test/frameworks/apps/sinatra_simple.rb
|
|
242
|
+
- test/frameworks/apps/padrino_simple.rb
|
|
243
|
+
- test/frameworks/apps/grape_nested.rb
|
|
244
|
+
- test/support/config_test.rb
|
|
245
|
+
- test/support/dnt_test.rb
|
|
246
|
+
- test/support/liboboe_settings_test.rb
|
|
247
|
+
- test/support/backcompat_test.rb
|
|
248
|
+
- test/support/xtrace_test.rb
|