appsignal 4.0.6-java → 4.0.8-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 (202) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -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. data/lib/appsignal.rb +10 -8
  12. metadata +2 -192
  13. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -31
  14. data/.github/ISSUE_TEMPLATE/chore.md +0 -14
  15. data/.github/workflows/ci.yml +0 -3285
  16. data/.github/workflows/create_release_from_tag.yml +0 -62
  17. data/.gitignore +0 -35
  18. data/.gitmodules +0 -3
  19. data/.rspec +0 -4
  20. data/.yardopts +0 -8
  21. data/benchmark.rake +0 -139
  22. data/gemfiles/capistrano2.gemfile +0 -6
  23. data/gemfiles/capistrano3.gemfile +0 -7
  24. data/gemfiles/dry-monitor.gemfile +0 -5
  25. data/gemfiles/grape.gemfile +0 -5
  26. data/gemfiles/hanami-2.0.gemfile +0 -7
  27. data/gemfiles/hanami-2.1.gemfile +0 -7
  28. data/gemfiles/http5.gemfile +0 -5
  29. data/gemfiles/no_dependencies.gemfile +0 -10
  30. data/gemfiles/padrino.gemfile +0 -7
  31. data/gemfiles/psych-3.gemfile +0 -5
  32. data/gemfiles/psych-4.gemfile +0 -5
  33. data/gemfiles/que-1.gemfile +0 -5
  34. data/gemfiles/que-2.gemfile +0 -5
  35. data/gemfiles/rails-6.0.gemfile +0 -10
  36. data/gemfiles/rails-6.1.gemfile +0 -11
  37. data/gemfiles/rails-7.0.gemfile +0 -11
  38. data/gemfiles/rails-7.1.gemfile +0 -11
  39. data/gemfiles/rails-7.2.gemfile +0 -11
  40. data/gemfiles/redis-4.gemfile +0 -5
  41. data/gemfiles/redis-5.gemfile +0 -6
  42. data/gemfiles/resque-2.gemfile +0 -6
  43. data/gemfiles/sequel.gemfile +0 -10
  44. data/gemfiles/sinatra.gemfile +0 -5
  45. data/gemfiles/webmachine1.gemfile +0 -7
  46. data/gemfiles/webmachine2.gemfile +0 -6
  47. data/mono.yml +0 -16
  48. data/spec/.rubocop.yml +0 -7
  49. data/spec/lib/appsignal/auth_check_spec.rb +0 -84
  50. data/spec/lib/appsignal/capistrano2_spec.rb +0 -227
  51. data/spec/lib/appsignal/capistrano3_spec.rb +0 -284
  52. data/spec/lib/appsignal/check_in/cron_spec.rb +0 -210
  53. data/spec/lib/appsignal/check_in/scheduler_spec.rb +0 -557
  54. data/spec/lib/appsignal/cli/demo_spec.rb +0 -46
  55. data/spec/lib/appsignal/cli/diagnose/paths_spec.rb +0 -16
  56. data/spec/lib/appsignal/cli/diagnose/utils_spec.rb +0 -86
  57. data/spec/lib/appsignal/cli/diagnose_spec.rb +0 -1553
  58. data/spec/lib/appsignal/cli/helpers_spec.rb +0 -179
  59. data/spec/lib/appsignal/cli/install_spec.rb +0 -848
  60. data/spec/lib/appsignal/cli_spec.rb +0 -56
  61. data/spec/lib/appsignal/config_spec.rb +0 -1380
  62. data/spec/lib/appsignal/demo_spec.rb +0 -83
  63. data/spec/lib/appsignal/environment_spec.rb +0 -190
  64. data/spec/lib/appsignal/event_formatter/action_view/render_formatter_spec.rb +0 -60
  65. data/spec/lib/appsignal/event_formatter/active_record/instantiation_formatter_spec.rb +0 -21
  66. data/spec/lib/appsignal/event_formatter/active_record/sql_formatter_spec.rb +0 -21
  67. data/spec/lib/appsignal/event_formatter/elastic_search/search_formatter_spec.rb +0 -52
  68. data/spec/lib/appsignal/event_formatter/faraday/request_formatter_spec.rb +0 -21
  69. data/spec/lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter_spec.rb +0 -84
  70. data/spec/lib/appsignal/event_formatter/rom/sql_formatter_spec.rb +0 -22
  71. data/spec/lib/appsignal/event_formatter/sequel/sql_formatter_spec.rb +0 -30
  72. data/spec/lib/appsignal/event_formatter/view_component/render_formatter_spec.rb +0 -41
  73. data/spec/lib/appsignal/event_formatter_spec.rb +0 -193
  74. data/spec/lib/appsignal/extension/jruby_spec.rb +0 -46
  75. data/spec/lib/appsignal/extension_install_failure_spec.rb +0 -20
  76. data/spec/lib/appsignal/extension_spec.rb +0 -178
  77. data/spec/lib/appsignal/garbage_collection_spec.rb +0 -98
  78. data/spec/lib/appsignal/hooks/action_cable_spec.rb +0 -345
  79. data/spec/lib/appsignal/hooks/action_mailer_spec.rb +0 -55
  80. data/spec/lib/appsignal/hooks/active_support_notifications/finish_with_state_shared_examples.rb +0 -23
  81. data/spec/lib/appsignal/hooks/active_support_notifications/instrument_shared_examples.rb +0 -99
  82. data/spec/lib/appsignal/hooks/active_support_notifications/start_finish_shared_examples.rb +0 -47
  83. data/spec/lib/appsignal/hooks/active_support_notifications_spec.rb +0 -47
  84. data/spec/lib/appsignal/hooks/activejob_spec.rb +0 -650
  85. data/spec/lib/appsignal/hooks/at_exit_spec.rb +0 -105
  86. data/spec/lib/appsignal/hooks/celluloid_spec.rb +0 -40
  87. data/spec/lib/appsignal/hooks/data_mapper_spec.rb +0 -40
  88. data/spec/lib/appsignal/hooks/delayed_job_spec.rb +0 -38
  89. data/spec/lib/appsignal/hooks/dry_monitor_spec.rb +0 -83
  90. data/spec/lib/appsignal/hooks/excon_spec.rb +0 -67
  91. data/spec/lib/appsignal/hooks/gvl_spec.rb +0 -145
  92. data/spec/lib/appsignal/hooks/http_spec.rb +0 -37
  93. data/spec/lib/appsignal/hooks/mongo_ruby_driver_spec.rb +0 -46
  94. data/spec/lib/appsignal/hooks/mri_spec.rb +0 -23
  95. data/spec/lib/appsignal/hooks/net_http_spec.rb +0 -18
  96. data/spec/lib/appsignal/hooks/passenger_spec.rb +0 -30
  97. data/spec/lib/appsignal/hooks/puma_spec.rb +0 -80
  98. data/spec/lib/appsignal/hooks/que_spec.rb +0 -19
  99. data/spec/lib/appsignal/hooks/rake_spec.rb +0 -144
  100. data/spec/lib/appsignal/hooks/redis_client_spec.rb +0 -218
  101. data/spec/lib/appsignal/hooks/redis_spec.rb +0 -124
  102. data/spec/lib/appsignal/hooks/resque_spec.rb +0 -27
  103. data/spec/lib/appsignal/hooks/sequel_spec.rb +0 -44
  104. data/spec/lib/appsignal/hooks/shoryuken_spec.rb +0 -29
  105. data/spec/lib/appsignal/hooks/sidekiq_spec.rb +0 -115
  106. data/spec/lib/appsignal/hooks/unicorn_spec.rb +0 -63
  107. data/spec/lib/appsignal/hooks/webmachine_spec.rb +0 -24
  108. data/spec/lib/appsignal/hooks_spec.rb +0 -124
  109. data/spec/lib/appsignal/integrations/data_mapper_spec.rb +0 -74
  110. data/spec/lib/appsignal/integrations/delayed_job_plugin_spec.rb +0 -454
  111. data/spec/lib/appsignal/integrations/http_spec.rb +0 -111
  112. data/spec/lib/appsignal/integrations/mongo_ruby_driver_spec.rb +0 -154
  113. data/spec/lib/appsignal/integrations/net_http_spec.rb +0 -33
  114. data/spec/lib/appsignal/integrations/object_spec.rb +0 -347
  115. data/spec/lib/appsignal/integrations/puma_spec.rb +0 -150
  116. data/spec/lib/appsignal/integrations/que_spec.rb +0 -187
  117. data/spec/lib/appsignal/integrations/railtie_spec.rb +0 -457
  118. data/spec/lib/appsignal/integrations/resque_spec.rb +0 -155
  119. data/spec/lib/appsignal/integrations/shoryuken_spec.rb +0 -165
  120. data/spec/lib/appsignal/integrations/sidekiq_spec.rb +0 -640
  121. data/spec/lib/appsignal/integrations/webmachine_spec.rb +0 -136
  122. data/spec/lib/appsignal/loaders/grape_spec.rb +0 -12
  123. data/spec/lib/appsignal/loaders/hanami_spec.rb +0 -92
  124. data/spec/lib/appsignal/loaders/padrino_spec.rb +0 -273
  125. data/spec/lib/appsignal/loaders/sinatra_spec.rb +0 -44
  126. data/spec/lib/appsignal/loaders_spec.rb +0 -144
  127. data/spec/lib/appsignal/logger_spec.rb +0 -205
  128. data/spec/lib/appsignal/marker_spec.rb +0 -51
  129. data/spec/lib/appsignal/probes/gvl_spec.rb +0 -164
  130. data/spec/lib/appsignal/probes/mri_spec.rb +0 -162
  131. data/spec/lib/appsignal/probes/sidekiq_spec.rb +0 -333
  132. data/spec/lib/appsignal/probes_spec.rb +0 -414
  133. data/spec/lib/appsignal/rack/abstract_middleware_spec.rb +0 -370
  134. data/spec/lib/appsignal/rack/body_wrapper_spec.rb +0 -319
  135. data/spec/lib/appsignal/rack/event_handler_spec.rb +0 -441
  136. data/spec/lib/appsignal/rack/grape_middleware_spec.rb +0 -201
  137. data/spec/lib/appsignal/rack/hanami_middleware_spec.rb +0 -36
  138. data/spec/lib/appsignal/rack/instrumentation_middleware_spec.rb +0 -38
  139. data/spec/lib/appsignal/rack/rails_instrumentation_spec.rb +0 -126
  140. data/spec/lib/appsignal/rack/sinatra_instrumentation_spec.rb +0 -217
  141. data/spec/lib/appsignal/rack_spec.rb +0 -243
  142. data/spec/lib/appsignal/sample_data_spec.rb +0 -238
  143. data/spec/lib/appsignal/span_spec.rb +0 -141
  144. data/spec/lib/appsignal/system_spec.rb +0 -126
  145. data/spec/lib/appsignal/transaction_spec.rb +0 -2115
  146. data/spec/lib/appsignal/transmitter_spec.rb +0 -198
  147. data/spec/lib/appsignal/utils/data_spec.rb +0 -166
  148. data/spec/lib/appsignal/utils/hash_sanitizer_spec.rb +0 -182
  149. data/spec/lib/appsignal/utils/integration_logger_spec.rb +0 -21
  150. data/spec/lib/appsignal/utils/integration_memory_logger_spec.rb +0 -153
  151. data/spec/lib/appsignal/utils/json_spec.rb +0 -44
  152. data/spec/lib/appsignal/utils/query_params_sanitizer_spec.rb +0 -192
  153. data/spec/lib/appsignal_spec.rb +0 -1919
  154. data/spec/lib/puma/appsignal_spec.rb +0 -334
  155. data/spec/spec_helper.rb +0 -179
  156. data/spec/support/fixtures/generated_config.yml +0 -24
  157. data/spec/support/fixtures/projects/broken/config/appsignal.yml +0 -1
  158. data/spec/support/fixtures/projects/valid/config/appsignal.yml +0 -57
  159. data/spec/support/fixtures/projects/valid/log/.gitkeep +0 -0
  160. data/spec/support/fixtures/projects/valid_with_rails_app/config/application.rb +0 -16
  161. data/spec/support/fixtures/projects/valid_with_rails_app/config/appsignal.yml +0 -56
  162. data/spec/support/fixtures/projects/valid_with_rails_app/config/environment.rb +0 -10
  163. data/spec/support/fixtures/projects/valid_with_rails_app/log/.gitkeep +0 -0
  164. data/spec/support/fixtures/uploaded_file.txt +0 -0
  165. data/spec/support/hanami/hanami_app.rb +0 -29
  166. data/spec/support/helpers/action_mailer_helpers.rb +0 -25
  167. data/spec/support/helpers/activejob_helpers.rb +0 -27
  168. data/spec/support/helpers/api_request_helper.rb +0 -60
  169. data/spec/support/helpers/cli_helpers.rb +0 -40
  170. data/spec/support/helpers/config_helpers.rb +0 -66
  171. data/spec/support/helpers/dependency_helper.rb +0 -155
  172. data/spec/support/helpers/directory_helper.rb +0 -27
  173. data/spec/support/helpers/env_helpers.rb +0 -41
  174. data/spec/support/helpers/environment_metdata_helper.rb +0 -16
  175. data/spec/support/helpers/example_exception.rb +0 -13
  176. data/spec/support/helpers/example_standard_error.rb +0 -13
  177. data/spec/support/helpers/loader_helper.rb +0 -21
  178. data/spec/support/helpers/log_helpers.rb +0 -36
  179. data/spec/support/helpers/rails_helper.rb +0 -28
  180. data/spec/support/helpers/std_streams_helper.rb +0 -94
  181. data/spec/support/helpers/system_helpers.rb +0 -8
  182. data/spec/support/helpers/take_at_most_helper.rb +0 -21
  183. data/spec/support/helpers/time_helpers.rb +0 -11
  184. data/spec/support/helpers/transaction_helpers.rb +0 -122
  185. data/spec/support/helpers/wait_for_helper.rb +0 -39
  186. data/spec/support/matchers/contains_log.rb +0 -26
  187. data/spec/support/matchers/have_colorized_text.rb +0 -28
  188. data/spec/support/matchers/transaction.rb +0 -200
  189. data/spec/support/mocks/appsignal_mock.rb +0 -18
  190. data/spec/support/mocks/dummy_app.rb +0 -20
  191. data/spec/support/mocks/fake_gc_profiler.rb +0 -19
  192. data/spec/support/mocks/fake_gvl_tools.rb +0 -28
  193. data/spec/support/mocks/hash_like.rb +0 -10
  194. data/spec/support/mocks/mock_probe.rb +0 -13
  195. data/spec/support/mocks/puma_mock.rb +0 -43
  196. data/spec/support/shared_examples/instrument.rb +0 -48
  197. data/spec/support/stubs/appsignal/loaders/loader_stub.rb +0 -7
  198. data/spec/support/stubs/delayed_job.rb +0 -0
  199. data/spec/support/stubs/sidekiq/api.rb +0 -4
  200. data/spec/support/testing.rb +0 -203
  201. data/support/bundler_wrapper +0 -12
  202. data/support/install_deps +0 -33
