vmstat 1.1.0 → 2.0.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.
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Vmstat
1
+ # Vmstat [![Build Status](https://secure.travis-ci.org/threez/ruby-vmstat.png)](http://travis-ci.org/threez/ruby-vmstat) [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/threez/ruby-vmstat)
2
2
 
3
3
  This is a focused and fast library to get system information like:
4
4
 
@@ -7,8 +7,8 @@ This is a focused and fast library to get system information like:
7
7
  * _CPU_ (user, system, nice, idle)
8
8
  * _Load_ Average
9
9
  * _Disk_ (type, disk path, free bytes, total bytes, ...)
10
- * _Boot time_
11
- * _Current Task_ (used bytes and usage time *MAC OS X ONLY*)
10
+ * _Boot Time_
11
+ * _Current Task_ (used bytes and usage time *MAC OS X / Linux ONLY*)
12
12
 
13
13
  *It currently supports:*
14
14
 
@@ -45,7 +45,7 @@ Just require the library and make a snapshot or use the distinct methods to just
45
45
  Vmstat.snapshot # => #<Vmstat::Snapshot:0x007fe5f22df660
46
46
  # @at=2012-10-09 21:48:57 +0200,
47
47
  # @boot_time=2012-10-09 18:42:37 +0200,
48
- # @cpu=
48
+ # @cpus=
49
49
  # [#<struct Vmstat::Cpu
50
50
  # num=0,
51
51
  # user=187167,
@@ -81,15 +81,7 @@ Just require the library and make a snapshot or use the distinct methods to just
81
81
  # inactive=484694,
82
82
  # free=470582,
83
83
  # pageins=102438,
84
- # pageouts=0,
85
- # zero_filled=930821373,
86
- # reactivated=33,
87
- # purgeable=88184,
88
- # purged=0,
89
- # faults=90277275,
90
- # copy_on_write_faults=668693,
91
- # lookups=516021,
92
- # hits=17>,
84
+ # pageouts=0>,
93
85
  # @network_interfaces=
94
86
  # [#<struct Vmstat::NetworkInterface
95
87
  # name=:lo0,
@@ -142,9 +134,8 @@ Just require the library and make a snapshot or use the distinct methods to just
142
134
  ## Todo
143
135
 
144
136
  * Swap information
145
- * Reduce the number of memory information gatherd
146
137
  * Support more platforms (hp ux, aix, solaris, ...)
147
- * Server performance information (open file handles, cache sizes, ...)
138
+ * Server performance/system information (open file handles, cache sizes, number of inodes ...)
148
139
 
149
140
  ## Contributing
150
141
 
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ Rake::ExtensionTask.new(:vmstat) do |ext|
8
8
  end
9
9
 
10
10
  desc "Run specs"
11
- RSpec::Core::RakeTask.new(:spec)
11
+ RSpec::Core::RakeTask.new(:spec => :compile)
12
12
 
13
13
  desc "Open an irb session preloaded with smartstat"
14
14
  task :console do
@@ -43,37 +43,29 @@ VALUE vmstat_cpu(VALUE self) {
43
43
 
44
44
  return cpus;
45
45
  }
46
+
47
+ int system_int(const char * name) {
48
+ int number;
49
+ size_t number_size = sizeof(number);
50
+ sysctlbyname(name, &number, &number_size, NULL, 0);
51
+ return number;
52
+ }
46
53
  #endif
47
54
 
48
55
  #ifndef VMSTAT_MEMORY
49
56
  #define VMSTAT_MEMORY
50
57
  VALUE vmstat_memory(VALUE self) {
51
58
  VALUE memory = rb_funcall(rb_path2class("Vmstat::Memory"),
52
- rb_intern("new"), 15, ULL2NUM(system_ull("vm.stats.vm.v_page_size")),
53
- ULL2NUM(system_ull("vm.stats.vm.v_active_count")),
54
- ULL2NUM(system_ull("vm.stats.vm.v_wire_count")),
55
- ULL2NUM(system_ull("vm.stats.vm.v_inactive_count")),
56
- ULL2NUM(system_ull("vm.stats.vm.v_free_count")),
57
- ULL2NUM(Qnil),
58
- ULL2NUM(Qnil),
59
- ULL2NUM(system_ull("vm.stats.misc.zero_page_count")),
60
- ULL2NUM(system_ull("vm.stats.vm.v_reactivated")),
61
- ULL2NUM(Qnil),
62
- ULL2NUM(Qnil),
63
- ULL2NUM(system_ull("vm.stats.vm.v_vm_faults")),
64
- ULL2NUM(system_ull("vm.stats.vm.v_cow_faults")),
65
- ULL2NUM(Qnil),
66
- ULL2NUM(Qnil));
59
+ rb_intern("new"), 7, ULL2NUM(system_ull("vm.stats.vm.v_page_size")),
60
+ ULL2NUM(system_ull("vm.stats.vm.v_active_count")),
61
+ ULL2NUM(system_ull("vm.stats.vm.v_wire_count")),
62
+ ULL2NUM(system_ull("vm.stats.vm.v_inactive_count")),
63
+ ULL2NUM(system_ull("vm.stats.vm.v_free_count")),
64
+ ULL2NUM(system_ull("vm.stats.vm.v_vnodepgsin")),
65
+ ULL2NUM(system_ull("vm.stats.vm.v_vnodepgsout")));
67
66
  return memory;
