sys-proctable 0.7.6 → 1.2.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.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +1 -0
- data/CHANGES +165 -0
- data/MANIFEST +33 -41
- data/README +115 -135
- data/Rakefile +94 -0
- data/benchmarks/bench_ps.rb +21 -0
- data/doc/top.txt +5 -11
- data/examples/example_ps.rb +20 -0
- data/lib/aix/sys/proctable.rb +458 -0
- data/lib/darwin/sys/proctable.rb +363 -0
- data/lib/freebsd/sys/proctable.rb +363 -0
- data/lib/linux/sys/proctable.rb +314 -0
- data/lib/linux/sys/proctable/cgroup_entry.rb +50 -0
- data/lib/linux/sys/proctable/smaps.rb +118 -0
- data/lib/sunos/sys/proctable.rb +456 -0
- data/lib/sys-proctable.rb +1 -0
- data/lib/sys-top.rb +1 -0
- data/lib/sys/proctable.rb +18 -0
- data/lib/sys/proctable/version.rb +6 -0
- data/lib/sys/top.rb +28 -19
- data/lib/windows/sys/proctable.rb +208 -0
- data/spec/sys_proctable_aix_spec.rb +328 -0
- data/spec/sys_proctable_all_spec.rb +89 -0
- data/spec/sys_proctable_darwin_spec.rb +120 -0
- data/spec/sys_proctable_freebsd_spec.rb +210 -0
- data/spec/sys_proctable_linux_spec.rb +310 -0
- data/spec/sys_proctable_sunos_spec.rb +316 -0
- data/spec/sys_proctable_windows_spec.rb +317 -0
- data/spec/sys_top_spec.rb +51 -0
- data/sys-proctable.gemspec +38 -0
- metadata +140 -64
- metadata.gz.sig +0 -0
- data/doc/freebsd.txt +0 -90
- data/doc/hpux.txt +0 -77
- data/doc/linux.txt +0 -85
- data/doc/solaris.txt +0 -99
- data/doc/windows.txt +0 -122
- data/ext/extconf.rb +0 -98
- data/ext/sunos/sunos.c +0 -374
- data/ext/sunos/sunos.h +0 -177
- data/ext/version.h +0 -2
- data/test/tc_all.rb +0 -59
- data/test/tc_freebsd.rb +0 -45
- data/test/tc_hpux.rb +0 -49
- data/test/tc_kvm_bsd.rb +0 -31
- data/test/tc_linux.rb +0 -45
- data/test/tc_sunos.rb +0 -52
- data/test/tc_top.rb +0 -26
- data/test/tc_windows.rb +0 -40
- data/test/test_memleak.rb +0 -54
@@ -0,0 +1,89 @@
|
|
1
|
+
#######################################################################
|
2
|
+
# sys_proctable_all_spec.rb
|
3
|
+
#
|
4
|
+
# Test suite for methods common to all platforms. Generally speaking
|
5
|
+
# you should run these specs using the 'rake test' task.
|
6
|
+
#######################################################################
|
7
|
+
require 'rspec'
|
8
|
+
require 'sys/proctable'
|
9
|
+
require_relative 'sys_top_spec'
|
10
|
+
|
11
|
+
describe Sys::ProcTable do
|
12
|
+
let(:windows) { File::ALT_SEPARATOR }
|
13
|
+
|
14
|
+
before(:all) do
|
15
|
+
@pid = Process.pid
|
16
|
+
end
|
17
|
+
|
18
|
+
it "has a VERSION constant set to the expected value" do
|
19
|
+
expect(Sys::ProcTable::VERSION).to eql('1.2.0')
|
20
|
+
end
|
21
|
+
|
22
|
+
it "defines a custom error class" do
|
23
|
+
expect{ Sys::ProcTable::Error }.to_not raise_error
|
24
|
+
expect(Sys::ProcTable::Error.new).to be_kind_of(StandardError)
|
25
|
+
end
|
26
|
+
|
27
|
+
context "fields" do
|
28
|
+
it "has a fields singleton method" do
|
29
|
+
expect(described_class).to respond_to(:fields)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "returns the expected data type for the fields singleton method" do
|
33
|
+
expect(described_class.fields).to be_kind_of(Array)
|
34
|
+
expect(described_class.fields.first).to be_kind_of(String)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context "ps" do
|
39
|
+
it "defines a ps singleton method" do
|
40
|
+
expect(described_class).to respond_to(:ps)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "allows a pid option as an argument" do
|
44
|
+
expect{ described_class.ps(pid: 0) }.to_not raise_error
|
45
|
+
end
|
46
|
+
|
47
|
+
it "allows the pid to be nil" do
|
48
|
+
expect{ described_class.ps(pid: nil) }.to_not raise_error
|
49
|
+
expect(described_class.ps(pid: nil)).to be_kind_of(Array)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "returns expected results with no arguments" do
|
53
|
+
expect(described_class.ps).to be_kind_of(Array)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "returns expected results with a pid argument" do
|
57
|
+
expect(described_class.ps(pid: @pid)).to be_kind_of(Struct::ProcTableStruct)
|
58
|
+
end
|
59
|
+
|
60
|
+
it "returns nil if the process does not exist" do
|
61
|
+
expect(described_class.ps(pid: 999999999)).to be_nil
|
62
|
+
end
|
63
|
+
|
64
|
+
it "returns nil in block form whether or not a pid was provided" do
|
65
|
+
expect(described_class.ps{}).to be_nil
|
66
|
+
expect(described_class.ps(pid: 999999999){}).to be_nil
|
67
|
+
end
|
68
|
+
|
69
|
+
it "returns frozen structs" do
|
70
|
+
expect(described_class.ps.first.frozen?).to eql(true)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "expects a numeric pid argument if present" do
|
74
|
+
expect{ described_class.ps(pid: 'vim') }.to raise_error(TypeError)
|
75
|
+
end
|
76
|
+
|
77
|
+
it "accepts keyword arguments only" do
|
78
|
+
expect{ described_class.ps(0, 'localhost') }.to raise_error(ArgumentError)
|
79
|
+
end
|
80
|
+
|
81
|
+
it "disables the traditional constructor" do
|
82
|
+
expect{ described_class.new }.to raise_error(NoMethodError)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "works within a thread" do
|
86
|
+
expect{ Thread.new{ described_class.ps }.value }.to_not raise_error
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
########################################################################
|
2
|
+
# sys_proctable_darwin_spec.rb
|
3
|
+
#
|
4
|
+
# Test suite for the Darwin version of the sys-proctable library. You
|
5
|
+
# should run these tests via the 'rake test' task.
|
6
|
+
########################################################################
|
7
|
+
require 'rspec'
|
8
|
+
require 'sys/proctable'
|
9
|
+
require_relative 'sys_proctable_all_spec'
|
10
|
+
|
11
|
+
describe Sys::ProcTable do
|
12
|
+
let(:fields){
|
13
|
+
%w[
|
14
|
+
flags status xstatus pid ppid uid gid ruid rgid svuid svgid rfu1 comm
|
15
|
+
name nfiles pgid pjobc tdev tpgid nice start_tvsec start_tvusec
|
16
|
+
virtual_size resident_size total_user total_system threads_user
|
17
|
+
threads_system policy faults pageins cow_faults messages_sent
|
18
|
+
messages_received syscalls_mach syscalls_unix csw threadnum numrunning
|
19
|
+
priority cmdline exe environ threadinfo
|
20
|
+
]
|
21
|
+
}
|
22
|
+
|
23
|
+
before(:all) do
|
24
|
+
@pid1 = fork { exec('env', '-i', 'A=B', 'Z=', 'sleep', '60') }
|
25
|
+
@pid2 = fork { exec('ruby', '-Ilib', '-e', 'sleep \'120\'.to_i', '--', 'foo bar') }
|
26
|
+
sleep 1 # wait to make sure env is replaced by sleep
|
27
|
+
end
|
28
|
+
|
29
|
+
after(:all) do
|
30
|
+
Process.kill('TERM', @pid1)
|
31
|
+
Process.kill('TERM', @pid2)
|
32
|
+
end
|
33
|
+
|
34
|
+
context "fields singleton method" do
|
35
|
+
it "responds to a fields method" do
|
36
|
+
expect(described_class).to respond_to(:fields)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "returns the expected results for the fields method" do
|
40
|
+
expect(described_class.fields).to be_kind_of(Array)
|
41
|
+
expect(described_class.fields).to eql(fields)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context "ProcTable::Struct members" do
|
46
|
+
subject { described_class.ps(pid: @pid1) }
|
47
|
+
|
48
|
+
it "contains a pid member and returns the expected value" do
|
49
|
+
expect(subject).to respond_to(:pid)
|
50
|
+
expect(subject.pid).to be_kind_of(Numeric)
|
51
|
+
expect(subject.pid).to eql(@pid1)
|
52
|
+
end
|
53
|
+
|
54
|
+
it "contains a ppid member and returns the expected value" do
|
55
|
+
expect(subject).to respond_to(:ppid)
|
56
|
+
expect(subject.ppid).to be_kind_of(Numeric)
|
57
|
+
expect(subject.ppid).to eql(Process.pid)
|
58
|
+
end
|
59
|
+
|
60
|
+
it "contains a pgid member and returns the expected value" do
|
61
|
+
expect(subject).to respond_to(:pgid)
|
62
|
+
expect(subject.pgid).to be_kind_of(Numeric)
|
63
|
+
expect(subject.pgid).to eql(Process.getpgrp)
|
64
|
+
end
|
65
|
+
|
66
|
+
it "contains a ruid member and returns the expected value" do
|
67
|
+
expect(subject).to respond_to(:ruid)
|
68
|
+
expect(subject.ruid).to be_kind_of(Numeric)
|
69
|
+
expect(subject.ruid).to eql(Process.uid)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "contains an rgid member and returns the expected value" do
|
73
|
+
expect(subject).to respond_to(:rgid)
|
74
|
+
expect(subject.rgid).to be_kind_of(Numeric)
|
75
|
+
expect(subject.rgid).to eql(Process.gid)
|
76
|
+
end
|
77
|
+
|
78
|
+
it "contains an svuid member and returns the expected value" do
|
79
|
+
expect(subject).to respond_to(:svuid)
|
80
|
+
expect(subject.svuid).to be_kind_of(Numeric)
|
81
|
+
expect(subject.svuid).to eql(Process.uid)
|
82
|
+
end
|
83
|
+
|
84
|
+
it "contains an svgid member and returns the expected value" do
|
85
|
+
expect(subject).to respond_to(:svgid)
|
86
|
+
expect(subject.svgid).to be_kind_of(Numeric)
|
87
|
+
expect(subject.svgid).to eql(Process.gid)
|
88
|
+
end
|
89
|
+
|
90
|
+
it "contains a comm member and returns the expected value" do
|
91
|
+
expect(subject).to respond_to(:comm)
|
92
|
+
expect(subject.comm).to be_kind_of(String)
|
93
|
+
expect(subject.comm).to eql('sleep')
|
94
|
+
end
|
95
|
+
|
96
|
+
it "contains a cmdline member and returns the expected value" do
|
97
|
+
expect(subject).to respond_to(:cmdline)
|
98
|
+
expect(subject.cmdline).to be_kind_of(String)
|
99
|
+
expect(subject.cmdline).to eql('sleep 60')
|
100
|
+
end
|
101
|
+
|
102
|
+
it "returns a string with the expected arguments for the cmdline member" do
|
103
|
+
ptable = Sys::ProcTable.ps(pid: @pid2)
|
104
|
+
expect(ptable.cmdline).to eql('ruby -Ilib -e sleep \'120\'.to_i -- foo bar')
|
105
|
+
end
|
106
|
+
|
107
|
+
it "contains an exe member and returns the expected value" do
|
108
|
+
expect(subject).to respond_to(:exe)
|
109
|
+
expect(subject.exe).to be_kind_of(String)
|
110
|
+
expect(subject.exe).to eql(`which sleep`.chomp)
|
111
|
+
end
|
112
|
+
|
113
|
+
it "contains an environ member and returns the expected value" do
|
114
|
+
expect(subject).to respond_to(:environ)
|
115
|
+
expect(subject.environ).to be_kind_of(Hash)
|
116
|
+
expect(subject.environ['A']).to eql('B')
|
117
|
+
expect(subject.environ['Z']).to be_nil
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
@@ -0,0 +1,210 @@
|
|
1
|
+
################################################################
|
2
|
+
# sys_proctable_freebsd_rspec.rb
|
3
|
+
#
|
4
|
+
# Test suite for FreeBSD for the sys-proctable library.
|
5
|
+
# You should run these tests via 'rake test'.
|
6
|
+
################################################################
|
7
|
+
require 'rspec'
|
8
|
+
require 'sys/proctable'
|
9
|
+
require_relative 'sys_proctable_all_spec'
|
10
|
+
|
11
|
+
describe Sys::ProcTable do
|
12
|
+
let(:fields){
|
13
|
+
%w[
|
14
|
+
pid ppid pgid tpgid sid tsid jobc uid ruid rgid
|
15
|
+
ngroups groups size rssize swrss tsize dsize ssize
|
16
|
+
xstat acflag pctcpu estcpu slptime swtime runtime start
|
17
|
+
flag state nice lock rqindex oncpu lastcpu wmesg login
|
18
|
+
lockname comm ttynum ttydev jid priority usrpri cmdline
|
19
|
+
utime stime maxrss ixrss idrss isrss minflt majflt nswap
|
20
|
+
inblock oublock msgsnd msgrcv nsignals nvcsw nivcsw
|
21
|
+
]
|
22
|
+
}
|
23
|
+
|
24
|
+
context "fields singleton method" do
|
25
|
+
it "responds to a fields method" do
|
26
|
+
expect(described_class).to respond_to(:fields)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "returns the expected results for the fields method" do
|
30
|
+
expect(described_class.fields).to be_kind_of(Array)
|
31
|
+
expect(described_class.fields).to eql(fields)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context "ProcTable::Struct members" do
|
36
|
+
subject { described_class.ps(pid: Process.pid) }
|
37
|
+
|
38
|
+
it "contains a pid member and returns the expected value" do
|
39
|
+
expect(subject).to respond_to(:pid)
|
40
|
+
expect(subject.pid).to be_kind_of(Numeric)
|
41
|
+
expect(subject.pid).to eql(Process.pid)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "contains a ppid member and returns the expected value" do
|
45
|
+
expect(subject).to respond_to(:ppid)
|
46
|
+
expect(subject.ppid).to be_kind_of(Fixnum)
|
47
|
+
end
|
48
|
+
|
49
|
+
it "contains a pgid member and returns the expected value" do
|
50
|
+
expect(subject).to respond_to(:pgid)
|
51
|
+
expect(subject.pgid).to be_kind_of(Fixnum)
|
52
|
+
end
|
53
|
+
|
54
|
+
it "contains a ruid member and returns the expected value" do
|
55
|
+
expect(subject).to respond_to(:ruid)
|
56
|
+
expect(subject.ruid).to be_kind_of(Fixnum)
|
57
|
+
end
|
58
|
+
|
59
|
+
it "contains a rgid member and returns the expected value" do
|
60
|
+
expect(subject).to respond_to(:rgid)
|
61
|
+
expect(subject.rgid).to be_kind_of(Fixnum)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "contains a comm member and returns the expected value" do
|
65
|
+
expect(subject).to respond_to(:comm)
|
66
|
+
expect(subject.comm).to be_kind_of(String)
|
67
|
+
end
|
68
|
+
|
69
|
+
it "contains a state member and returns the expected value" do
|
70
|
+
expect(subject).to respond_to(:state)
|
71
|
+
expect(subject.state).to be_kind_of(String)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "contains a pctcpu member and returns the expected value" do
|
75
|
+
expect(subject).to respond_to(:pctcpu)
|
76
|
+
expect(subject.pctcpu).to be_kind_of(Float)
|
77
|
+
end
|
78
|
+
|
79
|
+
it "contains a oncpu member and returns the expected value" do
|
80
|
+
expect(subject).to respond_to(:oncpu)
|
81
|
+
expect(subject.oncpu).to be_kind_of(Fixnum)
|
82
|
+
end
|
83
|
+
|
84
|
+
it "contains a ttynum member and returns the expected value" do
|
85
|
+
expect(subject).to respond_to(:ttynum)
|
86
|
+
expect(subject.ttynum).to be_kind_of(Fixnum)
|
87
|
+
end
|
88
|
+
|
89
|
+
it "contains a ttydev member and returns the expected value" do
|
90
|
+
expect(subject).to respond_to(:ttydev)
|
91
|
+
expect(subject.ttydev).to be_kind_of(String)
|
92
|
+
end
|
93
|
+
|
94
|
+
it "contains a wmesg member and returns the expected value" do
|
95
|
+
expect(subject).to respond_to(:wmesg)
|
96
|
+
expect(subject.wmesg).to be_kind_of(String)
|
97
|
+
end
|
98
|
+
|
99
|
+
it "contains a runtime member and returns the expected value" do
|
100
|
+
expect(subject).to respond_to(:runtime)
|
101
|
+
expect(subject.runtime).to be_kind_of(Fixnum)
|
102
|
+
end
|
103
|
+
|
104
|
+
it "contains a priority member and returns the expected value" do
|
105
|
+
expect(subject).to respond_to(:priority)
|
106
|
+
expect(subject.priority).to be_kind_of(Fixnum)
|
107
|
+
end
|
108
|
+
|
109
|
+
it "contains a usrpri member and returns the expected value" do
|
110
|
+
expect(subject).to respond_to(:usrpri)
|
111
|
+
expect(subject.usrpri).to be_kind_of(Fixnum)
|
112
|
+
end
|
113
|
+
|
114
|
+
it "contains a nice member and returns the expected value" do
|
115
|
+
expect(subject).to respond_to(:nice)
|
116
|
+
expect(subject.nice).to be_kind_of(Fixnum)
|
117
|
+
end
|
118
|
+
|
119
|
+
it "contains a cmdline member and returns the expected value" do
|
120
|
+
expect(subject).to respond_to(:cmdline)
|
121
|
+
expect(subject.cmdline).to be_kind_of(String)
|
122
|
+
end
|
123
|
+
|
124
|
+
it "contains a start member and returns the expected value" do
|
125
|
+
expect(subject).to respond_to(:start)
|
126
|
+
expect(subject.start).to be_kind_of(Time)
|
127
|
+
end
|
128
|
+
|
129
|
+
it "contains a maxrss member and returns the expected value" do
|
130
|
+
expect(subject).to respond_to(:maxrss)
|
131
|
+
expect(subject.maxrss).to be_kind_of(Fixnum)
|
132
|
+
end
|
133
|
+
|
134
|
+
it "contains a ixrss member and returns the expected value" do
|
135
|
+
expect(subject).to respond_to(:ixrss)
|
136
|
+
expect(subject.ixrss).to be_kind_of(Fixnum)
|
137
|
+
end
|
138
|
+
|
139
|
+
# TODO: The value returned on PC BSD 10 does not appear to be valid. Investigate.
|
140
|
+
it "contains a idrss member and returns the expected value" do
|
141
|
+
expect(subject).to respond_to(:idrss)
|
142
|
+
expect(subject.idrss).to be_kind_of(Numeric)
|
143
|
+
end
|
144
|
+
|
145
|
+
it "contains a isrss member and returns the expected value" do
|
146
|
+
expect(subject).to respond_to(:isrss)
|
147
|
+
expect(subject.isrss).to be_kind_of(Fixnum)
|
148
|
+
end
|
149
|
+
|
150
|
+
it "contains a minflt member and returns the expected value" do
|
151
|
+
expect(subject).to respond_to(:minflt)
|
152
|
+
expect(subject.minflt).to be_kind_of(Fixnum)
|
153
|
+
end
|
154
|
+
|
155
|
+
it "contains a majflt member and returns the expected value" do
|
156
|
+
expect(subject).to respond_to(:majflt)
|
157
|
+
expect(subject.majflt).to be_kind_of(Fixnum)
|
158
|
+
end
|
159
|
+
|
160
|
+
it "contains a nswap member and returns the expected value" do
|
161
|
+
expect(subject).to respond_to(:nswap)
|
162
|
+
expect(subject.nswap).to be_kind_of(Fixnum)
|
163
|
+
end
|
164
|
+
|
165
|
+
it "contains a inblock member and returns the expected value" do
|
166
|
+
expect(subject).to respond_to(:inblock)
|
167
|
+
expect(subject.inblock).to be_kind_of(Fixnum)
|
168
|
+
end
|
169
|
+
|
170
|
+
it "contains a oublock member and returns the expected value" do
|
171
|
+
expect(subject).to respond_to(:oublock)
|
172
|
+
expect(subject.oublock).to be_kind_of(Fixnum)
|
173
|
+
end
|
174
|
+
|
175
|
+
it "contains a msgsnd member and returns the expected value" do
|
176
|
+
expect(subject).to respond_to(:msgsnd)
|
177
|
+
expect(subject.msgsnd).to be_kind_of(Fixnum)
|
178
|
+
end
|
179
|
+
|
180
|
+
it "contains a msgrcv member and returns the expected value" do
|
181
|
+
expect(subject).to respond_to(:msgrcv)
|
182
|
+
expect(subject.msgrcv).to be_kind_of(Fixnum)
|
183
|
+
end
|
184
|
+
|
185
|
+
it "contains a nsignals member and returns the expected value" do
|
186
|
+
expect(subject).to respond_to(:nsignals)
|
187
|
+
expect(subject.nsignals).to be_kind_of(Fixnum)
|
188
|
+
end
|
189
|
+
|
190
|
+
it "contains a nvcsw member and returns the expected value" do
|
191
|
+
expect(subject).to respond_to(:nvcsw)
|
192
|
+
expect(subject.nvcsw).to be_kind_of(Fixnum)
|
193
|
+
end
|
194
|
+
|
195
|
+
it "contains a nivcsw member and returns the expected value" do
|
196
|
+
expect(subject).to respond_to(:nivcsw)
|
197
|
+
expect(subject.nivcsw).to be_kind_of(Fixnum)
|
198
|
+
end
|
199
|
+
|
200
|
+
it "contains a utime member and returns the expected value" do
|
201
|
+
expect(subject).to respond_to(:utime)
|
202
|
+
expect(subject.utime).to be_kind_of(Fixnum)
|
203
|
+
end
|
204
|
+
|
205
|
+
it "contains a stime member and returns the expected value" do
|
206
|
+
expect(subject).to respond_to(:stime)
|
207
|
+
expect(subject.stime).to be_kind_of(Fixnum)
|
208
|
+
end
|
209
|
+
end
|
210
|
+
end
|
@@ -0,0 +1,310 @@
|
|
1
|
+
#######################################################################
|
2
|
+
# sys_proctable_linux_spec.rb
|
3
|
+
#
|
4
|
+
# Test suite for the Linux version of the sys-proctable library. You
|
5
|
+
# should run these tests via the 'rake test' task.
|
6
|
+
#######################################################################
|
7
|
+
require 'rspec'
|
8
|
+
require 'sys/proctable'
|
9
|
+
require_relative 'sys_proctable_all_spec'
|
10
|
+
|
11
|
+
describe Sys::ProcTable do
|
12
|
+
let(:fields){ %w[
|
13
|
+
cmdline cwd exe pid name uid euid gid egid comm state ppid pgrp
|
14
|
+
session tty_num tpgid flags minflt cminflt majflt cmajflt utime
|
15
|
+
stime cutime cstime priority nice itrealvalue starttime vsize
|
16
|
+
rss rlim startcode endcode startstack kstkesp kstkeip signal blocked
|
17
|
+
sigignore sigcatch wchan nswap cnswap exit_signal processor environ
|
18
|
+
pctcpu pctmem nlwp cgroup smaps
|
19
|
+
]
|
20
|
+
}
|
21
|
+
|
22
|
+
context "struct members" do
|
23
|
+
subject{ described_class.ps.last }
|
24
|
+
|
25
|
+
it "contains a cmdline member and returns the expected value" do
|
26
|
+
expect(subject).to respond_to(:cmdline)
|
27
|
+
expect(subject.cmdline).to be_kind_of(String)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "contains a cwd member and returns the expected value" do
|
31
|
+
expect(subject).to respond_to(:cwd)
|
32
|
+
expect(subject.cwd).to be_kind_of(String) if subject.cwd
|
33
|
+
end
|
34
|
+
|
35
|
+
it "contains a environ member and returns the expected value" do
|
36
|
+
expect(subject).to respond_to(:environ)
|
37
|
+
expect(subject.environ).to be_kind_of(Hash)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "contains an exe member and returns the expected value" do
|
41
|
+
expect(subject).to respond_to(:exe)
|
42
|
+
expect(subject.exe).to be_kind_of(String) if subject.exe
|
43
|
+
end
|
44
|
+
|
45
|
+
it "contains an fd member and returns the expected value" do
|
46
|
+
expect(subject).to respond_to(:fd)
|
47
|
+
expect(subject.fd).to be_kind_of(Hash)
|
48
|
+
end
|
49
|
+
|
50
|
+
it "contains a root member and returns the expected value" do
|
51
|
+
expect(subject).to respond_to(:root)
|
52
|
+
expect(subject.root).to be_kind_of(String) if subject.root
|
53
|
+
end
|
54
|
+
|
55
|
+
it "contains a pid member and returns the expected value" do
|
56
|
+
expect(subject).to respond_to(:pid)
|
57
|
+
expect(subject.pid).to be_kind_of(Integer)
|
58
|
+
end
|
59
|
+
|
60
|
+
it "contains a comm member and returns the expected value" do
|
61
|
+
expect(subject).to respond_to(:comm)
|
62
|
+
expect(subject.comm).to be_kind_of(String)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "contains a state member and returns the expected value" do
|
66
|
+
expect(subject).to respond_to(:state)
|
67
|
+
expect(subject.state).to be_kind_of(String)
|
68
|
+
end
|
69
|
+
|
70
|
+
it "contains a ppid member and returns the expected value" do
|
71
|
+
expect(subject).to respond_to(:state)
|
72
|
+
expect(subject.state).to be_kind_of(String)
|
73
|
+
end
|
74
|
+
|
75
|
+
it "contains a pgrp member and returns the expected value" do
|
76
|
+
expect(subject).to respond_to(:pgrp)
|
77
|
+
expect(subject.pgrp).to be_kind_of(Integer)
|
78
|
+
end
|
79
|
+
|
80
|
+
it "contains a session member and returns the expected value" do
|
81
|
+
expect(subject).to respond_to(:session)
|
82
|
+
expect(subject.session).to be_kind_of(Integer)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "contains a tty_nr member and returns the expected value" do
|
86
|
+
expect(subject).to respond_to(:tty_nr)
|
87
|
+
expect(subject.tty_nr).to be_kind_of(Integer)
|
88
|
+
end
|
89
|
+
|
90
|
+
it "contains a tpgid member and returns the expected value" do
|
91
|
+
expect(subject).to respond_to(:tpgid)
|
92
|
+
expect(subject.tpgid).to be_kind_of(Integer)
|
93
|
+
end
|
94
|
+
|
95
|
+
it "contains a flags member and returns the expected value" do
|
96
|
+
expect(subject).to respond_to(:flags)
|
97
|
+
expect(subject.flags).to be_kind_of(Numeric)
|
98
|
+
end
|
99
|
+
|
100
|
+
it "contains a minflt member and returns the expected value" do
|
101
|
+
expect(subject).to respond_to(:minflt)
|
102
|
+
expect(subject.minflt).to be_kind_of(Numeric)
|
103
|
+
end
|
104
|
+
|
105
|
+
it "contains a cminflt member and returns the expected value" do
|
106
|
+
expect(subject).to respond_to(:cminflt)
|
107
|
+
expect(subject.cminflt).to be_kind_of(Numeric)
|
108
|
+
end
|
109
|
+
|
110
|
+
it "contains a majflt member and returns the expected value" do
|
111
|
+
expect(subject).to respond_to(:majflt)
|
112
|
+
expect(subject.majflt).to be_kind_of(Numeric)
|
113
|
+
end
|
114
|
+
|
115
|
+
it "contains a cmajflt member and returns the expected value" do
|
116
|
+
expect(subject).to respond_to(:cmajflt)
|
117
|
+
expect(subject.cmajflt).to be_kind_of(Numeric)
|
118
|
+
end
|
119
|
+
|
120
|
+
it "contains a utime member and returns the expected value" do
|
121
|
+
expect(subject).to respond_to(:utime)
|
122
|
+
expect(subject.utime).to be_kind_of(Numeric)
|
123
|
+
end
|
124
|
+
|
125
|
+
it "contains a stime member and returns the expected value" do
|
126
|
+
expect(subject).to respond_to(:stime)
|
127
|
+
expect(subject.stime).to be_kind_of(Numeric)
|
128
|
+
end
|
129
|
+
|
130
|
+
it "contains a cutime member and returns the expected value" do
|
131
|
+
expect(subject).to respond_to(:cutime)
|
132
|
+
expect(subject.cutime).to be_kind_of(Numeric)
|
133
|
+
end
|
134
|
+
|
135
|
+
it "contains a cstime member and returns the expected value" do
|
136
|
+
expect(subject).to respond_to(:cstime)
|
137
|
+
expect(subject.cstime).to be_kind_of(Numeric)
|
138
|
+
end
|
139
|
+
|
140
|
+
it "contains a priority member and returns the expected value" do
|
141
|
+
expect(subject).to respond_to(:priority)
|
142
|
+
expect(subject.priority).to be_kind_of(Numeric)
|
143
|
+
end
|
144
|
+
|
145
|
+
it "contains a nice member and returns the expected value" do
|
146
|
+
expect(subject).to respond_to(:nice)
|
147
|
+
expect(subject.nice).to be_kind_of(Numeric)
|
148
|
+
end
|
149
|
+
|
150
|
+
it "contains a itrealvalue member and returns the expected value" do
|
151
|
+
expect(subject).to respond_to(:itrealvalue)
|
152
|
+
expect(subject.itrealvalue).to be_kind_of(Numeric)
|
153
|
+
end
|
154
|
+
|
155
|
+
it "contains a starttime member and returns the expected value" do
|
156
|
+
expect(subject).to respond_to(:starttime)
|
157
|
+
expect(subject.starttime).to be_kind_of(Numeric)
|
158
|
+
end
|
159
|
+
|
160
|
+
it "contains a vsize member and returns the expected value" do
|
161
|
+
expect(subject).to respond_to(:vsize)
|
162
|
+
expect(subject.vsize).to be_kind_of(Numeric)
|
163
|
+
end
|
164
|
+
|
165
|
+
it "contains a rss member and returns the expected value" do
|
166
|
+
expect(subject).to respond_to(:rss)
|
167
|
+
expect(subject.rss).to be_kind_of(Numeric)
|
168
|
+
end
|
169
|
+
|
170
|
+
it "contains an rlim member and returns the expected value" do
|
171
|
+
expect(subject).to respond_to(:rlim)
|
172
|
+
expect(subject.rlim).to be_kind_of(Numeric)
|
173
|
+
end
|
174
|
+
|
175
|
+
it "contains an startcode member and returns the expected value" do
|
176
|
+
expect(subject).to respond_to(:startcode)
|
177
|
+
expect(subject.startcode).to be_kind_of(Numeric)
|
178
|
+
end
|
179
|
+
|
180
|
+
it "contains an endcode member and returns the expected value" do
|
181
|
+
expect(subject).to respond_to(:endcode)
|
182
|
+
expect(subject.endcode).to be_kind_of(Numeric)
|
183
|
+
end
|
184
|
+
|
185
|
+
it "contains a startstack member and returns the expected value" do
|
186
|
+
expect(subject).to respond_to(:startstack)
|
187
|
+
expect(subject.startstack).to be_kind_of(Integer)
|
188
|
+
end
|
189
|
+
|
190
|
+
it "contains a kstkesp member and returns the expected value" do
|
191
|
+
expect(subject).to respond_to(:kstkesp)
|
192
|
+
expect(subject.kstkesp).to be_kind_of(Integer)
|
193
|
+
end
|
194
|
+
|
195
|
+
it "contains a kstkeip member and returns the expected value" do
|
196
|
+
expect(subject).to respond_to(:kstkeip)
|
197
|
+
expect(subject.kstkeip).to be_kind_of(Integer)
|
198
|
+
end
|
199
|
+
|
200
|
+
it "contains a signal member and returns the expected value" do
|
201
|
+
expect(subject).to respond_to(:signal)
|
202
|
+
expect(subject.signal).to be_kind_of(Integer)
|
203
|
+
end
|
204
|
+
|
205
|
+
it "contains a blocked member and returns the expected value" do
|
206
|
+
expect(subject).to respond_to(:blocked)
|
207
|
+
expect(subject.blocked).to be_kind_of(Integer)
|
208
|
+
end
|
209
|
+
|
210
|
+
it "contains a sigignore member and returns the expected value" do
|
211
|
+
expect(subject).to respond_to(:sigignore)
|
212
|
+
expect(subject.sigignore).to be_kind_of(Integer)
|
213
|
+
end
|
214
|
+
|
215
|
+
it "contains a sigcatch member and returns the expected value" do
|
216
|
+
expect(subject).to respond_to(:sigcatch)
|
217
|
+
expect(subject.sigcatch).to be_kind_of(Integer)
|
218
|
+
end
|
219
|
+
|
220
|
+
it "contains a wchan member and returns the expected value" do
|
221
|
+
expect(subject).to respond_to(:wchan)
|
222
|
+
expect(subject.wchan).to be_kind_of(Integer)
|
223
|
+
end
|
224
|
+
|
225
|
+
it "contains a nswap member and returns the expected value" do
|
226
|
+
expect(subject).to respond_to(:nswap)
|
227
|
+
expect(subject.nswap).to be_kind_of(Integer)
|
228
|
+
end
|
229
|
+
|
230
|
+
it "contains a cnswap member and returns the expected value" do
|
231
|
+
expect(subject).to respond_to(:cnswap)
|
232
|
+
expect(subject.cnswap).to be_kind_of(Integer)
|
233
|
+
end
|
234
|
+
|
235
|
+
it "contains a exit_signal member and returns the expected value" do
|
236
|
+
expect(subject).to respond_to(:exit_signal)
|
237
|
+
expect(subject.exit_signal).to be_kind_of(Integer)
|
238
|
+
end
|
239
|
+
|
240
|
+
it "contains a processor member and returns the expected value" do
|
241
|
+
expect(subject).to respond_to(:processor)
|
242
|
+
expect(subject.processor).to be_kind_of(Integer)
|
243
|
+
end
|
244
|
+
|
245
|
+
it "contains a rt_priority member and returns the expected value" do
|
246
|
+
expect(subject).to respond_to(:rt_priority)
|
247
|
+
expect(subject.rt_priority).to be_kind_of(Integer)
|
248
|
+
end
|
249
|
+
|
250
|
+
it "contains a policy member and returns the expected value" do
|
251
|
+
expect(subject).to respond_to(:policy)
|
252
|
+
expect(subject.policy).to be_kind_of(Integer)
|
253
|
+
end
|
254
|
+
|
255
|
+
it "contains a name member and returns the expected value" do
|
256
|
+
expect(subject).to respond_to(:name)
|
257
|
+
expect(subject.name).to be_kind_of(String)
|
258
|
+
end
|
259
|
+
|
260
|
+
it "contains a uid member and returns the expected value" do
|
261
|
+
expect(subject).to respond_to(:uid)
|
262
|
+
expect(subject.uid).to be_kind_of(Integer)
|
263
|
+
end
|
264
|
+
|
265
|
+
it "contains a euid member and returns the expected value" do
|
266
|
+
expect(subject).to respond_to(:euid)
|
267
|
+
expect(subject.euid).to be_kind_of(Integer)
|
268
|
+
end
|
269
|
+
|
270
|
+
it "contains a gid member and returns the expected value" do
|
271
|
+
expect(subject).to respond_to(:gid)
|
272
|
+
expect(subject.gid).to be_kind_of(Integer)
|
273
|
+
end
|
274
|
+
|
275
|
+
it "contains a egid member and returns the expected value" do
|
276
|
+
expect(subject).to respond_to(:egid)
|
277
|
+
expect(subject.egid).to be_kind_of(Integer)
|
278
|
+
end
|
279
|
+
|
280
|
+
it "contains a pctmem member and returns the expected value" do
|
281
|
+
expect(subject).to respond_to(:pctmem)
|
282
|
+
expect(subject.pctmem).to be_kind_of(Float)
|
283
|
+
end
|
284
|
+
|
285
|
+
it "contains a pctcpu member and returns the expected value" do
|
286
|
+
expect(subject).to respond_to(:pctcpu)
|
287
|
+
expect(subject.pctcpu).to be_kind_of(Float)
|
288
|
+
end
|
289
|
+
|
290
|
+
it "contains a nlwp member and returns the expected value" do
|
291
|
+
expect(subject).to respond_to(:nlwp)
|
292
|
+
expect(subject.nlwp).to be_kind_of(Integer)
|
293
|
+
end
|
294
|
+
end
|
295
|
+
|
296
|
+
context "custom structs" do
|
297
|
+
subject{ described_class.ps.last }
|
298
|
+
|
299
|
+
it "contains a cgroup member and returns the expected value" do
|
300
|
+
expect(subject).to respond_to(:cgroup)
|
301
|
+
expect(subject.cgroup).to be_kind_of(Array)
|
302
|
+
expect(subject.cgroup.first).to be_kind_of(Sys::ProcTable::CgroupEntry)
|
303
|
+
end
|
304
|
+
|
305
|
+
it "contains a smaps member and returns the expected value" do
|
306
|
+
expect(subject).to respond_to(:cgroup)
|
307
|
+
expect(subject.smaps).to be_kind_of(Sys::ProcTable::Smaps)
|
308
|
+
end
|
309
|
+
end
|
310
|
+
end
|