Class: Gitlab::Testing::ActionCableBlocker

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab/testing/action_cable_blocker.rb

Constant Summary collapse

@@num_active_requests =
Concurrent::AtomicFixnum.new(0)
@@block_requests =
Concurrent::AtomicBoolean.new(false)

Class Method Summary collapse

Class Method Details

.allow_requests!Object

Allows the server to accept requests again.



24
25
26
# File 'lib/gitlab/testing/action_cable_blocker.rb', line 24

def self.allow_requests!
  @@block_requests.value = false
end

.block_requests!Object

Prevents the server from accepting new requests. Any new requests will be skipped.



19
20
21
# File 'lib/gitlab/testing/action_cable_blocker.rb', line 19

def self.block_requests!
  @@block_requests.value = true
end

.installObject



28
29
30
31
32
33
34
35
36
# File 'lib/gitlab/testing/action_cable_blocker.rb', line 28

def self.install
  ::ActionCable::Server::Worker.set_callback :work, :around do |_, inner|
    @@num_active_requests.increment

    inner.call if @@block_requests.false?
  ensure
    @@num_active_requests.decrement
  end
end

.num_active_requestsObject

Returns the number of requests the server is currently processing.



14
15
16
# File 'lib/gitlab/testing/action_cable_blocker.rb', line 14

def self.num_active_requests
  @@num_active_requests.value
end