summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRein Henrichs <rein@puppetlabs.com>2010-08-18 14:45:38 -0700
committerRein Henrichs <rein@puppetlabs.com>2010-08-18 14:45:38 -0700
commit65a5a51a39a3cb43d54aa457450f3b0afce6dc36 (patch)
tree7767d9f15129cd05c3bf72e2e665ce449a758ae5
parent51bcebe38cab6088c901f1006339bbe40a36d161 (diff)
parenta85f2b0f5c43f3b2324d06310a1d673438840e89 (diff)
downloadfacter-65a5a51a39a3cb43d54aa457450f3b0afce6dc36.tar.gz
facter-65a5a51a39a3cb43d54aa457450f3b0afce6dc36.tar.xz
facter-65a5a51a39a3cb43d54aa457450f3b0afce6dc36.zip
Merge branch 'ticket/master/2865-virtual-fact-reporting' into next
-rw-r--r--lib/facter/util/virtual.rb2
-rw-r--r--spec/fixtures/virtual/proc_self_status/vserver_2_1/guest37
-rw-r--r--spec/fixtures/virtual/proc_self_status/vserver_2_1/host36
-rw-r--r--spec/fixtures/virtual/proc_self_status/vserver_2_3/guest39
-rw-r--r--spec/fixtures/virtual/proc_self_status/vserver_2_3/host39
-rw-r--r--spec/unit/util/virtual.rb20
6 files changed, 172 insertions, 1 deletions
diff --git a/lib/facter/util/virtual.rb b/lib/facter/util/virtual.rb
index 5f70d42..bc00e1c 100644
--- a/lib/facter/util/virtual.rb
+++ b/lib/facter/util/virtual.rb
@@ -22,7 +22,7 @@ module Facter::Util::Virtual
def self.vserver?
return false unless FileTest.exists?("/proc/self/status")
txt = File.read("/proc/self/status")
- return true if txt =~ /^(s_context|VxID):[[:blank:]]*[1-9]/
+ return true if txt =~ /^(s_context|VxID):[[:blank:]]*[0-9]/
return false
end
diff --git a/spec/fixtures/virtual/proc_self_status/vserver_2_1/guest b/spec/fixtures/virtual/proc_self_status/vserver_2_1/guest
new file mode 100644
index 0000000..760cc24
--- /dev/null
+++ b/spec/fixtures/virtual/proc_self_status/vserver_2_1/guest
@@ -0,0 +1,37 @@
+Name: cat
+State: R (running)
+SleepAVG: 58%
+Tgid: 24671
+Pid: 24671
+PPid: 24670
+TracerPid: 0
+Uid: 0 0 0 0
+Gid: 0 0 0 0
+FDSize: 32
+Groups: 0
+VmPeak: 1580 kB
+VmSize: 1580 kB
+VmLck: 0 kB
+VmHWM: 372 kB
+VmRSS: 372 kB
+VmData: 152 kB
+VmStk: 88 kB
+VmExe: 16 kB
+VmLib: 1280 kB
+VmPTE: 12 kB
+Threads: 1
+SigQ: 0/4294967295
+SigPnd: 0000000000000000
+ShdPnd: 0000000000000000
+SigBlk: 0000000000000000
+SigIgn: 0000000000000000
+SigCgt: 0000000000000000
+CapInh: 0000000000000000
+CapPrm: 00000000344c04ff
+CapEff: 00000000344c04ff
+s_context: 40074
+ctxflags: 1602020010
+initpid: 0
+ipv4root: 4a00007f/ffffffff 4a24f6d5/00ffffff
+ipv4root_bcast: 00000000
+
diff --git a/spec/fixtures/virtual/proc_self_status/vserver_2_1/host b/spec/fixtures/virtual/proc_self_status/vserver_2_1/host
new file mode 100644
index 0000000..61a0845
--- /dev/null
+++ b/spec/fixtures/virtual/proc_self_status/vserver_2_1/host
@@ -0,0 +1,36 @@
+Name: cat
+State: R (running)
+SleepAVG: 88%
+Tgid: 24625
+Pid: 24625
+PPid: 24618
+TracerPid: 0
+Uid: 47000 47000 47000 47000
+Gid: 4733 4733 4733 4733
+FDSize: 32
+Groups: 0 4733
+VmPeak: 1768 kB
+VmSize: 1768 kB
+VmLck: 0 kB
+VmHWM: 396 kB
+VmRSS: 396 kB
+VmData: 160 kB
+VmStk: 88 kB
+VmExe: 28 kB
+VmLib: 1468 kB
+VmPTE: 12 kB
+Threads: 1
+SigQ: 0/4294967295
+SigPnd: 0000000000000000
+ShdPnd: 0000000000000000
+SigBlk: 0000000000000000
+SigIgn: 0000000000000000
+SigCgt: 0000000000000000
+CapInh: 0000000000000000
+CapPrm: 0000000000000000
+CapEff: 0000000000000000
+s_context: 0
+ctxflags: none
+initpid: none
+ipv4root: 0
+ipv4root_bcast: 0
diff --git a/spec/fixtures/virtual/proc_self_status/vserver_2_3/guest b/spec/fixtures/virtual/proc_self_status/vserver_2_3/guest
new file mode 100644
index 0000000..7567c38
--- /dev/null
+++ b/spec/fixtures/virtual/proc_self_status/vserver_2_3/guest
@@ -0,0 +1,39 @@
+Name: cat
+State: R (running)
+Tgid: 21149
+Pid: 21149
+PPid: 21142
+TracerPid: 0
+Uid: 0 0 0 0
+Gid: 0 0 0 0
+FDSize: 64
+Groups: 0
+VmPeak: 1564 kB
+VmSize: 1564 kB
+VmLck: 0 kB
+VmHWM: 384 kB
+VmRSS: 384 kB
+VmData: 160 kB
+VmStk: 84 kB
+VmExe: 16 kB
+VmLib: 1284 kB
+VmPTE: 20 kB
+Threads: 1
+SigQ: 0/71680
+SigPnd: 0000000000000000
+ShdPnd: 0000000000000000
+SigBlk: 0000000000000000
+SigIgn: 0000000000000000
+SigCgt: 0000000000000000
+CapInh: 0000000000000000
+CapPrm: fffffffffffffeff
+CapEff: fffffffffffffeff
+CapBnd: fffffffffffffeff
+Cpus_allowed: ff
+Cpus_allowed_list: 0-7
+Mems_allowed: 1
+Mems_allowed_list: 0
+VxID: 40128
+NxID: 40128
+voluntary_ctxt_switches: 1
+nonvoluntary_ctxt_switches: 0
diff --git a/spec/fixtures/virtual/proc_self_status/vserver_2_3/host b/spec/fixtures/virtual/proc_self_status/vserver_2_3/host
new file mode 100644
index 0000000..15b17e9
--- /dev/null
+++ b/spec/fixtures/virtual/proc_self_status/vserver_2_3/host
@@ -0,0 +1,39 @@
+Name: cat
+State: R (running)
+Tgid: 21074
+Pid: 21074
+PPid: 21020
+TracerPid: 0
+Uid: 47000 47000 47000 47000
+Gid: 4733 4733 4733 4733
+FDSize: 64
+Groups: 0 4733
+VmPeak: 3800 kB
+VmSize: 3800 kB
+VmLck: 0 kB
+VmHWM: 468 kB
+VmRSS: 468 kB
+VmData: 176 kB
+VmStk: 84 kB
+VmExe: 32 kB
+VmLib: 1432 kB
+VmPTE: 28 kB
+Threads: 1
+SigQ: 0/71680
+SigPnd: 0000000000000000
+ShdPnd: 0000000000000000
+SigBlk: 0000000000000000
+SigIgn: 0000000000000000
+SigCgt: 0000000000000000
+CapInh: 0000000000000000
+CapPrm: 0000000000000000
+CapEff: 0000000000000000
+CapBnd: fffffffffffffeff
+Cpus_allowed: ff
+Cpus_allowed_list: 0-7
+Mems_allowed: 1
+Mems_allowed_list: 0
+VxID: 0
+NxID: 0
+voluntary_ctxt_switches: 2
+nonvoluntary_ctxt_switches: 0
diff --git a/spec/unit/util/virtual.rb b/spec/unit/util/virtual.rb
index 1e31a2f..2477ad6 100644
--- a/spec/unit/util/virtual.rb
+++ b/spec/unit/util/virtual.rb
@@ -57,6 +57,26 @@ describe Facter::Util::Virtual do
Facter::Util::Virtual.should_not be_vserver
end
+ fixture_path = File.join(SPECDIR, 'fixtures', 'virtual', 'proc_self_status')
+
+ test_cases = [
+ [File.join(fixture_path, 'vserver_2_1', 'guest'), true, 'vserver 2.1 guest'],
+ [File.join(fixture_path, 'vserver_2_1', 'host'), true, 'vserver 2.1 host'],
+ [File.join(fixture_path, 'vserver_2_3', 'guest'), true, 'vserver 2.3 guest'],
+ [File.join(fixture_path, 'vserver_2_3', 'host'), true, 'vserver 2.3 host']
+ ]
+
+ test_cases.each do |status_file, expected, description|
+ context "with /proc/self/status from #{description}" do
+ it "should detect vserver as #{expected.inspect}" do
+ status = File.read(status_file)
+ FileTest.stubs(:exists?).with("/proc/self/status").returns(true)
+ File.stubs(:read).with("/proc/self/status").returns(status)
+ Facter::Util::Virtual.vserver?.should == expected
+ end
+ end
+ end
+
it "should identify vserver_host when /proc/virtual exists" do
Facter::Util::Virtual.expects(:vserver?).returns(true)
FileTest.stubs(:exists?).with("/proc/virtual").returns(true)