sys-proctable 0.9.8-universal-linux → 0.9.9-universal-linux

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c0f7b6e2b99153aa8c0095ef07fd9a682d2c5b63
4
- data.tar.gz: 91fb8f80a4cf9e108f81b646c04d719aae532075
3
+ metadata.gz: f0f13537cd8a33add0739cb78526d05006bc6aa5
4
+ data.tar.gz: 18433abb3f9dd310603bc9633ec2d55e24025c87
5
5
  SHA512:
6
- metadata.gz: 72790583c7695cdb38feaaf579d2cf96142432fe7642ee9e47d2975d14002cf2afb64e96babcd4cf1610bf3a84b157c428ec32ff66e7907ca3677aa729dd92f0
7
- data.tar.gz: 6a7e1051b83d71f5359f9f576abbb148ce7937bc4dee1be794299b6b20508d5868f57408132cbffa533f7e0abdb326af8bef3b8ae906bef1a3b6374a01d8370b
6
+ metadata.gz: c9824df5d678bb2cfc4aaa3f8fc202b0acca08d6498d9798b97e51e4b3d9a789e0417be6dcfc4c90cb0cc340a6a3f1b2906897864411a4fe7ff800cb3676da44
7
+ data.tar.gz: bef2ef2d8b351d42065327e10bcba67e0334d4a7dc758ba5d789754301382d9eab6fa4fa123bb7bf4db33f85e6b868b9c665e30e71c78f6a128295b09c36298f
checksums.yaml.gz.sig ADDED
Binary file
data.tar.gz.sig ADDED
@@ -0,0 +1,3 @@
1
+ �>��ڄΊ�/�M�� �2�
2
+ �`��$r�J���{��5p1�,Js�o�[������9��;i���`w�3l�q
3
+ (���<� wYޭSn�{.]���=y�nا?�{��g��}��� (U�� ��GŨC��J�� �������*�7�^�E��pNI+��~�l
data/CHANGES CHANGED
@@ -1,3 +1,9 @@
1
+ == 0.9.9 - 8-Nov-2015
2
+ * Added support for cgroups on Linux. Thanks go to Dennis Günnewig for the patch.
3
+ * Added a sys-proctable.rb file for convenience.
4
+ * This gem is now signed.
5
+ * Gem related tasks in the Rakefile now assume Rubygems 2.x.
6
+
1
7
  == 0.9.8 - 18-Apr-2015
2
8
  * Fixed a bug in the gemspec. Last version got yanked.
3
9
 
data/MANIFEST CHANGED
@@ -15,6 +15,7 @@
15
15
  * ext/darwin/sys/proctable.c
16
16
  * ext/hpux/extconf.rb
17
17
  * ext/hpux/sys/proctable.c
18
+ * lib/sys-proctable.rb
18
19
  * lib/sys/top.rb
19
20
  * lib/sys/proctable/version.rb
20
21
  * lib/aix/sys/proctable.rb
data/Rakefile CHANGED
@@ -126,15 +126,25 @@ Rake::TestTask.new do |t|
126
126
  end
127
127
 
128
128
  namespace :gem do
129
- desc 'Create a gem'
130
- task :create => [:clean] do
129
+ desc 'Create a gem for the specified OS, or your current OS by default'
130
+ task :create, [:os] => [:clean] do |_task, args|
131
+ require 'rubygems/package'
132
+
133
+ if args.is_a?(String)
134
+ os = args
135
+ else
136
+ args.with_defaults(:os => CONFIG['host_os'])
137
+ os = args[:os]
138
+ end
139
+
131
140
  spec = eval(IO.read('sys-proctable.gemspec'))
141
+ spec.files += ['lib/sys-proctable.rb']
132
142
 
133
143
  # I've had to manually futz with the spec here in some cases
134
144
  # in order to get the universal platform settings I want because
135
145
  # of some bugginess in Rubygems' platform.rb.
136
146
  #
137
- case CONFIG['host_os']
147
+ case os
138
148
  when /freebsd/i
139
149
  spec.platform = Gem::Platform.new(['universal', 'freebsd'])
140
150
  spec.require_paths = ['lib', 'lib/freebsd']
@@ -156,7 +166,7 @@ namespace :gem do
156
166
  when /linux/i
157
167
  spec.platform = Gem::Platform.new(['universal', 'linux'])
158
168
  spec.require_paths = ['lib', 'lib/linux']
159
- spec.files += ['lib/linux/sys/proctable.rb']
169
+ spec.files += ['lib/linux/sys/proctable.rb', 'lib/linux/sys/proctable/cgroup_entry.rb']
160
170
  spec.test_files << 'test/test_sys_proctable_linux.rb'
161
171
  when /sunos|solaris/i
162
172
  spec.platform = Gem::Platform.new(['universal', 'solaris'])
@@ -173,6 +183,8 @@ namespace :gem do
173
183
  spec.require_paths = ['lib', 'lib/windows']
174
184
  spec.files += ['lib/windows/sys/proctable.rb']
175
185
  spec.test_files << 'test/test_sys_proctable_windows.rb'
186
+ else
187
+ raise "Unsupported platform: #{os}"
176
188
  end
177
189
 
178
190
  spec.test_files << 'test/test_sys_top.rb'
@@ -180,12 +192,20 @@ namespace :gem do
180
192
  # https://github.com/rubygems/rubygems/issues/147
181
193
  spec.original_platform = spec.platform
182
194
 
183
- if Gem::VERSION < "2.0"
184
- Gem::Builder.new(spec).build
185
- else
186
- require 'rubygems/package'
187
- Gem::Package.build(spec)
188
- end
195
+ spec.signing_key = File.join(Dir.home, '.ssh', 'gem-private_key.pem')
196
+
197
+ Gem::Package.build(spec, true)
198
+ end
199
+
200
+ desc 'Create a gem for each supported OS'
201
+ task :create_all => [:clean] do
202
+ platforms = %w[aix darwin freebsd hpux linux solaris windows]
203
+ Rake::Task["clean"].execute
204
+ platforms.each{ |os|
205
+ FileUtils.mkdir_p("pkg/#{os}")
206
+ Rake::Task["gem:create"].execute(os)
207
+ Dir.glob("*.gem").each{ |gem| FileUtils.mv(gem, "pkg/#{os}") }
208
+ }
189
209
  end
190
210
 
191
211
  desc 'Install the sys-proctable library as a gem'
@@ -1,4 +1,5 @@
1
1
  require 'sys/proctable/version'
2
+ require_relative 'proctable/cgroup_entry'
2
3
 
3
4
  # The Sys module serves as a namespace only.
4
5
  module Sys
@@ -71,7 +72,8 @@ module Sys
71
72
  'egid', # Effective group ID
72
73
  'pctcpu', # Percent of CPU usage (custom field)
73
74
  'pctmem', # Percent of Memory usage (custom field)
74
- 'nlwp' # Number of Light-Weight Processes associated with the process (threads)
75
+ 'nlwp', # Number of Light-Weight Processes associated with the process (threads)
76
+ 'cgroup' # Control groups to which the process belongs
75
77
  ]
76
78
 
77
79
  public
@@ -164,6 +166,9 @@ module Sys
164
166
  # Every process has at least one thread, so if we fail to read the task directory, set nlwp to 1.
165
167
  struct.nlwp = Dir.glob("/proc/#{file}/task/*").length rescue struct.nlwp = 1
166
168
 
169
+ # Get control groups to which the process belongs
170
+ struct.cgroup = IO.readlines("/proc/#{file}/cgroup").map { |l| CgroupEntry.new(l) } rescue []
171
+
167
172
  # Deal with spaces in comm name. Courtesy of Ara Howard.
168
173
  re = %r/\([^\)]+\)/
