summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRick Bradley <rick@rickbradley.com>2007-10-15 12:16:48 -0500
committerRick Bradley <rick@rickbradley.com>2007-10-15 12:16:48 -0500
commite56406f15086eb483c00a2904d8a75518412a905 (patch)
tree6a0a062750906cdf92c8975208fc873ae1c0c542
parentec71e05a162ec299982b90707cc16231c608997b (diff)
downloadpuppet-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.rb8
-rw-r--r--lib/puppet/network/http/webrick.rb9
-rw-r--r--spec/unit/network/http/mongrel.rb21
-rw-r--r--spec/unit/network/http/webrick.rb22
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