instana 1.13.0 → 1.193.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +200 -133
  3. data/.editorconfig +10 -0
  4. data/.gitignore +3 -0
  5. data/.rubocop.yml +5 -1147
  6. data/.rubocop_todo.yml +1140 -0
  7. data/Appraisals +100 -0
  8. data/Gemfile +11 -32
  9. data/Rakefile +16 -39
  10. data/bin/console +5 -4
  11. data/gemfiles/.bundle/config +1 -2
  12. data/gemfiles/cuba_30.gemfile +15 -0
  13. data/gemfiles/dalli_20.gemfile +15 -0
  14. data/gemfiles/excon_02.gemfile +15 -0
  15. data/gemfiles/graphql_10.gemfile +15 -0
  16. data/gemfiles/grpc_10.gemfile +15 -0
  17. data/gemfiles/net_http_01.gemfile +14 -0
  18. data/gemfiles/rack_16.gemfile +15 -0
  19. data/gemfiles/rack_20.gemfile +15 -0
  20. data/gemfiles/rails_42.gemfile +18 -0
  21. data/gemfiles/rails_50.gemfile +18 -0
  22. data/gemfiles/rails_52.gemfile +18 -0
  23. data/gemfiles/rails_60.gemfile +18 -0
  24. data/gemfiles/redis_40.gemfile +15 -0
  25. data/gemfiles/resque_122.gemfile +16 -0
  26. data/gemfiles/resque_20.gemfile +15 -0
  27. data/gemfiles/rest_client_16.gemfile +15 -0
  28. data/gemfiles/rest_client_20.gemfile +15 -0
  29. data/gemfiles/roda_20.gemfile +15 -0
  30. data/gemfiles/roda_30.gemfile +15 -0
  31. data/gemfiles/sidekiq_42.gemfile +15 -0
  32. data/gemfiles/sidekiq_50.gemfile +15 -0
  33. data/gemfiles/sinatra_14.gemfile +15 -0
  34. data/instana.gemspec +1 -7
  35. data/lib/instana/activator.rb +41 -0
  36. data/lib/instana/activators/action_controller_api.rb +18 -0
  37. data/lib/instana/activators/action_controller_base.rb +18 -0
  38. data/lib/instana/activators/action_view.rb +18 -0
  39. data/lib/instana/activators/active_record.rb +18 -0
  40. data/lib/instana/activators/cuba.rb +18 -0
  41. data/lib/instana/activators/dalli.rb +20 -0
  42. data/lib/instana/activators/excon.rb +17 -0
  43. data/lib/instana/activators/graphql.rb +19 -0
  44. data/lib/instana/activators/grpc_client.rb +17 -0
  45. data/lib/instana/activators/grpc_server.rb +17 -0
  46. data/lib/instana/activators/net_http.rb +17 -0
  47. data/lib/instana/activators/rack.rb +13 -0
  48. data/lib/instana/activators/rails.rb +15 -0
  49. data/lib/instana/activators/redis.rb +17 -0
  50. data/lib/instana/activators/resque_client.rb +18 -0
  51. data/lib/instana/activators/resque_worker.rb +30 -0
  52. data/lib/instana/activators/rest_client.rb +17 -0
  53. data/lib/instana/activators/roda.rb +18 -0
  54. data/lib/instana/activators/sidekiq_client.rb +21 -0
  55. data/lib/instana/activators/sidekiq_worker.rb +21 -0
  56. data/lib/instana/activators/sinatra.rb +18 -0
  57. data/lib/instana/config.rb +11 -0
  58. data/lib/instana/frameworks/cuba.rb +6 -13
  59. data/lib/instana/frameworks/rails.rb +20 -33
  60. data/lib/instana/frameworks/roda.rb +7 -13
  61. data/lib/instana/frameworks/sinatra.rb +1 -8
  62. data/lib/instana/instrumentation/action_controller.rb +81 -0
  63. data/lib/instana/instrumentation/action_view.rb +27 -0
  64. data/lib/instana/instrumentation/active_record.rb +47 -0
  65. data/lib/instana/instrumentation/dalli.rb +7 -18
  66. data/lib/instana/instrumentation/excon.rb +51 -57
  67. data/lib/instana/instrumentation/graphql.rb +75 -0
  68. data/lib/instana/instrumentation/grpc.rb +70 -66
  69. data/lib/instana/instrumentation/instrumented_request.rb +69 -0
  70. data/lib/instana/instrumentation/net-http.rb +43 -47
  71. data/lib/instana/instrumentation/rack.rb +14 -53
  72. data/lib/instana/instrumentation/redis.rb +10 -18
  73. data/lib/instana/instrumentation/resque.rb +14 -50
  74. data/lib/instana/instrumentation/rest-client.rb +2 -17
  75. data/lib/instana/instrumentation/sidekiq-client.rb +0 -9
  76. data/lib/instana/instrumentation/sidekiq-worker.rb +0 -9
  77. data/lib/instana/secrets.rb +7 -7
  78. data/lib/instana/setup.rb +3 -1
  79. data/lib/instana/tracer.rb +6 -0
  80. data/lib/instana/tracing/span.rb +14 -10
  81. data/lib/instana/util.rb +15 -69
  82. data/lib/instana/version.rb +1 -1
  83. data/test/activator_test.rb +27 -0
  84. data/test/frameworks/cuba_test.rb +38 -40
  85. data/test/frameworks/roda_test.rb +39 -41
  86. data/test/frameworks/sinatra_test.rb +61 -64
  87. data/test/instrumentation/excon_test.rb +1 -2
  88. data/test/instrumentation/graphql_test.rb +116 -0
  89. data/test/instrumentation/grpc_test.rb +2 -1
  90. data/test/instrumentation/{net-http_test.rb → net_http_test.rb} +1 -0
  91. data/test/instrumentation/rack_instrumented_request_test.rb +84 -0
  92. data/test/{frameworks → instrumentation}/rack_test.rb +32 -20
  93. data/test/{frameworks/rails/actioncontroller_test.rb → instrumentation/rails_action_controller_test.rb} +37 -21
  94. data/test/instrumentation/rails_action_view_test.rb +138 -0
  95. data/test/instrumentation/rails_active_record_test.rb +121 -0
  96. data/test/instrumentation/redis_test.rb +10 -0
  97. data/test/instrumentation/resque_test.rb +3 -11
  98. data/test/instrumentation/{rest-client_test.rb → rest_client_test.rb} +6 -0
  99. data/test/instrumentation/sidekiq-client_test.rb +1 -0
  100. data/test/instrumentation/sidekiq-worker_test.rb +1 -0
  101. data/test/support/apps/active_record/active_record.rb +21 -0
  102. data/test/{servers/grpc_50051.rb → support/apps/grpc/boot.rb} +1 -1
  103. data/test/{apps → support/apps/grpc}/grpc_server.rb +0 -0
  104. data/test/{servers/rackapp_6511.rb → support/apps/http_endpoint/boot.rb} +0 -0
  105. data/test/{servers/rails_3205.rb → support/apps/rails/boot.rb} +8 -14
  106. data/test/{models → support/apps/rails/models}/block.rb +1 -1
  107. data/test/{models → support/apps/rails/models}/block6.rb +0 -0
  108. data/test/support/apps/resque/boot.rb +2 -0
  109. data/test/{jobs → support/apps/resque/jobs}/resque_error_job.rb +0 -0
  110. data/test/{jobs → support/apps/resque/jobs}/resque_fast_job.rb +0 -0
  111. data/test/support/apps/sidekiq/boot.rb +21 -0
  112. data/test/{jobs → support/apps/sidekiq/jobs}/sidekiq_job_1.rb +0 -0
  113. data/test/{jobs → support/apps/sidekiq/jobs}/sidekiq_job_2.rb +0 -0
  114. data/test/{servers → support/apps}/sidekiq/worker.rb +2 -2
  115. data/test/support/helpers.rb +94 -0
  116. data/test/test_helper.rb +24 -144
  117. data/test/tracing/id_management_test.rb +4 -66
  118. metadata +106 -95
  119. data/gemfiles/libraries.gemfile +0 -71
  120. data/gemfiles/rails32.gemfile +0 -51
  121. data/gemfiles/rails42.gemfile +0 -50
  122. data/gemfiles/rails50.gemfile +0 -52
  123. data/gemfiles/rails52.gemfile +0 -52
  124. data/gemfiles/rails60.gemfile +0 -72
  125. data/lib/instana/frameworks/instrumentation/abstract_mysql_adapter.rb +0 -58
  126. data/lib/instana/frameworks/instrumentation/action_controller.rb +0 -194
  127. data/lib/instana/frameworks/instrumentation/action_view.rb +0 -43
  128. data/lib/instana/frameworks/instrumentation/active_record.rb +0 -27
  129. data/lib/instana/frameworks/instrumentation/mysql2_adapter.rb +0 -81
  130. data/lib/instana/frameworks/instrumentation/mysql_adapter.rb +0 -56
  131. data/lib/instana/frameworks/instrumentation/postgresql_adapter.rb +0 -85
  132. data/lib/instana/instrumentation.rb +0 -25
  133. data/lib/instana/test.rb +0 -43
  134. data/test/apps/cuba.rb +0 -19
  135. data/test/apps/roda.rb +0 -13
  136. data/test/apps/sinatra.rb +0 -9
  137. data/test/frameworks/rails/actionview3_test.rb +0 -210
  138. data/test/frameworks/rails/actionview4_test.rb +0 -208
  139. data/test/frameworks/rails/actionview5_test.rb +0 -221
  140. data/test/frameworks/rails/activerecord_test.rb +0 -227
  141. data/test/servers/helpers/sidekiq_worker_initializer.rb +0 -27
