appsignal 4.0.6-java → 4.0.7-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.
Files changed (201) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/Rakefile +9 -9
  4. data/appsignal.gemspec +22 -1
  5. data/ext/agent.rb +27 -27
  6. data/lib/appsignal/check_in.rb +1 -1
  7. data/lib/appsignal/config.rb +1 -3
  8. data/lib/appsignal/integrations/resque.rb +1 -6
  9. data/lib/appsignal/utils/hash_sanitizer.rb +4 -0
  10. data/lib/appsignal/version.rb +1 -1
  11. metadata +2 -192
  12. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -31
  13. data/.github/ISSUE_TEMPLATE/chore.md +0 -14
  14. data/.github/workflows/ci.yml +0 -3285
  15. data/.github/workflows/create_release_from_tag.yml +0 -62
  16. data/.gitignore +0 -35
  17. data/.gitmodules +0 -3
  18. data/.rspec +0 -4
  19. data/.yardopts +0 -8
  20. data/benchmark.rake +0 -139
  21. data/gemfiles/capistrano2.gemfile +0 -6
  22. data/gemfiles/capistrano3.gemfile +0 -7
  23. data/gemfiles/dry-monitor.gemfile +0 -5
  24. data/gemfiles/grape.gemfile +0 -5
  25. data/gemfiles/hanami-2.0.gemfile +0 -7
  26. data/gemfiles/hanami-2.1.gemfile +0 -7
  27. data/gemfiles/http5.gemfile +0 -5
  28. data/gemfiles/no_dependencies.gemfile +0 -10
  29. data/gemfiles/padrino.gemfile +0 -7
  30. data/gemfiles/psych-3.gemfile +0 -5
  31. data/gemfiles/psych-4.gemfile +0 -5
  32. data/gemfiles/que-1.gemfile +0 -5
  33. data/gemfiles/que-2.gemfile +0 -5
  34. data/gemfiles/rails-6.0.gemfile +0 -10
  35. data/gemfiles/rails-6.1.gemfile +0 -11
  36. data/gemfiles/rails-7.0.gemfile +0 -11
  37. data/gemfiles/rails-7.1.gemfile +0 -11
  38. data/gemfiles/rails-7.2.gemfile +0 -11
  39. data/gemfiles/redis-4.gemfile +0 -5
  40. data/gemfiles/redis-5.gemfile +0 -6
  41. data/gemfiles/resque-2.gemfile +0 -6
  42. data/gemfiles/sequel.gemfile +0 -10
  43. data/gemfiles/sinatra.gemfile +0 -5
  44. data/gemfiles/webmachine1.gemfile +0 -7
  45. data/gemfiles/webmachine2.gemfile +0 -6
  46. data/mono.yml +0 -16
  47. data/spec/.rubocop.yml +0 -7
  48. data/spec/lib/appsignal/auth_check_spec.rb +0 -84
  49. data/spec/lib/appsignal/capistrano2_spec.rb +0 -227
  50. data/spec/lib/appsignal/capistrano3_spec.rb +0 -284
  51. data/spec/lib/appsignal/check_in/cron_spec.rb +0 -210
  52. data/spec/lib/appsignal/check_in/scheduler_spec.rb +0 -557
  53. data/spec/lib/appsignal/cli/demo_spec.rb +0 -46
  54. data/spec/lib/appsignal/cli/diagnose/paths_spec.rb +0 -16
  55. data/spec/lib/appsignal/cli/diagnose/utils_spec.rb +0 -86
  56. data/spec/lib/appsignal/cli/diagnose_spec.rb +0 -1553
  57. data/spec/lib/appsignal/cli/helpers_spec.rb +0 -179
  58. data/spec/lib/appsignal/cli/install_spec.rb +0 -848
  59. data/spec/lib/appsignal/cli_spec.rb +0 -56
  60. data/spec/lib/appsignal/config_spec.rb +0 -1380
  61. data/spec/lib/appsignal/demo_spec.rb +0 -83
  62. data/spec/lib/appsignal/environment_spec.rb +0 -190
  63. data/spec/lib/appsignal/event_formatter/action_view/render_formatter_spec.rb +0 -60
  64. data/spec/lib/appsignal/event_formatter/active_record/instantiation_formatter_spec.rb +0 -21
  65. data/spec/lib/appsignal/event_formatter/active_record/sql_formatter_spec.rb +0 -21
  66. data/spec/lib/appsignal/event_formatter/elastic_search/search_formatter_spec.rb +0 -52
  67. data/spec/lib/appsignal/event_formatter/faraday/request_formatter_spec.rb +0 -21
  68. data/spec/lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter_spec.rb +0 -84
  69. data/spec/lib/appsignal/event_formatter/rom/sql_formatter_spec.rb +0 -22
  70. data/spec/lib/appsignal/event_formatter/sequel/sql_formatter_spec.rb +0 -30
  71. data/spec/lib/appsignal/event_formatter/view_component/render_formatter_spec.rb +0 -41
  72. data/spec/lib/appsignal/event_formatter_spec.rb +0 -193
  73. data/spec/lib/appsignal/extension/jruby_spec.rb +0 -46
  74. data/spec/lib/appsignal/extension_install_failure_spec.rb +0 -20
  75. data/spec/lib/appsignal/extension_spec.rb +0 -178
  76. data/spec/lib/appsignal/garbage_collection_spec.rb +0 -98
  77. data/spec/lib/appsignal/hooks/action_cable_spec.rb +0 -345
  78. data/spec/lib/appsignal/hooks/action_mailer_spec.rb +0 -55
  79. data/spec/lib/appsignal/hooks/active_support_notifications/finish_with_state_shared_examples.rb +0 -23
  80. data/spec/lib/appsignal/hooks/active_support_notifications/instrument_shared_examples.rb +0 -99
  81. data/spec/lib/appsignal/hooks/active_support_notifications/start_finish_shared_examples.rb +0 -47
  82. data/spec/lib/appsignal/hooks/active_support_notifications_spec.rb +0 -47
  83. data/spec/lib/appsignal/hooks/activejob_spec.rb +0 -650
  84. data/spec/lib/appsignal/hooks/at_exit_spec.rb +0 -105
  85. data/spec/lib/appsignal/hooks/celluloid_spec.rb +0 -40
  86. data/spec/lib/appsignal/hooks/data_mapper_spec.rb +0 -40
  87. data/spec/lib/appsignal/hooks/delayed_job_spec.rb +0 -38
  88. data/spec/lib/appsignal/hooks/dry_monitor_spec.rb +0 -83
  89. data/spec/lib/appsignal/hooks/excon_spec.rb +0 -67
  90. data/spec/lib/appsignal/hooks/gvl_spec.rb +0 -145
  91. data/spec/lib/appsignal/hooks/http_spec.rb +0 -37
  92. data/spec/lib/appsignal/hooks/mongo_ruby_driver_spec.rb +0 -46
  93. data/spec/lib/appsignal/hooks/mri_spec.rb +0 -23
  94. data/spec/lib/appsignal/hooks/net_http_spec.rb +0 -18
  95. data/spec/lib/appsignal/hooks/passenger_spec.rb +0 -30
  96. data/spec/lib/appsignal/hooks/puma_spec.rb +0 -80
  97. data/spec/lib/appsignal/hooks/que_spec.rb +0 -19
  98. data/spec/lib/appsignal/hooks/rake_spec.rb +0 -144
  99. data/spec/lib/appsignal/hooks/redis_client_spec.rb +0 -218
  100. data/spec/lib/appsignal/hooks/redis_spec.rb +0 -124
  101. data/spec/lib/appsignal/hooks/resque_spec.rb +0 -27
  102. data/spec/lib/appsignal/hooks/sequel_spec.rb +0 -44
  103. data/spec/lib/appsignal/hooks/shoryuken_spec.rb +0 -29
  104. data/spec/lib/appsignal/hooks/sidekiq_spec.rb +0 -115
  105. data/spec/lib/appsignal/hooks/unicorn_spec.rb +0 -63
  106. data/spec/lib/appsignal/hooks/webmachine_spec.rb +0 -24
  107. data/spec/lib/appsignal/hooks_spec.rb +0 -124
  108. data/spec/lib/appsignal/integrations/data_mapper_spec.rb +0 -74
  109. data/spec/lib/appsignal/integrations/delayed_job_plugin_spec.rb +0 -454
  110. data/spec/lib/appsignal/integrations/http_spec.rb +0 -111
  111. data/spec/lib/appsignal/integrations/mongo_ruby_driver_spec.rb +0 -154
  112. data/spec/lib/appsignal/integrations/net_http_spec.rb +0 -33
  113. data/spec/lib/appsignal/integrations/object_spec.rb +0 -347
  114. data/spec/lib/appsignal/integrations/puma_spec.rb +0 -150
  115. data/spec/lib/appsignal/integrations/que_spec.rb +0 -187
  116. data/spec/lib/appsignal/integrations/railtie_spec.rb +0 -457
  117. data/spec/lib/appsignal/integrations/resque_spec.rb +0 -155
  118. data/spec/lib/appsignal/integrations/shoryuken_spec.rb +0 -165
  119. data/spec/lib/appsignal/integrations/sidekiq_spec.rb +0 -640
  120. data/spec/lib/appsignal/integrations/webmachine_spec.rb +0 -136
  121. data/spec/lib/appsignal/loaders/grape_spec.rb +0 -12
  122. data/spec/lib/appsignal/loaders/hanami_spec.rb +0 -92
  123. data/spec/lib/appsignal/loaders/padrino_spec.rb +0 -273
  124. data/spec/lib/appsignal/loaders/sinatra_spec.rb +0 -44
  125. data/spec/lib/appsignal/loaders_spec.rb +0 -144
  126. data/spec/lib/appsignal/logger_spec.rb +0 -205
  127. data/spec/lib/appsignal/marker_spec.rb +0 -51
  128. data/spec/lib/appsignal/probes/gvl_spec.rb +0 -164
  129. data/spec/lib/appsignal/probes/mri_spec.rb +0 -162
  130. data/spec/lib/appsignal/probes/sidekiq_spec.rb +0 -333
  131. data/spec/lib/appsignal/probes_spec.rb +0 -414
  132. data/spec/lib/appsignal/rack/abstract_middleware_spec.rb +0 -370
  133. data/spec/lib/appsignal/rack/body_wrapper_spec.rb +0 -319
  134. data/spec/lib/appsignal/rack/event_handler_spec.rb +0 -441
  135. data/spec/lib/appsignal/rack/grape_middleware_spec.rb +0 -201
  136. data/spec/lib/appsignal/rack/hanami_middleware_spec.rb +0 -36
  137. data/spec/lib/appsignal/rack/instrumentation_middleware_spec.rb +0 -38
  138. data/spec/lib/appsignal/rack/rails_instrumentation_spec.rb +0 -126
  139. data/spec/lib/appsignal/rack/sinatra_instrumentation_spec.rb +0 -217
  140. data/spec/lib/appsignal/rack_spec.rb +0 -243
  141. data/spec/lib/appsignal/sample_data_spec.rb +0 -238
  142. data/spec/lib/appsignal/span_spec.rb +0 -141
  143. data/spec/lib/appsignal/system_spec.rb +0 -126
  144. data/spec/lib/appsignal/transaction_spec.rb +0 -2115
  145. data/spec/lib/appsignal/transmitter_spec.rb +0 -198
  146. data/spec/lib/appsignal/utils/data_spec.rb +0 -166
  147. data/spec/lib/appsignal/utils/hash_sanitizer_spec.rb +0 -182
  148. data/spec/lib/appsignal/utils/integration_logger_spec.rb +0 -21
  149. data/spec/lib/appsignal/utils/integration_memory_logger_spec.rb +0 -153
  150. data/spec/lib/appsignal/utils/json_spec.rb +0 -44
  151. data/spec/lib/appsignal/utils/query_params_sanitizer_spec.rb +0 -192
  152. data/spec/lib/appsignal_spec.rb +0 -1919
  153. data/spec/lib/puma/appsignal_spec.rb +0 -334
  154. data/spec/spec_helper.rb +0 -179
  155. data/spec/support/fixtures/generated_config.yml +0 -24
  156. data/spec/support/fixtures/projects/broken/config/appsignal.yml +0 -1
  157. data/spec/support/fixtures/projects/valid/config/appsignal.yml +0 -57
  158. data/spec/support/fixtures/projects/valid/log/.gitkeep +0 -0
  159. data/spec/support/fixtures/projects/valid_with_rails_app/config/application.rb +0 -16
  160. data/spec/support/fixtures/projects/valid_with_rails_app/config/appsignal.yml +0 -56
  161. data/spec/support/fixtures/projects/valid_with_rails_app/config/environment.rb +0 -10
  162. data/spec/support/fixtures/projects/valid_with_rails_app/log/.gitkeep +0 -0
  163. data/spec/support/fixtures/uploaded_file.txt +0 -0
  164. data/spec/support/hanami/hanami_app.rb +0 -29
  165. data/spec/support/helpers/action_mailer_helpers.rb +0 -25
  166. data/spec/support/helpers/activejob_helpers.rb +0 -27
  167. data/spec/support/helpers/api_request_helper.rb +0 -60
  168. data/spec/support/helpers/cli_helpers.rb +0 -40
  169. data/spec/support/helpers/config_helpers.rb +0 -66
  170. data/spec/support/helpers/dependency_helper.rb +0 -155
  171. data/spec/support/helpers/directory_helper.rb +0 -27
  172. data/spec/support/helpers/env_helpers.rb +0 -41
  173. data/spec/support/helpers/environment_metdata_helper.rb +0 -16
  174. data/spec/support/helpers/example_exception.rb +0 -13
  175. data/spec/support/helpers/example_standard_error.rb +0 -13
  176. data/spec/support/helpers/loader_helper.rb +0 -21
  177. data/spec/support/helpers/log_helpers.rb +0 -36
  178. data/spec/support/helpers/rails_helper.rb +0 -28
  179. data/spec/support/helpers/std_streams_helper.rb +0 -94
  180. data/spec/support/helpers/system_helpers.rb +0 -8
  181. data/spec/support/helpers/take_at_most_helper.rb +0 -21
  182. data/spec/support/helpers/time_helpers.rb +0 -11
  183. data/spec/support/helpers/transaction_helpers.rb +0 -122
  184. data/spec/support/helpers/wait_for_helper.rb +0 -39
  185. data/spec/support/matchers/contains_log.rb +0 -26
  186. data/spec/support/matchers/have_colorized_text.rb +0 -28
  187. data/spec/support/matchers/transaction.rb +0 -200
  188. data/spec/support/mocks/appsignal_mock.rb +0 -18
  189. data/spec/support/mocks/dummy_app.rb +0 -20
  190. data/spec/support/mocks/fake_gc_profiler.rb +0 -19
  191. data/spec/support/mocks/fake_gvl_tools.rb +0 -28
  192. data/spec/support/mocks/hash_like.rb +0 -10
  193. data/spec/support/mocks/mock_probe.rb +0 -13
  194. data/spec/support/mocks/puma_mock.rb +0 -43
  195. data/spec/support/shared_examples/instrument.rb +0 -48
  196. data/spec/support/stubs/appsignal/loaders/loader_stub.rb +0 -7
  197. data/spec/support/stubs/delayed_job.rb +0 -0
  198. data/spec/support/stubs/sidekiq/api.rb +0 -4
  199. data/spec/support/testing.rb +0 -203
  200. data/support/bundler_wrapper +0 -12
  201. data/support/install_deps +0 -33
