diff options
| author | Rick Bradley <rick@rickbradley.com> | 2007-10-15 12:16:48 -0500 |
|---|---|---|
| committer | Rick Bradley <rick@rickbradley.com> | 2007-10-15 12:16:48 -0500 |
| commit | e56406f15086eb483c00a2904d8a75518412a905 (patch) | |
| tree | 6a0a062750906cdf92c8975208fc873ae1c0c542 | |
| parent | ec71e05a162ec299982b90707cc16231c608997b (diff) | |
| download | puppet-e56406f15086eb483c00a2904d8a75518412a905.tar.gz puppet-e56406f15086eb483c00a2904d8a75518412a905.tar.xz puppet-e56406f15086eb483c00a2904d8a75518412a905.zip | |
Implementing listening state tracking for webrick and mongrel.
| -rw-r--r-- | lib/puppet/network/http/mongrel.rb | 8 | ||||
| -rw-r--r-- | lib/puppet/network/http/webrick.rb | 9 | ||||
| -rw-r--r-- | spec/unit/network/http/mongrel.rb | 21 | ||||
| -rw-r--r-- | spec/unit/network/http/webrick.rb | 22 |
4 files changed, 54 insertions, 6 deletions
diff --git a/lib/puppet/network/http/mongrel.rb b/lib/puppet/network/http/mongrel.rb index dbdd72d42..49449cf59 100644 --- a/lib/puppet/network/http/mongrel.rb +++ b/lib/puppet/network/http/mongrel.rb @@ -7,15 +7,19 @@ class Puppet::Network::HTTP::Mongrel def listen(args = {}) raise ArgumentError if args.keys.empty? - raise "Mongrel server is already listening" if @listening + raise "Mongrel server is already listening" if listening? @server = Mongrel::HttpServer.new("0.0.0.0", "3000") @server.run @listening = true end def unlisten - raise "Mongrel server is not listening" unless @listening + raise "Mongrel server is not listening" unless listening? @server.graceful_shutdown @listening = false end + + def listening? + @listening + end end diff --git a/lib/puppet/network/http/webrick.rb b/lib/puppet/network/http/webrick.rb index 77e55a224..ffea60eba 100644 --- a/lib/puppet/network/http/webrick.rb +++ b/lib/puppet/network/http/webrick.rb @@ -8,14 +8,19 @@ class Puppet::Network::HTTP::WEBRick < WEBrick::HTTPServer def listen(args = {}) raise ArgumentError if args.keys.empty? - raise "WEBRick server is already listening" if @listening + raise "WEBRick server is already listening" if listening? # TODO / FIXME: this should be moved out of the wacky Puppet global namespace! Puppet.start @listening = true end def unlisten - raise "WEBRick server is not listening" unless @listening + raise "WEBRick server is not listening" unless listening? shutdown + @listening = false + end + + def listening? + @listening end end diff --git a/spec/unit/network/http/mongrel.rb b/spec/unit/network/http/mongrel.rb index 3e40efe79..f591a7fe2 100644 --- a/spec/unit/network/http/mongrel.rb +++ b/spec/unit/network/http/mongrel.rb @@ -6,6 +6,12 @@ require File.dirname(__FILE__) + '/../../../spec_helper' require 'puppet/network/http' +describe Puppet::Network::HTTP::Mongrel, "after initializing" do + it "should not be listening" do + Puppet::Network::HTTP::Mongrel.new.should_not be_listening + end +end + describe Puppet::Network::HTTP::Mongrel, "when turning on listening" do before do @server = Puppet::Network::HTTP::Mongrel.new @@ -26,6 +32,14 @@ describe Puppet::Network::HTTP::Mongrel, "when turning on listening" do Mongrel::HttpServer.expects(:new).returns(mock_mongrel) @server.listen(:foo => :bar) end + + it "should be listening" do + mock_mongrel = mock('mongrel httpserver') + mock_mongrel.expects(:run) + Mongrel::HttpServer.expects(:new).returns(mock_mongrel) + @server.listen(:foo => :bar) + @server.should be_listening + end it "should instantiate a specific handler (mongrel+rest, e.g.) for each handler, for each protocol being served (xmlrpc, rest, etc.)" it "should mount handlers on a mongrel path" @@ -37,6 +51,7 @@ describe Puppet::Network::HTTP::WEBRick, "when turning off listening" do before do @mock_mongrel = mock('mongrel httpserver') @mock_mongrel.stubs(:run) + @mock_mongrel.stubs(:graceful_shutdown) Mongrel::HttpServer.stubs(:new).returns(@mock_mongrel) @server = Puppet::Network::HTTP::Mongrel.new end @@ -50,4 +65,10 @@ describe Puppet::Network::HTTP::WEBRick, "when turning off listening" do @mock_mongrel.expects(:graceful_shutdown) @server.unlisten end + + it "should not be listening" do + @server.listen(:foo => :bar) + @server.unlisten + @server.should_not be_listening + end end diff --git a/spec/unit/network/http/webrick.rb b/spec/unit/network/http/webrick.rb index d162288fc..f414ca11d 100644 --- a/spec/unit/network/http/webrick.rb +++ b/spec/unit/network/http/webrick.rb @@ -6,13 +6,19 @@ require File.dirname(__FILE__) + '/../../../spec_helper' require 'puppet/network/http' +describe Puppet::Network::HTTP::WEBRick, "after initializing" do + it "should not be listening" do + Puppet::Network::HTTP::WEBRick.new.should_not be_listening + end +end + describe Puppet::Network::HTTP::WEBRick, "when turning on listening" do before do @server = Puppet::Network::HTTP::WEBRick.new + Puppet.stubs(:start) end it "should fail if already listening" do - Puppet.stubs(:start) @server.listen(:foo => :bar) Proc.new { @server.listen(:foo => :bar) }.should raise_error(RuntimeError) end @@ -25,6 +31,11 @@ describe Puppet::Network::HTTP::WEBRick, "when turning on listening" do Puppet.expects(:start) @server.listen(:foo => :bar) end + + it "should be listening" do + @server.listen(:foo => :bar) + @server.should be_listening + end it "should instantiate a specific handler (webrick+rest, e.g.) for each handler, for each protocol being served (xmlrpc, rest, etc.)" it "should mount handlers on a webrick path" @@ -36,6 +47,8 @@ end describe Puppet::Network::HTTP::WEBRick, "when turning off listening" do before do @server = Puppet::Network::HTTP::WEBRick.new + @server.stubs(:shutdown) + Puppet.stubs(:start).returns(true) end it "should fail unless listening" do @@ -43,10 +56,15 @@ describe Puppet::Network::HTTP::WEBRick, "when turning off listening" do end it "should order webrick server to stop" do - Puppet.stubs(:start).returns(true) @server.should respond_to(:shutdown) @server.expects(:shutdown) @server.listen(:foo => :bar) @server.unlisten end + + it "should no longer be listening" do + @server.listen(:foo => :bar) + @server.unlisten + @server.should_not be_listening + end end |
