[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, experimental, updated. debian/2.6.8-1-844-g7ec39d5

Nick Lewis nick at puppetlabs.com
Tue May 10 08:12:42 UTC 2011


The following commit has been merged in the experimental branch:
commit e5609ffefb4132049a969d88f74138058fe78694
Author: Markus Roberts <Markus at reality.com>
Date:   Fri Oct 22 07:09:30 2010 -0700

    Step towards #5027 -- add Logging#deprication_warning facility
    
    This commit adds a method analogous to Puppet.warn which 1) only logs each
    message the first time it is received and 2) only logs the first 100 messages
    it receives.  Messages are logged via warn.
    
    This could easily be made more flexible by making the hard limit and effective
    log level user settable, if desired.

diff --git a/lib/puppet/util/logging.rb b/lib/puppet/util/logging.rb
index bc52b17..b6845b8 100644
--- a/lib/puppet/util/logging.rb
+++ b/lib/puppet/util/logging.rb
@@ -15,6 +15,17 @@ module Puppet::Util::Logging
     end
   end
 
+  def deprication_warning(message)
+    $deprication_warnings ||= Hash.new(0)
+    if $deprication_warnings.length < 100 and ($deprication_warnings[message] += 1) == 1
+      warn message
+    end
+  end
+
+  def clear_deprication_warnings
+    $deprication_warnings.clear if $deprication_warnings
+  end
+
   private
 
   def is_resource?
diff --git a/spec/unit/util/logging_spec.rb b/spec/unit/util/logging_spec.rb
index edc88f1..1585c3e 100755
--- a/spec/unit/util/logging_spec.rb
+++ b/spec/unit/util/logging_spec.rb
@@ -92,4 +92,29 @@ describe Puppet::Util::Logging do
       end
     end
   end
+
+  describe "when sending a deprication warning" do
+    before do
+      @logger.clear_deprication_warnings
+    end
+
+    it "should the message with warn" do
+      @logger.expects(:warn).with('foo')
+      @logger.deprication_warning 'foo'
+    end
+
+    it "should only log each unique message once" do
+      @logger.expects(:warn).with('foo').once
+      5.times { @logger.deprication_warning 'foo' }
+    end
+
+    it "should only log the first 100 messages" do
+      (1..100).each { |i|
+          @logger.expects(:warn).with(i).once
+          @logger.deprication_warning i
+      }
+      @logger.expects(:warn).with(101).never
+      @logger.deprication_warning 101
+    end
+  end
 end

-- 
Puppet packaging for Debian



More information about the Pkg-puppet-devel mailing list