instana 1.1.0 → 1.2.0

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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +2 -0
  3. data/.gitignore +1 -0
  4. data/.travis.yml +24 -2
  5. data/Gemfile +2 -22
  6. data/README.md +1 -1
  7. data/Rakefile +15 -0
  8. data/Tracing.md +29 -2
  9. data/gemfiles/libraries.gemfile +50 -0
  10. data/gemfiles/rails32.gemfile +45 -0
  11. data/gemfiles/rails42.gemfile +44 -0
  12. data/gemfiles/rails50.gemfile +44 -0
  13. data/instana.gemspec +6 -8
  14. data/lib/instana/config.rb +7 -5
  15. data/lib/instana/frameworks/instrumentation/abstract_mysql_adapter.rb +55 -0
  16. data/lib/instana/frameworks/instrumentation/action_controller.rb +105 -0
  17. data/lib/instana/frameworks/instrumentation/active_record.rb +22 -0
  18. data/lib/instana/frameworks/instrumentation/mysql2_adapter.rb +81 -0
  19. data/lib/instana/frameworks/instrumentation/mysql_adapter.rb +56 -0
  20. data/lib/instana/frameworks/instrumentation/postgresql_adapter.rb +71 -0
  21. data/lib/instana/frameworks/rails.rb +5 -0
  22. data/lib/instana/test.rb +40 -0
  23. data/lib/instana/tracer.rb +19 -0
  24. data/lib/instana/tracing/span.rb +3 -3
  25. data/lib/instana/version.rb +1 -1
  26. data/log/.keep +0 -0
  27. data/test/agent/agent_test.rb +139 -0
  28. data/test/apps/cuba.rb +15 -0
  29. data/test/apps/roda.rb +10 -0
  30. data/test/apps/sinatra.rb +5 -0
  31. data/test/config_test.rb +17 -0
  32. data/test/frameworks/cuba_test.rb +44 -0
  33. data/test/frameworks/rack_test.rb +152 -0
  34. data/test/frameworks/rails/actioncontroller_test.rb +123 -0
  35. data/test/frameworks/rails/activerecord3_test.rb +134 -0
  36. data/test/frameworks/rails/activerecord4_test.rb +134 -0
  37. data/test/frameworks/rails/activerecord5_test.rb +90 -0
  38. data/test/frameworks/roda_test.rb +44 -0
  39. data/test/frameworks/sinatra_test.rb +44 -0
  40. data/test/instana_test.rb +27 -0
  41. data/test/instrumentation/dalli_test.rb +274 -0
  42. data/test/instrumentation/excon_test.rb +171 -0
  43. data/test/instrumentation/net-http_test.rb +140 -0
  44. data/test/instrumentation/rest-client_test.rb +61 -0
  45. data/test/models/block.rb +18 -0
  46. data/test/servers/rackapp_6511.rb +20 -0
  47. data/test/servers/rails_3205.rb +95 -0
  48. data/test/test_helper.rb +39 -0
  49. data/test/tracing/custom_test.rb +143 -0
  50. data/test/tracing/id_management_test.rb +96 -0
  51. data/test/tracing/opentracing_test.rb +377 -0
  52. data/test/tracing/trace_test.rb +50 -0
  53. data/test/tracing/tracer_async_test.rb +298 -0
  54. data/test/tracing/tracer_test.rb +202 -0
  55. metadata +114 -4
