summaryrefslogtreecommitdiff
path: root/spec/unit/plugins/aix/virtualization_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/unit/plugins/aix/virtualization_spec.rb')
-rw-r--r--spec/unit/plugins/aix/virtualization_spec.rb272
1 files changed, 269 insertions, 3 deletions
diff --git a/spec/unit/plugins/aix/virtualization_spec.rb b/spec/unit/plugins/aix/virtualization_spec.rb
index 2cafabbf..271c930f 100644
--- a/spec/unit/plugins/aix/virtualization_spec.rb
+++ b/spec/unit/plugins/aix/virtualization_spec.rb
@@ -1,6 +1,7 @@
#
-# Author:: Julian C. Dunn (<jdunn@getchef.com>)
-# Copyright:: Copyright (c) 2014 Chef Software, Inc.
+# Author:: Julian C. Dunn (<jdunn@getchef.comm>)
+# Author:: Isa Farnik (<isa@chef.io>)
+# Copyright:: Copyright (c) 2013-2015 Chef Software, Inc.
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,19 +21,284 @@ require 'spec_helper'
describe Ohai::System, "AIX virtualization plugin" do
context "inside an LPAR" do
+
let(:plugin) do
p = get_plugin("aix/virtualization")
allow(p).to receive(:collect_os).and_return(:aix)
allow(p).to receive(:shell_out).with("uname -L").and_return(mock_shell_out(0, "29 l273pp027", nil))
allow(p).to receive(:shell_out).with("uname -W").and_return(mock_shell_out(0, "0", nil))
- p.run
+ allow(p).to receive(:shell_out).with("lswpar -L").and_return(mock_shell_out(0, @lswpar_L, nil))
p
end
+ before(:each) do
+ @lswpar_L = <<-LSWPAR_L
+=================================================================
+applejack-541ba3 - Active
+=================================================================
+GENERAL
+Type: S
+RootVG WPAR: no
+Owner: root
+Hostname: applejack-pony-541ba3.ponyville.com
+WPAR-Specific Routing: yes
+Virtual IP WPAR:
+Directory: /wpars/applejack-541ba3
+Start/Stop Script:
+Auto: no
+Private /usr: yes
+Checkpointable: no
+Application:
+UUID: 541ba314-c7ca-4f67-bc6e-a10d5eaa8541
+
+NETWORK
+Interface Address(6) Mask/Prefix Broadcast
+-----------------------------------------------------------------
+en0 192.168.0.231 255.255.252.0 192.168.0.255
+lo0 127.0.0.1 255.0.0.0 127.255.255.255
+
+USER-SPECIFIED ROUTES
+Type Destination Gateway Interface
+-----------------------------------------------------------------
+ default 192.168.0.1 en0
+
+FILE SYSTEMS
+MountPoint Device Vfs Nodename Options
+-----------------------------------------------------------------
+/wpars/sink-thinker-5... /dev/fslv00 jfs2 log=NULL
+/wpars/sink-thinker-5... /dev/fslv01 jfs2 log=NULL
+/wpars/sink-thinker-5... /dev/fslv02 jfs2 log=NULL
+/wpars/sink-thinker-5... /proc namefs rw
+/wpars/sink-thinker-5... /dev/fslv03 jfs2 log=NULL
+/wpars/sink-thinker-5... /dev/fslv04 jfs2 log=NULL
+/wpars/sink-thinker-5... /dev/fslv05 jfs2 log=NULL
+
+RESOURCE CONTROLS
+Active: yes
+Resource Set:
+CPU Shares: unlimited
+CPU Limits: 0%-100%,100%
+Memory Shares: unlimited
+Memory Limits: 0%-100%,100%
+Per-Process Virtual Memory Limit: unlimited
+Total Virtual Memory Limit: unlimited
+Total Processes: unlimited
+Total Threads: unlimited
+Total PTYs: unlimited
+Total Large Pages: unlimited
+Max Message Queue IDs: 100%
+Max Semaphore IDs: 100%
+Max Shared Memory IDs: 100%
+Max Pinned Memory: 100%
+
+OPERATION
+Operation: none
+Process ID:
+Start Time:
+
+SECURITY SETTINGS
+Privileges: PV_AU_,PV_AU_ADD,PV_AU_ADMIN,PV_AU_PROC,PV_AU_READ,
+ PV_AU_WRITE,PV_AZ_ADMIN,PV_AZ_CHECK,PV_AZ_READ,PV_AZ_ROOT,
+ PV_DAC_,PV_DAC_GID,PV_DAC_O,PV_DAC_R,PV_DAC_RID,PV_DAC_UID,
+ PV_DAC_W,PV_DAC_X,PV_DEV_CONFIG,PV_DEV_QUERY,PV_FS_CHOWN,
+ PV_FS_CHROOT,PV_FS_CNTL,PV_FS_LINKDIR,PV_FS_MKNOD,
+ PV_FS_MOUNT,PV_FS_PDMODE,PV_FS_QUOTA,PV_KER_ACCT,
+ PV_KER_CONF,PV_KER_DR,PV_KER_EWLM,PV_KER_EXTCONF,
+ PV_KER_IPC,PV_KER_IPC_O,PV_KER_IPC_R,PV_KER_IPC_W,
+ PV_KER_NFS,PV_KER_RAC,PV_KER_RAS_ERR,PV_KER_REBOOT,
+ PV_NET_PORT,PV_PROC_CKPT,PV_PROC_CORE,PV_PROC_CRED,
+ PV_PROC_ENV,PV_PROC_PRIO,PV_PROC_PDMODE,PV_PROC_RAC,
+ PV_PROC_RTCLK,PV_PROC_SIG,PV_PROC_TIMER,PV_PROC_VARS,
+ PV_PROC_PRIV,PV_SU_UID,PV_TCB,PV_TP,PV_TP_SET,PV_MIC,
+ PV_MIC_CL,PV_LAB_,PV_LAB_CL,PV_LAB_CLTL,PV_LAB_LEF,
+ PV_LAB_SLDG,PV_LAB_SLDG_STR,PV_LAB_SL_FILE,PV_LAB_SL_PROC,
+ PV_LAB_SL_SELF,PV_LAB_SLUG,PV_LAB_SLUG_STR,PV_LAB_TL,
+ PV_MAC_,PV_MAC_CL,PV_MAC_R,PV_MAC_R_CL,PV_MAC_R_STR,
+ PV_MAC_R_PROC,PV_MAC_W,PV_MAC_W_CL,PV_MAC_W_DN,PV_MAC_W_UP,
+ PV_MAC_W_PROC,PV_MAC_OVRRD,PV_KER_SECCONFIG,
+ PV_PROBEVUE_TRC_USER,PV_PROBEVUE_TRC_USER_SELF,PV_KER_LVM
+
+DEVICE EXPORTS
+Name Type Virtual Device RootVG Status
+-----------------------------------------------------------------
+/dev/null pseudo EXPORTED
+/dev/tty pseudo EXPORTED
+/dev/console pseudo EXPORTED
+/dev/zero pseudo EXPORTED
+/dev/clone pseudo EXPORTED
+/dev/sad clone EXPORTED
+/dev/xti/tcp clone EXPORTED
+/dev/xti/tcp6 clone EXPORTED
+/dev/xti/udp clone EXPORTED
+/dev/xti/udp6 clone EXPORTED
+/dev/xti/unixdg clone EXPORTED
+/dev/xti/unixst clone EXPORTED
+/dev/error pseudo EXPORTED
+/dev/errorctl pseudo EXPORTED
+/dev/audit pseudo EXPORTED
+/dev/nvram pseudo EXPORTED
+
+=================================================================
+fluttershy-5c969f - Active
+=================================================================
+GENERAL
+Type: S
+RootVG WPAR: no
+Owner: root
+Hostname: fluttershy-pony-5c969f.ponyville.com
+WPAR-Specific Routing: yes
+Virtual IP WPAR:
+Directory: /wpars/fluttershy-5c969f
+Start/Stop Script:
+Auto: no
+Private /usr: yes
+Checkpointable: no
+Application:
+UUID: 6f1fd4be-8be5-4627-8ec0-3a8739cbd9e2
+
+NETWORK
+Interface Address(6) Mask/Prefix Broadcast
+-----------------------------------------------------------------
+en0 192.168.0.18 255.255.252.0 192.168.0.255
+lo0 127.0.0.1 255.0.0.0 127.255.255.255
+
+USER-SPECIFIED ROUTES
+Type Destination Gateway Interface
+-----------------------------------------------------------------
+ default 192.168.0.1 en0
+
+FILE SYSTEMS
+MountPoint Device Vfs Nodename Options
+-----------------------------------------------------------------
+/wpars/toolchain-test... /dev/fslv07 jfs2 log=NULL
+/wpars/toolchain-test... /dev/fslv08 jfs2 log=NULL
+/wpars/toolchain-test... /dev/fslv09 jfs2 log=NULL
+/wpars/toolchain-test... /proc namefs rw
+/wpars/toolchain-test... /dev/fslv10 jfs2 log=NULL
+/wpars/toolchain-test... /dev/fslv11 jfs2 log=NULL
+/wpars/toolchain-test... /dev/fslv12 jfs2 log=NULL
+
+RESOURCE CONTROLS
+Active: yes
+Resource Set:
+CPU Shares: unlimited
+CPU Limits: 0%-100%,100%
+Memory Shares: unlimited
+Memory Limits: 0%-100%,100%
+Per-Process Virtual Memory Limit: unlimited
+Total Virtual Memory Limit: unlimited
+Total Processes: unlimited
+Total Threads: unlimited
+Total PTYs: unlimited
+Total Large Pages: unlimited
+Max Message Queue IDs: 100%
+Max Semaphore IDs: 100%
+Max Shared Memory IDs: 100%
+Max Pinned Memory: 100%
+
+OPERATION
+Operation: none
+Process ID:
+Start Time:
+
+SECURITY SETTINGS
+Privileges: PV_AU_,PV_AU_ADD,PV_AU_ADMIN,PV_AU_PROC,PV_AU_READ,
+ PV_AU_WRITE,PV_AZ_ADMIN,PV_AZ_CHECK,PV_AZ_READ,PV_AZ_ROOT,
+ PV_DAC_,PV_DAC_GID,PV_DAC_O,PV_DAC_R,PV_DAC_RID,PV_DAC_UID,
+ PV_DAC_W,PV_DAC_X,PV_DEV_CONFIG,PV_DEV_QUERY,PV_FS_CHOWN,
+ PV_FS_CHROOT,PV_FS_CNTL,PV_FS_LINKDIR,PV_FS_MKNOD,
+ PV_FS_MOUNT,PV_FS_PDMODE,PV_FS_QUOTA,PV_KER_ACCT,
+ PV_KER_CONF,PV_KER_DR,PV_KER_EWLM,PV_KER_EXTCONF,
+ PV_KER_IPC,PV_KER_IPC_O,PV_KER_IPC_R,PV_KER_IPC_W,
+ PV_KER_NFS,PV_KER_RAC,PV_KER_RAS_ERR,PV_KER_REBOOT,
+ PV_NET_PORT,PV_PROC_CKPT,PV_PROC_CORE,PV_PROC_CRED,
+ PV_PROC_ENV,PV_PROC_PRIO,PV_PROC_PDMODE,PV_PROC_RAC,
+ PV_PROC_RTCLK,PV_PROC_SIG,PV_PROC_TIMER,PV_PROC_VARS,
+ PV_PROC_PRIV,PV_SU_UID,PV_TCB,PV_TP,PV_TP_SET,PV_MIC,
+ PV_MIC_CL,PV_LAB_,PV_LAB_CL,PV_LAB_CLTL,PV_LAB_LEF,
+ PV_LAB_SLDG,PV_LAB_SLDG_STR,PV_LAB_SL_FILE,PV_LAB_SL_PROC,
+ PV_LAB_SL_SELF,PV_LAB_SLUG,PV_LAB_SLUG_STR,PV_LAB_TL,
+ PV_MAC_,PV_MAC_CL,PV_MAC_R,PV_MAC_R_CL,PV_MAC_R_STR,
+ PV_MAC_R_PROC,PV_MAC_W,PV_MAC_W_CL,PV_MAC_W_DN,PV_MAC_W_UP,
+ PV_MAC_W_PROC,PV_MAC_OVRRD,PV_KER_SECCONFIG,
+ PV_PROBEVUE_TRC_USER,PV_PROBEVUE_TRC_USER_SELF,PV_KER_LVM
+
+DEVICE EXPORTS
+Name Type Virtual Device RootVG Status
+-----------------------------------------------------------------
+/dev/null pseudo EXPORTED
+/dev/tty pseudo EXPORTED
+/dev/console pseudo EXPORTED
+/dev/zero pseudo EXPORTED
+/dev/clone pseudo EXPORTED
+/dev/sad clone EXPORTED
+/dev/xti/tcp clone EXPORTED
+/dev/xti/tcp6 clone EXPORTED
+/dev/xti/udp clone EXPORTED
+/dev/xti/udp6 clone EXPORTED
+/dev/xti/unixdg clone EXPORTED
+/dev/xti/unixst clone EXPORTED
+/dev/error pseudo EXPORTED
+/dev/errorctl pseudo EXPORTED
+/dev/audit pseudo EXPORTED
+/dev/nvram pseudo EXPORTED
+
+
+LSWPAR_L
+
+ end
+
it "uname -L detects the LPAR number and name" do
+ plugin.run
expect(plugin[:virtualization][:lpar_no]).to eq("29")
expect(plugin[:virtualization][:lpar_name]).to eq("l273pp027")
end
+
+ context 'when WPARs exist on the LPAR' do
+ before do
+ plugin.run
+ end
+
+ let(:wpar1) do
+ plugin[:virtualization][:wpars]['applejack-541ba3']
+ end
+
+ let(:wpar2) do
+ plugin[:virtualization][:wpars]['fluttershy-5c969f']
+ end
+
+ it 'detects all WPARs present (2)' do
+ expect(plugin[:virtualization][:wpars].length).to eq(2)
+ end
+
+ context 'when collecting WPAR info' do
+ it 'finds the WPAR\'s hostname correctly' do
+ expect(wpar1[:hostname]).to eq("applejack-pony-541ba3.ponyville.com")
+ expect(wpar2[:hostname]).to eq("fluttershy-pony-5c969f.ponyville.com")
+ end
+
+ it 'finds the WPAR\'s IP correctly' do
+ expect(wpar1[:address]).to eq("192.168.0.231")
+ expect(wpar2[:address]).to eq("192.168.0.18")
+ end
+
+ it 'parses device exports properly' do
+ expect(wpar1['device exports']['/dev/nvram']['type']).to eq("pseudo")
+ expect(wpar1['device exports']['/dev/nvram']['status']).to eq("EXPORTED")
+ end
+ end
+ end
+
+ context 'when WPARs don\'t exist on the LPAR' do
+ before do
+ allow(plugin).to receive(:shell_out).with("lswpar -L").and_return(mock_shell_out(0, '', nil))
+ plugin.run
+ end
+
+ it 'detects all WPARs present (0)' do
+ expect(plugin[:virtualization][:wpars]).to be_nil
+ end
+ end
end
context "inside a WPAR" do