Class: Gitlab::Testing::RequestBlockerMiddleware
- Inherits:
-
Object
- Object
- Gitlab::Testing::RequestBlockerMiddleware
- Defined in:
- lib/gitlab/testing/request_blocker_middleware.rb
Constant Summary collapse
- @@num_active_requests =
Concurrent::AtomicFixnum.new(0)
- @@block_requests =
Concurrent::AtomicBoolean.new(false)
- @@slow_requests =
Concurrent::AtomicBoolean.new(false)
Class Method Summary collapse
-
.allow_requests! ⇒ Object
Allows the server to accept requests again.
-
.block_requests! ⇒ Object
Prevents the server from accepting new requests.
-
.num_active_requests ⇒ Object
Returns the number of requests the server is currently processing.
-
.slow_requests! ⇒ Object
Slows down incoming requests (useful for race conditions).
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app) ⇒ RequestBlockerMiddleware
constructor
A new instance of RequestBlockerMiddleware.
Constructor Details
#initialize(app) ⇒ RequestBlockerMiddleware
Returns a new instance of RequestBlockerMiddleware.
36 37 38 |
# File 'lib/gitlab/testing/request_blocker_middleware.rb', line 36 def initialize(app) @app = app end |
Class Method Details
.allow_requests! ⇒ Object
Allows the server to accept requests again.
31 32 33 34 |
# File 'lib/gitlab/testing/request_blocker_middleware.rb', line 31 def self.allow_requests! @@block_requests.value = false @@slow_requests.value = false end |
.block_requests! ⇒ Object
Prevents the server from accepting new requests. Any new requests will return an HTTP 503 status.
21 22 23 |
# File 'lib/gitlab/testing/request_blocker_middleware.rb', line 21 def self.block_requests! @@block_requests.value = true end |
.num_active_requests ⇒ Object
Returns the number of requests the server is currently processing.
15 16 17 |
# File 'lib/gitlab/testing/request_blocker_middleware.rb', line 15 def self.num_active_requests @@num_active_requests.value end |
.slow_requests! ⇒ Object
Slows down incoming requests (useful for race conditions).
26 27 28 |
# File 'lib/gitlab/testing/request_blocker_middleware.rb', line 26 def self.slow_requests! @@slow_requests.value = true end |
Instance Method Details
#call(env) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/gitlab/testing/request_blocker_middleware.rb', line 40 def call(env) increment_active_requests if block_requests? block_request(env) else sleep 0.2 if slow_requests? @app.call(env) end ensure decrement_active_requests end |