summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/facter/memory.rb30
-rw-r--r--spec/unit/memory_spec.rb45
2 files changed, 75 insertions, 0 deletions
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