vmstat 0.1.1 → 1.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,49 @@
1
+ require 'spec_helper'
2
+
3
+ describe Vmstat::Snapshot do
4
+ context "Vmstat#snapshot" do
5
+ let(:snapshot) { Vmstat.snapshot }
6
+ subject { snapshot }
7
+
8
+ it "should be an vmstat load snapshot object" do
9
+ should be_a(Vmstat::Snapshot)
10
+ end
11
+
12
+ context "methods" do
13
+ it { should respond_to(:at) }
14
+ it { should respond_to(:boot_time) }
15
+ it { should respond_to(:cpu) }
16
+ it { should respond_to(:disks) }
17
+ it { should respond_to(:load_average) }
18
+ it { should respond_to(:memory) }
19
+ it { should respond_to(:network_interfaces) }
20
+ it { should respond_to(:task) }
21
+ end
22
+
23
+ context "content" do
24
+ its(:at) { should be_a(Time) }
25
+ its(:boot_time) { should be_a(Time) }
26
+ its(:cpu) { should be_a(Array) }
27
+ its(:disks) { should be_a(Array) }
28
+ its(:load_average) { should be_a(Vmstat::LoadAverage) }
29
+ its(:memory) { should be_a(Vmstat::Memory) }
30
+ its(:network_interfaces) { should be_a(Array) }
31
+ its(:task) { should be_a(Vmstat::Task) }
32
+
33
+ context "first of cpu" do
34
+ subject { snapshot.cpu.first }
35
+ it { should be_a(Vmstat::Cpu) }
36
+ end
37
+
38
+ context "first of disks" do
39
+ subject { snapshot.disks.first }
40
+ it { should be_a(Vmstat::Disk) }
41
+ end
42
+
43
+ context "first of network interfaces" do
44
+ subject { snapshot.network_interfaces.first }
45
+ it { should be_a(Vmstat::NetworkInterface) }
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe Vmstat::Task do
4
+ context "Vmstat#task" do
5
+ let(:task) { Vmstat.task }
6
+ subject { task }
7
+
8
+ it "should be a vmstat task object" do
9
+ should be_a(Vmstat::Task)
10
+ end
11
+
12
+ context "methods" do
13
+ it { should respond_to(:suspend_count) }
14
+ it { should respond_to(:virtual_size) }
15
+ it { should respond_to(:resident_size) }
16
+ it { should respond_to(:user_time_ms) }
17
+ it { should respond_to(:system_time_ms) }
18
+ end
19
+
20
+ context "content" do
21
+ its(:suspend_count) { should be_a_kind_of(Numeric) }
22
+ its(:virtual_size) { should be_a_kind_of(Numeric) }
23
+ its(:resident_size) { should be_a_kind_of(Numeric) }
24
+ its(:user_time_ms) { should be_a_kind_of(Numeric) }
25
+ its(:system_time_ms) { should be_a_kind_of(Numeric) }
26
+ end
27
+ end
28
+ end
@@ -1,165 +1,6 @@
1
1
  require 'spec_helper'
2
- require 'ostruct'
3
2
 
4
3
  describe Vmstat do
