summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShahul Hameed <skhajamohid1@bloomberg.net>2015-08-18 21:26:17 +0000
committerShahul Hameed <skhajamohid1@bloomberg.net>2015-08-18 21:27:03 +0000
commitc417715ce2684cad8d70d646d2d05727392ecac5 (patch)
treebfdddda58b88f5583c7c88b7adbb6e5b7dfc2a9f
parent0c7303f9cd3ab997bfe174c2741c4d1714ee15bb (diff)
downloadohai-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.rb56
-rw-r--r--spec/unit/plugins/linux/memory_spec.rb204
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