[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, master, updated. debian/0.24.6-1-356-g5718585

James Turnbull james at lovedthanlost.net
Fri Jan 23 14:20:58 UTC 2009


The following commit has been merged in the master branch:
commit c16a5aee245a9e34e6934debee8e66630aef0fda
Author: Andrew Shafer <andrew at reductivelabs.com>
Date:   Fri Sep 19 17:00:03 2008 -0600

    Only apply splay the first run
    
    Issue 1491

diff --git a/lib/puppet/network/client/master.rb b/lib/puppet/network/client/master.rb
index 6f8e277..5e9422b 100644
--- a/lib/puppet/network/client/master.rb
+++ b/lib/puppet/network/client/master.rb
@@ -199,6 +199,7 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
 
         self.class.instance = self
         @running = false
+        @splayed = false
     end
 
     # Mark that we should restart.  The Puppet module checks whether we're running,
@@ -478,20 +479,19 @@ class Puppet::Network::Client::Master < Puppet::Network::Client
         @lockfile
     end
 
+    def splayed?
+        @splayed
+    end
+
     # Sleep when splay is enabled; else just return.
     def splay
         return unless Puppet[:splay]
+        return if splayed?
 
-        limit = Integer(Puppet[:splaylimit])
-
-        # Pick a splay time and then cache it.
-        unless time = Puppet::Util::Storage.cache(:configuration)[:splay_time]
-            time = rand(limit)
-            Puppet::Util::Storage.cache(:configuration)[:splay_time] = time
-        end
-
+        time = rand(Integer(Puppet[:splaylimit]))
         Puppet.info "Sleeping for %s seconds (splay is enabled)" % time
         sleep(time)
+        @splayed = true
     end
 
     private
diff --git a/spec/unit/network/client/master.rb b/spec/unit/network/client/master.rb
index 754fd05..f55ba31 100755
--- a/spec/unit/network/client/master.rb
+++ b/spec/unit/network/client/master.rb
@@ -397,4 +397,46 @@ describe Puppet::Network::Client::Master, " when using the cached catalog" do
 
         @client.catalog.should equal(ral_config)
     end
+
+    describe "when calling splay" do
+        it "should do nothing if splay is not enabled" do
+            Puppet.stubs(:[]).with(:splay).returns(false)
+            @client.expects(:rand).never
+            @client.send(:splay)
+        end
+
+        describe "when splay is enabled" do
+            before do
+                Puppet.stubs(:[]).with(:splay).returns(true)
+                Puppet.stubs(:[]).with(:splaylimit).returns(42)
+            end
+
+            it "should sleep for a random time" do
+                @client.expects(:rand).with(42).returns(42)
+                @client.expects(:sleep).with(42)
+                @client.send(:splay)
+            end
+
+            it "should inform that it is splayed" do
+                @client.stubs(:rand).with(42).returns(42)
+                @client.stubs(:sleep).with(42)
+                Puppet.expects(:info)
+                @client.send(:splay)
+            end
+
+            it "should set splay = true" do
+                @client.stubs(:rand).with(42).returns(42)
+                @client.stubs(:sleep).with(42)
+                @client.send(:splay)
+                @client.send(:splayed?).should == true
+            end
+
+            it "should do nothing if already splayed" do
+                @client.stubs(:rand).with(42).returns(42).at_most_once
+                @client.stubs(:sleep).with(42).at_most_once
+                @client.send(:splay)
+                @client.send(:splay)
+            end
+        end 
+    end
 end

-- 
Puppet packaging for Debian



More information about the Pkg-puppet-devel mailing list