@@ -1,208 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ActionViewTest < Minitest::Test
4
- def test_config_defaults
5
- assert ::Instana.config[:action_view].is_a?(Hash)
6
- assert ::Instana.config[:action_view].key?(:enabled)
7
- assert_equal true, ::Instana.config[:action_view][:enabled]
8
- end
9
-
10
- def test_render_view
11
- clear_all!
12
-
13
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_view'))
14
-
15
- spans = Instana.processor.queued_spans
16
- assert_equal 3, spans.length
17
- rack_span = find_first_span_by_name(spans, :rack)
18
- ac_span = find_first_span_by_name(spans, :actioncontroller)
19
- av_span = find_first_span_by_name(spans, :actionview)
20
-
21
- assert_equal :rack, rack_span[:n]
22
- assert_equal :actioncontroller, ac_span[:n]
23
- assert_equal :actionview, av_span[:n]
24
- end
25
-
26
- def test_render_nothing
27
- clear_all!
28
-
29
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_nothing'))
30
-
31
- spans = Instana.processor.queued_spans
32
- assert_equal 3, spans.length
33
- rack_span = find_first_span_by_name(spans, :rack)
34
- ac_span = find_first_span_by_name(spans, :actioncontroller)
35
- av_span = find_first_span_by_name(spans, :actionview)
36
-
37
- assert_equal :rack, rack_span[:n]
38
- assert_equal :actioncontroller, ac_span[:n]
39
- assert_equal "Nothing", av_span[:data][:actionview][:name]
40
- assert_equal :actionview, av_span[:n]
41
- end
42
-
43
- def test_render_file
44
- clear_all!
45
-
46
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_file'))
47
-
48
- spans = Instana.processor.queued_spans
49
- assert_equal 3, spans.length
50
- rack_span = find_first_span_by_name(spans, :rack)
51
- ac_span = find_first_span_by_name(spans, :actioncontroller)
52
- av_span = find_first_span_by_name(spans, :actionview)
53
-
54
- assert_equal :rack, rack_span[:n]
55
- assert_equal :actioncontroller, ac_span[:n]
56
- assert_equal "/etc/issue", av_span[:data][:actionview][:name]
57
- assert_equal :actionview, av_span[:n]
58
- end
59
-
60
- def test_render_json
61
- clear_all!
62
-
63
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_json'))
64
-
65
- spans = Instana.processor.queued_spans
66
- assert_equal 3, spans.length
67
- rack_span = find_first_span_by_name(spans, :rack)
68
- ac_span = find_first_span_by_name(spans, :actioncontroller)
69
- av_span = find_first_span_by_name(spans, :actionview)
70
-
71
- assert_equal :rack, rack_span[:n]
72
- assert_equal :actioncontroller, ac_span[:n]
73
- assert_equal "JSON", av_span[:data][:actionview][:name]
74
- assert_equal :actionview, av_span[:n]
75
- end
76
-
77
- def test_render_xml
78
- clear_all!
79
-
80
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_xml'))
81
-
82
- spans = Instana.processor.queued_spans
83
- assert_equal 3, spans.length
84
- rack_span = find_first_span_by_name(spans, :rack)
85
- ac_span = find_first_span_by_name(spans, :actioncontroller)
86
- av_span = find_first_span_by_name(spans, :actionview)
87
-
88
- assert_equal :rack, rack_span[:n]
89
- assert_equal :actioncontroller, ac_span[:n]
90
- assert_equal "XML", av_span[:data][:actionview][:name]
91
- assert_equal :actionview, av_span[:n]
92
- end
93
-
94
- def test_render_body
95
- clear_all!
96
-
97
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_rawbody'))
98
-
99
- spans = Instana.processor.queued_spans
100
- assert_equal 3, spans.length
101
- rack_span = find_first_span_by_name(spans, :rack)
102
- ac_span = find_first_span_by_name(spans, :actioncontroller)
103
- av_span = find_first_span_by_name(spans, :actionview)
104
-
105
- assert_equal :rack, rack_span[:n]
106
- assert_equal :actioncontroller, ac_span[:n]
107
- assert_equal "Raw", av_span[:data][:actionview][:name]
108
- assert_equal :actionview, av_span[:n]
109
- end
110
-
111
- def test_render_js
112
- clear_all!
113
-
114
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_js'))
115
-
116
- spans = Instana.processor.queued_spans
117
- assert_equal 3, spans.length
118
- rack_span = find_first_span_by_name(spans, :rack)
119
- ac_span = find_first_span_by_name(spans, :actioncontroller)
120
- av_span = find_first_span_by_name(spans, :actionview)
121
-
122
- assert_equal :rack, rack_span[:n]
123
- assert_equal :actioncontroller, ac_span[:n]
124
- assert_equal "Javascript", av_span[:data][:actionview][:name]
125
- assert_equal :actionview, av_span[:n]
126
- end
127
-
128
- def test_render_alternate_layout
129
- clear_all!
130
-
131
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_alternate_layout'))
132
-
133
- spans = Instana.processor.queued_spans
134
- assert_equal 3, spans.length
135
- rack_span = find_first_span_by_name(spans, :rack)
136
- ac_span = find_first_span_by_name(spans, :actioncontroller)
137
- av_span = find_first_span_by_name(spans, :actionview)
138
-
139
- assert_equal :rack, rack_span[:n]
140
- assert_equal :actioncontroller, ac_span[:n]
141
- assert_equal "layouts/mobile", av_span[:data][:actionview][:name]
142
- assert_equal :actionview, av_span[:n]
143
- end
144
-
145
- def test_render_partial
146
- clear_all!
147
-
148
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_partial'))
149
-
150
- spans = Instana.processor.queued_spans
151
- assert_equal 4, spans.length
152
- rack_span = find_first_span_by_name(spans, :rack)
153
- ac_span = find_first_span_by_name(spans, :actioncontroller)
154
- av_span = find_first_span_by_name(spans, :actionview)
155
- render_span = find_first_span_by_name(spans, :render)
156
-
157
- assert_equal :rack, rack_span[:n]
158
- assert_equal :actioncontroller, ac_span[:n]
159
- assert_equal :partial, render_span[:data][:render][:type]
160
- assert_equal 'message', render_span[:data][:render][:name]
161
- end
162
-
163
- def test_render_partial_that_errors
164
- clear_all!
165
-
166
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_partial_that_errors'))
167
-
168
- spans = Instana.processor.queued_spans
169
- assert_equal 4, spans.length
170
- rack_span = find_first_span_by_name(spans, :rack)
171
- ac_span = find_first_span_by_name(spans, :actioncontroller)
172
- av_span = find_first_span_by_name(spans, :actionview)
173
- render_span = find_first_span_by_name(spans, :render)
174
-
175
- assert_equal :rack, rack_span[:n]
176
- assert_equal :actioncontroller, ac_span[:n]
177
- assert_equal :actionview, av_span[:n]
178
- assert_equal :render, render_span[:n]
179
- assert_equal :partial, render_span[:data][:render][:type]
180
- assert_equal 'syntax_error', render_span[:data][:render][:name]
181
- assert render_span[:data][:log].key?(:message)
182
- assert_equal "SyntaxError", render_span[:data][:log][:parameters]
183
- assert render_span[:error]
184
- assert render_span[:stack]
185
- end
186
-
187
- def test_render_collection
188
- clear_all!
189
-
190
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_collection'))
191
-
192
- spans = Instana.processor.queued_spans
193
- assert_equal 5, spans.length
194
- rack_span = find_first_span_by_name(spans, :rack)
195
- ac_span = find_first_span_by_name(spans, :actioncontroller)
196
- av_span = find_first_span_by_name(spans, :actionview)
197
- ar_span = find_first_span_by_name(spans, :activerecord)
198
- render_span = find_first_span_by_name(spans, :render)
199
-
200
- assert_equal :rack, rack_span[:n]
201
- assert_equal :actioncontroller, ac_span[:n]
202
- assert_equal :actionview, av_span[:n]
203
- assert_equal :activerecord, ar_span[:n]
204
- assert_equal :render, render_span[:n]
205
- assert_equal :collection, render_span[:data][:render][:type]
206
- assert_equal 'blocks/block', render_span[:data][:render][:name]
207
- end
208
- end
@@ -1,221 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ActionViewTest < Minitest::Test
4
- def test_config_defaults
5
- assert ::Instana.config[:action_view].is_a?(Hash)
6
- assert ::Instana.config[:action_view].key?(:enabled)
7
- assert_equal true, ::Instana.config[:action_view][:enabled]
8
- end
9
-
10
- def test_render_view
11
- clear_all!
12
-
13
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_view'))
14
-
15
- spans = ::Instana.processor.queued_spans
16
- assert_equal 3, spans.length
17
-
18
- first_span = spans[2]
19
- second_span = spans[1]
20
- third_span = spans[0]
21
-
22
- assert_equal :rack, first_span[:n]
23
- assert_equal :actioncontroller, second_span[:n]
24
- assert_equal :actionview, third_span[:n]
25
- end
26
-
27
- def test_render_nothing
28
- clear_all!
29
-
30
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_nothing'))
31
-
32
- spans = ::Instana.processor.queued_spans
33
- assert_equal 3, spans.length
34
-
35
- first_span = spans[2]
36
- second_span = spans[1]
37
- third_span = spans[0]
38
-
39
- assert_equal :rack, first_span[:n]
40
- assert_equal :actioncontroller, second_span[:n]
41
- assert_equal "Nothing", third_span[:data][:actionview][:name]
42
- assert_equal :actionview, third_span[:n]
43
- end
44
-
45
- def test_render_file
46
- clear_all!
47
-
48
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_file'))
49
-
50
- spans = ::Instana.processor.queued_spans
51
- assert_equal 3, spans.length
52
-
53
- first_span = spans[2]
54
- second_span = spans[1]
55
- third_span = spans[0]
56
-
57
- assert_equal :rack, first_span[:n]
58
- assert_equal :actioncontroller, second_span[:n]
59
- assert_equal "/etc/issue", third_span[:data][:actionview][:name]
60
- assert_equal :actionview, third_span[:n]
61
- end
62
-
63
- def test_render_json
64
- clear_all!
65
-
66
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_json'))
67
-
68
- spans = ::Instana.processor.queued_spans
69
- assert_equal 3, spans.length
70
-
71
- first_span = spans[2]
72
- second_span = spans[1]
73
- third_span = spans[0]
74
-
75
- assert_equal :rack, first_span[:n]
76
- assert_equal :actioncontroller, second_span[:n]
77
- assert_equal "JSON", third_span[:data][:actionview][:name]
78
- assert_equal :actionview, third_span[:n]
79
- end
80
-
81
- def test_render_xml
82
- clear_all!
83
-
84
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_xml'))
85
-
86
- spans = ::Instana.processor.queued_spans
87
- assert_equal 3, spans.length
88
-
89
- first_span = spans[2]
90
- second_span = spans[1]
91
- third_span = spans[0]
92
-
93
- assert_equal :rack, first_span[:n]
94
- assert_equal :actioncontroller, second_span[:n]
95
- assert_equal "XML", third_span[:data][:actionview][:name]
96
- assert_equal :actionview, third_span[:n]
97
- end
98
-
99
- def test_render_body
100
- clear_all!
101
-
102
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_rawbody'))
103
-
104
- spans = ::Instana.processor.queued_spans
105
- assert_equal 3, spans.length
106
-
107
- rack_span = find_first_span_by_name(spans, :rack)
108
- ac_span = find_first_span_by_name(spans, :actioncontroller)
109
- av_span = find_first_span_by_name(spans, :actionview)
110
-
111
- assert_equal :actioncontroller, ac_span[:n]
112
- assert_equal "Raw", av_span[:data][:actionview][:name]
113
- assert_equal :actionview, av_span[:n]
114
- end
115
-
116
- def test_render_js
117
- clear_all!
118
-
119
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_js'))
120
-
121
- spans = ::Instana.processor.queued_spans
122
- assert_equal 3, spans.length
123
-
124
- first_span = spans[2]
125
- second_span = spans[1]
126
- third_span = spans[0]
127
-
128
- assert_equal :rack, first_span[:n]
129
- assert_equal :actioncontroller, second_span[:n]
130
- assert_equal "Javascript", third_span[:data][:actionview][:name]
131
- assert_equal :actionview, third_span[:n]
132
- end
133
-
134
- def test_render_alternate_layout
135
- clear_all!
136
-
137
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_alternate_layout'))
138
-
139
- spans = ::Instana.processor.queued_spans
140
- assert_equal 3, spans.length
141
-
142
- first_span = spans[2]
143
- second_span = spans[1]
144
- third_span = spans[0]
145
-
146
- assert_equal :rack, first_span[:n]
147
- assert_equal :actioncontroller, second_span[:n]
148
- assert_equal "layouts/mobile", third_span[:data][:actionview][:name]
149
- assert_equal :actionview, third_span[:n]
150
- end
151
-
152
- def test_render_partial
153
- clear_all!
154
-
155
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_partial'))
156
-
157
- spans = ::Instana.processor.queued_spans
158
- assert_equal 4, spans.length
159
-
160
- first_span = spans[3]
161
- second_span = spans[2]
162
- third_span = spans[1]
163
- fourth_span = spans[0]
164
-
165
- assert_equal :rack, first_span[:n]
166
- assert_equal :actioncontroller, second_span[:n]
167
- assert_equal :actionview, third_span[:n]
168
- assert_equal :render, fourth_span[:n]
169
- assert_equal :partial, fourth_span[:data][:render][:type]
170
- assert_equal 'message', fourth_span[:data][:render][:name]
171
- end
172
-
173
- def test_render_partial_that_errors
174
- clear_all!
175
-
176
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_partial_that_errors'))
177
-
178
- spans = ::Instana.processor.queued_spans
179
- assert_equal 4, spans.length
180
-
181
- first_span = spans[3]
182
- second_span = spans[2]
183
- third_span = spans[1]
184
- fourth_span = spans[0]
185
-
186
- assert_equal :rack, first_span[:n]
187
- assert_equal :actioncontroller, second_span[:n]
188
- assert_equal :actionview, third_span[:n]
189
- assert_equal :render, fourth_span[:n]
190
- assert_equal :partial, fourth_span[:data][:render][:type]
191
- assert_equal 'syntax_error', fourth_span[:data][:render][:name]
192
- assert fourth_span[:data][:log].key?(:message)
193
- assert(fourth_span[:data][:log][:parameters].include?("SyntaxError"))
194
- assert fourth_span[:error]
195
- assert fourth_span[:stack]
196
- end
197
-
198
- def test_render_collection
199
- clear_all!
200
-
201
- Net::HTTP.get(URI.parse('http://localhost:3205/test/render_collection'))
202
-
203
- spans = ::Instana.processor.queued_spans
204
- assert_equal 5, spans.length
205
-
206
- rack_span = find_first_span_by_name(spans, :rack)
207
- ac_span = find_first_span_by_name(spans, :actioncontroller)
208
- ar_span = find_first_span_by_name(spans, :activerecord)
209
- av_span = find_first_span_by_name(spans, :actionview)
210
- render_span = find_first_span_by_name(spans, :render)
211
-
212
- assert_equal render_span[:p], av_span[:s]
213
- assert_equal av_span[:p], ac_span[:s]
214
- assert_equal ar_span[:p], av_span[:s]
215
- assert_equal ac_span[:p], rack_span[:s]
216
-
217
- assert_equal :render, render_span[:n]
218
- assert_equal :collection, render_span[:data][:render][:type]
219
- assert_equal 'blocks/block', render_span[:data][:render][:name]
220
- end
221
- end
@@ -1,227 +0,0 @@
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
- spans = Instana.processor.queued_spans
19
- assert_equal 6, spans.length
20
- rack_span = find_first_span_by_name(spans, :rack)
21
-
22
- ar_spans = find_spans_by_name(spans, :activerecord)
23
- assert_equal 3, ar_spans.length
24
-
25
- ar_spans.each do |span|
26
- assert_equal "postgresql", span[:data][:activerecord][:adapter]
27
- assert span[:data][:activerecord].key?(:host)
28
- assert span[:data][:activerecord].key?(:username)
29
- end
30
-
31
-
32
- found = false
33
- if ::Rails::VERSION::MAJOR < 4
34
- sql = "INSERT INTO \"blocks\" (\"color\", \"created_at\", \"name\", \"updated_at\") VALUES ($?, $?, $?, $?) RETURNING \"id\""
35
- else
36
- sql = "INSERT INTO \"blocks\" (\"name\", \"color\", \"created_at\", \"updated_at\") VALUES ($?, $?, $?, $?) RETURNING \"id\""
37
- end
38
- ar_spans.each do |span|
39
- if span[:data][:activerecord][:sql] ==
40
- found = true
41
- end
42
- end
43
- assert found
44
-
45
- found = false
46
- if ::Rails::VERSION::MAJOR >= 5
47
- sql = "SELECT \"blocks\".* FROM \"blocks\" WHERE \"blocks\".\"name\" = $? ORDER BY \"blocks\".\"id\" ASC LIMIT $?"
48
- elsif ::Rails::VERSION::MAJOR == 4
49
- sql = "SELECT \"blocks\".* FROM \"blocks\" WHERE \"blocks\".\"name\" = $? ORDER BY \"blocks\".\"id\" ASC LIMIT ?"
50
- else
51
- sql = "SELECT \"blocks\".* FROM \"blocks\" WHERE \"blocks\".\"name\" = ? LIMIT ?"
52
- end
53
- ar_spans.each do |span|
54
- if span[:data][:activerecord][:sql] == sql
55
- found = true
56
- end
57
- end
58
- assert found
59
-
60
- found = false
61
- if ::Rails::VERSION::MAJOR == 3
62
- sql = "DELETE FROM \"blocks\" WHERE \"blocks\".\"id\" = ?"
63
- else
64
- sql = "DELETE FROM \"blocks\" WHERE \"blocks\".\"id\" = $?"
65
- end
66
- ar_spans.each do |span|
67
- if span[:data][:activerecord][:sql] == sql
68
- found = true
69
- end
70
- end
71
- assert found
72
- end
73
-
74
- def test_postgresql_lock_table
75
- skip unless ::Instana::Test.postgresql?
76
-
77
- clear_all!
78
-
79
- Net::HTTP.get(URI.parse('http://localhost:3205/test/db_lock_table'))
80
-
81
- spans = Instana.processor.queued_spans
82
- assert_equal 5, spans.length
83
-
84
- rack_span = find_first_span_by_name(spans, :rack)
85
- ac_span = find_first_span_by_name(spans, :actioncontroller)
86
- av_span = find_first_span_by_name(spans, :actionview)
87
-
88
- ar_spans = find_spans_by_name(spans, :activerecord)
89
- assert_equal 2, ar_spans.length
90
-
91
- ar_spans.each do |ar_span|
92
- assert_equal "postgresql", ar_span[:data][:activerecord][:adapter]
93
- assert_equal "postgres", ar_span[:data][:activerecord][:username]
94
- end
95
-
96
- found = false
97
- ar_spans.each do |span|
98
- if span[:data][:activerecord][:sql] == "LOCK blocks IN ACCESS EXCLUSIVE MODE"
99
- found = true
100
- end
101
- end
102
- assert found
103
-
104
- found = false
105
- ar_spans.each do |span|
106
- if span[:data][:activerecord][:sql] == "SELECT ?"
107
- found = true
108
- end
109
- end
110
- assert found
111
- end
112
-
113
- def test_postgresql_raw_execute
114
- skip unless ::Instana::Test.postgresql?
115
-
116
- clear_all!
117
-
118
- Net::HTTP.get(URI.parse('http://localhost:3205/test/db_raw_execute'))
119
-
120
- spans = Instana.processor.queued_spans
121
-
122
- assert_equal 4, spans.length
123
- rack_span = find_first_span_by_name(spans, :rack)
124
- ac_span = find_first_span_by_name(spans, :actioncontroller)
125
- av_span = find_first_span_by_name(spans, :actionview)
126
- ar_span = find_first_span_by_name(spans, :activerecord)
127
-
128
- assert_equal "SELECT ?", ar_span[:data][:activerecord][:sql]
129
- assert_equal "postgresql", ar_span[:data][:activerecord][:adapter]
130
- assert_equal "postgres", ar_span[:data][:activerecord][:username]
131
- end
132
-
133
- def test_postgresql_raw_execute_error
134
- skip unless ::Instana::Test.postgresql?
135
-
136
- clear_all!
137
-
138
- Net::HTTP.get(URI.parse('http://localhost:3205/test/db_raw_execute_error'))
139
-
140
- spans = Instana.processor.queued_spans
141
-
142
- assert_equal 3, spans.length
143
- rack_span = find_first_span_by_name(spans, :rack)
144
- ac_span = find_first_span_by_name(spans, :actioncontroller)
145
- ar_span = find_first_span_by_name(spans, :activerecord)
146
-
147
- assert ar_span.key?(:stack)
148
- assert ar_span[:data][:activerecord].key?(:error)
149
- assert ar_span[:data][:activerecord][:error].include?("syntax error")
150
- assert_equal "This is not real SQL but an intended error", ar_span[:data][:activerecord][:sql]
151
- assert_equal "postgresql", ar_span[:data][:activerecord][:adapter]
152
- assert_equal "postgres", ar_span[:data][:activerecord][:username]
153
- end
154
-
155
- def test_mysql2
156
- skip unless ::Instana::Test.mysql2?
157
-
158
- clear_all!
159
-
160
- Net::HTTP.get(URI.parse('http://localhost:3205/test/db'))
161
-
162
- spans = Instana.processor.queued_spans
163
- assert_equal 6, spans.length
164
- rack_span = find_first_span_by_name(spans, :rack)
165
-
166
- ar_spans = find_spans_by_name(spans, :activerecord)
167
- assert_equal 3, ar_spans.length
168
-
169
- ar_spans.each do |span|
170
- assert_equal "mysql2", span[:data][:activerecord][:adapter]
171
- assert span[:data][:activerecord].key?(:host)
172
- assert span[:data][:activerecord].key?(:username)
173
- end
174
-
175
- queries = [
176
- "INSERT INTO `blocks` (`name`, `color`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?)",
177
- "SELECT `blocks`.* FROM `blocks` WHERE `blocks`.`name` = ? ORDER BY `blocks`.`id` ASC LIMIT ?",
178
- "DELETE FROM `blocks` WHERE `blocks`.`id` = ?"
179
- ]
180
-
181
- queries.each do |sql|
182
- found = false
183
- ar_spans.each do |span|
184
- if span[:data][:activerecord][:sql] = sql
185
- found = true
186
- end
187
- end
188
- assert found
189
- end
190
- end
191
-
192
- def test_mysql
193
- skip unless ::Instana::Test.mysql?
194
-
195
- clear_all!
196
-
197
- Net::HTTP.get(URI.parse('http://localhost:3205/test/db'))
198
-
199
- spans = Instana.processor.queued_spans
200
- assert_equal 6, spans.length
201
- first_span = spans[0]
202
- second_span = spans[2]
203
- third_span = spans[3]
204
- fourth_span = spans[4]
205
-
206
- assert_equal :rack, first_span[:n]
207
- assert_equal :activerecord, second_span[:n]
208
- assert_equal :activerecord, third_span[:n]
209
- assert_equal :activerecord, fourth_span[:n]
210
-
211
- assert_equal "INSERT INTO `blocks` (`name`, `color`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?)", second_span[:data][:activerecord][:sql]
212
- assert_equal "SELECT `blocks`.* FROM `blocks` WHERE `blocks`.`name` = ? ORDER BY `blocks`.`id` ASC LIMIT ?", third_span[:data][:activerecord][:sql]
213
- assert_equal "DELETE FROM `blocks` WHERE `blocks`.`id` = ?", fourth_span[:data][:activerecord][:sql]
214
-
215
- assert_equal "mysql", second_span[:data][:activerecord][:adapter]
216
- assert_equal "mysql", third_span[:data][:activerecord][:adapter]
217
- assert_equal "mysql", fourth_span[:data][:activerecord][:adapter]
218
-
219
- assert_equal ENV['TRAVIS_MYSQL_HOST'], second_span[:data][:activerecord][:host]
220
- assert_equal ENV['TRAVIS_MYSQL_HOST'], third_span[:data][:activerecord][:host]
221
- assert_equal ENV['TRAVIS_MYSQL_HOST'], fourth_span[:data][:activerecord][:host]
222
-
223
- assert_equal ENV['TRAVIS_MYSQL_USER'], second_span[:data][:activerecord][:username]
224
- assert_equal ENV['TRAVIS_MYSQL_USER'], third_span[:data][:activerecord][:username]
225
- assert_equal ENV['TRAVIS_MYSQL_USER'], fourth_span[:data][:activerecord][:username]
226
- end
227
- end