instana 1.10.1-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/.codeclimate.yml +23 -0
- data/.gitignore +16 -0
- data/.rubocop.yml +1156 -0
- data/.travis.yml +43 -0
- data/Configuration.md +149 -0
- data/Dockerfile +13 -0
- data/Gemfile +41 -0
- data/LICENSE +21 -0
- data/README.md +102 -0
- data/Rakefile +56 -0
- data/Tracing.md +145 -0
- data/Troubleshooting.md +32 -0
- data/benchmarks/Gemfile +7 -0
- data/benchmarks/id_generation.rb +12 -0
- data/benchmarks/opentracing.rb +26 -0
- data/benchmarks/rack_vanilla_vs_traced.rb +80 -0
- data/benchmarks/stackprof_rack_tracing.rb +77 -0
- data/benchmarks/time_processing.rb +12 -0
- data/bin/console +7 -0
- data/bin/setup +8 -0
- data/examples/opentracing.rb +31 -0
- data/examples/tracing.rb +80 -0
- data/gemfiles/libraries.gemfile +71 -0
- data/gemfiles/rails32.gemfile +51 -0
- data/gemfiles/rails42.gemfile +50 -0
- data/gemfiles/rails50.gemfile +52 -0
- data/instana.gemspec +46 -0
- data/lib/instana.rb +12 -0
- data/lib/instana/agent.rb +441 -0
- data/lib/instana/agent/helpers.rb +61 -0
- data/lib/instana/agent/hooks.rb +37 -0
- data/lib/instana/agent/tasks.rb +48 -0
- data/lib/instana/base.rb +54 -0
- data/lib/instana/collector.rb +116 -0
- data/lib/instana/collectors/gc.rb +57 -0
- data/lib/instana/collectors/memory.rb +34 -0
- data/lib/instana/collectors/thread.rb +30 -0
- data/lib/instana/config.rb +79 -0
- data/lib/instana/eum/eum-test.js.erb +16 -0
- data/lib/instana/eum/eum.js.erb +14 -0
- data/lib/instana/frameworks/cuba.rb +6 -0
- data/lib/instana/frameworks/instrumentation/abstract_mysql_adapter.rb +58 -0
- data/lib/instana/frameworks/instrumentation/action_controller.rb +183 -0
- data/lib/instana/frameworks/instrumentation/action_view.rb +43 -0
- data/lib/instana/frameworks/instrumentation/active_record.rb +27 -0
- data/lib/instana/frameworks/instrumentation/mysql2_adapter.rb +81 -0
- data/lib/instana/frameworks/instrumentation/mysql_adapter.rb +56 -0
- data/lib/instana/frameworks/instrumentation/postgresql_adapter.rb +71 -0
- data/lib/instana/frameworks/rails.rb +42 -0
- data/lib/instana/frameworks/roda.rb +6 -0
- data/lib/instana/frameworks/sinatra.rb +9 -0
- data/lib/instana/helpers.rb +40 -0
- data/lib/instana/instrumentation.rb +21 -0
- data/lib/instana/instrumentation/dalli.rb +78 -0
- data/lib/instana/instrumentation/excon.rb +74 -0
- data/lib/instana/instrumentation/grpc.rb +84 -0
- data/lib/instana/instrumentation/net-http.rb +66 -0
- data/lib/instana/instrumentation/rack.rb +77 -0
- data/lib/instana/instrumentation/redis.rb +82 -0
- data/lib/instana/instrumentation/resque.rb +131 -0
- data/lib/instana/instrumentation/rest-client.rb +34 -0
- data/lib/instana/instrumentation/sidekiq-client.rb +45 -0
- data/lib/instana/instrumentation/sidekiq-worker.rb +54 -0
- data/lib/instana/opentracing/carrier.rb +4 -0
- data/lib/instana/opentracing/tracer.rb +18 -0
- data/lib/instana/rack.rb +10 -0
- data/lib/instana/setup.rb +36 -0
- data/lib/instana/test.rb +40 -0
- data/lib/instana/thread_local.rb +15 -0
- data/lib/instana/tracer.rb +392 -0
- data/lib/instana/tracing/processor.rb +92 -0
- data/lib/instana/tracing/span.rb +401 -0
- data/lib/instana/tracing/span_context.rb +33 -0
- data/lib/instana/util.rb +261 -0
- data/lib/instana/version.rb +4 -0
- data/lib/oj_check.rb +16 -0
- data/lib/opentracing.rb +6 -0
- data/test/agent/agent_test.rb +143 -0
- data/test/apps/cuba.rb +15 -0
- data/test/apps/grpc_server.rb +81 -0
- data/test/apps/roda.rb +10 -0
- data/test/apps/sinatra.rb +5 -0
- data/test/benchmarks/bench_id_generation.rb +12 -0
- data/test/benchmarks/bench_opentracing.rb +13 -0
- data/test/config_test.rb +37 -0
- data/test/frameworks/cuba_test.rb +44 -0
- data/test/frameworks/rack_test.rb +167 -0
- data/test/frameworks/rails/actioncontroller_test.rb +93 -0
- data/test/frameworks/rails/actionview3_test.rb +255 -0
- data/test/frameworks/rails/actionview4_test.rb +254 -0
- data/test/frameworks/rails/actionview5_test.rb +221 -0
- data/test/frameworks/rails/activerecord3_test.rb +134 -0
- data/test/frameworks/rails/activerecord4_test.rb +134 -0
- data/test/frameworks/rails/activerecord5_test.rb +87 -0
- data/test/frameworks/roda_test.rb +44 -0
- data/test/frameworks/sinatra_test.rb +44 -0
- data/test/instana_test.rb +27 -0
- data/test/instrumentation/dalli_test.rb +253 -0
- data/test/instrumentation/excon_test.rb +147 -0
- data/test/instrumentation/grpc_test.rb +377 -0
- data/test/instrumentation/net-http_test.rb +160 -0
- data/test/instrumentation/redis_test.rb +119 -0
- data/test/instrumentation/resque_test.rb +128 -0
- data/test/instrumentation/rest-client_test.rb +55 -0
- data/test/instrumentation/sidekiq-client_test.rb +125 -0
- data/test/instrumentation/sidekiq-worker_test.rb +173 -0
- data/test/jobs/resque_error_job.rb +22 -0
- data/test/jobs/resque_fast_job.rb +20 -0
- data/test/jobs/sidekiq_job_1.rb +6 -0
- data/test/jobs/sidekiq_job_2.rb +7 -0
- data/test/models/block.rb +18 -0
- data/test/servers/grpc_50051.rb +20 -0
- data/test/servers/helpers/sidekiq_worker_initializer.rb +27 -0
- data/test/servers/rackapp_6511.rb +25 -0
- data/test/servers/rails_3205.rb +167 -0
- data/test/servers/sidekiq/worker.rb +27 -0
- data/test/test_helper.rb +145 -0
- data/test/tracing/custom_test.rb +158 -0
- data/test/tracing/id_management_test.rb +130 -0
- data/test/tracing/opentracing_test.rb +335 -0
- data/test/tracing/trace_test.rb +67 -0
- data/test/tracing/tracer_async_test.rb +198 -0
- data/test/tracing/tracer_test.rb +223 -0
- metadata +327 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
require 'active_record'
|
|
3
|
+
|
|
4
|
+
class ActiveRecordTest < Minitest::Test
|
|
5
|
+
def test_config_defaults
|
|
6
|
+
assert ::Instana.config[:active_record].is_a?(Hash)
|
|
7
|
+
assert ::Instana.config[:active_record].key?(:enabled)
|
|
8
|
+
assert_equal true, ::Instana.config[:active_record][:enabled]
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def test_postgresql
|
|
12
|
+
skip unless ::Instana::Test.postgresql?
|
|
13
|
+
|
|
14
|
+
clear_all!
|
|
15
|
+
|
|
16
|
+
Net::HTTP.get(URI.parse('http://localhost:3205/test/db'))
|
|
17
|
+
|
|
18
|
+
traces = Instana.processor.queued_traces
|
|
19
|
+
assert_equal 1, traces.length
|
|
20
|
+
trace = traces.first
|
|
21
|
+
|
|
22
|
+
assert_equal 6, trace.spans.length
|
|
23
|
+
spans = trace.spans.to_a
|
|
24
|
+
first_span = spans[0]
|
|
25
|
+
second_span = spans[2]
|
|
26
|
+
third_span = spans[3]
|
|
27
|
+
fourth_span = spans[4]
|
|
28
|
+
|
|
29
|
+
assert_equal :rack, first_span[:n]
|
|
30
|
+
assert_equal :activerecord, second_span[:n]
|
|
31
|
+
assert_equal :activerecord, third_span[:n]
|
|
32
|
+
assert_equal :activerecord, fourth_span[:n]
|
|
33
|
+
|
|
34
|
+
assert_equal "INSERT INTO \"blocks\" (\"name\", \"color\", \"created_at\", \"updated_at\") VALUES ($?, $?, $?, $?) RETURNING \"id\"", second_span[:data][:activerecord][:sql]
|
|
35
|
+
assert_equal "SELECT \"blocks\".* FROM \"blocks\" WHERE \"blocks\".\"name\" = $? ORDER BY \"blocks\".\"id\" ASC LIMIT $?", third_span[:data][:activerecord][:sql]
|
|
36
|
+
assert_equal "DELETE FROM \"blocks\" WHERE \"blocks\".\"id\" = $?", fourth_span[:data][:activerecord][:sql]
|
|
37
|
+
|
|
38
|
+
assert_equal "postgresql", second_span[:data][:activerecord][:adapter]
|
|
39
|
+
assert_equal "postgresql", third_span[:data][:activerecord][:adapter]
|
|
40
|
+
assert_equal "postgresql", fourth_span[:data][:activerecord][:adapter]
|
|
41
|
+
|
|
42
|
+
assert_equal ENV['TRAVIS_PSQL_HOST'], second_span[:data][:activerecord][:host]
|
|
43
|
+
assert_equal ENV['TRAVIS_PSQL_HOST'], third_span[:data][:activerecord][:host]
|
|
44
|
+
assert_equal ENV['TRAVIS_PSQL_HOST'], fourth_span[:data][:activerecord][:host]
|
|
45
|
+
|
|
46
|
+
assert_equal "postgres", second_span[:data][:activerecord][:username]
|
|
47
|
+
assert_equal "postgres", third_span[:data][:activerecord][:username]
|
|
48
|
+
assert_equal "postgres", fourth_span[:data][:activerecord][:username]
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def test_mysql2
|
|
52
|
+
skip unless ::Instana::Test.mysql2?
|
|
53
|
+
|
|
54
|
+
clear_all!
|
|
55
|
+
|
|
56
|
+
Net::HTTP.get(URI.parse('http://localhost:3205/test/db'))
|
|
57
|
+
|
|
58
|
+
spans = ::Instana.processor.queued_spans
|
|
59
|
+
assert_equal 6, spans.length
|
|
60
|
+
|
|
61
|
+
first_span = spans[5]
|
|
62
|
+
second_span = spans[0]
|
|
63
|
+
third_span = spans[1]
|
|
64
|
+
fourth_span = spans[2]
|
|
65
|
+
|
|
66
|
+
assert_equal :rack, first_span[:n]
|
|
67
|
+
assert_equal :activerecord, second_span[:n]
|
|
68
|
+
assert_equal :activerecord, third_span[:n]
|
|
69
|
+
assert_equal :activerecord, fourth_span[:n]
|
|
70
|
+
|
|
71
|
+
assert_equal "INSERT INTO `blocks` (`name`, `color`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?)", second_span[:data][:activerecord][:sql]
|
|
72
|
+
assert_equal "SELECT `blocks`.* FROM `blocks` WHERE `blocks`.`name` = ? ORDER BY `blocks`.`id` ASC LIMIT ?", third_span[:data][:activerecord][:sql]
|
|
73
|
+
assert_equal "DELETE FROM `blocks` WHERE `blocks`.`id` = ?", fourth_span[:data][:activerecord][:sql]
|
|
74
|
+
|
|
75
|
+
assert_equal "mysql2", second_span[:data][:activerecord][:adapter]
|
|
76
|
+
assert_equal "mysql2", third_span[:data][:activerecord][:adapter]
|
|
77
|
+
assert_equal "mysql2", fourth_span[:data][:activerecord][:adapter]
|
|
78
|
+
|
|
79
|
+
assert_equal ENV['TRAVIS_MYSQL_HOST'], second_span[:data][:activerecord][:host]
|
|
80
|
+
assert_equal ENV['TRAVIS_MYSQL_HOST'], third_span[:data][:activerecord][:host]
|
|
81
|
+
assert_equal ENV['TRAVIS_MYSQL_HOST'], fourth_span[:data][:activerecord][:host]
|
|
82
|
+
|
|
83
|
+
assert_equal ENV['TRAVIS_MYSQL_USER'], second_span[:data][:activerecord][:username]
|
|
84
|
+
assert_equal ENV['TRAVIS_MYSQL_USER'], third_span[:data][:activerecord][:username]
|
|
85
|
+
assert_equal ENV['TRAVIS_MYSQL_USER'], fourth_span[:data][:activerecord][:username]
|
|
86
|
+
end
|
|
87
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
|
|
2
|
+
if defined?(::Roda)
|
|
3
|
+
require 'test_helper'
|
|
4
|
+
require File.expand_path(File.dirname(__FILE__) + '/../apps/roda')
|
|
5
|
+
require 'rack/test'
|
|
6
|
+
|
|
7
|
+
class RodaTest < Minitest::Test
|
|
8
|
+
include Rack::Test::Methods
|
|
9
|
+
|
|
10
|
+
def app
|
|
11
|
+
InstanaRodaApp
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_basic_get
|
|
15
|
+
clear_all!
|
|
16
|
+
|
|
17
|
+
r = get '/hello'
|
|
18
|
+
assert last_response.ok?
|
|
19
|
+
|
|
20
|
+
assert r.headers.key?("X-Instana-T")
|
|
21
|
+
assert r.headers.key?("X-Instana-S")
|
|
22
|
+
|
|
23
|
+
spans = ::Instana.processor.queued_spans
|
|
24
|
+
assert_equal 1, spans.count
|
|
25
|
+
|
|
26
|
+
first_span = spans.first
|
|
27
|
+
assert_equal :rack, first_span[:n]
|
|
28
|
+
assert first_span.key?(:data)
|
|
29
|
+
assert first_span[:data].key?(:http)
|
|
30
|
+
|
|
31
|
+
assert first_span[:data][:http].key?(:method)
|
|
32
|
+
assert_equal "GET", first_span[:data][:http][:method]
|
|
33
|
+
|
|
34
|
+
assert first_span[:data][:http].key?(:url)
|
|
35
|
+
assert_equal "/hello", first_span[:data][:http][:url]
|
|
36
|
+
|
|
37
|
+
assert first_span[:data][:http].key?(:status)
|
|
38
|
+
assert_equal 200, first_span[:data][:http][:status]
|
|
39
|
+
|
|
40
|
+
assert first_span[:data][:http].key?(:host)
|
|
41
|
+
assert_equal "example.org", first_span[:data][:http][:host]
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
|
|
2
|
+
if defined?(::Sinatra)
|
|
3
|
+
require 'test_helper'
|
|
4
|
+
require File.expand_path(File.dirname(__FILE__) + '/../apps/sinatra')
|
|
5
|
+
require 'rack/test'
|
|
6
|
+
|
|
7
|
+
class SinatraTest < Minitest::Test
|
|
8
|
+
include Rack::Test::Methods
|
|
9
|
+
|
|
10
|
+
def app
|
|
11
|
+
InstanaSinatraApp
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_basic_get
|
|
15
|
+
clear_all!
|
|
16
|
+
|
|
17
|
+
r = get '/'
|
|
18
|
+
assert last_response.ok?
|
|
19
|
+
|
|
20
|
+
assert r.headers.key?("X-Instana-T")
|
|
21
|
+
assert r.headers.key?("X-Instana-S")
|
|
22
|
+
|
|
23
|
+
spans = ::Instana.processor.queued_spans
|
|
24
|
+
assert_equal 1, spans.count
|
|
25
|
+
|
|
26
|
+
first_span = spans.first
|
|
27
|
+
assert_equal :rack, first_span[:n]
|
|
28
|
+
assert first_span.key?(:data)
|
|
29
|
+
assert first_span[:data].key?(:http)
|
|
30
|
+
|
|
31
|
+
assert first_span[:data][:http].key?(:method)
|
|
32
|
+
assert_equal "GET", first_span[:data][:http][:method]
|
|
33
|
+
|
|
34
|
+
assert first_span[:data][:http].key?(:url)
|
|
35
|
+
assert_equal "/", first_span[:data][:http][:url]
|
|
36
|
+
|
|
37
|
+
assert first_span[:data][:http].key?(:status)
|
|
38
|
+
assert_equal 200, first_span[:data][:http][:status]
|
|
39
|
+
|
|
40
|
+
assert first_span[:data][:http].key?(:host)
|
|
41
|
+
assert_equal "example.org", first_span[:data][:http][:host]
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class InstanaTest < Minitest::Test
|
|
4
|
+
def test_that_it_has_a_version_number
|
|
5
|
+
refute_nil ::Instana::VERSION
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def test_that_it_has_a_logger
|
|
9
|
+
refute_nil ::Instana.logger
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_that_it_has_an_agent
|
|
13
|
+
refute_nil ::Instana.agent
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_that_it_has_a_collector
|
|
17
|
+
refute_nil ::Instana.collector
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_that_it_has_a_tracer
|
|
21
|
+
refute_nil ::Instana.tracer
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_that_it_has_a_config
|
|
25
|
+
refute_nil ::Instana.config
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class DalliTest < Minitest::Test
|
|
4
|
+
def setup
|
|
5
|
+
@memcached_host = ENV['MEMCACHED_HOST'] || '127.0.0.1:11211'
|
|
6
|
+
@dc = Dalli::Client.new(@memcached_host, :namespace => "instana_test")
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_config_defaults
|
|
10
|
+
assert ::Instana.config[:dalli].is_a?(Hash)
|
|
11
|
+
assert ::Instana.config[:dalli].key?(:enabled)
|
|
12
|
+
assert_equal true, ::Instana.config[:dalli][:enabled]
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_basic_get
|
|
16
|
+
clear_all!
|
|
17
|
+
|
|
18
|
+
@dc.set(:instana, :boom)
|
|
19
|
+
|
|
20
|
+
result = nil
|
|
21
|
+
::Instana.tracer.start_or_continue_trace(:dalli_test) do
|
|
22
|
+
result = @dc.get(:instana)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
assert_equal :boom, result
|
|
26
|
+
|
|
27
|
+
spans = ::Instana.processor.queued_spans
|
|
28
|
+
assert_equal 2, spans.length
|
|
29
|
+
|
|
30
|
+
first_span = spans[1]
|
|
31
|
+
second_span = spans[0]
|
|
32
|
+
|
|
33
|
+
validate_sdk_span(first_span, {:name => :dalli_test, :type => :intermediate})
|
|
34
|
+
|
|
35
|
+
assert_equal :memcache, second_span[:n]
|
|
36
|
+
assert_equal false, second_span.key?(:error)
|
|
37
|
+
assert second_span[:p] == first_span[:s]
|
|
38
|
+
assert first_span[:t] == first_span[:s]
|
|
39
|
+
assert second_span[:data].key?(:memcache)
|
|
40
|
+
assert second_span[:data][:memcache].key?(:command)
|
|
41
|
+
assert_equal :get, second_span[:data][:memcache][:command]
|
|
42
|
+
assert second_span[:data][:memcache].key?(:key)
|
|
43
|
+
assert_equal :instana, second_span[:data][:memcache][:key]
|
|
44
|
+
assert second_span[:data][:memcache].key?(:namespace)
|
|
45
|
+
assert_equal 'instana_test', second_span[:data][:memcache][:namespace]
|
|
46
|
+
assert second_span[:data][:memcache].key?(:server)
|
|
47
|
+
assert_equal ENV['MEMCACHED_HOST'], second_span[:data][:memcache][:server]
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def test_basic_set
|
|
51
|
+
clear_all!
|
|
52
|
+
|
|
53
|
+
result = nil
|
|
54
|
+
::Instana.tracer.start_or_continue_trace(:dalli_test) do
|
|
55
|
+
result = @dc.set(:instana, :rocks)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
assert result.is_a?(Integer)
|
|
59
|
+
|
|
60
|
+
spans = ::Instana.processor.queued_spans
|
|
61
|
+
assert_equal 2, spans.length
|
|
62
|
+
|
|
63
|
+
first_span = spans[1]
|
|
64
|
+
second_span = spans[0]
|
|
65
|
+
|
|
66
|
+
validate_sdk_span(first_span, {:name => :dalli_test, :type => :intermediate})
|
|
67
|
+
|
|
68
|
+
assert_equal :memcache, second_span[:n]
|
|
69
|
+
assert_equal false, second_span.key?(:error)
|
|
70
|
+
assert second_span[:p] == first_span[:s]
|
|
71
|
+
assert first_span[:t] == first_span[:s]
|
|
72
|
+
assert second_span[:data].key?(:memcache)
|
|
73
|
+
assert second_span[:data][:memcache].key?(:command)
|
|
74
|
+
assert_equal :set, second_span[:data][:memcache][:command]
|
|
75
|
+
assert second_span[:data][:memcache].key?(:key)
|
|
76
|
+
assert_equal :instana, second_span[:data][:memcache][:key]
|
|
77
|
+
assert second_span[:data][:memcache].key?(:namespace)
|
|
78
|
+
assert_equal 'instana_test', second_span[:data][:memcache][:namespace]
|
|
79
|
+
assert second_span[:data][:memcache].key?(:server)
|
|
80
|
+
assert_equal ENV['MEMCACHED_HOST'], second_span[:data][:memcache][:server]
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def test_replace
|
|
84
|
+
clear_all!
|
|
85
|
+
|
|
86
|
+
@dc.set(:instana, :rocks)
|
|
87
|
+
result = nil
|
|
88
|
+
::Instana.tracer.start_or_continue_trace(:dalli_test) do
|
|
89
|
+
result = @dc.replace(:instana, :rocks)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
assert result.is_a?(Integer)
|
|
93
|
+
|
|
94
|
+
spans = ::Instana.processor.queued_spans
|
|
95
|
+
assert_equal 2, spans.length
|
|
96
|
+
|
|
97
|
+
first_span = spans[1]
|
|
98
|
+
second_span = spans[0]
|
|
99
|
+
|
|
100
|
+
validate_sdk_span(first_span, {:name => :dalli_test, :type => :intermediate})
|
|
101
|
+
|
|
102
|
+
assert_equal :memcache, second_span[:n]
|
|
103
|
+
assert_equal false, second_span.key?(:error)
|
|
104
|
+
assert second_span[:p] == first_span[:s]
|
|
105
|
+
assert first_span[:t] == first_span[:s]
|
|
106
|
+
assert second_span[:data].key?(:memcache)
|
|
107
|
+
assert second_span[:data][:memcache].key?(:command)
|
|
108
|
+
assert_equal :replace, second_span[:data][:memcache][:command]
|
|
109
|
+
assert second_span[:data][:memcache].key?(:key)
|
|
110
|
+
assert_equal :instana, second_span[:data][:memcache][:key]
|
|
111
|
+
assert second_span[:data][:memcache].key?(:namespace)
|
|
112
|
+
assert_equal 'instana_test', second_span[:data][:memcache][:namespace]
|
|
113
|
+
assert second_span[:data][:memcache].key?(:server)
|
|
114
|
+
assert_equal ENV['MEMCACHED_HOST'], second_span[:data][:memcache][:server]
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def test_delete
|
|
118
|
+
clear_all!
|
|
119
|
+
|
|
120
|
+
@dc.set(:instana, :rocks)
|
|
121
|
+
result = nil
|
|
122
|
+
::Instana.tracer.start_or_continue_trace(:dalli_test) do
|
|
123
|
+
result = @dc.delete(:instana)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
assert_equal true, result
|
|
127
|
+
|
|
128
|
+
spans = ::Instana.processor.queued_spans
|
|
129
|
+
assert_equal 2, spans.length
|
|
130
|
+
|
|
131
|
+
first_span = spans[1]
|
|
132
|
+
second_span = spans[0]
|
|
133
|
+
|
|
134
|
+
validate_sdk_span(first_span, {:name => :dalli_test, :type => :intermediate})
|
|
135
|
+
|
|
136
|
+
assert_equal :memcache, second_span[:n]
|
|
137
|
+
assert_equal false, second_span.key?(:error)
|
|
138
|
+
assert second_span[:p] == first_span[:s]
|
|
139
|
+
assert first_span[:t] == first_span[:s]
|
|
140
|
+
assert second_span[:data].key?(:memcache)
|
|
141
|
+
assert second_span[:data][:memcache].key?(:command)
|
|
142
|
+
assert_equal :delete, second_span[:data][:memcache][:command]
|
|
143
|
+
assert second_span[:data][:memcache].key?(:key)
|
|
144
|
+
assert_equal :instana, second_span[:data][:memcache][:key]
|
|
145
|
+
assert second_span[:data][:memcache].key?(:namespace)
|
|
146
|
+
assert_equal 'instana_test', second_span[:data][:memcache][:namespace]
|
|
147
|
+
assert second_span[:data][:memcache].key?(:server)
|
|
148
|
+
assert_equal ENV['MEMCACHED_HOST'], second_span[:data][:memcache][:server]
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
def test_incr
|
|
152
|
+
clear_all!
|
|
153
|
+
|
|
154
|
+
result = nil
|
|
155
|
+
@dc.set(:counter, 0, nil, :raw => true)
|
|
156
|
+
::Instana.tracer.start_or_continue_trace(:dalli_test) do
|
|
157
|
+
result = @dc.incr(:counter, 1, nil, 0)
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
assert_equal 1, result
|
|
161
|
+
|
|
162
|
+
spans = ::Instana.processor.queued_spans
|
|
163
|
+
assert_equal 2, spans.length
|
|
164
|
+
|
|
165
|
+
first_span = spans[1]
|
|
166
|
+
second_span = spans[0]
|
|
167
|
+
|
|
168
|
+
validate_sdk_span(first_span, {:name => :dalli_test, :type => :intermediate})
|
|
169
|
+
|
|
170
|
+
assert_equal :memcache, second_span[:n]
|
|
171
|
+
assert_equal false, second_span.key?(:error)
|
|
172
|
+
assert second_span[:p] == first_span[:s]
|
|
173
|
+
assert first_span[:t] == first_span[:s]
|
|
174
|
+
assert second_span[:data].key?(:memcache)
|
|
175
|
+
assert second_span[:data][:memcache].key?(:command)
|
|
176
|
+
assert_equal :incr, second_span[:data][:memcache][:command]
|
|
177
|
+
assert second_span[:data][:memcache].key?(:key)
|
|
178
|
+
assert_equal :counter, second_span[:data][:memcache][:key]
|
|
179
|
+
assert second_span[:data][:memcache].key?(:namespace)
|
|
180
|
+
assert_equal 'instana_test', second_span[:data][:memcache][:namespace]
|
|
181
|
+
assert second_span[:data][:memcache].key?(:server)
|
|
182
|
+
assert_equal ENV['MEMCACHED_HOST'], second_span[:data][:memcache][:server]
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
def test_decr
|
|
186
|
+
clear_all!
|
|
187
|
+
|
|
188
|
+
result = nil
|
|
189
|
+
@dc.set(:counter, 0, nil, :raw => true)
|
|
190
|
+
::Instana.tracer.start_or_continue_trace(:dalli_test) do
|
|
191
|
+
result = @dc.decr(:counter, 1, nil, 0)
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
assert_equal 0, result
|
|
195
|
+
|
|
196
|
+
spans = ::Instana.processor.queued_spans
|
|
197
|
+
assert_equal 2, spans.length
|
|
198
|
+
|
|
199
|
+
first_span = spans[1]
|
|
200
|
+
second_span = spans[0]
|
|
201
|
+
|
|
202
|
+
validate_sdk_span(first_span, {:name => :dalli_test, :type => :intermediate})
|
|
203
|
+
|
|
204
|
+
assert_equal :memcache, second_span[:n]
|
|
205
|
+
assert_equal false, second_span.key?(:error)
|
|
206
|
+
assert second_span[:p] == first_span[:s]
|
|
207
|
+
assert first_span[:t] == first_span[:s]
|
|
208
|
+
assert second_span[:data].key?(:memcache)
|
|
209
|
+
assert second_span[:data][:memcache].key?(:command)
|
|
210
|
+
assert_equal :decr, second_span[:data][:memcache][:command]
|
|
211
|
+
assert second_span[:data][:memcache].key?(:key)
|
|
212
|
+
assert_equal :counter, second_span[:data][:memcache][:key]
|
|
213
|
+
assert second_span[:data][:memcache].key?(:namespace)
|
|
214
|
+
assert_equal 'instana_test', second_span[:data][:memcache][:namespace]
|
|
215
|
+
assert second_span[:data][:memcache].key?(:server)
|
|
216
|
+
assert_equal ENV['MEMCACHED_HOST'], second_span[:data][:memcache][:server]
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
def test_get_multi
|
|
220
|
+
clear_all!
|
|
221
|
+
|
|
222
|
+
@dc.set(:one, 1)
|
|
223
|
+
@dc.set(:three, 3)
|
|
224
|
+
|
|
225
|
+
::Instana.tracer.start_or_continue_trace(:dalli_test) do
|
|
226
|
+
@dc.get_multi(:one, :two, :three, :four)
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
spans = ::Instana.processor.queued_spans
|
|
230
|
+
assert_equal 2, spans.length
|
|
231
|
+
|
|
232
|
+
first_span = spans[1]
|
|
233
|
+
second_span = spans[0]
|
|
234
|
+
|
|
235
|
+
validate_sdk_span(first_span, {:name => :dalli_test, :type => :intermediate})
|
|
236
|
+
|
|
237
|
+
assert_equal :memcache, second_span[:n]
|
|
238
|
+
assert_equal false, second_span.key?(:error)
|
|
239
|
+
assert second_span[:p] == first_span[:s]
|
|
240
|
+
assert first_span[:t] == first_span[:s]
|
|
241
|
+
assert second_span[:data].key?(:memcache)
|
|
242
|
+
assert second_span[:data][:memcache].key?(:command)
|
|
243
|
+
assert_equal :get_multi, second_span[:data][:memcache][:command]
|
|
244
|
+
assert second_span[:data][:memcache].key?(:keys)
|
|
245
|
+
assert_equal "one, two, three, four", second_span[:data][:memcache][:keys]
|
|
246
|
+
assert second_span[:data][:memcache].key?(:namespace)
|
|
247
|
+
assert_equal 'instana_test', second_span[:data][:memcache][:namespace]
|
|
248
|
+
assert second_span[:data][:memcache].key?(:server)
|
|
249
|
+
assert_equal ENV['MEMCACHED_HOST'], second_span[:data][:memcache][:server]
|
|
250
|
+
assert second_span[:data][:memcache].key?(:hits)
|
|
251
|
+
assert_equal 2, second_span[:data][:memcache][:hits]
|
|
252
|
+
end
|
|
253
|
+
end
|