summaryrefslogtreecommitdiffstats
path: root/spec/unit/network/server.rb
diff options
context:
space:
mode:
authorRick Bradley <rick@rickbradley.com>2008-03-12 22:26:12 -0500
committerLuke Kanies <luke@madstop.com>2008-04-11 13:10:33 -0500
commite86fde2facafd56ee12d7e748b1c8cad916253bf (patch)
tree2d7595566a3f36b5596430c492da3def1b507951 /spec/unit/network/server.rb
parentc2f8c69af368a8ba496da4ef0023ac5f0885e3c0 (diff)
downloadpuppet-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.rb53
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