169
174
  comm = stat[re]
@@ -0,0 +1,50 @@
1
+ module Sys
2
+ class ProcTable
3
+ # This represents a cgroup entry
4
+ #
5
+ # Have a look at `man 5 proc` on a linux distribution, to get some more
6
+ # information about the lines and there fields in `/proc/[pid]/cgroup`.
7
+ #
8
+ # Example:
9
+ #
10
+ # entry = CgroupEntry.new '7:devices:/init.scope'
11
+ # entry.hierarchy_id # => 7
12
+ # entry.subsystems # => ['devices']
13
+ # entry.control_group # => '/init.scope'
14
+ #
15
+ class CgroupEntry
16
+ # Create a new cgroup entry object
17
+ #
18
+ # This expects a string of '7:devices:/init.scope' - see `man 5 proc` for a
19
+ # reference.
20
+ def initialize(string)
21
+ @string = string.chomp
22
+ @fields = @string.split(/:/)
23
+ rescue
24
+ @fields = []
25
+ end
26
+
27
+ # This returns the hierarchy id of the cgroup entry
28
+ def hierarchy_id
29
+ @fields[0].to_i
30
+ end
31
+
32
+ # Return sets of subsystems bound to the hierarchy
33
+ def subsystems
34
+ @fields[1].split(/,/)
35
+ rescue
36
+ []
37
+ end
38
+
39
+ # control group in the hierarchy to which the process belongs
40
+ def control_group
41
+ @fields[2]
42
+ end
43
+
44
+ # Return the line itself
45
+ def to_s
46
+ @string
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1 @@
1
+ require 'sys/proctable'
@@ -1,6 +1,6 @@
1
1
  module Sys
