summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith@chef.io>2018-12-01 15:03:22 -0800
committerTim Smith <tsmith@chef.io>2018-12-05 09:57:31 -0800
commit48d7ca00728ea0a794db5dda2d42609ddcb5018b (patch)
treefd8d68fb5da9f9cd594dde7bb141c2f7aab1567a
parentacd1d778fafa51f946e9c7bfef75ae3e896972f4 (diff)
downloadohai-48d7ca00728ea0a794db5dda2d42609ddcb5018b.tar.gz
Update *nix specs
Signed-off-by: Tim Smith <tsmith@chef.io>
-rw-r--r--spec/unit/plugins/linux/virtualization_spec.rb199
-rw-r--r--spec/unit/plugins/solaris2/dmi_spec.rb19
-rw-r--r--spec/unit/plugins/solaris2/virtualization_spec.rb80
3 files changed, 81 insertions, 217 deletions
diff --git a/spec/unit/plugins/linux/virtualization_spec.rb b/spec/unit/plugins/linux/virtualization_spec.rb
index 8285a6f8..13c195ea 100644
--- a/spec/unit/plugins/linux/virtualization_spec.rb
+++ b/spec/unit/plugins/linux/virtualization_spec.rb
@@ -29,7 +29,6 @@ describe Ohai::System, "Linux virtualization platform" do
allow(File).to receive(:exist?).with("/proc/xen/capabilities").and_return(false)
allow(File).to receive(:exist?).with("/proc/modules").and_return(false)
allow(File).to receive(:exist?).with("/proc/cpuinfo").and_return(false)
- allow(File).to receive(:exist?).with("/usr/sbin/dmidecode").and_return(false)
allow(File).to receive(:exist?).with("/var/lib/hyperv/.kvp_pool_3").and_return(false)
allow(File).to receive(:exist?).with("/proc/self/status").and_return(false)
allow(File).to receive(:exist?).with("/proc/bc/0").and_return(false)
@@ -37,7 +36,6 @@ describe Ohai::System, "Linux virtualization platform" do
allow(File).to receive(:exist?).with("/proc/self/cgroup").and_return(false)
allow(File).to receive(:exist?).with("/.dockerenv").and_return(false)
allow(File).to receive(:exist?).with("/.dockerinit").and_return(false)
- allow(File).to receive(:exist?).with("/proc/bus/pci/devices").and_return(false)
allow(File).to receive(:exist?).with("/sys/devices/virtual/misc/kvm").and_return(false)
allow(File).to receive(:exist?).with("/dev/lxd/sock").and_return(false)
allow(File).to receive(:exist?).with("/var/lib/lxd/devlxd").and_return(false)
@@ -187,165 +185,28 @@ describe Ohai::System, "Linux virtualization platform" do
end
end
- describe "when we are parsing dmidecode" do
- before(:each) do
- expect(File).to receive(:exist?).with("/usr/sbin/dmidecode").and_return(true)
- end
-
- it "sets hyperv guest if dmidecode detects Hyper-V or version 7.0" do
- ms_hv_dmidecode = <<~MSHV
- System Information
- Manufacturer: Microsoft Corporation
- Product Name: Virtual Machine
- Version: 7.0
- Serial Number: 9242-2608-7031-8934-2088-5216-61
- UUID: C2431A2D-D69C-244F-9DE8-CD5D09E0DA39
- Wake-up Type: Power Switch
-MSHV
- allow(plugin).to receive(:shell_out).with("dmidecode").and_return(mock_shell_out(0, ms_hv_dmidecode, ""))
- plugin.run
- expect(plugin[:virtualization][:system]).to eq("hyperv")
- expect(plugin[:virtualization][:role]).to eq("guest")
- expect(plugin[:virtualization][:systems][:hyperv]).to eq("guest")
- end
-
- it "sets vmware guest if dmidecode detects VMware" do
- vmware_dmidecode = <<~VMWARE
- System Information
- Manufacturer: VMware, Inc.
- Product Name: VMware Virtual Platform
- Version: None
- Serial Number: VMware-50 3f f7 14 42 d1 f1 da-3b 46 27 d0 29 b4 74 1d
- UUID: a86cc405-e1b9-447b-ad05-6f8db39d876a
- Wake-up Type: Power Switch
- SKU Number: Not Specified
- Family: Not Specified
-VMWARE
- allow(plugin).to receive(:shell_out).with("dmidecode").and_return(mock_shell_out(0, vmware_dmidecode, ""))
- plugin.run
- expect(plugin[:virtualization][:system]).to eq("vmware")
- expect(plugin[:virtualization][:role]).to eq("guest")
- expect(plugin[:virtualization][:systems][:vmware]).to eq("guest")
- end
-
- it "sets vbox guest if dmidecode detects VirtualBox" do
- vbox_dmidecode = <<~VBOX
- Base Board Information
- Manufacturer: Oracle Corporation
- Product Name: VirtualBox
- Version: 1.2
- Serial Number: 0
- Asset Tag: Not Specified
- Features:
- Board is a hosting board
- Location In Chasis: Not Specified
- Type: Motherboard
- Contained Object Handles: 0
-VBOX
- allow(plugin).to receive(:shell_out).with("dmidecode").and_return(mock_shell_out(0, vbox_dmidecode, ""))
- plugin.run
- expect(plugin[:virtualization][:system]).to eq("vbox")
- expect(plugin[:virtualization][:role]).to eq("guest")
- expect(plugin[:virtualization][:systems][:vbox]).to eq("guest")
- end
+ describe "when we are parsing DMI data" do
- it "sets openstack guest if dmidecode detects OpenStack" do
- openstack_dmidecode = <<~OPENSTACK
- System Information
- Manufacturer: Red Hat Inc.
- Product Name: OpenStack Nova
- Version: 2014.1.2-1.el6
- Serial Number: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
- UUID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
- Wake-up Type: Power Switch
- SKU Number: Not Specified
- Family: Red Hat Enterprise Linux
-OPENSTACK
- allow(plugin).to receive(:shell_out).with("dmidecode").and_return(mock_shell_out(0, openstack_dmidecode, ""))
+ it "sets virtualization attributes if the appropriate DMI data is present" do
+ plugin[:dmi] = { system: {
+ manufacturer: "Amazon EC2",
+ product: "c5n.large",
+ version: nil,
+ },
+ }
plugin.run
- expect(plugin[:virtualization][:system]).to eq("openstack")
+ expect(plugin[:virtualization][:system]).to eq("amazonec2")
expect(plugin[:virtualization][:role]).to eq("guest")
- expect(plugin[:virtualization][:systems][:openstack]).to eq("guest")
- end
-
- it "sets kvm guest if dmidecode contains KVM" do
- kvm_dmidecode = <<~RKVM
- System Information
- Manufacturer: Red Hat
- Product Name: KVM
- Version: RHEL 7.0.0 PC (i440FX + PIIX, 1996)
- Serial Number: Not Specified
- UUID: 6E56CFE2-2088-4A46-906A-FC49EDC4072C
- Wake-up Type: Power Switch
- SKU Number: Not Specified
- Family: Red Hat Enterprise Linux
-RKVM
- allow(plugin).to receive(:shell_out).with("dmidecode").and_return(mock_shell_out(0, kvm_dmidecode, ""))
- plugin.run
- expect(plugin[:virtualization][:system]).to eq("kvm")
- expect(plugin[:virtualization][:role]).to eq("guest")
- expect(plugin[:virtualization][:systems][:kvm]).to eq("guest")
+ expect(plugin[:virtualization][:systems][:amazonec2]).to eq("guest")
end
- it "sets kvm guest if dmidecode detects RHEV" do
- kvm_dmidecode = <<~RHEV
- System Information
- Manufacturer: Red Hat
- Product Name: RHEV Hypervisor
- Version: 6.7-20150911.0.el6ev
- Serial Number: 00000000-0000-0000-0000-000000000000
- UUID: E7F1DC93-3DA1-4EC3-A6AB-F6904BA87985
- Wake-up Type: Power Switch
- SKU Number: Not Specified
- Family: Red Hat Enterprise Linux
-RHEV
- allow(plugin).to receive(:shell_out).with("dmidecode").and_return(mock_shell_out(0, kvm_dmidecode, ""))
- plugin.run
- expect(plugin[:virtualization][:system]).to eq("kvm")
- expect(plugin[:virtualization][:role]).to eq("guest")
- expect(plugin[:virtualization][:systems][:kvm]).to eq("guest")
- end
-
- it "sets bhyve guest if dmidecode detects bhyve" do
- bhyve_dmidecode = <<~OUTPUT
- System Information
- Manufacturer:
- Product Name: BHYVE
- Version: 1.0
- Serial Number: None
- UUID: 023B323A-E139-4B36-8BC5-CEBB2469DAAA
- Wake-up Type: Power Switch
- SKU Number: None
- Family:
-OUTPUT
- allow(plugin).to receive(:shell_out).with("dmidecode").and_return(mock_shell_out(0, bhyve_dmidecode, ""))
- plugin.run
- expect(plugin[:virtualization][:system]).to eq("bhyve")
- expect(plugin[:virtualization][:role]).to eq("guest")
- expect(plugin[:virtualization][:systems][:bhyve]).to eq("guest")
- end
-
- it "sets veertu guest if dmidecode detects Veertu" do
- veertu_dmidecode = <<~VEERTU
- System Information
- Manufacturer: Veertu
- Product Name: Veertu
- Version: Not Specified
- Serial Number: Not Specified
- UUID: Not Settable
- Wake-up Type: Power Switch
- SKU Number: Not Specified
- Family: Not Specified
-VEERTU
- allow(plugin).to receive(:shell_out).with("dmidecode").and_return(mock_shell_out(0, veertu_dmidecode, ""))
- plugin.run
- expect(plugin[:virtualization][:system]).to eq("veertu")
- expect(plugin[:virtualization][:role]).to eq("guest")
- expect(plugin[:virtualization][:systems][:veertu]).to eq("guest")
- end
-
- it "should run dmidecode and not set virtualization if nothing is detected" do
- allow(plugin).to receive(:shell_out).with("dmidecode").and_return(mock_shell_out(0, "", ""))
+ it "sets empty virtualization attributes if nothing is detected" do
+ plugin[:dmi] = { system: {
+ manufacturer: "Supermicro",
+ product: "X10SLH-N6-ST031",
+ version: "0123456789",
+ },
+ }
plugin.run
expect(plugin[:virtualization]).to eq({ "systems" => {} })
end
@@ -451,32 +312,6 @@ VEERTU
end
end
- describe "when we are checking for parallels" do
- it "sets parallels guest if /proc/bus/pci/devices contains 1ab84000" do
- devices = <<~DEVICES
- 0018 1ab84000 1f 8001 0 0 0 0 0 0 20 0 0 0 0 0 0 prl_tg
- 0028 1af41000 17 8201 ee000000 0 0 0 0 0 40 1000 0 0 0 0 0 virtio-pci
- DEVICES
- expect(File).to receive(:exist?).with("/proc/bus/pci/devices").and_return(true)
- allow(File).to receive(:read).with("/proc/bus/pci/devices").and_return(devices)
- plugin.run
- expect(plugin[:virtualization][:system]).to eq("parallels")
- expect(plugin[:virtualization][:role]).to eq("guest")
- expect(plugin[:virtualization][:systems][:parallels]).to eq("guest")
- end
-
- it "does not set virtualization if /proc/bus/pci/devices not contains 1ab84000" do
- devices = <<~DEVICES
- 0030 1af41000 a 8401 ee040000 0 0 0 0 0 40 1000 0 0 0 0 0 virtio-pci
- 0050 10110022 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
- DEVICES
- expect(File).to receive(:exist?).with("/proc/bus/pci/devices").and_return(true)
- allow(File).to receive(:read).with("/proc/bus/pci/devices").and_return(devices)
- plugin.run
- expect(plugin[:virtualization]).to eq({ "systems" => {} })
- end
- end
-
describe "when we are checking for lxd" do
it "sets lxc guest if /dev/lxd/sock exists" do
expect(File).to receive(:exist?).with("/dev/lxd/sock").and_return(true)
diff --git a/spec/unit/plugins/solaris2/dmi_spec.rb b/spec/unit/plugins/solaris2/dmi_spec.rb
index b4bfdfab..25192dd9 100644
--- a/spec/unit/plugins/solaris2/dmi_spec.rb
+++ b/spec/unit/plugins/solaris2/dmi_spec.rb
@@ -112,16 +112,17 @@ SOLARIS_DMI_OUT = <<~EOS.freeze
EOS
describe Ohai::System, "Solaris2.X DMI plugin" do
+ let(:plugin) { get_plugin("solaris/dmi") }
+
before(:each) do
- @plugin = get_plugin("solaris2/dmi")
- allow(@plugin).to receive(:collect_os).and_return("solaris2")
+ allow(plugin).to receive(:collect_os).and_return("solaris2")
@stdout = SOLARIS_DMI_OUT
- allow(@plugin).to receive(:shell_out).with("smbios").and_return(mock_shell_out(0, @stdout, ""))
+ allow(plugin).to receive(:shell_out).with("smbios").and_return(mock_shell_out(0, @stdout, ""))
end
it "should run smbios" do
- expect(@plugin).to receive(:shell_out).with("smbios").and_return(mock_shell_out(0, @stdout, ""))
- @plugin.run
+ expect(plugin).to receive(:shell_out).with("smbios").and_return(mock_shell_out(0, @stdout, ""))
+ plugin.run
end
{
@@ -140,14 +141,14 @@ describe Ohai::System, "Solaris2.X DMI plugin" do
}.each do |id, data|
data.each do |attribute, value|
it "should have [:dmi][:#{id}][:#{attribute}] set" do
- @plugin.run
- expect(@plugin[:dmi][id][attribute]).to eql(value)
+ plugin.run
+ expect(plugin[:dmi][id][attribute]).to eql(value)
end
end
end
it "should ignore unwanted types" do
- @plugin.run
- expect(@plugin[:dmi]).not_to have_key(:on_board_devices)
+ plugin.run
+ expect(plugin[:dmi]).not_to have_key(:on_board_devices)
end
end
diff --git a/spec/unit/plugins/solaris2/virtualization_spec.rb b/spec/unit/plugins/solaris2/virtualization_spec.rb
index 2bf890be..c50f2aed 100644
--- a/spec/unit/plugins/solaris2/virtualization_spec.rb
+++ b/spec/unit/plugins/solaris2/virtualization_spec.rb
@@ -19,6 +19,8 @@
require_relative "../../../spec_helper.rb"
describe Ohai::System, "Solaris virtualization platform" do
+ let(:plugin) { get_plugin("solaris2/virtualization") }
+
before(:each) do
@psrinfo_pv = <<~PSRINFO_PV
The physical processor has 1 virtual processor (0)
@@ -26,15 +28,14 @@ describe Ohai::System, "Solaris virtualization platform" do
Intel Pentium(r) Pro
PSRINFO_PV
- @plugin = get_plugin("solaris2/virtualization")
- allow(@plugin).to receive(:collect_os).and_return(:solaris2)
+ allow(plugin).to receive(:collect_os).and_return(:solaris2)
# default to all requested Files not existing
allow(File).to receive(:exist?).with("/usr/sbin/psrinfo").and_return(false)
allow(File).to receive(:exist?).with("/usr/sbin/smbios").and_return(false)
allow(File).to receive(:exist?).with("/usr/sbin/zoneadm").and_return(false)
- allow(@plugin).to receive(:shell_out).with("/usr/sbin/smbios").and_return(mock_shell_out(0, "", ""))
- allow(@plugin).to receive(:shell_out).with("#{Ohai.abs_path( "/usr/sbin/psrinfo" )} -pv").and_return(mock_shell_out(0, "", ""))
+ allow(plugin).to receive(:shell_out).with("/usr/sbin/smbios").and_return(mock_shell_out(0, "", ""))
+ allow(plugin).to receive(:shell_out).with("#{Ohai.abs_path( "/usr/sbin/psrinfo" )} -pv").and_return(mock_shell_out(0, "", ""))
end
describe "when we are checking for kvm" do
@@ -43,22 +44,22 @@ PSRINFO_PV
end
it "should run psrinfo -pv" do
- expect(@plugin).to receive(:shell_out).with("#{Ohai.abs_path( "/usr/sbin/psrinfo" )} -pv")
- @plugin.run
+ expect(plugin).to receive(:shell_out).with("#{Ohai.abs_path( "/usr/sbin/psrinfo" )} -pv")
+ plugin.run
end
it "Should set kvm guest if psrinfo -pv contains QEMU Virtual CPU" do
- allow(@plugin).to receive(:shell_out).with("#{Ohai.abs_path( "/usr/sbin/psrinfo" )} -pv").and_return(mock_shell_out(0, "QEMU Virtual CPU", ""))
- @plugin.run
- expect(@plugin[:virtualization][:system]).to eq("kvm")
- expect(@plugin[:virtualization][:role]).to eq("guest")
- expect(@plugin[:virtualization][:systems][:kvm]).to eq("guest")
+ allow(plugin).to receive(:shell_out).with("#{Ohai.abs_path( "/usr/sbin/psrinfo" )} -pv").and_return(mock_shell_out(0, "QEMU Virtual CPU", ""))
+ plugin.run
+ expect(plugin[:virtualization][:system]).to eq("kvm")
+ expect(plugin[:virtualization][:role]).to eq("guest")
+ expect(plugin[:virtualization][:systems][:kvm]).to eq("guest")
end
it "should not set virtualization if kvm isn't there" do
- expect(@plugin).to receive(:shell_out).with("#{Ohai.abs_path( "/usr/sbin/psrinfo" )} -pv").and_return(mock_shell_out(0, @psrinfo_pv, ""))
- @plugin.run
- expect(@plugin[:virtualization][:systems]).to eq({})
+ expect(plugin).to receive(:shell_out).with("#{Ohai.abs_path( "/usr/sbin/psrinfo" )} -pv").and_return(mock_shell_out(0, @psrinfo_pv, ""))
+ plugin.run
+ expect(plugin[:virtualization][:systems]).to eq({})
end
end
@@ -68,8 +69,8 @@ PSRINFO_PV
end
it "should run smbios" do
- expect(@plugin).to receive(:shell_out).with("/usr/sbin/smbios")
- @plugin.run
+ expect(plugin).to receive(:shell_out).with("/usr/sbin/smbios")
+ plugin.run
end
it "should set vmware guest if smbios detects VMware Virtual Platform" do
@@ -85,22 +86,49 @@ PSRINFO_PV
UUID: a86cc405-e1b9-447b-ad05-6f8db39d876a
Wake-Up Event: 0x6 (power switch)
VMWARE
- allow(@plugin).to receive(:shell_out).with("/usr/sbin/smbios").and_return(mock_shell_out(0, vmware_smbios, ""))
- @plugin.run
- expect(@plugin[:virtualization][:system]).to eq("vmware")
- expect(@plugin[:virtualization][:role]).to eq("guest")
- expect(@plugin[:virtualization][:systems][:vmware]).to eq("guest")
+ allow(plugin).to receive(:shell_out).with("/usr/sbin/smbios").and_return(mock_shell_out(0, vmware_smbios, ""))
+ plugin.run
+ expect(plugin[:virtualization][:system]).to eq("vmware")
+ expect(plugin[:virtualization][:role]).to eq("guest")
+ expect(plugin[:virtualization][:systems][:vmware]).to eq("guest")
end
it "should run smbios and not set virtualization if nothing is detected" do
- expect(@plugin).to receive(:shell_out).with("/usr/sbin/smbios")
- @plugin.run
- expect(@plugin[:virtualization][:systems]).to eq({})
+ expect(plugin).to receive(:shell_out).with("/usr/sbin/smbios")
+ plugin.run
+ expect(plugin[:virtualization][:systems]).to eq({})
+ end
+ end
+
+ describe "when we are parsing DMI data" do
+
+ it "sets virtualization attributes if the appropriate DMI data is present" do
+ plugin[:dmi] = { system: {
+ manufacturer: "Amazon EC2",
+ product: "c5n.large",
+ version: nil,
+ },
+ }
+ plugin.run
+ expect(plugin[:virtualization][:system]).to eq("amazonec2")
+ expect(plugin[:virtualization][:role]).to eq("guest")
+ expect(plugin[:virtualization][:systems][:amazonec2]).to eq("guest")
+ end
+
+ it "sets empty virtualization attributes if nothing is detected" do
+ plugin[:dmi] = { system: {
+ manufacturer: "Supermicro",
+ product: "X10SLH-N6-ST031",
+ version: "0123456789",
+ },
+ }
+ plugin.run
+ expect(plugin[:virtualization]).to eq({ "systems" => {} })
end
end
it "should not set virtualization if no tests match" do
- @plugin.run
- expect(@plugin[:virtualization][:systems]).to eq({})
+ plugin.run
+ expect(plugin[:virtualization][:systems]).to eq({})
end
end