diff options
author | Shahul Hameed <skhajamohid1@bloomberg.net> | 2015-08-18 21:26:17 +0000 |
---|---|---|
committer | Shahul Hameed <skhajamohid1@bloomberg.net> | 2015-08-18 21:27:03 +0000 |
commit | c417715ce2684cad8d70d646d2d05727392ecac5 (patch) | |
tree | bfdddda58b88f5583c7c88b7adbb6e5b7dfc2a9f | |
parent | 0c7303f9cd3ab997bfe174c2741c4d1714ee15bb (diff) | |
download | ohai-c417715ce2684cad8d70d646d2d05727392ecac5.tar.gz |
Make linux memory output consistent to other platforms, add spec tests for linux memory plugin
-rw-r--r-- | lib/ohai/plugins/linux/memory.rb | 56 | ||||
-rw-r--r-- | spec/unit/plugins/linux/memory_spec.rb | 204 |
2 files changed, 232 insertions, 28 deletions
diff --git a/lib/ohai/plugins/linux/memory.rb b/lib/ohai/plugins/linux/memory.rb index e5c76801..728a38cf 100644 --- a/lib/ohai/plugins/linux/memory.rb +++ b/lib/ohai/plugins/linux/memory.rb @@ -26,61 +26,61 @@ Ohai.plugin(:Memory) do File.open("/proc/meminfo").each do |line| case line when /^MemTotal:\s+(\d+) (.+)$/ - memory[:total] = "#{$1}#{$2}" + memory[:total] = $1.to_i / 1024.0 when /^MemFree:\s+(\d+) (.+)$/ - memory[:free] = "#{$1}#{$2}" + memory[:free] = $1.to_i / 1024.0 when /^Buffers:\s+(\d+) (.+)$/ - memory[:buffers] = "#{$1}#{$2}" + memory[:buffers] = $1.to_i / 1024.0 when /^Cached:\s+(\d+) (.+)$/ - memory[:cached] = "#{$1}#{$2}" + memory[:cached] = $1.to_i / 1024.0 when /^Active:\s+(\d+) (.+)$/ - memory[:active] = "#{$1}#{$2}" + memory[:active] = $1.to_i / 1024.0 when /^Inactive:\s+(\d+) (.+)$/ - memory[:inactive] = "#{$1}#{$2}" + memory[:inactive] = $1.to_i / 1024.0 when /^HighTotal:\s+(\d+) (.+)$/ - memory[:high_total] = "#{$1}#{$2}" + memory[:high_total] = $1.to_i / 1024.0 when /^HighFree:\s+(\d+) (.+)$/ - memory[:high_free] = "#{$1}#{$2}" + memory[:high_free] = $1.to_i / 1024.0 when /^LowTotal:\s+(\d+) (.+)$/ - memory[:low_total] = "#{$1}#{$2}" + memory[:low_total] = $1.to_i / 1024.0 when /^LowFree:\s+(\d+) (.+)$/ - memory[:low_free] = "#{$1}#{$2}" + memory[:low_free] = $1.to_i / 1024.0 when /^Dirty:\s+(\d+) (.+)$/ - memory[:dirty] = "#{$1}#{$2}" + memory[:dirty] = $1.to_i / 1024.0 when /^Writeback:\s+(\d+) (.+)$/ - memory[:writeback] = "#{$1}#{$2}" + memory[:writeback] = $1.to_i / 1024.0 when /^AnonPages:\s+(\d+) (.+)$/ - memory[:anon_pages] = "#{$1}#{$2}" + memory[:anon_pages] = $1.to_i / 1024.0 when /^Mapped:\s+(\d+) (.+)$/ - memory[:mapped] = "#{$1}#{$2}" + memory[:mapped] = $1.to_i / 1024.0 when /^Slab:\s+(\d+) (.+)$/ - memory[:slab] = "#{$1}#{$2}" + memory[:slab] = $1.to_i / 1024.0 when /^SReclaimable:\s+(\d+) (.+)$/ - memory[:slab_reclaimable] = "#{$1}#{$2}" + memory[:slab_reclaimable] = $1.to_i / 1024.0 when /^SUnreclaim:\s+(\d+) (.+)$/ - memory[:slab_unreclaim] = "#{$1}#{$2}" + memory[:slab_unreclaim] = $1.to_i / 1024.0 when /^PageTables:\s+(\d+) (.+)$/ - memory[:page_tables] = "#{$1}#{$2}" + memory[:page_tables] = $1.to_i / 1024.0 when /^NFS_Unstable:\s+(\d+) (.+)$/ - memory[:nfs_unstable] = "#{$1}#{$2}" + memory[:nfs_unstable] = $1.to_i / 1024.0 when /^Bounce:\s+(\d+) (.+)$/ - memory[:bounce] = "#{$1}#{$2}" + memory[:bounce] = $1.to_i / 1024.0 when /^CommitLimit:\s+(\d+) (.+)$/ - memory[:commit_limit] = "#{$1}#{$2}" + memory[:commit_limit] = $1.to_i / 1024.0 when /^Committed_AS:\s+(\d+) (.+)$/ - memory[:committed_as] = "#{$1}#{$2}" + memory[:committed_as] = $1.to_i / 1024.0 when /^VmallocTotal:\s+(\d+) (.+)$/ - memory[:vmalloc_total] = "#{$1}#{$2}" + memory[:vmalloc_total] = $1.to_i / 1024.0 when /^VmallocUsed:\s+(\d+) (.+)$/ - memory[:vmalloc_used] = "#{$1}#{$2}" + memory[:vmalloc_used] = $1.to_i / 1024.0 when /^VmallocChunk:\s+(\d+) (.+)$/ - memory[:vmalloc_chunk] = "#{$1}#{$2}" + memory[:vmalloc_chunk] = $1.to_i / 1024.0 when /^SwapCached:\s+(\d+) (.+)$/ - memory[:swap][:cached] = "#{$1}#{$2}" + memory[:swap][:cached] = $1.to_i / 1024.0 when /^SwapTotal:\s+(\d+) (.+)$/ - memory[:swap][:total] = "#{$1}#{$2}" + memory[:swap][:total] = $1.to_i / 1024.0 when /^SwapFree:\s+(\d+) (.+)$/ - memory[:swap][:free] = "#{$1}#{$2}" + memory[:swap][:free] = $1.to_i / 1024.0 end end end diff --git a/spec/unit/plugins/linux/memory_spec.rb b/spec/unit/plugins/linux/memory_spec.rb new file mode 100644 index 00000000..694652f2 --- /dev/null +++ b/spec/unit/plugins/linux/memory_spec.rb @@ -0,0 +1,204 @@ +# +# 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 File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper.rb') + +describe Ohai::System, "Linux memory plugin" do + before(:each) do + @plugin = get_plugin("linux/memory") + allow(@plugin).to receive(:collect_os).and_return(:linux) + @double_file = double("/proc/meminfo") + allow(@double_file).to receive(:each). + and_yield("MemTotal: 131932120 kB"). + and_yield("MemFree: 2269032 kB"). + and_yield("Buffers: 646368 kB"). + and_yield("Cached: 32346556 kB"). + and_yield("SwapCached: 312 kB"). + and_yield("Active: 98595796 kB"). + and_yield("Inactive: 18477320 kB"). + and_yield("HighTotal: 0 kB"). + and_yield("HighFree: 0 kB"). + and_yield("LowTotal: 131932120 kB"). + and_yield("LowFree: 2269032 kB"). + and_yield("SwapTotal: 16777208 kB"). + and_yield("SwapFree: 14127356 kB"). + and_yield("Dirty: 3212 kB"). + and_yield("Writeback: 0 kB"). + and_yield("AnonPages: 84082132 kB"). + and_yield("Mapped: 3445224 kB"). + and_yield("Slab: 9892096 kB"). + and_yield("SReclaimable: 362636 kB"). + and_yield("SUnreclaim: 18860 kB"). + and_yield("PageTables: 1759332 kB"). + and_yield("NFS_Unstable: 0 kB"). + and_yield("Bounce: 0 kB"). + and_yield("CommitLimit: 148709328 kB"). + and_yield("Committed_AS: 333717060 kB"). + and_yield("VmallocTotal: 34359738367 kB"). + and_yield("VmallocUsed: 276796 kB"). + and_yield("VmallocChunk: 34359461515 kB"). + and_yield("HugePages_Total: 0"). + and_yield("HugePages_Free: 0"). + and_yield("HugePages_Rsvd: 0"). + and_yield("Hugepagesize: 2048 kB") + allow(File).to receive(:open).with("/proc/meminfo").and_return(@double_file) + end + + it "should get total memory" do + @plugin.run + expect(@plugin[:memory][:total]).to eql(131932120 / 1024.0) + end + + it "should get free memory" do + @plugin.run + expect(@plugin[:memory][:free]).to eql(2269032 / 1024.0) + end + + it "should get memory used for file buffers" do + @plugin.run + expect(@plugin[:memory][:buffers]).to eql(646368 / 1024.0) + end + + it "should get cache memory" do + @plugin.run + expect(@plugin[:memory][:cached]).to eql(32346556 / 1024.0) + end + + it "should get active memory" do + @plugin.run + expect(@plugin[:memory][:active]).to eql(98595796 / 1024.0) + end + + it "should get inactive memory" do + @plugin.run + expect(@plugin[:memory][:inactive]).to eql(18477320 / 1024.0) + end + + it "should get high_total memory" do + @plugin.run + expect(@plugin[:memory][:high_total]).to eql(0.0) + end + + it "should get high_free memory" do + @plugin.run + expect(@plugin[:memory][:high_free]).to eql(0.0) + end + + it "should get low_total memory" do + @plugin.run + expect(@plugin[:memory][:low_total]).to eql(131932120 / 1024.0) + end + + it "should get low_free memory" do + @plugin.run + expect(@plugin[:memory][:low_free]).to eql(2269032 / 1024.0) + end + + it "should get dirty memory" do + @plugin.run + expect(@plugin[:memory][:dirty]).to eql(3212 / 1024.0) + end + + it "should get writeback memory" do + @plugin.run + expect(@plugin[:memory][:writeback]).to eql(0.0) + end + + it "should get anon_pages memory" do + @plugin.run + expect(@plugin[:memory][:anon_pages]).to eql(84082132 / 1024.0) + end + + it "should get mapped memory" do + @plugin.run + expect(@plugin[:memory][:mapped]).to eql(3445224 / 1024.0) + end + + + it "should get slab memory" do + @plugin.run + expect(@plugin[:memory][:slab]).to eql(9892096 / 1024.0) + end + + it "should get slab_reclaimable memory" do + @plugin.run + expect(@plugin[:memory][:slab_reclaimable]).to eql(362636 / 1024.0) + end + + it "should get slab_reclaimable memory" do + @plugin.run + expect(@plugin[:memory][:slab_unreclaim]).to eql(18860 / 1024.0) + end + + it "should get page_tables memory" do + @plugin.run + expect(@plugin[:memory][:page_tables]).to eql(1759332 / 1024.0) + end + + + it "should get nfs_unstable memory" do + @plugin.run + expect(@plugin[:memory][:nfs_unstable]).to eql(0.0) + end + + it "should get bounce memory" do + @plugin.run + expect(@plugin[:memory][:bounce]).to eql(0.0) + end + + it "should get commit_limit memory" do + @plugin.run + expect(@plugin[:memory][:commit_limit]).to eql(148709328 / 1024.0) + end + + it "should get committed_as memory" do + @plugin.run + expect(@plugin[:memory][:committed_as]).to eql(333717060 / 1024.0) + end + + it "should get vmalloc_total memory" do + @plugin.run + expect(@plugin[:memory][:vmalloc_total]).to eql(34359738367 / 1024.0) + end + + it "should get vmalloc_used memory" do + @plugin.run + expect(@plugin[:memory][:vmalloc_used]).to eql(276796 / 1024.0) + end + + it "should get vmalloc_chunk memory" do + @plugin.run + expect(@plugin[:memory][:vmalloc_chunk]).to eql(34359461515 / 1024.0) + end + + it "should get total swap" do + @plugin.run + expect(@plugin[:memory][:swap][:total]).to eql(16777208 / 1024.0) + end + + it "should get cached swap" do + @plugin.run + expect(@plugin[:memory][:swap][:cached]).to eql(312 / 1024.0) + end + + it "should get free swap" do + @plugin.run + expect(@plugin[:memory][:swap][:free]).to eql(14127356 / 1024.0) + end + + + +end |