diff --git a/Gemfile b/Gemfile index 609730d223..76a1aa1766 100644 --- a/Gemfile +++ b/Gemfile @@ -130,7 +130,6 @@ end group :test, :development do # Pretty printed test output - gem 'atomic' gem 'awesome_print' gem 'bullet' gem 'capybara' diff --git a/Gemfile.lock b/Gemfile.lock index 8abfe2d20f..b7262085f8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -124,7 +124,6 @@ GEM angularjs-rails (1.5.5) arel (9.0.0) ast (2.4.2) - atomic (1.1.101) awesome_nested_set (3.4.0) activerecord (>= 4.0.0, < 7.0) awesome_print (1.9.2) @@ -631,7 +630,6 @@ DEPENDENCIES angular_rails_csrf angularjs-file-upload-rails (~> 2.4.1) angularjs-rails (= 1.5.5) - atomic awesome_nested_set awesome_print aws-sdk (= 1.67.0) diff --git a/config/environments/test.rb b/config/environments/test.rb index e5acc6e253..791b4bcb2e 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -50,11 +50,6 @@ Openfoodnetwork::Application.configure do # Print deprecation notices to the stderr config.active_support.deprecation = :stderr - # To block requests before running the database cleaner - require 'open_food_network/rack_request_blocker' - # Make sure the middleware is inserted first in middleware chain - config.middleware.insert_before(ActionDispatch::Static, RackRequestBlocker) - config.active_job.queue_adapter = :test end diff --git a/lib/open_food_network/rack_request_blocker.rb b/lib/open_food_network/rack_request_blocker.rb deleted file mode 100644 index 485564b225..0000000000 --- a/lib/open_food_network/rack_request_blocker.rb +++ /dev/null @@ -1,76 +0,0 @@ -# Copied from http://blog.salsify.com/engineering/tearing-capybara-ajax-tests -# https://gist.github.com/jturkel/9317269/raw/ff7838684370fd8a468ffe1e5ce1f3e46ba39951/rack_request_blocker.rb - -require 'atomic' - -# Rack middleware that keeps track of the number of active requests and can block new requests. -class RackRequestBlocker - @@num_active_requests = Atomic.new(0) - @@block_requests = Atomic.new(false) - - # Returns the number of requests the server is currently processing. - def self.num_active_requests - @@num_active_requests.value - end - - # Prevents the server from accepting new requests. Any new requests will return an HTTP - # 503 status. - def self.block_requests! - @@block_requests.value = true - end - - # Allows the server to accept requests again. - def self.allow_requests! - @@block_requests.value = false - end - - def initialize(app) - @app = app - end - - def call(env) - increment_active_requests - if block_requests? - block_request(env) - else - @app.call(env) - end - ensure - decrement_active_requests - end - - def self.wait_for_requests_complete - block_requests! - max_wait_time = 30 - polling_interval = 0.01 - wait_until = Time.now.in_time_zone + max_wait_time.seconds - loop do - return if num_active_requests == 0 - if Time.now.in_time_zone > wait_until - raise "Failed waiting for completing requests, #{num_active_requests} running." - else - sleep(polling_interval) - end - end - ensure - allow_requests! - end - - private - - def block_requests? - @@block_requests.value - end - - def block_request(_env) - [503, {}, []] - end - - def increment_active_requests - @@num_active_requests.update { |v| v + 1 } - end - - def decrement_active_requests - @@num_active_requests.update { |v| v - 1 } - end -end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index b483c52be9..948a9ed9a9 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -122,7 +122,6 @@ RSpec.configure do |config| config.after(:each) { DatabaseCleaner.clean } config.after(:each, js: true) do Capybara.reset_sessions! - RackRequestBlocker.wait_for_requests_complete end def restart_driver