68
67
  }
69
68
 
70
- int system_int(const char * name) {
71
- int number;
72
- size_t number_size = sizeof(number);
73
- sysctlbyname(name, &number, &number_size, NULL, 0);
74
- return number;
75
- }
76
-
77
69
  unsigned long long system_ull(const char * name) {
78
70
  long number;
79
71
  size_t number_size = sizeof(number);
@@ -53,21 +53,13 @@ VALUE vmstat_memory(VALUE self) {
53
53
  (host_info_t)&vm_stat, &host_count);
54
54
  if (err == KERN_SUCCESS) {
55
55
  memory = rb_funcall(rb_path2class("Vmstat::Memory"),
56
- rb_intern("new"), 15, ULL2NUM(pagesize),
57
- ULL2NUM(vm_stat.active_count),
58
- ULL2NUM(vm_stat.inactive_count),
59
- ULL2NUM(vm_stat.wire_count),
60
- ULL2NUM(vm_stat.free_count),
61
- ULL2NUM(vm_stat.pageins),
62
- ULL2NUM(vm_stat.pageouts),
63
- ULL2NUM(vm_stat.zero_fill_count),
64
- ULL2NUM(vm_stat.reactivations),
65
- ULL2NUM(vm_stat.purgeable_count),
66
- ULL2NUM(vm_stat.purges),
67
- ULL2NUM(vm_stat.faults),
68
- ULL2NUM(vm_stat.cow_faults),
69
- ULL2NUM(vm_stat.lookups),
70
- ULL2NUM(vm_stat.hits));
56
+ rb_intern("new"), 7, ULL2NUM(pagesize),
57
+ ULL2NUM(vm_stat.active_count),
58
+ ULL2NUM(vm_stat.inactive_count),
59
+ ULL2NUM(vm_stat.wire_count),
60
+ ULL2NUM(vm_stat.free_count),
61
+ ULL2NUM(vm_stat.pageins),
62
+ ULL2NUM(vm_stat.pageouts));
71
63
  }
72
64
 