2
2
  class ProcTable
3
3
  # The version of the sys-proctable library
4
- VERSION = '0.9.8'
4
+ VERSION = '0.9.9'
5
5
  end
6
6
  end
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'sys-proctable'
5
- spec.version = '0.9.8'
5
+ spec.version = '0.9.9'
6
6
  spec.author = 'Daniel J. Berger'
7
7
  spec.license = 'Artistic 2.0'
8
8
  spec.email = 'djberg96@gmail.com'
@@ -10,6 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.platform = Gem::Platform::CURRENT # Probably altered by Rake task
11
11
  spec.summary = 'An interface for providing process table information'
12
12
  spec.test_files = ['test/test_sys_proctable_all.rb']
13
+ spec.cert_chain = ['certs/djberg96_pub.pem']
13
14
 
14
15
  # Additional files for your platform are added by the 'rake gem' task.
15
16
  spec.files = [
@@ -19,7 +19,7 @@ class TC_ProcTable_All < Test::Unit::TestCase
19
19
  end
20
20
 
21
21
  def test_version
22
- assert_equal('0.9.8', ProcTable::VERSION)
22
+ assert_equal('0.9.9', ProcTable::VERSION)
23
23
  end
24
24
 
25
25
  def test_fields
@@ -17,7 +17,7 @@ class TC_ProcTable_Linux < Test::Unit::TestCase
17
17
  stime cutime cstime priority nice itrealvalue starttime vsize
18
18
  rss rlim startcode endcode startstack kstkesp kstkeip signal blocked
19
19
  sigignore sigcatch wchan nswap cnswap exit_signal processor environ
20
- pctcpu pctmem nlwp
20
+ pctcpu pctmem nlwp cgroup
21
21
  /
22
22
  end
23
23
 
@@ -295,6 +295,12 @@ class TC_ProcTable_Linux < Test::Unit::TestCase
295
295
  assert_kind_of(Fixnum, @ptable.nlwp)
296
296
  end
297
297
 
298
+ def test_cgroup
299
+ assert_respond_to(@ptable, :cgroup)
300
+ assert_kind_of(Array, @ptable.cgroup)
301
+ assert_kind_of(ProcTable::CgroupEntry, @ptable.cgroup.first)
302
+ end
303
+
298
304
  def teardown
299
305
  @ptable = nil
300
306
  end
metadata CHANGED
@@ -1,14 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sys-proctable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.8
4
+ version: 0.9.9
5
5
  platform: universal-linux
6
6
  authors:
7
7
  - Daniel J. Berger
8
8
  autorequire:
9
9
  bindir: bin
10
- cert_chain: []
11
- date: 2015-04-19 00:00:00.000000000 Z
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDcDCCAligAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MREwDwYDVQQDDAhkamJl
14
+ cmc5NjEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29t
15
+ MB4XDTE1MDkwMjIwNDkxOFoXDTE2MDkwMTIwNDkxOFowPzERMA8GA1UEAwwIZGpi
16
+ ZXJnOTYxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
17
+ bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMyTkvXqRp6hLs9eoJOS
18
+ Hmi8kRYbq9Vkf15/hMxJpotYMgJVHHWrmDcC5Dye2PbnXjTkKf266Zw0PtT9h+lI
19
+ S3ts9HO+vaCFSMwFFZmnWJSpQ3CNw2RcHxjWkk9yF7imEM8Kz9ojhiDXzBetdV6M
20
+ gr0lV/alUr7TNVBDngbXEfTWscyXh1qd7xZ4EcOdsDktCe5G45N/o3662tPQvJsi
21
+ FOF0CM/KuBsa/HL1/eoEmF4B3EKIRfTHrQ3hu20Kv3RJ88QM4ec2+0dd97uX693O
22
+ zv6981fyEg+aXLkxrkViM/tz2qR2ZE0jPhHTREPYeMEgptRkTmWSKAuLVWrJEfgl
23
+ DtkCAwEAAaN3MHUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFEwe
24
+ nn6bfJADmuIDiMSOzedOrL+xMB0GA1UdEQQWMBSBEmRqYmVyZzk2QGdtYWlsLmNv
25
+ bTAdBgNVHRIEFjAUgRJkamJlcmc5NkBnbWFpbC5jb20wDQYJKoZIhvcNAQEFBQAD
26
+ ggEBAHmNOCWoDVD75zHFueY0viwGDVP1BNGFC+yXcb7u2GlK+nEMCORqzURbYPf7
27
+ tL+/hzmePIRz7i30UM//64GI1NLv9jl7nIwjhPpXpf7/lu2I9hOTsvwSumb5UiKC
28
+ /sqBxI3sfj9pr79Wpv4MuikX1XPik7Ncb7NPsJPw06Lvyc3Hkg5X2XpPtLtS+Gr2
29
+ wKJnmzb5rIPS1cmsqv0M9LPWflzfwoZ/SpnmhagP+g05p8bRNKjZSA2iImM/GyYZ
30
+ EJYzxdPOrx2n6NYR3Hk+vHP0U7UBSveI6+qx+ndQYaeyCn+GRX2PKS9h66YF/Q1V
31
+ tGSHgAmcLlkdGgan182qsE/4kKM=
32
+ -----END CERTIFICATE-----
33
+ date: 2015-11-08 00:00:00.000000000 Z
12
34
  dependencies:
13
35
  - !ruby/object:Gem::Dependency
14
36
  name: test-unit
@@ -60,13 +82,13 @@ files:
60
82
  - benchmarks/bench_ps.rb
61
83
  - doc/top.txt
62
84
  - examples/example_ps.rb
63
- - lib/linux/sys/proctable.rb
85
+ - lib/sys-proctable.rb
64
86
  - lib/sys/proctable/version.rb
65
87
  - lib/sys/top.rb
66
88
  - sys-proctable.gemspec
67
89
  - test/test_sys_proctable_all.rb
68
- - test/test_sys_proctable_linux.rb
69
- - test/test_sys_top.rb
90
+ - lib/linux/sys/proctable.rb
91
+ - lib/linux/sys/proctable/cgroup_entry.rb
70
92
  homepage: http://github.com/djberg96/sys-proctable
71
93
  licenses:
72
94
  - Artistic 2.0
@@ -88,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
88
110
  version: '0'
89
111
  requirements: []
90
112
  rubyforge_project:
91
- rubygems_version: 2.4.5
113
+ rubygems_version: 2.5.0
92
114
  signing_key:
93
115
  specification_version: 4
94
116
  summary: An interface for providing process table information
metadata.gz.sig ADDED
Binary file