Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 2 additions & 23 deletions spec/datadog/core/crashtracking/component_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@
require 'webrick'
require 'fiddle'

# https://github.com/rubocop/rubocop-rspec/issues/2078
# rubocop:disable RSpec/ScatteredLet

RSpec.describe Datadog::Core::Crashtracking::Component, skip: !LibdatadogHelpers.supported? do
let(:logger) { Logger.new($stdout) }

Expand Down Expand Up @@ -226,25 +223,9 @@
end

context 'via unix domain socket' do
let(:temporary_directory) { Dir.mktmpdir }
let(:socket_path) { "#{temporary_directory}/rspec_unix_domain_socket" }
let(:unix_domain_socket) { UNIXServer.new(socket_path) } # Closing the socket is handled by webrick
define_http_server do |http_server|
http_server.listeners << unix_domain_socket
define_http_server_uds do |http_server|
http_server.mount_proc('/', &server_proc)
end
let(:http_server_options) do
{
DoNotListen: true,
}
end
let(:agent_base_url) { "unix://#{socket_path}" }

after do
FileUtils.remove_entry(temporary_directory)
rescue Errno::ENOENT => _e
# Do nothing, it's ok
end

it 'reports crashes via uds when app crashes with fiddle' do
fork_expectations = proc do |status:, stdout:, stderr:|
Expand All @@ -253,7 +234,7 @@
end

expect_in_fork(fork_expectations: fork_expectations) do
crash_tracker = build_crashtracker(agent_base_url: agent_base_url)
crash_tracker = build_crashtracker(agent_base_url: uds_agent_base_url)
crash_tracker.start

Fiddle.free(42)
Expand Down Expand Up @@ -317,5 +298,3 @@ def tear_down!
described_class._native_stop
end
end

# rubocop:enable RSpec/ScatteredLet
24 changes: 2 additions & 22 deletions spec/datadog/profiling/http_transport_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@
require "socket"
require "webrick"

# https://github.com/rubocop/rubocop-rspec/issues/2078
# rubocop:disable RSpec/ScatteredLet

# Design note for this class's specs: from the Ruby code side, we're treating the `_native_` methods as an API
# between the Ruby code and the native methods, and thus in this class we have a bunch of tests to make sure the
# native methods are invoked correctly.
Expand Down Expand Up @@ -391,26 +388,11 @@
end

context "via unix domain socket" do
let(:temporary_directory) { Dir.mktmpdir }
let(:socket_path) { "#{temporary_directory}/rspec_unix_domain_socket" }
let(:unix_domain_socket) { UNIXServer.new(socket_path) } # Closing the socket is handled by webrick
define_http_server do |http_server|
http_server.listeners << unix_domain_socket
define_http_server_uds do |http_server|
http_server.mount_proc('/', &server_proc)
end
let(:http_server_options) do
{
DoNotListen: true,
}
end
let(:adapter) { Datadog::Core::Transport::Ext::UnixSocket::ADAPTER }
let(:uds_path) { socket_path }

after do
FileUtils.remove_entry(temporary_directory)
rescue Errno::ENOENT => _e
# Do nothing, it's ok
end
let(:uds_path) { uds_socket_path }

include_examples "correctly reports profiling data"
end
Expand Down Expand Up @@ -526,5 +508,3 @@
end
end
end

# rubocop:enable RSpec/ScatteredLet
26 changes: 24 additions & 2 deletions spec/support/http_server_helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

module HttpServerHelpers
module ClassMethods
def define_http_server(&block)
def define_http_server(base_http_server_options = {}, &block)
# If you wish to override any of the following let blocks, be sure
# you do so AFTER calling +http_server+.

Expand Down Expand Up @@ -32,7 +32,7 @@ def define_http_server(&block)
AccessLog: http_server_access_log,
Port: 0,
StartCallback: -> { http_server_init_signal.push(1) }
}.merge(http_server_options)
}.update(base_http_server_options).update(http_server_options)
WEBrick::HTTPServer.new(options).tap do |http_server|
instance_exec(http_server, &block)
end
Expand All @@ -58,6 +58,28 @@ def http_server(&block)
@server_thread.join
end
end

def define_http_server_uds(&block)
let(:uds_temporary_directory) { Dir.mktmpdir }
let(:uds_socket_path) { "#{uds_temporary_directory}/rspec_unix_domain_socket" }
let(:uds_socket) { UNIXServer.new(uds_socket_path) } # Closing the socket is handled by webrick

define_http_server(DoNotListen: true) do |http_server|
http_server.listeners << uds_socket
instance_exec(http_server, &block)
end

let(:uds_agent_base_url) { "unix://#{uds_socket_path}" }

after do
FileUtils.rm_f(uds_socket_path)
begin
FileUtils.remove_entry(uds_temporary_directory)
rescue Errno::ENOENT => _e
# Do nothing, it's ok
end
end
end
end

def self.included(base)
Expand Down