summaryrefslogtreecommitdiff
path: root/spec/unit/plugins/solaris2/dmi_spec.rb
blob: b4bfdfab65988485e6baaed72363685f124e922b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#
# Author:: Thom May (<thom@chef.io>)
# Copyright:: Copyright (c) 2015 Chef Software
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

require_relative "../../../spec_helper.rb"

SOLARIS_DMI_OUT = <<~EOS.freeze
  ID    SIZE TYPE
  0     64   SMB_TYPE_BIOS (type 0) (BIOS information)

    Vendor: American Megatrends Inc.
    Version String: 4701
    Release Date: 08/26/2014
    Address Segment: 0xf000
    ROM Size: 8388608 bytes
    Image Size: 65536 bytes
    Characteristics: 0x53f8b9c80
          SMB_BIOSFL_PCI (PCI is supported)
          SMB_BIOSFL_APM (APM is supported)
          SMB_BIOSFL_FLASH (BIOS is Flash Upgradeable)
          SMB_BIOSFL_SHADOW (BIOS shadowing is allowed)
          SMB_BIOSFL_CDBOOT (Boot from CD is supported)
          SMB_BIOSFL_SELBOOT (Selectable Boot supported)
          SMB_BIOSFL_ROMSOCK (BIOS ROM is socketed)
          SMB_BIOSFL_EDD (EDD Spec is supported)
          SMB_BIOSFL_525_12M (int 0x13 5.25" 1.2M floppy)
          SMB_BIOSFL_35_720K (int 0x13 3.5" 720K floppy)
          SMB_BIOSFL_35_288M (int 0x13 3.5" 2.88M floppy)
          SMB_BIOSFL_I5_PRINT (int 0x5 print screen svcs)
          SMB_BIOSFL_I9_KBD (int 0x9 8042 keyboard svcs)
          SMB_BIOSFL_I14_SER (int 0x14 serial svcs)
          SMB_BIOSFL_I17_PRINTER (int 0x17 printer svcs)
          0x100000000
          0x400000000
    Characteristics Extension Byte 1: 0x3
          SMB_BIOSXB1_ACPI (ACPI is supported)
          SMB_BIOSXB1_USBL (USB legacy is supported)
    Characteristics Extension Byte 2: 0xd
          SMB_BIOSXB2_BBOOT (BIOS Boot Specification supported)
          SMB_BIOSXB2_ETCDIST (Enable Targeted Content Distrib.)
          SMB_BIOSXB2_UEFI (UEFI Specification supported)
    Version Number: 0.0
    Embedded Ctlr Firmware Version Number: 0.0

  ID    SIZE TYPE
  1     129  SMB_TYPE_SYSTEM (type 1) (system information)

    Manufacturer: System manufacturer
    Product: System Product Name
    Version: System Version
    Serial Number: System Serial Number

    UUID: 20b1001e-8c00-0072-5566-10c37b474fc1
    Wake-Up Event: 0x6 (power switch)
    SKU Number: SKU
    Family: To be filled by O.E.M.

  ID    SIZE TYPE
  2     116  SMB_TYPE_BASEBOARD (type 2) (base board)

    Manufacturer: ASUSTeK COMPUTER INC.
    Product: P9X79 WS
    Version: Rev 1.xx
    Serial Number: 140525831000250
    Asset Tag: To be filled by O.E.M.
    Location Tag: To be filled by O.E.M.

    Chassis: 3
    Flags: 0x9
          SMB_BBFL_MOTHERBOARD (board is a motherboard)
          SMB_BBFL_REPLACABLE (board is field-replacable)
    Board Type: 0xa (motherboard)

  ID    SIZE TYPE
  46    38   SMB_TYPE_OBDEVS (type 10) (on-board devices)

    Onboard Ethernet
    Onboard Audio

  ID    SIZE TYPE
  3     106  SMB_TYPE_CHASSIS (type 3) (system enclosure or chassis)

    Manufacturer: Chassis Manufacture
    Version: Chassis Version
    Serial Number: Chassis Serial Number
    Asset Tag: PCS

    OEM Data: 0x0
    SKU number: ^E
    Lock Present: N
    Chassis Type: 0x3 (desktop)
    Boot-Up State: 0x3 (safe)
    Power Supply State: 0x3 (safe)
    Thermal State: 0x3 (safe)
    Chassis Height: 0u
    Power Cords: 1
    Element Records: 0
EOS

describe Ohai::System, "Solaris2.X DMI plugin" do
  before(:each) do
    @plugin = get_plugin("solaris2/dmi")
    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, ""))
  end

  it "should run smbios" do
    expect(@plugin).to receive(:shell_out).with("smbios").and_return(mock_shell_out(0, @stdout, ""))
    @plugin.run
  end

  {
    bios: {
      vendor: "American Megatrends Inc.",
      release_date: "08/26/2014",
    },
    system: {
      manufacturer: "System manufacturer",
      product: "System Product Name",
    },
    chassis: {
      lock_present: "N",
      asset_tag: "PCS",
    },
  }.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)
      end
    end
  end

  it "should ignore unwanted types" do
    @plugin.run
    expect(@plugin[:dmi]).not_to have_key(:on_board_devices)
  end
end