Class: Pact::Provider::ProviderServerRunner
- Inherits:
-
Object
- Object
- Pact::Provider::ProviderServerRunner
- Defined in:
- lib/pact/provider/provider_server_runner.rb
Constant Summary collapse
- SETUP_PROVIDER_STATE_PATH =
"/setup-provider"- VERIFY_MESSAGE_PATH =
"/verify-message"
Instance Attribute Summary collapse
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
Instance Method Summary collapse
- #add_message_handler(state_name, &block) ⇒ Object
- #add_setup_state(state_name, use_before_setup_hook = true, &block) ⇒ Object
- #add_teardown_state(state_name, use_after_teardown_hook = true, &block) ⇒ Object
-
#initialize(port: 9001, host: "127.0.0.1", logger: nil) ⇒ ProviderServerRunner
constructor
A new instance of ProviderServerRunner.
- #message_setup_url ⇒ Object
- #run ⇒ Object
- #set_after_teardown_hook(&block) ⇒ Object
- #set_before_setup_hook(&block) ⇒ Object
- #start ⇒ Object
- #state_setup_url ⇒ Object
- #stop ⇒ Object
Constructor Details
#initialize(port: 9001, host: "127.0.0.1", logger: nil) ⇒ ProviderServerRunner
Returns a new instance of ProviderServerRunner.
13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/pact/provider/provider_server_runner.rb', line 13 def initialize(port: 9001, host: "127.0.0.1", logger: nil) @host = host @port = port @provider_setup_states = {} @provider_teardown_states = {} @logger = logger || Logger.new($stdout) @state_servlet = ProviderStateServlet.new(logger: @logger) @message_servlet = MessageProviderServlet.new(logger: @logger) @thread = nil end |
Instance Attribute Details
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
8 9 10 |
# File 'lib/pact/provider/provider_server_runner.rb', line 8 def logger @logger end |
Instance Method Details
#add_message_handler(state_name, &block) ⇒ Object
69 70 71 |
# File 'lib/pact/provider/provider_server_runner.rb', line 69 def (state_name, &block) @message_servlet.(state_name, &block) end |
#add_setup_state(state_name, use_before_setup_hook = true, &block) ⇒ Object
73 74 75 |
# File 'lib/pact/provider/provider_server_runner.rb', line 73 def add_setup_state(state_name, use_before_setup_hook = true, &block) @state_servlet.add_setup_state(state_name, use_before_setup_hook, &block) end |
#add_teardown_state(state_name, use_after_teardown_hook = true, &block) ⇒ Object
77 78 79 |
# File 'lib/pact/provider/provider_server_runner.rb', line 77 def add_teardown_state(state_name, use_after_teardown_hook = true, &block) @state_servlet.add_teardown_state(state_name, use_after_teardown_hook, &block) end |
#message_setup_url ⇒ Object
29 30 31 |
# File 'lib/pact/provider/provider_server_runner.rb', line 29 def "http://#{@host}:#{@port}#{VERIFY_MESSAGE_PATH}" end |
#run ⇒ Object
58 59 60 61 62 63 64 65 66 67 |
# File 'lib/pact/provider/provider_server_runner.rb', line 58 def run start yield rescue => e logger.fatal("FATAL ERROR: #{e.} #{e.backtrace.join("\n")}") raise ensure stop end |
#set_after_teardown_hook(&block) ⇒ Object
85 86 87 |
# File 'lib/pact/provider/provider_server_runner.rb', line 85 def set_after_teardown_hook(&block) @state_servlet.after_teardown(&block) end |
#set_before_setup_hook(&block) ⇒ Object
81 82 83 |
# File 'lib/pact/provider/provider_server_runner.rb', line 81 def set_before_setup_hook(&block) @state_servlet.before_setup(&block) end |
#start ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/pact/provider/provider_server_runner.rb', line 33 def start raise "server already running, stop server before starting new one" if @thread @server = WEBrick::HTTPServer.new( { BindAddress: @host, Port: @port, Logger: @logger, AccessLog: [] }, WEBrick::Config::HTTP ) @server.mount(SETUP_PROVIDER_STATE_PATH, @state_servlet) @server.mount(VERIFY_MESSAGE_PATH, @message_servlet) @thread = Thread.new do @logger.debug "starting provider setup server" @server.start end end |
#state_setup_url ⇒ Object
25 26 27 |
# File 'lib/pact/provider/provider_server_runner.rb', line 25 def state_setup_url "http://#{@host}:#{@port}#{SETUP_PROVIDER_STATE_PATH}" end |
#stop ⇒ Object
49 50 51 52 53 54 55 56 |
# File 'lib/pact/provider/provider_server_runner.rb', line 49 def stop @logger.info("stopping provider setup server") @server&.shutdown @thread&.join @logger.info("provider setup server stopped") end |