5
- context "#network" do
6
- let(:network) { Vmstat.network }
7
-
8
- it "should return the enthernet and loopback network data as hash" do
9
- network.should be_a(Hash)
10
- end
11
-
12
- context "loopback device" do
13
- let(:loopback) { network[:lo0] }
14
- subject { loopback }
15
-
16
- it "should contain the a loopback device info also as a hash" do
17
- should be_a(Hash)
18
- end
19
-
20
- context "keys" do
21
- it { should have_key(:in_bytes) }
22
- it { should have_key(:out_bytes) }
23
- it { should have_key(:in_errors) }
24
- it { should have_key(:out_errors) }
25
- it { should have_key(:in_drops) }
26
- it { should have_key(:type) }
27
- end
28
-
29
- context "type" do
30
- subject { OpenStruct.new loopback }
31
-
32
- its(:in_bytes) { should be_a_kind_of(Numeric) }
33
- its(:out_bytes) { should be_a_kind_of(Numeric) }
34
- its(:in_errors) { should be_a_kind_of(Numeric) }
35
- its(:out_errors) { should be_a_kind_of(Numeric) }
36
- its(:in_drops) { should be_a_kind_of(Numeric) }
37
- its(:type) { should be_a_kind_of(Numeric) }
38
- end
39
- end
40
- end
41
-
42
- context "#cpu" do
43
- let(:cpu) { Vmstat.cpu }
44
-
45
- it "should return an array of ethernet information" do
46
- cpu.should be_a(Array)
47
- end
48
-
49
- context "first cpu" do
50
- let(:first_cpu) { cpu.first }
51
- subject { first_cpu }
52
-
53
- it "should return a hash containing per cpu information" do
54
- should be_a(Hash)
55
- end
56
-
57
- context "keys" do
58
- it { should have_key(:user) }
59
- it { should have_key(:system) }
60
- it { should have_key(:nice) }
61
- it { should have_key(:idle) }
62
- end
63
-
64
- context "type" do
65
- subject { OpenStruct.new first_cpu }
66
-
67
- its(:user) { should be_a_kind_of(Numeric) }
68
- its(:system) { should be_a_kind_of(Numeric) }
69
- its(:nice) { should be_a_kind_of(Numeric) }
70
- its(:idle) { should be_a_kind_of(Numeric) }
71
- end
72
- end
73
- end
74
-
75
- context "#memory" do
76
- let(:memory) { Vmstat.memory }
77
- subject { memory }
78
-
79
- it "should be a hash of memory data" do
80
- should be_a(Hash)
81
- end
82
-
83
- context "keys" do
84
- it { should have_key(:pagesize) }
85
- it { should have_key(:wired) }
86
- it { should have_key(:active) }
87
- it { should have_key(:inactive) }
88
- it { should have_key(:free) }
89
- it { should have_key(:wired_bytes) }
90
- it { should have_key(:active_bytes) }
91
- it { should have_key(:inactive_bytes) }
92
- it { should have_key(:free_bytes) }
93
- it { should have_key(:zero_filled) }
94
- it { should have_key(:reactivated) }
95
- it { should have_key(:faults) }
96
- it { should have_key(:copy_on_write_faults) }
97
- end
98
-
99
- context "type" do
100
- subject { OpenStruct.new memory }
101
-
102
- its(:pagesize) { should be_a_kind_of(Numeric) }
103
- its(:wired) { should be_a_kind_of(Numeric) }
104
- its(:active) { should be_a_kind_of(Numeric) }
105
- its(:inactive) { should be_a_kind_of(Numeric) }
106
- its(:free) { should be_a_kind_of(Numeric) }
107
- its(:wired_bytes) { should be_a_kind_of(Numeric) }
108
- its(:active_bytes) { should be_a_kind_of(Numeric) }
109
- its(:inactive_bytes) { should be_a_kind_of(Numeric) }
110
- its(:free_bytes) { should be_a_kind_of(Numeric) }
111
- its(:zero_filled) { should be_a_kind_of(Numeric) }
112
- its(:reactivated) { should be_a_kind_of(Numeric) }
113
- its(:faults) { should be_a_kind_of(Numeric) }
114
- its(:copy_on_write_faults) { should be_a_kind_of(Numeric) }
115
- end
116
- end
117
-
118
- context "#disk" do
119
- let(:disk) { Vmstat.disk("/") }
120
- subject { disk }
121
-
122
- it "should be a hash of disk data" do
123
- should be_a(Hash)
124
- end
125
-
126
- context "keys" do
127
- it { should have_key(:type) }
128
- it { should have_key(:origin) }
129
- it { should have_key(:mount) }
130
- it { should have_key(:free_bytes) }
131
- it { should have_key(:available_bytes) }
132
- it { should have_key(:used_bytes) }
133
- it { should have_key(:total_bytes) }
134
- end
135
-
136
- context "type" do
137
- subject { OpenStruct.new disk }
138
-
139
- its(:type) { should be_a(Symbol) }
140
- its(:origin) { should be_a(String) }
141
- its(:mount) { should be_a(String) }
142
- its(:free_bytes) { should be_a_kind_of(Numeric) }
143
- its(:available_bytes) { should be_a_kind_of(Numeric) }
144
- its(:used_bytes) { should be_a_kind_of(Numeric) }
145
- its(:total_bytes) { should be_a_kind_of(Numeric) }
146
- end
147
- end
148
-
149
- context "#load_avg" do
150
- subject { Vmstat.load_avg }
151
-
152
- it "should be an array" do
153
- should be_a(Array)
154
- end
155
-
156
- it "should have three floats" do
157
- subject[0].should be_a(Float)
158
- subject[1].should be_a(Float)
159
- subject[2].should be_a(Float)
160
- end
161
- end
162
-
163
4
  context "#boot_time" do
