diff options
author | Jared Weyer <v-jaredweyer@microsoft.com> | 2022-12-14 16:27:27 -0800 |
---|---|---|
committer | Jared Weyer <v-jaredweyer@microsoft.com> | 2022-12-14 16:27:41 -0800 |
commit | 89b947c0cd6f8801f7fa1aad3a7dbca553573c24 (patch) | |
tree | f36515b831ec16ccb1a63d59cac175a0e255086b | |
parent | 60b26f5f4e3a4f4af28241dba0c0829e6798b2c2 (diff) | |
download | ohai-89b947c0cd6f8801f7fa1aad3a7dbca553573c24.tar.gz |
update related UTs
Signed-off-by: Jared Weyer <v-jaredweyer@microsoft.com>
-rw-r--r-- | spec/unit/plugins/darwin/virtualization_spec.rb | 128 |
1 files changed, 74 insertions, 54 deletions
diff --git a/spec/unit/plugins/darwin/virtualization_spec.rb b/spec/unit/plugins/darwin/virtualization_spec.rb index 59d3d448..4175d2e1 100644 --- a/spec/unit/plugins/darwin/virtualization_spec.rb +++ b/spec/unit/plugins/darwin/virtualization_spec.rb @@ -22,6 +22,55 @@ require "spec_helper" describe Ohai::System, "Darwin virtualization platform" do let(:plugin) { get_plugin("darwin/virtualization") } + let(:ioreg_vm) do + <<-IOREG + | | +-o pci1ab8,4000@3 <class IOPCIDevice, id 0x1000001d1, registered, matched, active, busy 0 (40 ms), retain 9> + | | | | { + | | | | "compatible" = <"pci1ab8,400","pci1ab8,4000","pciclass,ff0000"> + | | | | "subsystem-vendor-id" = <b81a0000> + | | | | "IOName" = "pci1ab8,4000" + | | | | "reg" = <00180000000000000000000000000000000000001018000100000000000000000000000020000000> + | | | | "device-id" = <00400000> + | | | | "assigned-addresses" = <101800810000000040d200000000000020000000> + | | | | "IOPowerManagement" = {"MaxPowerState"=3,"ChildProxyPowerState"=2,"CurrentPowerState"=2} + | | | | "IOPCIResourced" = Yes + | | | | "IODeviceMemory" = ("IOSubMemoryDescriptor is not serializable") + | | | | "revision-id" = <00000000> + | | | | "IOInterruptControllers" = ("IOPCIMessagedInterruptController") + | | | | "vendor-id" = <b81a0000> + | | | | "pcidebug" = "0:3:0" + | | | | "class-code" = <0000ff00> + | | | | "IOInterruptSpecifiers" = (<0000000000000100>) + | | | | "IOPCIMSIMode" = Yes + | | | | "subsystem-id" = <00040000> + | | | | "name" = <"pci1ab8,4000"> + | | | | } + IOREG + end + let(:ioreg_not_vm) do + <<-IOREG + | | +-o pci8086,2445@1F,4 <class IOPCIDevice, id 0x1000001d4, registered, matched, active, busy 0 (974 ms), retain 11> + | | | { + | | | "compatible" = <"pci1ab8,400","pci8086,2445","pciclass,040100"> + | | | "subsystem-vendor-id" = <b81a0000> + | | | "IOName" = "pci8086,2445" + | | | "reg" = <00fc00000000000000000000000000000000000010fc00010000000000000000000000000001000014fc000100000000000000000000000000010000> + | | | "device-id" = <45240000> + | | | "assigned-addresses" = <10fc00810000000000d10000000000000001000014fc00810000000000d000000000000000010000> + | | | "IOPowerManagement" = {"ChildrenPowerState"=2,"CurrentPowerState"=2,"ChildProxyPowerState"=2,"MaxPowerState"=3} + | | | "IOPCIResourced" = Yes + | | | "IODeviceMemory" = ("IOSubMemoryDescriptor is not serializable","IOSubMemoryDescriptor is not serializable") + | | | "revision-id" = <02000000> + | | | "IOInterruptControllers" = ("io-apic-0") + | | | "vendor-id" = <86800000> + | | | "pcidebug" = "0:31:4" + | | | "class-code" = <00010400> + | | | "IOInterruptSpecifiers" = (<1100000007000000>) + | | | "subsystem-id" = <00040000> + | | | "name" = <"pci8086,2445"> + | | | } + IOREG + end before do allow(plugin).to receive(:collect_os).and_return(:darwin) @@ -80,77 +129,48 @@ describe Ohai::System, "Darwin virtualization platform" do expect(plugin[:virtualization][:systems][:vbox]).to eq("guest") end - it "sets parallels host if /usr/bin/prlctl exists" do - allow(plugin).to receive(:prlctl_exists?).and_return("/usr/bin/prlctl") + it "sets parallels guest if /usr/local/bin/prlctl exists, /usr/sbin/ioreg exists, and ioreg's output contains pci1ab8,4000" do + allow(plugin).to receive(:prlctl_exists?).and_return("/usr/local/bin/prlctl") + allow(plugin).to receive(:ioreg_exists?).and_return(true) + shellout = double("shellout") + allow(shellout).to receive(:stdout).and_return(ioreg_vm) + allow(plugin).to receive(:shell_out).with("ioreg -l").and_return(shellout) plugin.run expect(plugin[:virtualization][:system]).to eq("parallels") - expect(plugin[:virtualization][:role]).to eq("host") - expect(plugin[:virtualization][:systems][:parallels]).to eq("host") + expect(plugin[:virtualization][:role]).to eq("guest") + expect(plugin[:virtualization][:systems][:parallels]).to eq("guest") end - it "sets parallels guest if /usr/sbin/ioreg exists and its output contains pci1ab8,4000" do + it "sets parallels guest if /usr/local/bin/prlctl does not exists, /usr/sbin/ioreg exists, and ioreg's output contains pci1ab8,4000" do allow(plugin).to receive(:ioreg_exists?).and_return(true) - ioreg = <<-IOREG - | | +-o pci1ab8,4000@3 <class IOPCIDevice, id 0x1000001d1, registered, matched, active, busy 0 (40 ms), retain 9> - | | | | { - | | | | "compatible" = <"pci1ab8,400","pci1ab8,4000","pciclass,ff0000"> - | | | | "subsystem-vendor-id" = <b81a0000> - | | | | "IOName" = "pci1ab8,4000" - | | | | "reg" = <00180000000000000000000000000000000000001018000100000000000000000000000020000000> - | | | | "device-id" = <00400000> - | | | | "assigned-addresses" = <101800810000000040d200000000000020000000> - | | | | "IOPowerManagement" = {"MaxPowerState"=3,"ChildProxyPowerState"=2,"CurrentPowerState"=2} - | | | | "IOPCIResourced" = Yes - | | | | "IODeviceMemory" = ("IOSubMemoryDescriptor is not serializable") - | | | | "revision-id" = <00000000> - | | | | "IOInterruptControllers" = ("IOPCIMessagedInterruptController") - | | | | "vendor-id" = <b81a0000> - | | | | "pcidebug" = "0:3:0" - | | | | "class-code" = <0000ff00> - | | | | "IOInterruptSpecifiers" = (<0000000000000100>) - | | | | "IOPCIMSIMode" = Yes - | | | | "subsystem-id" = <00040000> - | | | | "name" = <"pci1ab8,4000"> - | | | | } - IOREG shellout = double("shellout") - allow(shellout).to receive(:stdout).and_return(ioreg) + allow(shellout).to receive(:stdout).and_return(ioreg_vm) allow(plugin).to receive(:shell_out).with("ioreg -l").and_return(shellout) 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 "sets parallels host if /usr/local/bin/prlctl exists, /usr/sbin/ioreg exists, and ioreg's output does not contain pci1ab8,4000" do + allow(plugin).to receive(:prlctl_exists?).and_return("/usr/local/bin/prlctl") + allow(plugin).to receive(:ioreg_exists?).and_return(true) + shellout = double("shellout") + allow(shellout).to receive(:stdout).and_return(ioreg_not_vm) + allow(plugin).to receive(:shell_out).with("ioreg -l").and_return(shellout) + plugin.run + expect(plugin[:virtualization][:system]).to eq("parallels") + expect(plugin[:virtualization][:role]).to eq("host") + expect(plugin[:virtualization][:systems][:parallels]).to eq("host") + end - it "does not set parallels guest if /usr/sbin/ioreg exists and its output not contain pci1ab8,4000" do + it "does not set parallels guest if /usr/local/bin/prlctl does not exist, /usr/sbin/ioreg exists, and ioreg's output does not contain pci1ab8,4000" do allow(plugin).to receive(:ioreg_exists?).and_return(true) - ioreg = <<-IOREG - | | +-o pci8086,2445@1F,4 <class IOPCIDevice, id 0x1000001d4, registered, matched, active, busy 0 (974 ms), retain 11> - | | | { - | | | "compatible" = <"pci1ab8,400","pci8086,2445","pciclass,040100"> - | | | "subsystem-vendor-id" = <b81a0000> - | | | "IOName" = "pci8086,2445" - | | | "reg" = <00fc00000000000000000000000000000000000010fc00010000000000000000000000000001000014fc000100000000000000000000000000010000> - | | | "device-id" = <45240000> - | | | "assigned-addresses" = <10fc00810000000000d10000000000000001000014fc00810000000000d000000000000000010000> - | | | "IOPowerManagement" = {"ChildrenPowerState"=2,"CurrentPowerState"=2,"ChildProxyPowerState"=2,"MaxPowerState"=3} - | | | "IOPCIResourced" = Yes - | | | "IODeviceMemory" = ("IOSubMemoryDescriptor is not serializable","IOSubMemoryDescriptor is not serializable") - | | | "revision-id" = <02000000> - | | | "IOInterruptControllers" = ("io-apic-0") - | | | "vendor-id" = <86800000> - | | | "pcidebug" = "0:31:4" - | | | "class-code" = <00010400> - | | | "IOInterruptSpecifiers" = (<1100000007000000>) - | | | "subsystem-id" = <00040000> - | | | "name" = <"pci8086,2445"> - | | | } - IOREG shellout = double("shellout") - allow(shellout).to receive(:stdout).and_return(ioreg) + allow(shellout).to receive(:stdout).and_return(ioreg_not_vm) allow(plugin).to receive(:shell_out).with("ioreg -l").and_return(shellout) plugin.run expect(plugin[:virtualization]).to eq({ "systems" => {} }) end end -end +end
\ No newline at end of file |