- Added swapfree and swapsize facts
 - Tests will now run correctly for osx swap tests

Signed-off-by: Adrien Thebo <adr...@puppetlabs.com>
---
Local-branch: tickets/next/5011
 lib/facter/memory.rb     |   30 ++++++++++++++++++++++++++++++
 spec/unit/memory_spec.rb |   45 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 75 insertions(+), 0 deletions(-)
 create mode 100644 spec/unit/memory_spec.rb

diff --git a/lib/facter/memory.rb b/lib/facter/memory.rb
index 86adc7f..aa67702 100644
--- a/lib/facter/memory.rb
+++ b/lib/facter/memory.rb
@@ -20,6 +20,36 @@ require 'facter/util/memory'
     end
 end
 
+Facter.add("SwapSize") do
+    confine :kernel => :Darwin
+    setcode do
+       swap = Facter::Util::Resolution.exec('sysctl vm.swapusage')
+       swaptotal = 0
+       if swap =~ /total = (\S+)/ then swaptotal = $1; end
+       swaptotal
+    end
+end
+
+Facter.add("SwapFree") do
+    confine :kernel => :Darwin
+    setcode do
+       swap = Facter::Util::Resolution.exec('sysctl vm.swapusage')
+       swapfree = 0
+       if swap =~ /free = (\S+)/ then swapfree = $1; end
+       swapfree
+    end
+end
+
+Facter.add("SwapEncrypted") do
+    confine :kernel => :Darwin
+    setcode do
+       swap = Facter::Util::Resolution.exec('sysctl vm.swapusage')
+       encrypted = false
+       if swap =~ /\(encrypted\)/ then encrypted = true; end
+       encrypted
+    end
+end
+
 if Facter.value(:kernel) == "AIX" and Facter.value(:id) == "root"
     swap = Facter::Util::Resolution.exec('swap -l')
     swapfree, swaptotal = 0, 0
diff --git a/spec/unit/memory_spec.rb b/spec/unit/memory_spec.rb
new file mode 100644
index 0000000..5cae8cb
--- /dev/null
+++ b/spec/unit/memory_spec.rb
@@ -0,0 +1,45 @@
+#!/usr/bin/env ruby
+
+require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
+
+require 'facter'
+
+describe "Memory facts" do
+    before do
+        Facter.loadfacts
+    end
+
+    after do
+        Facter.clear
+    end
+
+    it "should return the current swap size" do
+
+        Facter.fact(:kernel).stubs(:value).returns("Darwin")
+        Facter::Util::Resolution.stubs(:exec).with('sysctl 
vm.swapusage').returns("vm.swapusage: total = 64.00M  used = 0.00M  free = 
64.00M  (encrypted)")
+        swapusage = "vm.swapusage: total = 64.00M  used = 0.00M  free = 64.00M 
 (encrypted)"
+
+        if swapusage =~ /total = (\S+).*/
+            Facter.fact(:swapfree).value.should == $1
+        end
+    end
+
+    it "should return the current swap free" do
+        Facter.fact(:kernel).stubs(:value).returns("Darwin")
+        Facter::Util::Resolution.stubs(:exec).with('sysctl 
vm.swapusage').returns("vm.swapusage: total = 64.00M  used = 0.00M  free = 
64.00M  (encrypted)")
+        swapusage = "vm.swapusage: total = 64.00M  used = 0.00M  free = 64.00M 
 (encrypted)"
+
+        if swapusage =~ /free = (\S+).*/
+            Facter.fact(:swapfree).value.should == $1
+        end
+    end
+
+    it "should return whether swap is encrypted" do
+        Facter.fact(:kernel).stubs(:value).returns("Darwin")
+        Facter::Util::Resolution.stubs(:exec).with('sysctl 
vm.swapusage').returns("vm.swapusage: total = 64.00M  used = 0.00M  free = 
64.00M  (encrypted)")
+        swapusage = "vm.swapusage: total = 64.00M  used = 0.00M  free = 64.00M 
 (encrypted)"
+
+        swapusage =~ /\(encrypted\)/
+       Facter.fact(:swapencrypted).value.should == true
+    end
+end
-- 
1.7.4.1

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to puppet-dev@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-dev+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to