ohai 8.17.1 → 8.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/ohai/dsl/plugin.rb +2 -0
- data/lib/ohai/plugins/bsd/virtualization.rb +1 -2
- data/lib/ohai/plugins/darwin/hardware.rb +98 -0
- data/lib/ohai/plugins/darwin/virtualization.rb +23 -8
- data/lib/ohai/plugins/linux/block_device.rb +1 -1
- data/lib/ohai/plugins/linux/memory.rb +11 -0
- data/lib/ohai/plugins/linux/sessions.rb +0 -4
- data/lib/ohai/plugins/linux/virtualization.rb +1 -4
- data/lib/ohai/plugins/php.rb +1 -1
- data/lib/ohai/plugins/shells.rb +31 -0
- data/lib/ohai/plugins/solaris2/virtualization.rb +1 -1
- data/lib/ohai/version.rb +1 -1
- data/ohai.gemspec +1 -1
- data/spec/unit/plugins/darwin/hardware_spec.rb +116 -0
- data/spec/unit/plugins/darwin/hardware_system_profiler_output.rb +1110 -0
- data/spec/unit/plugins/darwin/virtualization_spec.rb +28 -9
- data/spec/unit/plugins/linux/memory_spec.rb +28 -3
- data/spec/unit/plugins/php_spec.rb +39 -32
- data/spec/unit/plugins/shells_spec.rb +56 -0
- metadata +9 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1b422d14afdb82f8fe3f07aa0aaa8dd82c30fa06
|
|
4
|
+
data.tar.gz: f99bb4675dcbfca6ffbb28420fbcae88072b55ff
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0755c29277022af57f5535a3ced25262ab34e190f8c25d2ed390e0b0324374511ed9ec9c2ca93848fcf2287dfd34d83a849a369ab3271a5e950c9268c8ab430f
|
|
7
|
+
data.tar.gz: 99d5e61254335f5e2274c2ef0f36cf401fa11c0b2ea69cfd3a5514025297e5fdca1d9546670a7364a1c765a434fc57979da777b39c9390391ce766ece3b3d270
|
data/lib/ohai/dsl/plugin.rb
CHANGED
|
@@ -22,6 +22,7 @@ require "ohai/mixin/os"
|
|
|
22
22
|
require "ohai/mixin/command"
|
|
23
23
|
require "ohai/mixin/seconds_to_human"
|
|
24
24
|
require "ohai/hints"
|
|
25
|
+
require "ohai/util/file_helper"
|
|
25
26
|
|
|
26
27
|
module Ohai
|
|
27
28
|
|
|
@@ -81,6 +82,7 @@ module Ohai
|
|
|
81
82
|
include Ohai::Mixin::OS
|
|
82
83
|
include Ohai::Mixin::Command
|
|
83
84
|
include Ohai::Mixin::SecondsToHuman
|
|
85
|
+
include Ohai::Util::FileHelper
|
|
84
86
|
|
|
85
87
|
attr_reader :data
|
|
86
88
|
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Nate Walck (<nate.walck@gmail.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2016-present Facebook, Inc.
|
|
4
|
+
# License:: Apache License, Version 2.0
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
Ohai.plugin(:Hardware) do
|
|
20
|
+
provides "hardware"
|
|
21
|
+
|
|
22
|
+
def system_profiler(datatype)
|
|
23
|
+
sp_cmd = "system_profiler #{datatype} -xml"
|
|
24
|
+
# Hardware queries
|
|
25
|
+
sp_std = shell_out(sp_cmd)
|
|
26
|
+
sp_hash = Plist.parse_xml(sp_std.stdout)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
collect_data(:darwin) do
|
|
30
|
+
unless hardware
|
|
31
|
+
hardware Mash.new
|
|
32
|
+
else
|
|
33
|
+
Ohai::Log.debug("Plugin Darwin Hardware: namespace already exists")
|
|
34
|
+
next
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
begin
|
|
38
|
+
require "plist"
|
|
39
|
+
rescue LoadError => e
|
|
40
|
+
# In case the plist gem isn't present, skip this plugin.
|
|
41
|
+
Ohai::Log.debug("Plugin Hardware: Can't load gem: #{e}. Cannot continue.")
|
|
42
|
+
next
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
hw_hash = system_profiler("SPHardwareDataType")
|
|
46
|
+
hw_hash[0]["_items"][0].delete("_name")
|
|
47
|
+
hardware.merge!(hw_hash[0]["_items"][0])
|
|
48
|
+
|
|
49
|
+
{
|
|
50
|
+
"operating_system" => "sw_vers -productName",
|
|
51
|
+
"operating_system_version" => "sw_vers -productVersion",
|
|
52
|
+
"build_version" => "sw_vers -buildVersion",
|
|
53
|
+
"architecture" => "uname -m",
|
|
54
|
+
}.each do |var, cmd|
|
|
55
|
+
os_info = shell_out(cmd).stdout
|
|
56
|
+
hardware[var] = os_info.strip unless os_info.nil?
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Storage queries
|
|
60
|
+
storage = []
|
|
61
|
+
storage_hash = system_profiler("SPStorageDataType")
|
|
62
|
+
drives = storage_hash[0]["_items"]
|
|
63
|
+
drives.each do |drive_entry|
|
|
64
|
+
drive = Mash.new
|
|
65
|
+
drive[:name] = drive_entry["_name"]
|
|
66
|
+
drive[:bsd_name] = drive_entry["bsd_name"]
|
|
67
|
+
drive[:capacity] = drive_entry["size_in_bytes"]
|
|
68
|
+
if drive_entry.has_key?("com.apple.corestorage.pv")
|
|
69
|
+
drive[:drive_type] = drive_entry["com.apple.corestorage.pv"][0]["medium_type"]
|
|
70
|
+
drive[:smart_status] = drive_entry["com.apple.corestorage.pv"][0]["smart_status"]
|
|
71
|
+
drive[:partitions] = drive_entry["com.apple.corestorage.pv"].count
|
|
72
|
+
end
|
|
73
|
+
storage << drive
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
hardware["storage"] = storage
|
|
77
|
+
|
|
78
|
+
# Battery queries
|
|
79
|
+
battery_hash = system_profiler("SPPowerDataType")
|
|
80
|
+
power_entries = battery_hash[0]["_items"]
|
|
81
|
+
battery = Mash.new
|
|
82
|
+
power_entries.each do |entry|
|
|
83
|
+
if entry.value?("spbattery_information")
|
|
84
|
+
charge = entry["sppower_battery_charge_info"]
|
|
85
|
+
health = entry["sppower_battery_health_info"]
|
|
86
|
+
battery[:current_capacity] = charge["sppower_battery_current_capacity"]
|
|
87
|
+
battery[:max_capacity] = charge["sppower_battery_max_capacity"]
|
|
88
|
+
battery[:fully_charged] = charge["sppower_battery_fully_charged"].eql?("TRUE")
|
|
89
|
+
battery[:is_charging] = charge["sppower_battery_is_charging"].eql?("TRUE")
|
|
90
|
+
battery[:charge_cycle_count] = health["sppower_battery_cycle_count"]
|
|
91
|
+
battery[:health] = health["sppower_battery_health"]
|
|
92
|
+
battery[:serial] = entry["sppower_battery_model_info"]["sppower_battery_serial_number"]
|
|
93
|
+
battery[:remaining] = (battery["current_capacity"].to_f / battery["max_capacity"].to_f * 100).to_i
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
hardware[:battery] = battery
|
|
97
|
+
end
|
|
98
|
+
end
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Pavel Yudin (<pyudin@parallels.com>)
|
|
3
|
+
# Author:: Tim Smith (<tsmith@chef.io>)
|
|
3
4
|
# Copyright:: Copyright (c) 2015 Pavel Yudin
|
|
5
|
+
# Copyright:: Copyright (c) 2016 Chef Software, Inc.
|
|
4
6
|
# License:: Apache License, Version 2.0
|
|
5
7
|
#
|
|
6
8
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -16,13 +18,13 @@
|
|
|
16
18
|
# limitations under the License.
|
|
17
19
|
#
|
|
18
20
|
|
|
19
|
-
require "ohai/util/file_helper"
|
|
20
|
-
|
|
21
|
-
include Ohai::Util::FileHelper
|
|
22
|
-
|
|
23
21
|
Ohai.plugin(:Virtualization) do
|
|
24
22
|
provides "virtualization"
|
|
25
23
|
|
|
24
|
+
def vboxmanage_exists?
|
|
25
|
+
which("VBoxManage")
|
|
26
|
+
end
|
|
27
|
+
|
|
26
28
|
def prlctl_exists?
|
|
27
29
|
which("prlctl")
|
|
28
30
|
end
|
|
@@ -31,18 +33,31 @@ Ohai.plugin(:Virtualization) do
|
|
|
31
33
|
which("ioreg")
|
|
32
34
|
end
|
|
33
35
|
|
|
36
|
+
def fusion_exists?
|
|
37
|
+
::File.exist?("/Applications/VMware\ Fusion.app/")
|
|
38
|
+
end
|
|
39
|
+
|
|
34
40
|
collect_data(:darwin) do
|
|
35
41
|
virtualization Mash.new unless virtualization
|
|
36
42
|
virtualization[:systems] = Mash.new unless virtualization[:systems]
|
|
37
43
|
|
|
44
|
+
if vboxmanage_exists?
|
|
45
|
+
virtualization[:system] = "vbox"
|
|
46
|
+
virtualization[:role] = "host"
|
|
47
|
+
virtualization[:systems][:vbox] = "host"
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
if fusion_exists?
|
|
51
|
+
virtualization[:system] = "vmware"
|
|
52
|
+
virtualization[:role] = "host"
|
|
53
|
+
virtualization[:systems][:vmware] = "host"
|
|
54
|
+
end
|
|
55
|
+
|
|
38
56
|
if prlctl_exists?
|
|
39
57
|
virtualization[:system] = "parallels"
|
|
40
58
|
virtualization[:role] = "host"
|
|
41
59
|
virtualization[:systems][:parallels] = "host"
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
# Detect Parallels virtual machine from pci devices
|
|
45
|
-
if ioreg_exists?
|
|
60
|
+
elsif ioreg_exists?
|
|
46
61
|
so = shell_out("ioreg -l")
|
|
47
62
|
if so.stdout =~ /pci1ab8,4000/
|
|
48
63
|
virtualization[:system] = "parallels"
|
|
@@ -35,7 +35,7 @@ Ohai.plugin(:BlockDevice) do
|
|
|
35
35
|
File.open("/sys/block/#{dir}/device/#{check}") { |f| block[dir][check] = f.read_nonblock(1024).strip }
|
|
36
36
|
end
|
|
37
37
|
end
|
|
38
|
-
%w{rotational}.each do |check|
|
|
38
|
+
%w{rotational physical_block_size logical_block_size}.each do |check|
|
|
39
39
|
if File.exists?("/sys/block/#{dir}/queue/#{check}")
|
|
40
40
|
File.open("/sys/block/#{dir}/queue/#{check}") { |f| block[dir][check] = f.read_nonblock(1024).strip }
|
|
41
41
|
end
|
|
@@ -22,6 +22,7 @@ Ohai.plugin(:Memory) do
|
|
|
22
22
|
collect_data(:linux) do
|
|
23
23
|
memory Mash.new
|
|
24
24
|
memory[:swap] = Mash.new
|
|
25
|
+
memory[:hugepages] = Mash.new
|
|
25
26
|
|
|
26
27
|
File.open("/proc/meminfo").each do |line|
|
|
27
28
|
case line
|
|
@@ -81,6 +82,16 @@ Ohai.plugin(:Memory) do
|
|
|
81
82
|
memory[:swap][:total] = "#{$1}#{$2}"
|
|
82
83
|
when /^SwapFree:\s+(\d+) (.+)$/
|
|
83
84
|
memory[:swap][:free] = "#{$1}#{$2}"
|
|
85
|
+
when /^HugePages_Total:\s+(\d+)$/
|
|
86
|
+
memory[:hugepages][:total] = "#{$1}"
|
|
87
|
+
when /^HugePages_Free:\s+(\d+)$/
|
|
88
|
+
memory[:hugepages][:free] = "#{$1}"
|
|
89
|
+
when /^HugePages_Rsvd:\s+(\d+)$/
|
|
90
|
+
memory[:hugepages][:reserved] = "#{$1}"
|
|
91
|
+
when /^HugePages_Surp:\s+(\d+)$/
|
|
92
|
+
memory[:hugepages][:surplus] = "#{$1}"
|
|
93
|
+
when /^Hugepagesize:\s+(\d+) (.+)$/
|
|
94
|
+
memory[:hugepage_size] = "#{$1}#{$2}"
|
|
84
95
|
end
|
|
85
96
|
end
|
|
86
97
|
end
|
|
@@ -16,13 +16,10 @@
|
|
|
16
16
|
# limitations under the License.
|
|
17
17
|
#
|
|
18
18
|
|
|
19
|
-
require "ohai/util/file_helper"
|
|
20
19
|
require "ohai/mixin/dmi_decode"
|
|
21
20
|
|
|
22
|
-
include Ohai::Util::FileHelper
|
|
23
|
-
include Ohai::Mixin::DmiDecode
|
|
24
|
-
|
|
25
21
|
Ohai.plugin(:Virtualization) do
|
|
22
|
+
include Ohai::Mixin::DmiDecode
|
|
26
23
|
provides "virtualization"
|
|
27
24
|
|
|
28
25
|
def lxc_version_exists?
|
data/lib/ohai/plugins/php.rb
CHANGED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Tim Smith (<tsmith@chef.io>)
|
|
3
|
+
# Copyright:: Copyright (c) 2016 Chef Software, Inc.
|
|
4
|
+
# License:: Apache License, Version 2.0
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
Ohai.plugin(:Shells) do
|
|
20
|
+
provides "shells"
|
|
21
|
+
|
|
22
|
+
collect_data do
|
|
23
|
+
if ::File.exist?("/etc/shells")
|
|
24
|
+
shells []
|
|
25
|
+
::File.readlines("/etc/shells").each do |line|
|
|
26
|
+
# remove carriage returns and skip over comments / empty lines
|
|
27
|
+
shells << line.chomp if line[0] == "/"
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
data/lib/ohai/version.rb
CHANGED
data/ohai.gemspec
CHANGED
|
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
|
|
|
13
13
|
s.email = "adam@chef.io"
|
|
14
14
|
s.homepage = "https://docs.chef.io/ohai.html"
|
|
15
15
|
|
|
16
|
-
s.required_ruby_version = ">= 2.
|
|
16
|
+
s.required_ruby_version = ">= 2.1.0"
|
|
17
17
|
|
|
18
18
|
s.add_dependency "systemu", "~> 2.6.4"
|
|
19
19
|
s.add_dependency "ffi-yajl", "~> 2.2"
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Nate Walck (<nate.walck@gmail.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2016-present Facebook, Inc.
|
|
4
|
+
# License:: Apache License, Version 2.0
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper.rb")
|
|
20
|
+
require File.expand_path("#{File.dirname(__FILE__)}/hardware_system_profiler_output.rb")
|
|
21
|
+
|
|
22
|
+
describe Ohai::System, "Darwin hardware plugin", :unix_only do
|
|
23
|
+
let (:plugin) { get_plugin("darwin/hardware") }
|
|
24
|
+
before(:each) do
|
|
25
|
+
allow(plugin).to receive(:collect_os).and_return(:darwin)
|
|
26
|
+
# Make sure it always runs correct commands and mock the data as it calls them
|
|
27
|
+
allow(plugin).to receive(:shell_out).with(
|
|
28
|
+
"system_profiler SPHardwareDataType -xml"
|
|
29
|
+
).and_return(
|
|
30
|
+
mock_shell_out(0, HardwareSystemProfilerOutput::Hardware, "")
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
allow(plugin).to receive(:shell_out).with(
|
|
34
|
+
"sw_vers -productName"
|
|
35
|
+
).and_return(
|
|
36
|
+
mock_shell_out(0, "Mac OS X", "")
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
allow(plugin).to receive(:shell_out).with(
|
|
40
|
+
"sw_vers -productVersion"
|
|
41
|
+
).and_return(
|
|
42
|
+
mock_shell_out(0, "10.12", "")
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
allow(plugin).to receive(:shell_out).with(
|
|
46
|
+
"sw_vers -buildVersion"
|
|
47
|
+
).and_return(
|
|
48
|
+
mock_shell_out(0, "16A239j", "")
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
allow(plugin).to receive(:shell_out).with(
|
|
52
|
+
"uname -m"
|
|
53
|
+
).and_return(
|
|
54
|
+
mock_shell_out(0, "x86_64", "")
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
allow(plugin).to receive(:shell_out).with(
|
|
58
|
+
"system_profiler SPStorageDataType -xml"
|
|
59
|
+
).and_return(
|
|
60
|
+
mock_shell_out(0, HardwareSystemProfilerOutput::Storage, "")
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
allow(plugin).to receive(:shell_out).with(
|
|
64
|
+
"system_profiler SPPowerDataType -xml"
|
|
65
|
+
).and_return(
|
|
66
|
+
mock_shell_out(0, HardwareSystemProfilerOutput::Power, "")
|
|
67
|
+
)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "parses hardware data correctly" do
|
|
71
|
+
plugin.run
|
|
72
|
+
expect(plugin["hardware"]["SMC_version_system"]).to eq("2.16f68")
|
|
73
|
+
expect(plugin["hardware"]["boot_rom_version"]).to eq("MBP111.0138.B17")
|
|
74
|
+
expect(plugin["hardware"]["cpu_type"]).to eq("Intel Core i7")
|
|
75
|
+
expect(plugin["hardware"]["current_processor_speed"]).to eq("3 GHz")
|
|
76
|
+
expect(plugin["hardware"]["l2_cache_core"]).to eq("256 KB")
|
|
77
|
+
expect(plugin["hardware"]["l3_cache"]).to eq("4 MB")
|
|
78
|
+
expect(plugin["hardware"]["machine_model"]).to eq("MacBookPro11,1")
|
|
79
|
+
expect(plugin["hardware"]["machine_name"]).to eq("MacBook Pro")
|
|
80
|
+
expect(plugin["hardware"]["number_processors"]).to eq(2)
|
|
81
|
+
expect(plugin["hardware"]["packages"]).to eq(1)
|
|
82
|
+
expect(plugin["hardware"]["physical_memory"]).to eq("16 GB")
|
|
83
|
+
expect(plugin["hardware"]["platform_UUID"]).to eq("F1A4AE0F-84A8-45D8-83C7-F3F904464FC5")
|
|
84
|
+
expect(plugin["hardware"]["serial_number"]).to eq("ABCDEFG12345")
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it "parses sw_vers and uname data correctly" do
|
|
88
|
+
plugin.run
|
|
89
|
+
expect(plugin["hardware"]["operating_system"]).to eq("Mac OS X")
|
|
90
|
+
expect(plugin["hardware"]["operating_system_version"]).to eq("10.12")
|
|
91
|
+
expect(plugin["hardware"]["build_version"]).to eq("16A239j")
|
|
92
|
+
expect(plugin["hardware"]["architecture"]).to eq("x86_64")
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
it "parses storage data correctly" do
|
|
96
|
+
plugin.run
|
|
97
|
+
expect(plugin["hardware"]["storage"][0]["name"]).to eq("Macintosh HD")
|
|
98
|
+
expect(plugin["hardware"]["storage"][0]["bsd_name"]).to eq("disk1")
|
|
99
|
+
expect(plugin["hardware"]["storage"][0]["capacity"]).to eq(249661751296)
|
|
100
|
+
expect(plugin["hardware"]["storage"][0]["drive_type"]).to eq("ssd")
|
|
101
|
+
expect(plugin["hardware"]["storage"][0]["smart_status"]).to eq("Verified")
|
|
102
|
+
expect(plugin["hardware"]["storage"][0]["partitions"]).to eq(1)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
it "parses storage data correctly" do
|
|
106
|
+
plugin.run
|
|
107
|
+
expect(plugin["hardware"]["battery"]["current_capacity"]).to eq(5841)
|
|
108
|
+
expect(plugin["hardware"]["battery"]["max_capacity"]).to eq(5841)
|
|
109
|
+
expect(plugin["hardware"]["battery"]["fully_charged"]).to eq(true)
|
|
110
|
+
expect(plugin["hardware"]["battery"]["is_charging"]).to eq(false)
|
|
111
|
+
expect(plugin["hardware"]["battery"]["charge_cycle_count"]).to eq(201)
|
|
112
|
+
expect(plugin["hardware"]["battery"]["health"]).to eq("Good")
|
|
113
|
+
expect(plugin["hardware"]["battery"]["serial"]).to eq("D123456789ABCDEFG")
|
|
114
|
+
expect(plugin["hardware"]["battery"]["remaining"]).to eq(100)
|
|
115
|
+
end
|
|
116
|
+
end
|