@@ -1,115 +0,0 @@
1
- describe Appsignal::Hooks::SidekiqHook do
2
- describe "#dependencies_present?" do
3
- subject { described_class.new.dependencies_present? }
4
-
5
- context "when Sidekiq constant is found" do
6
- before { stub_const "Sidekiq", Class.new }
7
-
8
- it { is_expected.to be_truthy }
9
- end
10
-
11
- context "when Sidekiq constant is not found" do
12
- before { hide_const "Sidekiq" }
13
-
14
- it { is_expected.to be_falsy }
15
- end
16
- end
17
-
18
- describe "#install" do
19
- class SidekiqMiddlewareMockWithPrepend < Array
20
- alias add <<
21
- alias exists? include?
22
-
23
- unless method_defined? :prepend
24
- # For Ruby < 2.5
25
- def prepend(middleware)
26
- insert(0, middleware)
27
- end
28
- end
29
- end
30
-
31
- class SidekiqMiddlewareMockWithoutPrepend < Array
32
- alias add <<
33
- alias exists? include?
34
-
35
- undef_method :prepend if method_defined? :prepend # For Ruby >= 2.5
36
- end
37
-
38
- module SidekiqMock
39
- def self.middleware_mock=(mock)
40
- @middlewares = mock.new
41
- end
42
-
43
- def self.middlewares
44
- @middlewares
45
- end
46
-
47
- def self.configure_server
48
- yield self
49
- end
50
-
51
- def self.server_middleware
52
- yield middlewares if block_given?
53
- middlewares
54
- end
55
-
56
- def self.error_handlers
57
- @error_handlers ||= []
58
- end
59
- end
60
-
61
- def add_middleware(middleware)
62
- Sidekiq.configure_server do |sidekiq_config|
63
- sidekiq_config.middlewares.add(middleware)
64
- end
65
- end
66
-
67
- before do
68
- start_agent
69
- stub_const "Sidekiq", SidekiqMock
70
- end
71
-
72
- it "adds error handler" do
73
- Sidekiq.middleware_mock = SidekiqMiddlewareMockWithPrepend
74
- described_class.new.install
75
- expect(Sidekiq.error_handlers).to include(Appsignal::Integrations::SidekiqErrorHandler)
76
- end
77
-
78
- context "when Sidekiq middleware responds to prepend method" do # Sidekiq 3.3.0 and newer
79
- before { Sidekiq.middleware_mock = SidekiqMiddlewareMockWithPrepend }
80
-
81
- it "adds the AppSignal SidekiqPlugin to the Sidekiq middleware chain in the first position" do
82
- user_middleware1 = proc {}
83
- add_middleware(user_middleware1)
84
- described_class.new.install
85
- user_middleware2 = proc {}
86
- add_middleware(user_middleware2)
87
-
88
- expect(Sidekiq.server_middleware).to eql([
89
- Appsignal::Integrations::SidekiqMiddleware, # Prepend makes it the first entry
90
- user_middleware1,
91
- user_middleware2
92
- ])
93
- end
94
- end
95
-
96
- context "when Sidekiq middleware does not respond to prepend method" do
97
- before { Sidekiq.middleware_mock = SidekiqMiddlewareMockWithoutPrepend }
98
-
99
- it "adds the AppSignal SidekiqPlugin to the Sidekiq middleware chain" do
100
- user_middleware1 = proc {}
101
- add_middleware(user_middleware1)
102
- described_class.new.install
103
- user_middleware2 = proc {}
104
- add_middleware(user_middleware2)
105
-
106
- # Add middlewares in whatever order they were added
107
- expect(Sidekiq.server_middleware).to eql([
108
- user_middleware1,
109
- Appsignal::Integrations::SidekiqMiddleware,
110
- user_middleware2
111
- ])
112
- end
113
- end
114
- end
115
- end
@@ -1,63 +0,0 @@
1
- describe Appsignal::Hooks::UnicornHook do
2
- context "with unicorn" do
3
- before :context do
4
- module Unicorn
5
- class HttpServer
6
- def worker_loop(_worker)
7
- @worker_loop = true
8
- end
9
-
10
- def worker_loop?
11
- @worker_loop == true
12
- end
13
- end
14
-
15
- class Worker
16
- def close
17
- @close = true
18
- end
19
-
20
- def close?
21
- @close == true
22
- end
23
- end
24
- end
25
- Appsignal::Hooks::UnicornHook.new.install
26
- end
27
- after(:context) { Object.send(:remove_const, :Unicorn) }
28
-
29
- describe "#dependencies_present?" do
30
- subject { described_class.new.dependencies_present? }
31
-
32
- it { is_expected.to be_truthy }
33
- end
34
-
35
- it "adds behavior to Unicorn::HttpServer#worker_loop" do
36
- server = Unicorn::HttpServer.new
37
- worker = double
38
-
39
- expect(Appsignal).to receive(:forked)
40
-
41
- server.worker_loop(worker)
42
-
43
- expect(server.worker_loop?).to be true
44
- end
45
-
46
- it "adds behavior to Unicorn::Worker#close" do
47
- worker = Unicorn::Worker.new
48
-
49
- expect(Appsignal).to receive(:stop)
50
-
51
- worker.close
52
- expect(worker.close?).to be true
53
- end
54
- end
55
-
56
- context "without unicorn" do
57
- describe "#dependencies_present?" do
58
- subject { described_class.new.dependencies_present? }
59
-
60
- it { is_expected.to be_falsy }
61
- end
62
- end
63
- end
@@ -1,24 +0,0 @@
1
- describe Appsignal::Hooks::WebmachineHook do
2
- if DependencyHelper.webmachine_present?
3
- context "with webmachine" do
4
- let(:fsm) { Webmachine::Decision::FSM.new(double(:trace? => false), double, double) }
5
- before { start_agent }
6
-
7
- describe "#dependencies_present?" do
8
- subject { described_class.new.dependencies_present? }
9
-
10
- it { is_expected.to be_truthy }
11
- end
12
-
13
- it "adds behavior to Webmachine::Decision::FSM" do
14
- expect(fsm.class.ancestors.first).to eq(Appsignal::Integrations::WebmachineIntegration)
15
- end
16
- end
17
- else
18
- describe "#dependencies_present?" do
19
- subject { described_class.new.dependencies_present? }
20
-
21
- it { is_expected.to be_falsy }
22
- end
23
- end
24
- end
@@ -1,124 +0,0 @@
1
- class MockPresentHook < Appsignal::Hooks::Hook
2
- def dependencies_present?
3
- true
4
- end
5
-
6
- def install
7
- MockPresentHook.call_something
8
- end
9
-
10
- def self.call_something
11
- end
12
- end
13
-
14
- class MockNotPresentHook < Appsignal::Hooks::Hook
15
- def dependencies_present?
16
- false
17
- end
18
-
19
- def install
20
- MockNotPresentHook.call_something
21
- end
22
- end
23
-
24
- class MockErrorHook < Appsignal::Hooks::Hook
25
- def dependencies_present?
26
- true
27
- end
28
-
29
- def install
30
- raise "error"
31
- end
32
- end
33
-
34
- describe Appsignal::Hooks do
35
- it "should register and install a hook once" do
36
- Appsignal::Hooks::Hook.register(:mock_present_hook, MockPresentHook)
37
-
38
- expect(Appsignal::Hooks.hooks[:mock_present_hook]).to be_instance_of(MockPresentHook)
39
- expect(Appsignal::Hooks.hooks[:mock_present_hook].installed?).to be_falsy
40
-
41
- expect(MockPresentHook).to receive(:call_something).once
42
-
43
- Appsignal::Hooks.load_hooks
44
- Appsignal::Hooks.load_hooks
45
- Appsignal::Hooks.load_hooks
46
- expect(Appsignal::Hooks.hooks[:mock_present_hook].installed?).to be_truthy
47
- Appsignal::Hooks.hooks.delete(:mock_present_hook)
48
- end
49
-
50
- it "should not install if dependencies are not present" do
51
- Appsignal::Hooks::Hook.register(:mock_not_present_hook, MockNotPresentHook)
52
-
53
- expect(Appsignal::Hooks.hooks[:mock_not_present_hook]).to be_instance_of(MockNotPresentHook)
54
- expect(Appsignal::Hooks.hooks[:mock_not_present_hook].installed?).to be_falsy
55
-
56
- expect(MockPresentHook).to_not receive(:call_something)
57
-
58
- Appsignal::Hooks.load_hooks
59
-
60
- expect(Appsignal::Hooks.hooks[:mock_not_present_hook].installed?).to be_falsy
61
- Appsignal::Hooks.hooks.delete(:mock_not_present_hook)
62
- end
63
-
64
- it "should not install if there is an error while installing" do
65
- Appsignal::Hooks::Hook.register(:mock_error_hook, MockErrorHook)
66
-
67
- expect(Appsignal::Hooks.hooks[:mock_error_hook]).to be_instance_of(MockErrorHook)
68
- expect(Appsignal::Hooks.hooks[:mock_error_hook].installed?).to be_falsy
69
-
70
- expect(Appsignal.internal_logger).to receive(:error)
71
- .with("Error while installing mock_error_hook hook: error").once
72
- expect(Appsignal.internal_logger).to receive(:debug).ordered do |message|
73
- expect(message).to eq("Installing mock_error_hook hook")
74
- end
75
- expect(Appsignal.internal_logger).to receive(:debug).ordered do |message|
76
- # Start of the error backtrace as debug log
77
- expect(message).to start_with(File.expand_path("../../..", __dir__))
78
- end
79
-
80
- Appsignal::Hooks.load_hooks
81
-
82
- expect(Appsignal::Hooks.hooks[:mock_error_hook].installed?).to be_falsy
83
- Appsignal::Hooks.hooks.delete(:mock_error_hook)
84
- end
85
- end
86
-
87
- describe Appsignal::Hooks::Helpers do
88
- class ClassWithHelpers
89
- include Appsignal::Hooks::Helpers
90
- end
91
- let(:with_helpers) { ClassWithHelpers.new }
92
-
93
- describe "#truncate" do
94
- let(:very_long_text) do
95
- "a" * 400
96
- end
97
-
98
- it "should truncate the text to 200 chars max" do
99
- expect(with_helpers.truncate(very_long_text)).to eq "#{"a" * 197}..."
100
- end
101
- end
102
-
103
- describe "#string_or_inspect" do
104
- context "when string" do
105
- it "should return the string" do
106
- expect(with_helpers.string_or_inspect("foo")).to eq "foo"
107
- end
108
- end
109
-
110
- context "when integer" do
111
- it "should return the string" do
112
- expect(with_helpers.string_or_inspect(1)).to eq "1"
113
- end
114
- end
115
-
116
- context "when object" do
117
- let(:object) { Object.new }
118
-
119
- it "should return the string" do
120
- expect(with_helpers.string_or_inspect(object)).to eq object.inspect
121
- end
122
- end
123
- end
124
- end
@@ -1,74 +0,0 @@
1
- require "appsignal/integrations/data_mapper"
2
-
3
- describe Appsignal::Hooks::DataMapperLogListener do
4
- module DataMapperLog
5
- def log(message)
6
- end
7
- end
8
-
9
- describe "#log" do
10
- let(:transaction) { http_request_transaction }
11
- let(:message) do
12
- double(
13
- :query => "SELECT * from users",
14
- :duration => 100_000_000 # nanoseconds
15
- )
16
- end
17
- let(:connection_class) do
18
- module DataObjects
19
- module Sqlite3
20
- class Connection
21
- include DataMapperLog
22
- include Appsignal::Hooks::DataMapperLogListener
23
- end
24
- end
25
- end
26
- end
27
- before do
28
- start_agent
29
- set_current_transaction(transaction)
30
- end
31
- around { |example| keep_transactions { example.run } }
32
-
33
- def log_message
34
- connection_class.new.log(message)
35
- end
36
-
37
- it "records the log entry in an event" do
38
- log_message
39
-
40
- expect(transaction).to include_event(
41
- "name" => "query.data_mapper",
42
- "title" => "DataMapper Query",
43
- "body" => "SELECT * from users",
44
- "body_format" => Appsignal::EventFormatter::SQL_BODY_FORMAT,
45
- "duration" => 100.0
46
- )
47
- end
48
-
49
- context "when the scheme is not sql-like" do
50
- let(:connection_class) do
51
- module DataObjects
52
- module MongoDB
53
- class Connection
54
- include DataMapperLog
55
- include Appsignal::Hooks::DataMapperLogListener
56
- end
57
- end
58
- end
59
- end
60
-
61
- it "records the log entry in an event without body" do
62
- log_message
63
-
64
- expect(transaction).to include_event(
65
- "name" => "query.data_mapper",
66
- "title" => "DataMapper Query",
67
- "body" => "",
68
- "body_format" => Appsignal::EventFormatter::DEFAULT,
69
- "duration" => 100.0
70
- )
71
- end
72
- end
73
- end
74
- end