73
65
  err = vm_deallocate(mach_task_self(), (vm_address_t)pagesize,
@@ -92,8 +84,7 @@ VALUE vmstat_task(VALUE self) {
92
84
  err = task_info(mach_task_self(), TASK_BASIC_INFO, (task_info_t)&info, &size);
93
85
  if (err == KERN_SUCCESS) {
94
86
  task = rb_funcall(rb_path2class("Vmstat::Task"),
95
- rb_intern("new"), 5, LONG2NUM(info.suspend_count),
96
- LONG2NUM(info.virtual_size),
87
+ rb_intern("new"), 4, LONG2NUM(info.virtual_size),
97
88
  LONG2NUM(info.resident_size),
98
89
  LONG2NUM(info.user_time.seconds * 1000 + info.user_time.microseconds),
99
90
  LONG2NUM(info.system_time.seconds * 1000 + info.system_time.microseconds));
@@ -1,5 +1,14 @@
1
1
  require "vmstat/version"
2
2
 
3
+ # This is a focused and fast library to get system information like:
4
+ #
5
+ # * _Memory_ (free, active, ...)
6
+ # * _Network_ _Interfaces_ (name, in bytes, out bytes, ...)
7
+ # * _CPU_ (user, system, nice, idle)
8
+ # * _Load_ Average
9
+ # * _Disk_ (type, disk path, free bytes, total bytes, ...)
10
+ # * _Boot_ _Time_
11
+ # * _Current_ _Task_ (used bytes and usage time *MACOSX* or *LINUX* *ONLY*)
3
12
  module Vmstat
4
13
  autoload :Cpu, "vmstat/cpu"
5
14
  autoload :NetworkInterface, "vmstat/network_interface"
@@ -11,7 +20,7 @@ module Vmstat
11
20
  autoload :ProcFS, "vmstat/procfs"
12
21
  autoload :Stub, "vmstat/stub"
13
22
  autoload :Snapshot, "vmstat/snapshot"
14
- extend Stub # the default null implementation
23
+ extend Stub # the default empty implementation
15
24
 
16
25
  # @!method self.boot_time
17
26
  # Fetches the boot time of the system.
@@ -64,7 +73,7 @@ module Vmstat
64
73
  # Vmstat.task # => #<struct Vmstat::Task ...>
65
74
 
66
75
  # Creates a full snapshot of the systems hardware statistics.
67
- # @param [Array<String>] the paths to the disks to snapshot.
76
+ # @param [Array<String>] paths the paths to the disks to snapshot.
68
77
  # @return [Vmstat::Snapshot] a snapshot of all statistics.
69
78
  # @example
70
79
  # Vmstat.snapshot # => #<struct Vmstat::Snapshot ...>
@@ -1,4 +1,15 @@
1
1
  module Vmstat
2
+ # Gathered cpu performance statistics snapshot.
3
+ # @attr [Fixnum] num
4
+ # The number of the cpu starting at 0 for the first cpu.
5
+ # @attr [Fixnum] user
6
+ # Current counter of ticks spend in user. The counter can overflow.
7
+ # @attr [Fixnum] system
8
+ # Current counter of ticks spend in system. The counter can overflow.
9
+ # @attr [Fixnum] nice
10
+ # Current counter of ticks spend in nice. The counter can overflow.
11
+ # @attr [Fixnum] idle
12
+ # Current counter of ticks spend in idle. The counter can overflow.
2
13
  class Cpu < Struct.new(:num, :user, :system, :nice, :idle)
3
14
  end
4
15
  end
@@ -1,18 +1,42 @@
1
1
  module Vmstat
2
+ # Gathered disk statistics snapshot.
3
+ # @attr [Symbol] type
4
+ # The file system name e. g. *hfs*.
5
+ # @attr [String] origin
6
+ # The location of the device e.g. */dev/disk0*.
7
+ # @attr [String] mount
8
+ # The mount point of the device e.g. */mnt/store*.
9
+ # @attr [Fixnum] block_size
10
+ # Size of file system blocks in bytes.
11
+ # @attr [Fixnum] free_blocks
12
+ # Free blocks in the file system.
13
+ # @attr [Fixnum] available_blocks
14
+ # Available blocks in the file system.
15
+ # @attr [Fixnum] total_blocks
16
+ # Total number of blocks in the file system.
2
17
  class Disk < Struct.new(:type, :origin, :mount, :block_size,
3
18
  :free_blocks, :available_blocks, :total_blocks)
19
+ # Calculates the number of free bytes for the file system.
20
+ # @return [Fixnum] number of free bytes
4
21
  def free_bytes
5
22
  free_blocks * block_size
6
23
  end
7
24
 
25
+ # Calculates the number of available bytes for the file system.
26
+ # @return [Fixnum] number of available bytes
8
27
  def available_bytes
9
28
  available_blocks * block_size
10
29
  end
11
30
 
31
+ # Calculates the number of used bytes for the file system.
32
+ # @return [Fixnum] number of used bytes
12
33
  def used_bytes
13
34
  (total_blocks - free_blocks) * block_size
14
35
  end
15
36
 
37
+ # Calculates the number of total bytes for the file system. This is the max.
38
+ # number of bytes possible on the device.
39
+ # @return [Fixnum] number of total bytes
16
40
  def total_bytes
17
41
  total_blocks * block_size
18
42
  end
@@ -22,9 +22,16 @@ module Vmstat
22
22
  }.freeze
23
23
 
24
24
  # Mainly a wrapper for the {Vmstat::Disk} class constructor. This constructor
25
- # handles the file system type mapping.
26
- def initialize(fs = nil, path = nil, block_size = nil,
27
- free_blocks = nil, available_blocks = nil, total_blocks = nil)
25
+ # handles the file system type mapping (based on the magic codes defined in
26
+ # {LinuxDisk::FS_CODES}).
27
+ # @param [Fixnum] fs the type or magix number of the disk.
28
+ # @param [String] path the path to the disk
29
+ # @param [Fixnum] block_size size of a file system block
30
+ # @param [Fixnum] free_blocks the number of free blocks
31
+ # @param [Fixnum] available_blocks the number of available blocks
32
+ # @param [Fixnum] total_blocks the number of total blocks
33
+ def initialize(fs = nil, path = nil, block_size = nil, free_blocks = nil,
34
+ available_blocks = nil, total_blocks = nil)
28
35
  @fs = fs
29
36
  super FS_CODES[@fs], path, path, block_size,
30
37
  free_blocks, available_blocks, total_blocks
@@ -1,4 +1,11 @@
1
1
  module Vmstat
2
+ # In UNIX computing, the system load is a measure of the amount of
3
+ # computational work that a computer system performs. The load average
4
+ # represents the average system load over a period of time.
5
+ # Source: wikipedia(en).
6
+ # @attr [Float] one_minute The load for the last minute.
7
+ # @attr [Float] five_minutes The load for the last five minutes.
8
+ # @attr [Float] fifteen_minutes The load for the last fifteen minutes.
2
9
  class LoadAverage < Struct.new(:one_minute, :five_minutes, :fifteen_minutes)
3
10
  end
4
11
  end
@@ -1,22 +1,41 @@
1
1
  module Vmstat
2
- class Memory < Struct.new(:pagesize,
3
- :wired, :active, :inactive, :free,
4
- :pageins, :pageouts,
5
- :zero_filled, :reactivated, :purgeable,
6
- :purged, :faults,
7
- :copy_on_write_faults, :lookups, :hits)
2
+ # Gathered memory data snapshot.
3
+ # @attr [Fixnum] pagesize
4
+ # The page size of the memory in bytes.
5
+ # @attr [Fixnum] wired
6
+ # The number of wired pages in the system.
7
+ # @attr [Fixnum] active
8
+ # The number of active pages in the system.
9
+ # @attr [Fixnum] inactive
10
+ # The number of inactive pages in the system.
11
+ # @attr [Fixnum] free
12
+ # The number of free pages in the system.
13
+ # @attr [Fixnum] pageins
14
+ # The number of pageins.
15
+ # @attr [Fixnum] pageouts
16
+ # The number of pageouts.
17
+ class Memory < Struct.new(:pagesize, :wired, :active, :inactive, :free,
18
+ :pageins, :pageouts)
19
+ # Calculate the wired bytes based of the wired pages.
20
+ # @return [Fixnum] wired bytes
8
21
  def wired_bytes
9
22
  wired * pagesize
10
23
  end
11
24
 
25
+ # Calculate the active bytes based of the active pages.
26
+ # @return [Fixnum] active bytes
12
27
  def active_bytes
13
28
  active * pagesize
14
29
  end
15
30
 
31
+ # Calculate the inactive bytes based of the inactive pages.
32
+ # @return [Fixnum] inactive bytes
16
33
  def inactive_bytes
17
34
  inactive * pagesize
18
35
  end
19
36
 
37
+ # Calculate the free bytes based of the free pages.
38
+ # @return [Fixnum] free bytes
20
39
  def free_bytes
21
40
  free * pagesize
22
41
  end
@@ -1,4 +1,12 @@
1
1
  module Vmstat
2
+ # Gathered the network interface information.
3
+ # @attr [Symbol] name the system name for the network interface.
4
+ # @attr [Fixnum] in_bytes the number od bytes that where received inbound.
5
+ # @attr [Fixnum] in_errors the number of errors that where received inbound.
6
+ # @attr [Fixnum] in_drops the number of drops that where received inbound.
7
+ # @attr [Fixnum] out_bytes the number od bytes that where send outbound.
8
+ # @attr [Fixnum] out_errors the number od errors that where send outbound.
9
+ # @attr [Fixnum] type the type of the interface (bsd numbers)
2
10
  class NetworkInterface < Struct.new(:name, :in_bytes, :in_errors, :in_drops,
3
11
  :out_bytes, :out_errors, :type)
4
12
 
@@ -8,10 +16,16 @@ module Vmstat
8
16
  # The type of loopback devices on freebsd/mac os x
9
17
  LOOPBACK_TYPE = 0x18
10
18
 
19
+ # Checks if this network interface is a loopback device.
20
+ # @return [TrueClass, FalseClass] true if it is a loopback device, false
21
+ # otherwise.
11
22
  def loopback?
12
23
  type == LOOPBACK_TYPE
13
24
  end
14
25
 
26
+ # Checks if this network interface is a ethernet device.
27
+ # @return [TrueClass, FalseClass] true if it is a ethernet device, false
28
+ # otherwise.
15
29
  def ethernet?
16
30
  type == ETHERNET_TYPE
17
31
  end
@@ -1,4 +1,6 @@
1
1
  module Vmstat
2
+ # Implementation of performance metrics gathering for linux and other os with
3
+ # the proc file system.
2
4
  module ProcFS
3
5
  # Grep from the man procfs about cpu data in stat file:
4
6
  # @example Format
@@ -84,14 +86,32 @@ module Vmstat
84
86
  netifcs = []
85
87
  procfs_file("net", "dev") do |file|
86
88
  file.read.scan(NET_DATA) do |columns|
89
+ type = case columns[0]
90
+ when /^eth/ then NetworkInterface::ETHERNET_TYPE
91
+ when /^lo/ then NetworkInterface::LOOPBACK_TYPE
92
+ end
93
+
87
94
  netifcs << NetworkInterface.new(columns[0].to_sym, columns[1].to_i,
88
95
  columns[3].to_i, columns[4].to_i,
89
- columns[9].to_i, columns[11].to_i)
96
+ columns[9].to_i, columns[11].to_i,
97
+ type)
90
98
  end
91
99
  end
92
100
  netifcs
93
101
  end
94
102
 
103
+ # Fetches the current process cpu and memory data.
104
+ # @return [Vmstat::Task] the task data for the current process
105
+ def task
106
+ @pagesize ||= Vmstat.pagesize
107
+
108
+ procfs_file("self", "stat") do |file|
109
+ data = file.read.split(/ /)
110
+ Task.new(data[22].to_i / @pagesize, data[23].to_i,
111
+ data[13].to_i * 1000, data[14].to_i * 1000)
112
+ end
113
+ end
114
+
95
115
  # Fetches the boot time of the system.
96
116
  # @return [Time] the boot time as regular time object.
97
117
  # @example
@@ -1,12 +1,28 @@
1
1
  module Vmstat
2
+ # Snapshots help to gather information about the whole system quickly.
3
+ # @attr [Time] at the timestamp, when the snapshot was created.
4
+ # @attr [Time] boot_time the timestamp, when the system booted.
5
+ # @attr [Array<Vmstat::Cpu>] cpus the data of each and every cpu.
6
+ # @attr [Array<Vmstat::Disk>] disks the disks that are part of the snapshot.
7
+ # @attr [Vmstat::LoadAverage] load_average current load average at the time
8
+ # when the snapshot toke place.
9
+ # @attr [Vmstat::Memory] memory the memory data snapshot.
10
+ # @attr [Array<Vmstat::NetworkInterface>] network_interfaces the network
11
+ # interface data snapshots per network interface.
12
+ # @attr [Vmstat::Task] task optionally the information for the current task
13
+ # @example Creating a snapshot
14
+ # snapshop = Vmstat::Snapshop.new(["/dev/disk0", "/dev/disk1"])
2
15
  class Snapshot
3
- attr_reader :at, :boot_time, :cpu, :disks, :load_average,
16
+ attr_reader :at, :boot_time, :cpus, :disks, :load_average,
4
17
  :memory, :network_interfaces, :task
5
18
 
19
+ # Create a new snapshot for system informations. The passed paths array,
20
+ # should contain the disk paths to create a snapshot for.
21
+ # @param [Array<String>] paths the paths to create snapshots for
6
22
  def initialize(paths = [])
7
23
  @at = Time.now
8
24
  @boot_time = Vmstat.boot_time
9
- @cpu = Vmstat.cpu
25
+ @cpus = Vmstat.cpu
10
26
  @disks = paths.map { |path| Vmstat.disk(path) }
11
27
  @load_average = Vmstat.load_average
12
28
  @memory = Vmstat.memory
@@ -1,4 +1,7 @@
1
1
  module Vmstat
2
+ # This is a stub module that should be replaced by system specific
3
+ # implementations of the different functions. This can either be native or
4
+ # with other modules like {ProcFS}.
2
5
  module Stub
3
6
  # Fetches the boot time of the system.
4
7
  # @return [Time] the boot time as regular time object.
@@ -1,6 +1,14 @@
1
1
  module Vmstat
2
- class Task < Struct.new(:suspend_count, :virtual_size, :resident_size,
2
+ # Per task performance metrics snapshot.
3
+ # @attr [Fixnum] virtual_size
4
+ # The number of virtual pages for the task.
5
+ # @attr [Fixnum] resident_size
6
+ # The number of resident pages for the task
7
+ # @attr [Fixnum] user_time_ms
8
+ # The total user run time for terminated threads within the task.
9
+ # @attr [Fixnum] system_time_ms
10
+ # The total system run time for terminated threads within the task.
11
+ class Task < Struct.new(:virtual_size, :resident_size,
3
12
  :user_time_ms, :system_time_ms)
4
13
  end
5
14
  end
6
-
@@ -1,3 +1,3 @@
1
1
  module Vmstat
2
- VERSION = "1.1.0"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -0,0 +1 @@
1
+ 1587 (bash) S 1586 1587 1492 34816 1662 4202496 1405 6289 0 2 2 0 0 7 20 0 1 0 7017 19689472 515 18446744073709551615 4194304 5082140 140736936765952 140736936764896 139925747992062 0 65536 3686404 1266761467 0 0 0 17 0 0 0 0 0 0
@@ -13,7 +13,7 @@ describe Vmstat::Cpu do
13
13
  subject { first_cpu }
14
14
 
15
15
  it "should return a vmstat cpu object" do
16
- should be_a(Vmstat::Cpu)
16
+ should be_a(described_class)
17
17
  end
18
18
 
19
19
  context "methods" do
@@ -1,12 +1,32 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Vmstat::Disk do
4
+ context "sample" do
5
+ let(:disk) { described_class.new :hfs, "/dev/disk0", "/mnt/test",
6
+ 4096, 100, 200, 600 }
7
+ subject { disk }
8
+
9
+ its(:type) { should == :hfs }
10
+ its(:origin) { should == "/dev/disk0" }
11
+ its(:mount) { should == "/mnt/test" }
12
+
13
+ its(:block_size) { should == 4096 }
14
+ its(:free_blocks) { should == 100 }
15
+ its(:available_blocks) { should == 200 }
16
+ its(:total_blocks) { should == 600 }
17
+
18
+ its(:free_bytes) { should == 409600 }
19
+ its(:available_bytes) { should == 819200 }
20
+ its(:used_bytes) { should == 2048000 }
21
+ its(:total_bytes) { should == 2457600 }
22
+ end
23
+
4
24
  context "Vmstat#disk" do
5
25
  let(:disk) { Vmstat.disk("/") }
6
26
  subject { disk }
7
27
 
8
28
  it "should be a vmstat disk object" do
9
- should be_a(Vmstat::Disk)
29
+ should be_a(described_class)
10
30
  end
11
31
 
12
32
  context "methods" do
@@ -5,7 +5,7 @@ describe Vmstat::LoadAverage do
5
5
  subject { Vmstat.load_average }
6
6
 
7
7
  it "should be an vmstat load average object" do
8
- should be_a(Vmstat::LoadAverage)
8
+ should be_a(described_class)
9
9
  end
10
10
 
11
11
  context "methods" do
@@ -1,12 +1,33 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Vmstat::Memory do
4
+ context "sample" do
5
+ let(:disk) { described_class.new 4096, 775581, 196146, 437495, 685599,
6
+ 1560532, 0 }
7
+ subject { disk }
8
+
9
+ its(:pagesize) { should == 4096 }
10
+
11
+ its(:wired) { should == 775581 }
12
+ its(:active) { should == 196146 }
13
+ its(:inactive) { should == 437495 }
14
+ its(:free) { should == 685599 }
15
+
16
+ its(:wired_bytes) { should == 3176779776 }
17
+ its(:active_bytes) { should == 803414016 }
18
+ its(:inactive_bytes) { should == 1791979520 }
19
+ its(:free_bytes) { should == 2808213504 }
20
+
21
+ its(:pageins) { should == 1560532 }
22
+ its(:pageouts) { should == 0 }
23
+ end
24
+
4
25
  context "Vmstat#memory" do
5
26
  let(:memory) { Vmstat.memory }
6
27
  subject { memory }
7
28
 
8
29
  it "should be a vmstat memory object" do
9
- should be_a(Vmstat::Memory)
30
+ should be_a(described_class)
10
31
  end
11
32
 
12
33
  context "methods" do
@@ -15,14 +36,13 @@ describe Vmstat::Memory do
15
36
  it { should respond_to(:active) }
16
37
  it { should respond_to(:inactive) }
17
38
  it { should respond_to(:free) }
39
+ it { should respond_to(:pageins) }
40
+ it { should respond_to(:pageouts) }
41
+
18
42
  it { should respond_to(:wired_bytes) }
19
43
  it { should respond_to(:active_bytes) }
20
44
  it { should respond_to(:inactive_bytes) }
21
45
  it { should respond_to(:free_bytes) }
22
- it { should respond_to(:zero_filled) }
23
- it { should respond_to(:reactivated) }
24
- it { should respond_to(:faults) }
25
- it { should respond_to(:copy_on_write_faults) }
26
46
  end
27
47
 
28
48
  context "content" do
@@ -31,14 +51,13 @@ describe Vmstat::Memory do
31
51
  its(:active) { should be_a_kind_of(Numeric) }
32
52
  its(:inactive) { should be_a_kind_of(Numeric) }
33
53
  its(:free) { should be_a_kind_of(Numeric) }
54
+ its(:pageins) { should be_a_kind_of(Numeric) }
55
+ its(:pageouts) { should be_a_kind_of(Numeric) }
56
+
34
57
  its(:wired_bytes) { should be_a_kind_of(Numeric) }
35
58
  its(:active_bytes) { should be_a_kind_of(Numeric) }
36
59
  its(:inactive_bytes) { should be_a_kind_of(Numeric) }
37
60
  its(:free_bytes) { should be_a_kind_of(Numeric) }
38
- its(:zero_filled) { should be_a_kind_of(Numeric) }
39
- its(:reactivated) { should be_a_kind_of(Numeric) }
40
- its(:faults) { should be_a_kind_of(Numeric) }
41
- its(:copy_on_write_faults) { should be_a_kind_of(Numeric) }
42
61
  end
43
62
  end
44
- end
63
+ end
@@ -13,7 +13,7 @@ describe Vmstat::NetworkInterface do
13
13
  subject { loopback }
14
14
 
15
15
  it "should be a vmstat network interface object" do
16
- should be_a(Vmstat::NetworkInterface)
16
+ should be_a(described_class)
17
17
  end
18
18
 
19
19
  context "methods" do
@@ -53,10 +53,20 @@ describe Vmstat::ProcFS do
53
53
  it { should be_a(Array) }
54
54
  it do
55
55
  should == [
56
- Vmstat::NetworkInterface.new(:lo, 3224, 0, 0, 3224, 0),
57
- Vmstat::NetworkInterface.new(:eth1, 0, 1, 2, 0, 3),
58
- Vmstat::NetworkInterface.new(:eth0, 33660, 0, 0, 36584, 0)
56
+ Vmstat::NetworkInterface.new(:lo, 3224, 0, 0, 3224, 0,
57
+ Vmstat::NetworkInterface::LOOPBACK_TYPE),
58
+ Vmstat::NetworkInterface.new(:eth1, 0, 1, 2, 0, 3,
59
+ Vmstat::NetworkInterface::ETHERNET_TYPE),
60
+ Vmstat::NetworkInterface.new(:eth0, 33660, 0, 0, 36584, 0,
61
+ Vmstat::NetworkInterface::ETHERNET_TYPE)
59
62
  ]
60
63
  end
61
64
  end
65
+
66
+ context "#task" do
67
+ subject { procfs.task }
68
+
69
+ it { should be_a(Vmstat::Task) }
70
+ it { should == Vmstat::Task.new(4807, 515, 2000, 0) }
71
+ end
62
72
  end
@@ -6,13 +6,13 @@ describe Vmstat::Snapshot do
6
6
  subject { snapshot }
7
7
 
8
8
  it "should be an vmstat load snapshot object" do
9
- should be_a(Vmstat::Snapshot)
9
+ should be_a(described_class)
10
10
  end
11
11
 
12
12
  context "methods" do
13
13
  it { should respond_to(:at) }
14
14
  it { should respond_to(:boot_time) }
15
- it { should respond_to(:cpu) }
15
+ it { should respond_to(:cpus) }
16
16
  it { should respond_to(:disks) }
17
17
  it { should respond_to(:load_average) }
18
18
  it { should respond_to(:memory) }
@@ -23,7 +23,7 @@ describe Vmstat::Snapshot do
23
23
  context "content" do
24
24
  its(:at) { should be_a(Time) }
25
25
  its(:boot_time) { should be_a(Time) }
26
- its(:cpu) { should be_a(Array) }
26
+ its(:cpus) { should be_a(Array) }
27
27
  its(:disks) { should be_a(Array) }
28
28
  its(:load_average) { should be_a(Vmstat::LoadAverage) }
29
29
  its(:memory) { should be_a(Vmstat::Memory) }
@@ -31,7 +31,7 @@ describe Vmstat::Snapshot do
31
31
  its(:task) { should be_a(Vmstat::Task) }
32
32
 
33
33
  context "first of cpu" do
34
- subject { snapshot.cpu.first }
34
+ subject { snapshot.cpus.first }
35
35
  it { should be_a(Vmstat::Cpu) }
36
36
  end
37
37
 
@@ -6,11 +6,10 @@ describe Vmstat::Task do
6
6
  subject { task }
7
7
 
8
8
  it "should be a vmstat task object" do
9
- should be_a(Vmstat::Task)
9
+ should be_a(described_class)
10
10
  end
11
11
 
12
12
  context "methods" do
13
- it { should respond_to(:suspend_count) }
14
13
  it { should respond_to(:virtual_size) }
15
14
  it { should respond_to(:resident_size) }
16
15
  it { should respond_to(:user_time_ms) }
@@ -18,7 +17,6 @@ describe Vmstat::Task do
18
17
  end
19
18
 
20
19
  context "content" do
21
- its(:suspend_count) { should be_a_kind_of(Numeric) }
22
20
  its(:virtual_size) { should be_a_kind_of(Numeric) }
23
21
  its(:resident_size) { should be_a_kind_of(Numeric) }
24
22
  its(:user_time_ms) { should be_a_kind_of(Numeric) }
@@ -15,7 +15,7 @@ describe Vmstat do
15
15
 
16
16
  context "Vmstat#filter_devices" do
17
17
  it "should filter ethernet devices" do
18
- Vmstat.ethernet_devices.size.should == 2
18
+ Vmstat.ethernet_devices.size.should >= 1
19
19
  end
20
20
 
21
21
  it "should filter loopback devices" do
@@ -9,10 +9,10 @@ Gem::Specification.new do |gem|
9
9
  gem.authors = ["Vincent Landgraf"]
10
10
  gem.email = ["vilandgr@googlemail.com"]
11
11
  gem.description = %q{
12
- A focused and fast library t gather memory,
12
+ A focused and fast library to gather memory,
13
13
  cpu, network, load avg and disk information
14
14
  }
15
- gem.summary = %q{A focused and fast library t gather system information}
15
+ gem.summary = %q{A focused and fast library to gather system information}
16
16
  gem.homepage = "http://threez.github.com/ruby-vmstat/"
17
17
 
18
18
  gem.files = `git ls-files`.split($/)
@@ -21,6 +21,7 @@ Gem::Specification.new do |gem|
21
21
  gem.require_paths = ["lib"]
22
22
  gem.extensions = ["ext/vmstat/extconf.rb"]
23
23
 
24
+ gem.add_development_dependency('rake')
24
25
  gem.add_development_dependency('rspec')
25
26
  gem.add_development_dependency('rake-compiler')
26
27
  gem.add_development_dependency('guard-rspec')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vmstat
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 2.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-14 00:00:00.000000000 Z
12
+ date: 2012-10-27 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
14
30
  - !ruby/object:Gem::Dependency
15
31
  name: rspec
16
32
  requirement: !ruby/object:Gem::Requirement
@@ -75,7 +91,7 @@ dependencies:
75
91
  - - ! '>='
76
92
  - !ruby/object:Gem::Version
77
93
  version: '0'
78
- description: ! "\n A focused and fast library t gather memory, \n cpu, network,
94
+ description: ! "\n A focused and fast library to gather memory, \n cpu, network,
79
95
  load avg and disk information\n "
80
96
  email:
81
97
  - vilandgr@googlemail.com
@@ -87,6 +103,7 @@ files:
87
103
  - .gitignore
88
104
  - .rspec
89
105
  - .rvmrc
106
+ - .travis.yml
90
107
  - Gemfile
91
108
  - Guardfile
92
109
  - LICENSE.txt
@@ -115,6 +132,7 @@ files:
115
132
  - spec/procfs/loadavg
116
133
  - spec/procfs/meminfo
117
134
  - spec/procfs/net/dev
135
+ - spec/procfs/self/stat
118
136
  - spec/procfs/stat
119
137
  - spec/procfs/uptime
120
138
  - spec/procfs/vmstat
@@ -143,7 +161,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
143
161
  version: '0'
144
162
  segments:
145
163
  - 0
146
- hash: -3233054199977223520
164
+ hash: -3973347779729246928
147
165
  required_rubygems_version: !ruby/object:Gem::Requirement
148
166
  none: false
149
167
  requirements:
@@ -152,17 +170,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
170
  version: '0'
153
171
  segments:
154
172
  - 0
155
- hash: -3233054199977223520
173
+ hash: -3973347779729246928
156
174
  requirements: []
157
175
  rubyforge_project:
158
176
  rubygems_version: 1.8.24
159
177
  signing_key:
160
178
  specification_version: 3
161
- summary: A focused and fast library t gather system information
179
+ summary: A focused and fast library to gather system information
162
180
  test_files:
163
181
  - spec/procfs/loadavg
164
182
  - spec/procfs/meminfo
165
183
  - spec/procfs/net/dev
184
+ - spec/procfs/self/stat
166
185
  - spec/procfs/stat
167
186
  - spec/procfs/uptime
168
187
  - spec/procfs/vmstat