164
5
  let(:boot_time) { Vmstat.boot_time }
165
6
 
@@ -171,8 +12,8 @@ describe Vmstat do
171
12
  boot_time.should < Time.now
172
13
  end
173
14
  end
174
-
175
- context "#filter_devices" do
15
+
16
+ context "Vmstat#filter_devices" do
176
17
  it "should filter ethernet devices" do
177
18
  Vmstat.ethernet_devices.size.should == 2
178
19
  end
@@ -181,4 +22,22 @@ describe Vmstat do
181
22
  Vmstat.loopback_devices.size.should == 1
182
23
  end
183
24
  end
25
+
26
+ context "performance" do
27
+ shared_examples "a not memory leaking method" do |method_name, *args|
28
+ it "should not grow the memory in method #{method_name} more than 10% " do
29
+ mem_before = Vmstat.task.resident_size
30
+ 10000.times { Vmstat.send(method_name, *args) }
31
+ mem_after = Vmstat.task.resident_size
32
+ mem_after.should < (mem_before * 1.10)
33
+ end
34
+ end
35
+
36
+ it_should_behave_like "a not memory leaking method", :network_interfaces
37
+ it_should_behave_like "a not memory leaking method", :cpu
38
+ it_should_behave_like "a not memory leaking method", :memory
39
+ it_should_behave_like "a not memory leaking method", :disk, "/"
40
+ it_should_behave_like "a not memory leaking method", :boot_time
41
+ it_should_behave_like "a not memory leaking method", :load_average
42
+ end
184
43
  end
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: 0.1.1
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-30 00:00:00.000000000 Z
12
+ date: 2012-10-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -63,8 +63,22 @@ files:
63
63
  - ext/vmstat/vmstat.c
64
64
  - ext/vmstat/vmstat.h
65
65
  - lib/vmstat.rb
66
+ - lib/vmstat/cpu.rb
67
+ - lib/vmstat/disk.rb
68
+ - lib/vmstat/load_average.rb
69
+ - lib/vmstat/memory.rb
70
+ - lib/vmstat/network_interface.rb
71
+ - lib/vmstat/snapshot.rb
72
+ - lib/vmstat/task.rb
66
73
  - lib/vmstat/version.rb
67
74
  - spec/spec_helper.rb
75
+ - spec/vmstat/cpu_spec.rb
76
+ - spec/vmstat/disk_spec.rb
77
+ - spec/vmstat/load_average_spec.rb
78
+ - spec/vmstat/memory_spec.rb
79
+ - spec/vmstat/network_spec.rb
80
+ - spec/vmstat/snapshot_spec.rb
81
+ - spec/vmstat/task_spec.rb
68
82
  - spec/vmstat_spec.rb
69
83
  - vmstat.gemspec
70
84
  homepage: http://threez.github.com/ruby-vmstat/
@@ -81,7 +95,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
81
95
  version: '0'
82
96
  segments:
83
97
  - 0
84
- hash: 4126602806320238323
98
+ hash: -488329950864303377
85
99
  required_rubygems_version: !ruby/object:Gem::Requirement
86
100
  none: false
87
101
  requirements:
@@ -90,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
104
  version: '0'
91
105
  segments:
92
106
  - 0
93
- hash: 4126602806320238323
107
+ hash: -488329950864303377
94
108
  requirements: []
95
109
  rubyforge_project:
96
110
  rubygems_version: 1.8.24
@@ -99,4 +113,11 @@ specification_version: 3
99
113
  summary: A focused and fast library t gather system information
100
114
  test_files:
101
115
  - spec/spec_helper.rb
116
+ - spec/vmstat/cpu_spec.rb
117
+ - spec/vmstat/disk_spec.rb
118
+ - spec/vmstat/load_average_spec.rb
119
+ - spec/vmstat/memory_spec.rb
120
+ - spec/vmstat/network_spec.rb
121
+ - spec/vmstat/snapshot_spec.rb
122
+ - spec/vmstat/task_spec.rb
102
123
  - spec/vmstat_spec.rb