Class: Nonnative::Pool
- Inherits:
-
Object
- Object
- Nonnative::Pool
- Defined in:
- lib/nonnative/pool.rb
Overview
Orchestrates lifecycle for configured processes, servers and services.
A pool is created when start is called and is accessible via pool.
Lifecycle order is important:
-
On start: services first, then servers/processes (in parallel port-check threads)
-
On stop: processes/servers first, then services
Readiness and shutdown are determined via TCP port checks (Nonnative::Port#open? / Nonnative::Port#closed?).
Instance Method Summary collapse
-
#initialize(configuration) ⇒ Pool
constructor
A new instance of Pool.
-
#process_by_name(name) ⇒ Nonnative::Process
Finds a running process runner by configured name.
-
#reset ⇒ void
Resets proxies for all runners in this pool.
-
#server_by_name(name) ⇒ Nonnative::Server
Finds a running server runner by configured name.
-
#service_by_name(name) ⇒ Nonnative::Service
Finds a running service runner by configured name.
-
#start {|name, values, result| ... } ⇒ void
Starts all configured runners and yields results for each process/server.
-
#stop {|name, id, result| ... } ⇒ void
Stops all configured runners and yields results for each process/server.
Constructor Details
#initialize(configuration) ⇒ Pool
Returns a new instance of Pool.
19 20 21 |
# File 'lib/nonnative/pool.rb', line 19 def initialize(configuration) @configuration = configuration end |
Instance Method Details
#process_by_name(name) ⇒ Nonnative::Process
Finds a running process runner by configured name.
54 55 56 |
# File 'lib/nonnative/pool.rb', line 54 def process_by_name(name) processes[runner_index(configuration.processes, name)].first end |
#reset ⇒ void
This method returns an undefined value.
Resets proxies for all runners in this pool.
This is used by the Cucumber ‘@reset` hook and is safe to call any time after the pool is created.
81 82 83 84 85 |
# File 'lib/nonnative/pool.rb', line 81 def reset services.each { |s| s.proxy.reset } servers.each { |s| s.first.proxy.reset } processes.each { |p| p.first.proxy.reset } end |
#server_by_name(name) ⇒ Nonnative::Server
Finds a running server runner by configured name.
63 64 65 |
# File 'lib/nonnative/pool.rb', line 63 def server_by_name(name) servers[runner_index(configuration.servers, name)].first end |
#service_by_name(name) ⇒ Nonnative::Service
Finds a running service runner by configured name.
72 73 74 |
# File 'lib/nonnative/pool.rb', line 72 def service_by_name(name) services[runner_index(configuration.services, name)] end |
#start {|name, values, result| ... } ⇒ void
This method returns an undefined value.
Starts all configured runners and yields results for each process/server.
Services are started first (proxy-only), then servers and processes are started and checked for readiness.
31 32 33 34 |
# File 'lib/nonnative/pool.rb', line 31 def start(&) services.each(&:start) [servers, processes].each { |t| process(t, :start, :open?, &) } end |
#stop {|name, id, result| ... } ⇒ void
This method returns an undefined value.
Stops all configured runners and yields results for each process/server.
Processes and servers are stopped first and checked for shutdown, then services are stopped (proxy-only).
44 45 46 47 |
# File 'lib/nonnative/pool.rb', line 44 def stop(&) [processes, servers].each { |t| process(t, :stop, :closed?, &) } services.each(&:stop) end |