diff options
| author | Rick Bradley <rick@rickbradley.com> | 2008-03-12 22:26:12 -0500 |
|---|---|---|
| committer | Luke Kanies <luke@madstop.com> | 2008-04-11 13:10:33 -0500 |
| commit | e86fde2facafd56ee12d7e748b1c8cad916253bf (patch) | |
| tree | 2d7595566a3f36b5596430c492da3def1b507951 /spec/unit/network/server.rb | |
| parent | c2f8c69af368a8ba496da4ef0023ac5f0885e3c0 (diff) | |
| download | puppet-e86fde2facafd56ee12d7e748b1c8cad916253bf.tar.gz puppet-e86fde2facafd56ee12d7e748b1c8cad916253bf.tar.xz puppet-e86fde2facafd56ee12d7e748b1c8cad916253bf.zip | |
This is the first version where mongrel and webrick are reliably startable and stoppable via Puppet::Network::Server.
Added a network/server integration spec, testing startup, shutdown, reachability, and collision of webrick and mongrel servers in the new network code.
Converted Puppet::Network::HTTP::Handler class to a module, as mongrel Handler should be subclassed; converting subclasses to include the module instead.
Mongrel will actually stop if you .stop it, graceful_shutdown didn't seem quite so reliable.
Webrick requires running in its own Thread to avoid hanging the entire process; this requires introduction of a Mutex to make things safe.
We're only supporting the REST protocol. Made this explicit.
Fixed http server setup args, w/ specs, ah the glory of integration testing.
Diffstat (limited to 'spec/unit/network/server.rb')
| -rw-r--r-- | spec/unit/network/server.rb | 53 |
1 files changed, 44 insertions, 9 deletions
diff --git a/spec/unit/network/server.rb b/spec/unit/network/server.rb index 3e29807ad..e4afbc3c2 100644 --- a/spec/unit/network/server.rb +++ b/spec/unit/network/server.rb @@ -161,8 +161,12 @@ describe Puppet::Network::Server, "in general" do Proc.new { @server2.unregister(:bar) }.should raise_error(ArgumentError) end - it "should provide a means of determining which style of service is being offered to clients" do - @server.protocols.should == [] + it "should provide a means of determining which protocols are in use" do + @server.should respond_to(:protocols) + end + + it "should only support the REST protocol at this time" do + @server.protocols.should == [ :rest ] end it "should provide a means of determining the listening address" do @@ -230,23 +234,54 @@ describe Puppet::Network::Server, "when listening is being turned on" do @mock_http_server_class = mock('http server class') Puppet::Network::HTTP.stubs(:server_class_by_type).returns(@mock_http_server_class) Puppet.stubs(:[]).with(:servertype).returns(:suparserver) - @server = Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337) + @server = Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337, :handlers => [:node]) @mock_http_server = mock('http server') @mock_http_server.stubs(:listen) end - it "should fetch an instance of an HTTP server when listening is turned on" do - mock_http_server_class = mock('http server class') - mock_http_server_class.expects(:new).returns(@mock_http_server) - @server.expects(:http_server_class).returns(mock_http_server_class) + it "should fetch an instance of an HTTP server" do + @server.stubs(:http_server_class).returns(@mock_http_server_class) + @mock_http_server_class.expects(:new).returns(@mock_http_server) @server.listen end - it "should cause the HTTP server to listen when listening is turned on" do + it "should cause the HTTP server to listen" do + @server.stubs(:http_server).returns(@mock_http_server) @mock_http_server.expects(:listen) - @server.expects(:http_server).returns(@mock_http_server) @server.listen end + + it "should pass the listening address to the HTTP server" do + @server.stubs(:http_server).returns(@mock_http_server) + @mock_http_server.expects(:listen).with do |args| + args[:address] == '127.0.0.1' + end + @server.listen + end + + it "should pass the listening port to the HTTP server" do + @server.stubs(:http_server).returns(@mock_http_server) + @mock_http_server.expects(:listen).with do |args| + args[:port] == 31337 + end + @server.listen + end + + it "should pass a list of handlers to the HTTP server" do + @server.stubs(:http_server).returns(@mock_http_server) + @mock_http_server.expects(:listen).with do |args| + args[:handlers] == [ :node ] + end + @server.listen + end + + it "should pass a list of protocols to the HTTP server" do + @server.stubs(:http_server).returns(@mock_http_server) + @mock_http_server.expects(:listen).with do |args| + args[:protocols] == [ :rest ] + end + @server.listen + end end describe Puppet::Network::Server, "when listening is being turned off" do |
