itchef/cookbooks/cpe_helpers/spec/dmi_ram_spec.rb (51 lines of code) (raw):
# Copyright (c) Facebook, Inc. and its affiliates.
#
require 'chefspec'
require_relative '../libraries/cpe_helpers'
describe CPE::Helpers do
context 'When parsing RAM sizes' do
expected = 8 * 1024 * 1024
it 'parse_ram parses {X} GB correctly' do
expect(CPE::Helpers.parse_ram('8 GB')).to eq(expected)
end
it 'parse_ram parses {X}GB correctly' do
expect(CPE::Helpers.parse_ram('8GB')).to eq(expected)
end
it 'parse_ram parses {X} MB correctly' do
expect(CPE::Helpers.parse_ram('8192 MB')).to eq(expected)
end
it 'parse_ram parses {X}MB correctly' do
expect(CPE::Helpers.parse_ram('8192MB')).to eq(expected)
end
it 'parse_ram parses {X} KB correctly' do
expect(CPE::Helpers.parse_ram('8388608 KB')).to eq(expected)
end
it 'parse_ram parses {X}KB correctly' do
expect(CPE::Helpers.parse_ram('8388608KB')).to eq(expected)
end
end
context 'When summing up RAM sizes' do
let(:node) { Chef::Node.new }
let(:dmi) { {} }
let(:mem) { {} }
before do
allow(node).to receive(:[]).with('dmi').and_return(dmi)
allow(node).to receive(:[]).with('memory').and_return(mem)
end
it 'sums up new dmidecode GB sizes correctly' do
allow(dmi).to receive(:dig).with('memory_device', 'all_records').
and_return([{ 'Size' => '16 GB' }, { 'Size' => '16 GB' }])
expect(CPE::Helpers.dmi_ram_total(node)).to eq(32 * 1024 * 1024)
end
it 'sums up old dmidecode MB sizes correctly' do
allow(dmi).to receive(:dig).with('memory_device', 'all_records').
and_return([{ 'Size' => '8192 MB' }, { 'Size' => '8192 MB' }])
expect(CPE::Helpers.dmi_ram_total(node)).to eq(16 * 1024 * 1024)
end
it 'falls back to meminfo if DMI data is unavailable' do
allow(dmi).to receive(:dig).with('memory_device', 'all_records').
and_return(nil)
allow(mem).to receive(:dig).with('total').
and_return('8388608kB')
expect(CPE::Helpers.dmi_ram_total(node)).to eq(8 * 1024 * 1024)
end
end
end