[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, experimental, updated. debian/2.6.8-1-844-g7ec39d5
Dominic Cleal
dcleal at redhat.com
Tue May 10 08:05:00 UTC 2011
The following commit has been merged in the experimental branch:
commit ef9e929a8028272ef88903be50cdf42ea924163d
Author: Dominic Cleal <dcleal at redhat.com>
Date: Fri Feb 18 09:38:34 2011 +0000
(#6324) Add spec for SMF service provider
diff --git a/spec/unit/provider/service/smf_spec.rb b/spec/unit/provider/service/smf_spec.rb
new file mode 100755
index 0000000..4c52ed1
--- /dev/null
+++ b/spec/unit/provider/service/smf_spec.rb
@@ -0,0 +1,133 @@
+#!/usr/bin/env ruby
+#
+# Unit testing for the SMF service Provider
+#
+# author Dominic Cleal
+#
+require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper')
+
+provider_class = Puppet::Type.type(:service).provider(:smf)
+
+describe provider_class do
+
+ before(:each) do
+ # Create a mock resource
+ @resource = stub 'resource'
+ @provider = provider_class.new(@resource)
+
+ @resource.stubs(:[]).returns(nil)
+ @resource.stubs(:[]).with(:name).returns "/system/myservice"
+ @resource.stubs(:[]).with(:ensure).returns :enabled
+ @resource.stubs(:[]).with(:enable).returns :true
+ @resource.stubs(:name).returns "/system/myservice"
+ @resource.stubs(:ref).returns "Service[/system/myservice]"
+ @provider.stubs(:resource).returns @resource
+
+ FileTest.stubs(:file?).with('/usr/sbin/svcadm').returns true
+ FileTest.stubs(:executable?).with('/usr/sbin/svcadm').returns true
+ FileTest.stubs(:file?).with('/usr/bin/svcs').returns true
+ FileTest.stubs(:executable?).with('/usr/bin/svcs').returns true
+ end
+
+ it "should have a restart method" do
+ @provider.should respond_to(:restart)
+ end
+
+ it "should have a restartcmd method" do
+ @provider.should respond_to(:restartcmd)
+ end
+
+ it "should have a start method" do
+ @provider.should respond_to(:start)
+ end
+
+ it "should have a stop method" do
+ @provider.should respond_to(:stop)
+ end
+
+ it "should have an enabled? method" do
+ @provider.should respond_to(:enabled?)
+ end
+
+ it "should have an enable method" do
+ @provider.should respond_to(:enable)
+ end
+
+ it "should have a disable method" do
+ @provider.should respond_to(:disable)
+ end
+
+ describe "when checking status" do
+ it "should call the external command 'svcs /system/myservice' once" do
+ @provider.expects(:svcs).with('-H', '-o', 'state,nstate', "/system/myservice").returns("online\t-")
+ @provider.status
+ end
+ it "should return stopped if svcs can't find the service" do
+ @provider.stubs(:svcs).raises(Puppet::ExecutionFailure.new("no svc found"))
+ @provider.status.should == :stopped
+ end
+ it "should return running if online in svcs output" do
+ @provider.stubs(:svcs).returns("online\t-")
+ @provider.status.should == :running
+ end
+ it "should return stopped if disabled in svcs output" do
+ @provider.stubs(:svcs).returns("disabled\t-")
+ @provider.status.should == :stopped
+ end
+ it "should return maintenance if in maintenance in svcs output" do
+ @provider.stubs(:svcs).returns("maintenance\t-")
+ @provider.status.should == :maintenance
+ end
+ it "should return target state if transitioning in svcs output" do
+ @provider.stubs(:svcs).returns("online\tdisabled")
+ @provider.status.should == :stopped
+ end
+ it "should throw error if it's a legacy service in svcs output" do
+ @provider.stubs(:svcs).returns("legacy_run\t-")
+ lambda { @provider.status }.should raise_error(Puppet::Error, "Cannot manage legacy services through SMF")
+ end
+ end
+
+ describe "when starting" do
+ it "should enable the service if it is not enabled" do
+ @provider.expects(:status).returns :stopped
+ @provider.expects(:texecute)
+ @provider.start
+ end
+
+ it "should always execute external command 'svcadm enable /system/myservice'" do
+ @provider.stubs(:status).returns :running
+ @provider.expects(:texecute).with(:start, ["/usr/sbin/svcadm", :enable, "/system/myservice"], true)
+ @provider.start
+ end
+
+ it "should execute external command 'svcadm clear /system/myservice' if in maintenance" do
+ @provider.stubs(:status).returns :maintenance
+ @provider.expects(:texecute).with(:start, ["/usr/sbin/svcadm", :clear, "/system/myservice"], true)
+ @provider.start
+ end
+
+ it "should import the manifest if service is not found" do
+ @resource.stubs(:[]).with(:manifest).returns("/tmp/myservice.xml")
+ $CHILD_STATUS.stubs(:exitstatus).returns(1)
+ @provider.expects(:svccfg).with(:import, "/tmp/myservice.xml")
+ @provider.expects(:texecute).with(:start, ["/usr/sbin/svcadm", :enable, "/system/myservice"], true)
+ @provider.start
+ end
+ end
+
+ describe "when stopping" do
+ it "should execute external command 'svcadm disable /system/myservice'" do
+ @provider.expects(:texecute).with(:stop, ["/usr/sbin/svcadm", :disable, "/system/myservice"], true)
+ @provider.stop
+ end
+ end
+
+ describe "when restarting" do
+ it "should call 'svcadm restart /system/myservice'" do
+ @provider.expects(:texecute).with(:restart, ["/usr/sbin/svcadm", :restart, "/system/myservice"], true)
+ @provider.restart
+ end
+ end
+
+end
--
Puppet packaging for Debian
More information about the Pkg-puppet-devel
mailing list