@@ -0,0 +1,134 @@
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
+ # Make one call to warm up the Rails stack and allow it to load
13
+ # relations
14
+ Net::HTTP.get(URI.parse('http://localhost:3205/test/db'))
15
+
16
+ skip unless ::Instana::Test.postgresql?
17
+
18
+ clear_all!
19
+
20
+ Net::HTTP.get(URI.parse('http://localhost:3205/test/db'))
21
+
22
+ traces = Instana.processor.queued_traces
23
+ assert_equal 1, traces.count
24
+ trace = traces.first
25
+
26
+ assert_equal 5, trace.spans.count
27
+ spans = trace.spans.to_a
28
+ first_span = spans[0]
29
+ second_span = spans[2]
30
+ third_span = spans[3]
31
+ fourth_span = spans[4]
32
+
33
+ assert_equal :rack, first_span.name
34
+ assert_equal :activerecord, second_span.name
35
+ assert_equal :activerecord, third_span.name
36
+ assert_equal :activerecord, fourth_span.name
37
+
38
+ assert_equal "INSERT INTO \"blocks\" (\"color\", \"created_at\", \"name\", \"updated_at\") VALUES ($?, $?, $?, $?) RETURNING \"id\"", second_span[:data][:activerecord][:sql]
39
+ assert_equal "SELECT \"blocks\".* FROM \"blocks\" WHERE \"blocks\".\"name\" = ? LIMIT ?", third_span[:data][:activerecord][:sql]
40
+ assert_equal "DELETE FROM \"blocks\" WHERE \"blocks\".\"id\" = ?", fourth_span[:data][:activerecord][:sql]
41
+
42
+ assert_equal "postgresql", second_span[:data][:activerecord][:adapter]
43
+ assert_equal "postgresql", third_span[:data][:activerecord][:adapter]
44
+ assert_equal "postgresql", fourth_span[:data][:activerecord][:adapter]
45
+
46
+ assert_equal ENV['TRAVIS_PSQL_HOST'], second_span[:data][:activerecord][:host]
47
+ assert_equal ENV['TRAVIS_PSQL_HOST'], third_span[:data][:activerecord][:host]
48
+ assert_equal ENV['TRAVIS_PSQL_HOST'], fourth_span[:data][:activerecord][:host]
49
+
50
+ assert_equal "postgres", second_span[:data][:activerecord][:username]
51
+ assert_equal "postgres", third_span[:data][:activerecord][:username]
52
+ assert_equal "postgres", fourth_span[:data][:activerecord][:username]
53
+ end
54
+
55
+ def test_mysql2
56
+ skip unless ::Instana::Test.mysql2?
57
+
58
+ clear_all!
59
+
60
+ Net::HTTP.get(URI.parse('http://localhost:3205/test/db'))
61
+
62
+ traces = Instana.processor.queued_traces
63
+ assert_equal 1, traces.count
64
+ trace = traces.first
65
+
66
+ assert_equal 5, trace.spans.count
67
+ spans = trace.spans.to_a
68
+ first_span = spans[0]
69
+ second_span = spans[2]
70
+ third_span = spans[3]
71
+ fourth_span = spans[4]
72
+
73
+ assert_equal :rack, first_span.name
74
+ assert_equal :activerecord, second_span.name
75
+ assert_equal :activerecord, third_span.name
76
+ assert_equal :activerecord, fourth_span.name
77
+
78
+ assert_equal "INSERT INTO `blocks` (`color`, `created_at`, `name`, `updated_at`) VALUES (?, ?, ?, ?)", second_span[:data][:activerecord][:sql]
79
+ assert_equal "SELECT `blocks`.* FROM `blocks` WHERE `blocks`.`name` = ? LIMIT ?", third_span[:data][:activerecord][:sql]
80
+ assert_equal "DELETE FROM `blocks` WHERE `blocks`.`id` = ?", fourth_span[:data][:activerecord][:sql]
81
+
82
+ assert_equal "mysql2", second_span[:data][:activerecord][:adapter]
83
+ assert_equal "mysql2", third_span[:data][:activerecord][:adapter]
84
+ assert_equal "mysql2", fourth_span[:data][:activerecord][:adapter]
85
+
86
+ assert_equal ENV['TRAVIS_MYSQL_HOST'], second_span[:data][:activerecord][:host]
87
+ assert_equal ENV['TRAVIS_MYSQL_HOST'], third_span[:data][:activerecord][:host]
88
+ assert_equal ENV['TRAVIS_MYSQL_HOST'], fourth_span[:data][:activerecord][:host]
89
+
90
+ assert_equal ENV['TRAVIS_MYSQL_USER'], second_span[:data][:activerecord][:username]
91
+ assert_equal ENV['TRAVIS_MYSQL_USER'], third_span[:data][:activerecord][:username]
92
+ assert_equal ENV['TRAVIS_MYSQL_USER'], fourth_span[:data][:activerecord][:username]
93
+ end
94
+
95
+ def test_mysql
96
+ skip unless ::Instana::Test.mysql?
97
+
98
+ clear_all!
99
+
100
+ Net::HTTP.get(URI.parse('http://localhost:3205/test/db'))
101
+
102
+ traces = Instana.processor.queued_traces
103
+ assert_equal 1, traces.count
104
+ trace = traces.first
105
+
106
+ assert_equal 5, trace.spans.count
107
+ spans = trace.spans.to_a
108
+ first_span = spans[0]
109
+ second_span = spans[2]
110
+ third_span = spans[3]
111
+ fourth_span = spans[4]
112
+
113
+ assert_equal :rack, first_span.name
114
+ assert_equal :activerecord, second_span.name
115
+ assert_equal :activerecord, third_span.name
116
+ assert_equal :activerecord, fourth_span.name
117
+
118
+ assert_equal "INSERT INTO `blocks` (`color`, `created_at`, `name`, `updated_at`) VALUES (?, ?, ?, ?)", second_span[:data][:activerecord][:sql]
119
+ assert_equal "SELECT `blocks`.* FROM `blocks` WHERE `blocks`.`name` = ? LIMIT ?", third_span[:data][:activerecord][:sql]
120
+ assert_equal "DELETE FROM `blocks` WHERE `blocks`.`id` = ?", fourth_span[:data][:activerecord][:sql]
121
+
122
+ assert_equal "mysql", second_span[:data][:activerecord][:adapter]
123
+ assert_equal "mysql", third_span[:data][:activerecord][:adapter]
124
+ assert_equal "mysql", fourth_span[:data][:activerecord][:adapter]
125
+
126
+ assert_equal ENV['TRAVIS_MYSQL_HOST'], second_span[:data][:activerecord][:host]
127
+ assert_equal ENV['TRAVIS_MYSQL_HOST'], third_span[:data][:activerecord][:host]
128
+ assert_equal ENV['TRAVIS_MYSQL_HOST'], fourth_span[:data][:activerecord][:host]
129
+
130
+ assert_equal ENV['TRAVIS_MYSQL_USER'], second_span[:data][:activerecord][:username]
131
+ assert_equal ENV['TRAVIS_MYSQL_USER'], third_span[:data][:activerecord][:username]
132
+ assert_equal ENV['TRAVIS_MYSQL_USER'], fourth_span[:data][:activerecord][:username]
133
+ end
134
+ end
@@ -0,0 +1,134 @@
1
+ require 'test_helper'
2
+ require 'active_record'
3
+
4
+ class ActiveRecordPgTest < 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
+ # Make one call to warm up the Rails stack and allow it to load
13
+ # relations
14
+ Net::HTTP.get(URI.parse('http://localhost:3205/test/db'))
15
+
16
+ skip unless ::Instana::Test.postgresql?
17
+
18
+ clear_all!
19
+
20
+ Net::HTTP.get(URI.parse('http://localhost:3205/test/db'))
21
+
22
+ traces = Instana.processor.queued_traces
23
+ assert_equal 1, traces.count
24
+ trace = traces.first
25
+
26
+ assert_equal 5, trace.spans.count
27
+ spans = trace.spans.to_a
28
+ first_span = spans[0]
29
+ second_span = spans[2]
30
+ third_span = spans[3]
31
+ fourth_span = spans[4]
32
+
33
+ assert_equal :rack, first_span.name
34
+ assert_equal :activerecord, second_span.name
35
+ assert_equal :activerecord, third_span.name
36
+ assert_equal :activerecord, fourth_span.name
37
+
38
+ assert_equal "INSERT INTO \"blocks\" (\"name\", \"color\", \"created_at\", \"updated_at\") VALUES ($?, $?, $?, $?) RETURNING \"id\"", second_span[:data][:activerecord][:sql]
39
+ assert_equal "SELECT \"blocks\".* FROM \"blocks\" WHERE \"blocks\".\"name\" = $? ORDER BY \"blocks\".\"id\" ASC LIMIT ?", third_span[:data][:activerecord][:sql]
40
+ assert_equal "DELETE FROM \"blocks\" WHERE \"blocks\".\"id\" = $?", fourth_span[:data][:activerecord][:sql]
41
+
42
+ assert_equal "postgresql", second_span[:data][:activerecord][:adapter]
43
+ assert_equal "postgresql", third_span[:data][:activerecord][:adapter]
44
+ assert_equal "postgresql", fourth_span[:data][:activerecord][:adapter]
45
+
46
+ assert_equal ENV['TRAVIS_PSQL_HOST'], second_span[:data][:activerecord][:host]
47
+ assert_equal ENV['TRAVIS_PSQL_HOST'], third_span[:data][:activerecord][:host]
48
+ assert_equal ENV['TRAVIS_PSQL_HOST'], fourth_span[:data][:activerecord][:host]
49
+
50
+ assert_equal "postgres", second_span[:data][:activerecord][:username]
51
+ assert_equal "postgres", third_span[:data][:activerecord][:username]
52
+ assert_equal "postgres", fourth_span[:data][:activerecord][:username]
53
+ end
54
+
55
+ def test_mysql2
56
+ skip unless ::Instana::Test.mysql2?
57
+
58
+ clear_all!
59
+
60
+ Net::HTTP.get(URI.parse('http://localhost:3205/test/db'))
61
+
62
+ traces = Instana.processor.queued_traces
63
+ assert_equal 1, traces.count
64
+ trace = traces.first
65
+
66
+ assert_equal 5, trace.spans.count
67
+ spans = trace.spans.to_a
68
+ first_span = spans[0]
69
+ second_span = spans[2]
70
+ third_span = spans[3]
71
+ fourth_span = spans[4]
72
+
73
+ assert_equal :rack, first_span.name
74
+ assert_equal :activerecord, second_span.name
75
+ assert_equal :activerecord, third_span.name
76
+ assert_equal :activerecord, fourth_span.name
77
+
78
+ assert_equal "INSERT INTO `blocks` (`name`, `color`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?)", second_span[:data][:activerecord][:sql]
79
+ assert_equal "SELECT `blocks`.* FROM `blocks` WHERE `blocks`.`name` = ? ORDER BY `blocks`.`id` ASC LIMIT ?", third_span[:data][:activerecord][:sql]
80
+ assert_equal "DELETE FROM `blocks` WHERE `blocks`.`id` = ?", fourth_span[:data][:activerecord][:sql]
81
+
82
+ assert_equal "mysql2", second_span[:data][:activerecord][:adapter]
83
+ assert_equal "mysql2", third_span[:data][:activerecord][:adapter]
84
+ assert_equal "mysql2", fourth_span[:data][:activerecord][:adapter]
85
+
86
+ assert_equal ENV['TRAVIS_MYSQL_HOST'], second_span[:data][:activerecord][:host]
87
+ assert_equal ENV['TRAVIS_MYSQL_HOST'], third_span[:data][:activerecord][:host]
88
+ assert_equal ENV['TRAVIS_MYSQL_HOST'], fourth_span[:data][:activerecord][:host]
89
+
90
+ assert_equal ENV['TRAVIS_MYSQL_USER'], second_span[:data][:activerecord][:username]
91
+ assert_equal ENV['TRAVIS_MYSQL_USER'], third_span[:data][:activerecord][:username]
92
+ assert_equal ENV['TRAVIS_MYSQL_USER'], fourth_span[:data][:activerecord][:username]
93
+ end
94
+
95
+ def test_mysql
96
+ skip unless ::Instana::Test.mysql?
97
+
98
+ clear_all!
99
+
100
+ Net::HTTP.get(URI.parse('http://localhost:3205/test/db'))
101
+
102
+ traces = Instana.processor.queued_traces
103
+ assert_equal 1, traces.count
104
+ trace = traces.first
105
+
106
+ assert_equal 5, trace.spans.count
107
+ spans = trace.spans.to_a
108
+ first_span = spans[0]
109
+ second_span = spans[2]
110
+ third_span = spans[3]
111
+ fourth_span = spans[4]
112
+
113
+ assert_equal :rack, first_span.name
114
+ assert_equal :activerecord, second_span.name
115
+ assert_equal :activerecord, third_span.name
116
+ assert_equal :activerecord, fourth_span.name
117
+
118
+ assert_equal "INSERT INTO `blocks` (`name`, `color`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?)", second_span[:data][:activerecord][:sql]
119
+ assert_equal "SELECT `blocks`.* FROM `blocks` WHERE `blocks`.`name` = ? ORDER BY `blocks`.`id` ASC LIMIT ?", third_span[:data][:activerecord][:sql]
120
+ assert_equal "DELETE FROM `blocks` WHERE `blocks`.`id` = ?", fourth_span[:data][:activerecord][:sql]
121
+
122
+ assert_equal "mysql", second_span[:data][:activerecord][:adapter]
123
+ assert_equal "mysql", third_span[:data][:activerecord][:adapter]
124
+ assert_equal "mysql", fourth_span[:data][:activerecord][:adapter]
125
+
126
+ assert_equal ENV['TRAVIS_MYSQL_HOST'], second_span[:data][:activerecord][:host]
127
+ assert_equal ENV['TRAVIS_MYSQL_HOST'], third_span[:data][:activerecord][:host]
128
+ assert_equal ENV['TRAVIS_MYSQL_HOST'], fourth_span[:data][:activerecord][:host]
129
+
130
+ assert_equal ENV['TRAVIS_MYSQL_USER'], second_span[:data][:activerecord][:username]
131
+ assert_equal ENV['TRAVIS_MYSQL_USER'], third_span[:data][:activerecord][:username]
132
+ assert_equal ENV['TRAVIS_MYSQL_USER'], fourth_span[:data][:activerecord][:username]
133
+ end
134
+ end
@@ -0,0 +1,90 @@
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.count
20
+ trace = traces.first
21
+
22
+ assert_equal 5, trace.spans.count
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.name
30
+ assert_equal :activerecord, second_span.name
31
+ assert_equal :activerecord, third_span.name
32
+ assert_equal :activerecord, fourth_span.name
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
+ traces = Instana.processor.queued_traces
59
+ assert_equal 1, traces.count
60
+ trace = traces.first
61
+
62
+ assert_equal 5, trace.spans.count
63
+ spans = trace.spans.to_a
64
+ first_span = spans[0]
65
+ second_span = spans[2]
66
+ third_span = spans[3]
67
+ fourth_span = spans[4]
68
+
69
+ assert_equal :rack, first_span.name
70
+ assert_equal :activerecord, second_span.name
71
+ assert_equal :activerecord, third_span.name
72
+ assert_equal :activerecord, fourth_span.name
73
+
74
+ assert_equal "INSERT INTO `blocks` (`name`, `color`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?)", second_span[:data][:activerecord][:sql]
75
+ assert_equal "SELECT `blocks`.* FROM `blocks` WHERE `blocks`.`name` = ? ORDER BY `blocks`.`id` ASC LIMIT ?", third_span[:data][:activerecord][:sql]
76
+ assert_equal "DELETE FROM `blocks` WHERE `blocks`.`id` = ?", fourth_span[:data][:activerecord][:sql]
77
+
78
+ assert_equal "mysql2", second_span[:data][:activerecord][:adapter]
79
+ assert_equal "mysql2", third_span[:data][:activerecord][:adapter]
80
+ assert_equal "mysql2", fourth_span[:data][:activerecord][:adapter]
81
+
82
+ assert_equal ENV['TRAVIS_MYSQL_HOST'], second_span[:data][:activerecord][:host]
83
+ assert_equal ENV['TRAVIS_MYSQL_HOST'], third_span[:data][:activerecord][:host]
84
+ assert_equal ENV['TRAVIS_MYSQL_HOST'], fourth_span[:data][:activerecord][:host]
85
+
86
+ assert_equal ENV['TRAVIS_MYSQL_USER'], second_span[:data][:activerecord][:username]
87
+ assert_equal ENV['TRAVIS_MYSQL_USER'], third_span[:data][:activerecord][:username]
88
+ assert_equal ENV['TRAVIS_MYSQL_USER'], fourth_span[:data][:activerecord][:username]
89
+ end
90
+ 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