@@ -1,238 +0,0 @@
1
- describe Appsignal::SampleData do
2
- let(:data) { described_class.new(:data_key) }
3
-
4
- describe "#add" do
5
- it "sets the given value" do
6
- logs =
7
- capture_logs do
8
- data.add(:key1 => "value 1")
9
- end
10
-
11
- expect(data.value).to eq(:key1 => "value 1")
12
-
13
- expect(logs).to_not contains_log(
14
- :error,
15
- "Sample data 'data_key': Unsupported data type 'NilClass' received: nil"
16
- )
17
- end
18
-
19
- it "adds the given value with the block being leading" do
20
- data.add(:key1 => "value 1") { { :key2 => "value 2" } }
21
-
22
- expect(data.value).to eq(:key2 => "value 2")
23
- end
24
-
25
- it "doesn't add nil to the data" do
26
- logs =
27
- capture_logs do
28
- data.add([1])
29
- data.add(nil)
30
- data.add { nil }
31
- data.add([2, 3])
32
- end
33
-
34
- expect(data.value).to eq([1, 2, 3])
35
- expect(logs).to contains_log(
36
- :error,
37
- "Sample data 'data_key': Unsupported data type 'NilClass' received: nil"
38
- )
39
- expect(logs).to_not contains_log(:warn, "The sample data 'data_key' changed type")
40
- end
41
-
42
- it "merges multiple values" do
43
- data.add(:key1 => "value 1")
44
- data.add(:key2 => "value 2")
45
-
46
- expect(data.value).to eq(:key1 => "value 1", :key2 => "value 2")
47
- end
48
-
49
- it "merges only root level Hash keys" do
50
- data.add(:key => { :abc => "value" })
51
- data.add(:key => { :def => "value" })
52
-
53
- expect(data.value).to eq(:key => { :def => "value" })
54
- end
55
-
56
- it "merges values from arguments and blocks" do
57
- data.add(:key1 => "value 1")
58
- data.add { { :key2 => "value 2" } }
59
- data.add(:key3 => "value 3")
60
-
61
- expect(data.value).to eq(:key1 => "value 1", :key2 => "value 2", :key3 => "value 3")
62
- end
63
-
64
- it "merges array values" do
65
- data.add([:first_arg])
66
- data.add { [:from_block] }
67
- data.add([:second_arg])
68
-
69
- expect(data.value).to eq([:first_arg, :from_block, :second_arg])
70
- end
71
-
72
- it "overwrites the value if the new value is of a different type" do
73
- data.add(:key1 => "value 1")
74
- expect(data.value).to eq(:key1 => "value 1")
75
-
76
- data.add(["abc"])
77
- expect(data.value).to eq(["abc"])
78
-
79
- logs = capture_logs { data.value }
80
- expect(logs).to contains_log(
81
- :warn,
82
- "The sample data 'data_key' changed type from 'Hash' to 'Array'."
83
- )
84
- end
85
-
86
- it "ignores invalid values" do
87
- logs = capture_logs { data.add("string") }
88
- expect(data.value).to be_nil
89
- expect(logs).to contains_log(
90
- :error,
91
- "Sample data 'data_key': Unsupported data type 'String' received: \"string\""
92
- )
93
-
94
- set = Set.new
95
- set.add("abc")
96
- logs = capture_logs { data.add(set) }
97
- expect(data.value).to be_nil
98
- expect(logs).to contains_log(
99
- :error,
100
- "Sample data 'data_key': Unsupported data type 'Set' received: #<Set: {\"abc\"}>"
101
- )
102
-
103
- instance = Class.new
104
- logs = capture_logs { data.add(instance) }
105
- expect(data.value).to be_nil
106
- expect(logs).to contains_log(
107
- :error,
108
- "Sample data 'data_key': Unsupported data type 'Class' received: #<Class:"
109
- )
110
- end
111
-
112
- context "with a type specified" do
113
- it "only accepts values of Hash type" do
114
- data = described_class.new(:data_key, Hash)
115
-
116
- data.add(:key1 => "value 1")
117
- data.add(["abc"])
118
- data.add { { :key2 => "value 2" } }
119
- data.add { ["def"] }
120
- data.add(:key3 => "value 3")
121
-
122
- expect(data.value).to eq(:key1 => "value 1", :key2 => "value 2", :key3 => "value 3")
123
- end
124
-
125
- it "only accepts values of Array type" do
126
- data = described_class.new(:data_key, Array)
127
-
128
- data.add(:key1 => "value 1")
129
- data.add(["abc"])
130
- data.add { { :key2 => "value 2" } }
131
- data.add { ["def"] }
132
- data.add(:key3 => "value 3")
133
-
134
- expect(data.value).to eq(["abc", "def"])
135
- end
136
- end
137
- end
138
-
139
- describe "#value" do
140
- it "caches the block value after calling it once" do
141
- Appsignal::Testing.store[:block_call] = 0
142
- data.add do
143
- Appsignal::Testing.store[:block_call] += 1
144
- { :key => "value" }
145
- end
146
-
147
- expect(data.value).to eq(:key => "value")
148
- data.value
149
-
150
- expect(Appsignal::Testing.store[:block_call]).to eq(1)
151
- end
152
- end
153
-
154
- describe "#value?" do
155
- it "returns true when value is set" do
156
- data.add(["abc"])
157
- expect(data.value?).to be_truthy
158
- end
159
-
160
- it "returns true when value is set with a block" do
161
- data.add { ["abc"] }
162
- expect(data.value?).to be_truthy
163
- end
164
-
165
- it "returns false when the value is not set" do
166
- expect(data.value?).to be_falsey
167
- end
168
- end
169
-
170
- describe "#set_empty_value!" do
171
- it "clears the set values" do
172
- data.add(["abc"])
173
- data.add(["def"])
174
- data.set_empty_value!
175
-
176
- expect(data.value).to be_nil
177
- end
178
-
179
- it "allows values to be added afterwards" do
180
- data.add(["abc"])
181
- data.set_empty_value!
182
-
183
- expect(data.value).to be_nil
184
-
185
- data.add(["def"])
186
- expect(data.value).to eq(["def"])
187
- end
188
- end
189
-
190
- describe "#cleared?" do
191
- it "returns false if not cleared" do
192
- expect(data.empty?).to be(false)
193
- end
194
-
195
- it "returns true if cleared" do
196
- data.set_empty_value!
197
-
198
- expect(data.empty?).to be(true)
199
- end
200
-
201
- it "returns false if cleared and then new values were added" do
202
- data.set_empty_value!
203
- data.add(["abc"])
204
-
205
- expect(data.empty?).to be(false)
206
- end
207
- end
208
-
209
- describe "#duplicate" do
210
- it "duplicates the internal Hash state without modifying the original" do
211
- data = described_class.new(:my_key, Hash)
212
- data.add(:abc => :value)
213
-
214
- duplicate = data.dup
215
- duplicate.add(:def => :value)
216
-
217
- expect(data.value).to eq(:abc => :value)
218
- expect(duplicate.value).to eq(:abc => :value, :def => :value)
219
-
220
- expect(duplicate.instance_variable_get(:@key)).to eq(:my_key)
221
- expect(duplicate.instance_variable_get(:@accepted_type)).to eq(Hash)
222
- end
223
-
224
- it "duplicates the internal Array state without modifying the original" do
225
- data = described_class.new(:my_key, Array)
226
- data.add([:abc])
227
-
228
- duplicate = data.dup
229
- duplicate.add([:def])
230
-
231
- expect(data.value).to eq([:abc])
232
- expect(duplicate.value).to eq([:abc, :def])
233
-
234
- expect(duplicate.instance_variable_get(:@key)).to eq(:my_key)
235
- expect(duplicate.instance_variable_get(:@accepted_type)).to eq(Array)
236
- end
237
- end
238
- end
@@ -1,141 +0,0 @@
1
- require "appsignal/span"
2
-
3
- describe Appsignal::Span do
4
- before { start_agent }
5
-
6
- let(:namespace) { "web" }
7
- let(:root) { Appsignal::Span.new(namespace) }
8
-
9
- describe "creating a span" do
10
- it "creates an empty span" do
11
- expect(root.to_h["namespace"]).to eq "web"
12
- expect(root.to_h["trace_id"].length).to eq 16
13
- expect(root.to_h["span_id"].length).to eq 8
14
- expect(root.to_h["parent_span_id"]).to be_empty
15
- expect(root.to_h["name"]).to be_empty
16
- expect(root.to_h["start_time_seconds"]).to be > 1_600_000_000
17
- expect(root.to_h["start_time_nanoseconds"]).to be_kind_of(Numeric)
18
- expect(root.to_h["closed"]).to be false
19
- end
20
- end
21
-
22
- describe "#child" do
23
- let(:child) { root.child }
24
-
25
- it "creates a child span" do
26
- expect(child.to_h["namespace"]).to be_empty
27
- expect(child.to_h["trace_id"].length).to eq 16
28
- expect(child.to_h["span_id"].length).to eq 8
29
- expect(child.to_h["parent_span_id"]).to eq root.to_h["span_id"]
30
- expect(child.to_h["name"]).to be_empty
31
- expect(root.to_h["start_time_seconds"]).to be > 1_600_000_000
32
- expect(root.to_h["start_time_nanoseconds"]).to be_kind_of(Numeric)
33
- expect(child.to_h["closed"]).to be false
34
- end
35
- end
36
-
37
- describe "#add_error" do
38
- it "adds an error" do
39
- begin
40
- raise "Error"
41
- rescue => error
42
- root.add_error(error)
43
- end
44
-
45
- error = root.to_h["error"]
46
- expect(error["name"]).to eq "RuntimeError"
47
- expect(error["message"]).to eq "Error"
48
- expect(error["backtrace_json"]).not_to be_empty
49
- end
50
- end
51
-
52
- describe "set_sample_data" do
53
- it "sets sample data" do
54
- root.set_sample_data(:params, "key" => "value")
55
-
56
- sample_data = root.to_h["sample_data"]
57
- expect(sample_data["params"]).to eq "{\"key\":\"value\"}"
58
- end
59
- end
60
-
61
- describe "#name=" do
62
- it "sets the name" do
63
- root.name = "Span name"
64
-
65
- expect(root.to_h["name"]).to eq "Span name"
66
- end
67
- end
68
-
69
- describe "#[]=" do
70
- let(:attributes) { root.to_h["attributes"] }
71
-
72
- it "sets a string attribute" do
73
- root["string"] = "attribute"
74
-
75
- expect(attributes["string"]).to eq "attribute"
76
- end
77
-
78
- it "sets an integer attribute" do
79
- root["integer"] = 1001
80
-
81
- expect(attributes["integer"]).to eq 1001
82
- end
83
-
84
- it "sets a bigint attribute" do
85
- root["bigint"] = 1 << 64
86
-
87
- expect(attributes["bigint"]).to eq "bigint:#{1 << 64}"
88
- end
89
-
90
- it "sets a boolean attribute" do
91
- root["true"] = true
92
- root["false"] = false
93
-
94
- expect(attributes["true"]).to eq true
95
- expect(attributes["false"]).to eq false
96
- end
97
-
98
- it "sets a float attribute" do
99
- root["float"] = 10.01
100
-
101
- expect(attributes["float"]).to eq 10.01
102
- end
103
-
104
- it "raises an error for other types" do
105
- expect do
106
- root["something"] = Object.new
107
- end.to raise_error TypeError
108
- end
109
- end
110
-
111
- describe "#instrument" do
112
- it "closes the span after yielding" do
113
- root.instrument do
114
- # Nothing happening
115
- end
116
- expect(root.closed?).to eq true
117
- end
118
-
119
- context "with an error raised in the passed block" do
120
- it "closes the span after yielding" do
121
- expect do
122
- root.instrument do
123
- raise ExampleException, "foo"
124
- end
125
- end.to raise_error(ExampleException, "foo")
126
- expect(root.closed?).to eq true
127
- end
128
- end
129
- end
130
-
131
- describe "#close" do
132
- it "closes a span" do
133
- expect(root.closed?).to eq false
134
-
135
- root.close
136
-
137
- expect(root.to_h).to be_nil
138
- expect(root.closed?).to eq true
139
- end
140
- end
141
- end
@@ -1,126 +0,0 @@
1
- require "appsignal/system"
2
-
3
- describe Appsignal::System do
4
- describe ".heroku?" do
5
- subject { described_class.heroku? }
6
-
7
- context "when on Heroku" do
8
- around { |example| recognize_as_heroku { example.run } }
9
-
10
- it "returns true" do
11
- is_expected.to eq(true)
12
- end
13
- end
14
-
15
- context "when not on Heroku" do
16
- it "returns false" do
17
- is_expected.to eq(false)
18
- end
19
- end
20
- end
21
-
22
- describe ".agent_platform" do
23
- let(:os) { "linux-gnu" }
24
- let(:ldd_output) { "" }
25
- before do
26
- allow(described_class).to receive(:ldd_version_output).and_return(ldd_output)
27
- allow(RbConfig::CONFIG).to receive(:[])
28
- allow(RbConfig::CONFIG).to receive(:[]).with("host_os").and_return(os)
29
- end
30
- subject { described_class.agent_platform }
31
-
32
- context "when the system detection doesn't work" do
33
- it "returns the libc build" do
34
- is_expected.to eq("linux")
35
- end
36
- end
37
-
38
- context "when using the APPSIGNAL_BUILD_FOR_MUSL env var" do
39
- it "returns the musl build" do
40
- ENV["APPSIGNAL_BUILD_FOR_MUSL"] = "1"
41
- is_expected.to eq("linux-musl")
42
- ENV.delete("APPSIGNAL_BUILD_FOR_MUSL")
43
- end
44
- end
45
-
46
- context "when using the APPSIGNAL_BUILD_FOR_LINUX_ARM env var" do
47
- it "returns the linux build" do
48
- ENV["APPSIGNAL_BUILD_FOR_LINUX_ARM"] = "1"
49
- is_expected.to eq("linux")
50
- ENV.delete("APPSIGNAL_BUILD_FOR_LINUX_ARM")
51
- end
52
- end
53
-
54
- context "when on a musl system" do
55
- let(:ldd_output) { "musl libc (x86_64)\nVersion 1.1.16" }
56
-
57
- it "returns the musl build" do
58
- is_expected.to eq("linux-musl")
59
- end
60
- end
61
-
62
- context "when on a libc system" do
63
- let(:ldd_output) { "ldd (Debian GLIBC 2.15-18+deb8u7) 2.15" }
64
-
65
- it "returns the libc build" do
66
- is_expected.to eq("linux")
67
- end
68
-
69
- context "when on an old libc system" do
70
- let(:ldd_output) { "ldd (Debian GLIBC 2.14-18+deb8u7) 2.14" }
71
-
72
- it "returns the musl build" do
73
- is_expected.to eq("linux-musl")
74
- end
75
- end
76
-
77
- context "when on a very old libc system" do
78
- let(:ldd_output) { "ldd (Debian GLIBC 2.5-18+deb8u7) 2.5" }
79
-
80
- it "returns the musl build" do
81
- is_expected.to eq("linux-musl")
82
- end
83
- end
84
- end
85
-
86
- context "when on macOS" do
87
- let(:os) { "darwin16.7.0" }
88
- let(:ldd_output) { "ldd: command not found" }
89
-
90
- it "returns the darwin build" do
91
- is_expected.to eq("darwin")
92
- end
93
- end
94
-
95
- context "when on FreeBSD" do
96
- let(:os) { "freebsd11" }
97
- let(:ldd_output) { "ldd: illegal option -- -" }
98
-
99
- it "returns the FreeBSD build" do
100
- is_expected.to eq("freebsd")
101
- end
102
- end
103
- end
104
-
105
- describe ".agent_architecture" do
106
- let(:architecture) { "x86_64" }
107
- let(:ldd_output) { "" }
108
- before do
109
- allow(RbConfig::CONFIG).to receive(:[])
110
- allow(RbConfig::CONFIG).to receive(:[]).with("host_cpu").and_return(architecture)
111
- end
112
- subject { described_class.agent_architecture }
113
-
114
- it "returns the host CPU value" do
115
- is_expected.to eq(architecture)
116
- end
117
-
118
- context "when using the APPSIGNAL_BUILD_FOR_LINUX_ARM env var" do
119
- it "returns ARM 64 bit" do
120
- ENV["APPSIGNAL_BUILD_FOR_LINUX_ARM"] = "1"
121
- is_expected.to eq("aarch64")
122
- ENV.delete("APPSIGNAL_BUILD_FOR_LINUX_ARM")
123
- end
124
- end
125
- end
126
- end