sys-proctable 1.2.1 → 1.2.2
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGES +13 -0
- data/MANIFEST +2 -10
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/benchmarks/bench_ips_ps.rb +63 -0
- data/lib/darwin/sys/proctable.rb +12 -1
- data/lib/sys/proctable/version.rb +1 -1
- data/spec/spec_helper.rb +22 -0
- data/spec/sys_proctable_all_spec.rb +1 -1
- data/spec/sys_proctable_darwin_spec.rb +5 -5
- data/sys-proctable.gemspec +3 -3
- metadata +6 -5
- metadata.gz.sig +0 -0
- data/doc/top.txt +0 -47
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 47da35e089de6a039ea5ae43c965d1ec207644aaf33dc4294f19a02927f42c0b
|
4
|
+
data.tar.gz: 68a6ba2f88db4b7e20f4762f3728e3841c30bf5ee857c2885fe698ea6a6c8d32
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5407d746f15c8eabb88c0b7dfea3a426aeb9f46b48af48b58718d955c692a0ef71324049e1e71ada918fe3eafa7955e20f912270e3b7478042d91d6e22a86e8
|
7
|
+
data.tar.gz: ddf616512c79a4a3980972f5bd661873ab97da2ee7d9be21f1193097f0dd0710d581bd2dfbb8c5c4ff6ff98a4fbfb5ad032aa4d1df92a17c6791de1de1fc7247
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGES
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
== 1.2.2 - 12-Aug-2019
|
2
|
+
* Added compatibility for JRuby on Mac which apparently doesn't define a
|
3
|
+
read_uint64 method, nor a CharArray. Thanks go to Adithya Pentela for
|
4
|
+
the spot.
|
5
|
+
* Refactored the specs a bit, adding a spec_helper.rb. This was mainly
|
6
|
+
for JRuby compatibility.
|
7
|
+
* Updates to the travis.yml file for both Ruby and JRuby versions.
|
8
|
+
* Removed the doc directory and all the files it contained. It was
|
9
|
+
redundant, and some of the information was wrong. All of the
|
10
|
+
documentation you need is on the wiki.
|
11
|
+
* Cleaned up the MANIFEST file, updated the gemspec, and fixed the
|
12
|
+
license name, which was missing a hyphen.
|
13
|
+
|
1
14
|
== 1.2.1 - 8-Jun-2018
|
2
15
|
* The code for OSX is now more efficient when a pid argument is provided.
|
3
16
|
Thanks go to Nick LaMuro for his efforts.
|
data/MANIFEST
CHANGED
@@ -3,16 +3,9 @@
|
|
3
3
|
* Rakefile
|
4
4
|
* README
|
5
5
|
* sys-proctable.gemspec
|
6
|
-
*
|
7
|
-
*
|
8
|
-
* doc/hpux.txt
|
9
|
-
* doc/linux.txt
|
10
|
-
* doc/solaris.txt
|
11
|
-
* doc/top.txt
|
12
|
-
* doc/windows.txt
|
6
|
+
* benchmarks/bench_ps.rb
|
7
|
+
* benchmarks/bench_ips_ps.rb
|
13
8
|
* example/example_ps.rb
|
14
|
-
* ext/hpux/extconf.rb
|
15
|
-
* ext/hpux/sys/proctable.c
|
16
9
|
* lib/sys-proctable.rb
|
17
10
|
* lib/sys/top.rb
|
18
11
|
* lib/sys/proctable/version.rb
|
@@ -26,7 +19,6 @@
|
|
26
19
|
* test/test_sys_proctable_all.rb
|
27
20
|
* test/test_sys_proctable_darwin.rb
|
28
21
|
* test/test_sys_proctable_freebsd.rb
|
29
|
-
* test/test_sys_proctable_hpux.rb
|
30
22
|
* test/test_sys_proctable_linux.rb
|
31
23
|
* test/test_sys_proctable_sunos.rb
|
32
24
|
* test/test_sys_proctable_windows.rb
|
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -51,7 +51,7 @@ end
|
|
51
51
|
|
52
52
|
desc 'Run the test suite for the sys-proctable library'
|
53
53
|
RSpec::Core::RakeTask.new(:spec) do |t|
|
54
|
-
t.pattern = ['spec/sys_proctable_all_spec.rb']
|
54
|
+
t.pattern = ['spec/spec_helper.rb', 'spec/sys_proctable_all_spec.rb']
|
55
55
|
|
56
56
|
case CONFIG['host_os']
|
57
57
|
when /aix/i
|
@@ -0,0 +1,63 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
require 'optparse'
|
5
|
+
require 'rbconfig'
|
6
|
+
require 'benchmark/ips'
|
7
|
+
|
8
|
+
@source, @gem = false
|
9
|
+
|
10
|
+
OptionParser.new do |opt|
|
11
|
+
opt.banner = "Usage: #{File.basename $0} [--gem|--source]"
|
12
|
+
|
13
|
+
opt.separator ""
|
14
|
+
opt.separator "Benchmark IPS (iterations per second) changes between"
|
15
|
+
opt.separator "source version of sys-proctable and previous gem"
|
16
|
+
opt.separator "version."
|
17
|
+
opt.separator ""
|
18
|
+
opt.separator "Requires that the both the source version of the gem"
|
19
|
+
opt.separator "be installed (run `rake install` to do this after"
|
20
|
+
opt.separator "each of your changes) and version installed via"
|
21
|
+
opt.separator "rubygems."
|
22
|
+
opt.separator ""
|
23
|
+
opt.separator "To run, call with `--gem` two times, and then with "
|
24
|
+
opt.separator "`--source` two times again."
|
25
|
+
opt.separator ""
|
26
|
+
|
27
|
+
opt.on("--source") { @source = true }
|
28
|
+
opt.on("--gem") { @gem = true }
|
29
|
+
end.parse!
|
30
|
+
|
31
|
+
if @source && !@gem
|
32
|
+
# Being paranoid here and making sure we get the version installed to
|
33
|
+
# sitelibdir
|
34
|
+
require File.join(RbConfig::CONFIG["sitelibdir"], "sys", "proctable")
|
35
|
+
else
|
36
|
+
@gem = true
|
37
|
+
require 'sys-proctable'
|
38
|
+
end
|
39
|
+
|
40
|
+
Benchmark.ips do |bench|
|
41
|
+
bench.report("Block form - pre patch") do
|
42
|
+
(puts "ERR: Please run with --gem"; exit 1) unless @gem
|
43
|
+
Sys::ProcTable.ps {}
|
44
|
+
end
|
45
|
+
|
46
|
+
bench.report("Non-block form - pre patch") do
|
47
|
+
(puts "ERR: Please run with --gem"; exit 1) unless @gem
|
48
|
+
Sys::ProcTable.ps
|
49
|
+
end
|
50
|
+
|
51
|
+
bench.report("Block form - post patch") do
|
52
|
+
(puts "ERR: Please run with --source"; exit 1) unless @source
|
53
|
+
Sys::ProcTable.ps {}
|
54
|
+
end
|
55
|
+
|
56
|
+
bench.report("Non-block form - post patch") do
|
57
|
+
(puts "ERR: Please run with --source"; exit 1) unless @source
|
58
|
+
Sys::ProcTable.ps
|
59
|
+
end
|
60
|
+
|
61
|
+
bench.hold! "bench_ips_ps.results"
|
62
|
+
bench.compare!
|
63
|
+
end
|
data/lib/darwin/sys/proctable.rb
CHANGED
@@ -26,6 +26,11 @@ module Sys
|
|
26
26
|
MAXTHREADNAMESIZE = 64
|
27
27
|
PROC_PIDPATHINFO_MAXSIZE = MAXPATHLEN * 4
|
28
28
|
|
29
|
+
# JRuby on Mac
|
30
|
+
unless defined? FFI::StructLayout::CharArray
|
31
|
+
FFI::StructLayout::CharArray = FFI::StructLayout::CharArrayProxy
|
32
|
+
end
|
33
|
+
|
29
34
|
class ProcBsdInfo < FFI::Struct
|
30
35
|
layout(
|
31
36
|
:pbi_flags, :uint32_t,
|
@@ -285,7 +290,13 @@ module Sys
|
|
285
290
|
|
286
291
|
0.upto(max-1) do |index|
|
287
292
|
tinfo = ProcThreadInfo.new
|
288
|
-
|
293
|
+
|
294
|
+
# Use read_array_of_uint64 for compatibility with JRuby if necessary.
|
295
|
+
if buf[index].respond_to?(:read_uint64)
|
296
|
+
nb = proc_pidinfo(pid, PROC_PIDTHREADINFO, buf[index].read_uint64, tinfo, tinfo.size)
|
297
|
+
else
|
298
|
+
nb = proc_pidinfo(pid, PROC_PIDTHREADINFO, buf[index].read_array_of_uint64(1).first, tinfo, tinfo.size)
|
299
|
+
end
|
289
300
|
|
290
301
|
if nb <= 0
|
291
302
|
if [Errno::EPERM::Errno, Errno::ESRCH::Errno].include?(FFI.errno)
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
RSpec.configure do |config|
|
2
|
+
config.filter_run_excluding :skip_jruby if RUBY_PLATFORM == 'java'
|
3
|
+
end
|
4
|
+
|
5
|
+
if RUBY_PLATFORM == 'java'
|
6
|
+
require 'ffi'
|
7
|
+
module Exec
|
8
|
+
extend FFI::Library
|
9
|
+
ffi_lib FFI::Library::LIBC
|
10
|
+
attach_function :fork, [], :int
|
11
|
+
end
|
12
|
+
|
13
|
+
def fork
|
14
|
+
pid = Exec.fork
|
15
|
+
if pid == 0
|
16
|
+
yield if block_given?
|
17
|
+
return nil
|
18
|
+
else
|
19
|
+
return pid
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -87,30 +87,30 @@ describe Sys::ProcTable do
|
|
87
87
|
expect(subject.svgid).to eql(Process.gid)
|
88
88
|
end
|
89
89
|
|
90
|
-
it "contains a comm member and returns the expected value" do
|
90
|
+
it "contains a comm member and returns the expected value", :skip_jruby do
|
91
91
|
expect(subject).to respond_to(:comm)
|
92
92
|
expect(subject.comm).to be_kind_of(String)
|
93
93
|
expect(subject.comm).to eql('sleep')
|
94
94
|
end
|
95
95
|
|
96
|
-
it "contains a cmdline member and returns the expected value" do
|
96
|
+
it "contains a cmdline member and returns the expected value", :skip_jruby do
|
97
97
|
expect(subject).to respond_to(:cmdline)
|
98
98
|
expect(subject.cmdline).to be_kind_of(String)
|
99
99
|
expect(subject.cmdline).to eql('sleep 60')
|
100
100
|
end
|
101
101
|
|
102
|
-
it "returns a string with the expected arguments for the cmdline member" do
|
102
|
+
it "returns a string with the expected arguments for the cmdline member", :skip_jruby do
|
103
103
|
ptable = Sys::ProcTable.ps(pid: @pid2)
|
104
104
|
expect(ptable.cmdline).to eql('ruby -Ilib -e sleep \'120\'.to_i -- foo bar')
|
105
105
|
end
|
106
106
|
|
107
|
-
it "contains an exe member and returns the expected value" do
|
107
|
+
it "contains an exe member and returns the expected value", :skip_jruby do
|
108
108
|
expect(subject).to respond_to(:exe)
|
109
109
|
expect(subject.exe).to be_kind_of(String)
|
110
110
|
expect(subject.exe).to eql(`which sleep`.chomp)
|
111
111
|
end
|
112
112
|
|
113
|
-
it "contains an environ member and returns the expected value" do
|
113
|
+
it "contains an environ member and returns the expected value", :skip_jruby do
|
114
114
|
expect(subject).to respond_to(:environ)
|
115
115
|
expect(subject.environ).to be_kind_of(Hash)
|
116
116
|
expect(subject.environ['A']).to eql('B')
|
data/sys-proctable.gemspec
CHANGED
@@ -2,9 +2,9 @@ require 'rubygems'
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = 'sys-proctable'
|
5
|
-
spec.version = '1.2.
|
5
|
+
spec.version = '1.2.2'
|
6
6
|
spec.author = 'Daniel J. Berger'
|
7
|
-
spec.license = 'Apache
|
7
|
+
spec.license = 'Apache-2.0'
|
8
8
|
spec.email = 'djberg96@gmail.com'
|
9
9
|
spec.homepage = 'http://github.com/djberg96/sys-proctable'
|
10
10
|
spec.summary = 'An interface for providing process table information'
|
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
'sys-proctable.gemspec'
|
23
23
|
]
|
24
24
|
|
25
|
-
spec.extra_rdoc_files
|
25
|
+
spec.extra_rdoc_files = ['CHANGES', 'README.md', 'MANIFEST']
|
26
26
|
|
27
27
|
spec.add_dependency('ffi')
|
28
28
|
spec.add_development_dependency('rspec')
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sys-proctable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel J. Berger
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
ORVCZpRuCPpmC8qmqxUnARDArzucjaclkxjLWvCVHeFa9UP7K3Nl9oTjJNv+7/jM
|
36
36
|
WZs4eecIcUc4tKdHxcAJ0MO/Dkqq7hGaiHpwKY76wQ1+8xAh
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
38
|
+
date: 2019-08-12 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: ffi
|
@@ -92,8 +92,8 @@ extra_rdoc_files:
|
|
92
92
|
- CHANGES
|
93
93
|
- README.md
|
94
94
|
- MANIFEST
|
95
|
-
- doc/top.txt
|
96
95
|
files:
|
96
|
+
- benchmarks/bench_ips_ps.rb
|
97
97
|
- benchmarks/bench_ps.rb
|
98
98
|
- examples/example_ps.rb
|
99
99
|
- lib/aix/sys/proctable.rb
|
@@ -116,7 +116,7 @@ files:
|
|
116
116
|
- sys-proctable.gemspec
|
117
117
|
homepage: http://github.com/djberg96/sys-proctable
|
118
118
|
licenses:
|
119
|
-
- Apache
|
119
|
+
- Apache-2.0
|
120
120
|
metadata:
|
121
121
|
homepage_uri: https://github.com/djberg96/sys-proctable
|
122
122
|
bug_tracker_uri: https://github.com/djberg96/sys-proctable/issues
|
@@ -140,11 +140,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
140
|
version: '0'
|
141
141
|
requirements: []
|
142
142
|
rubyforge_project:
|
143
|
-
rubygems_version: 2.7.6
|
143
|
+
rubygems_version: 2.7.6.2
|
144
144
|
signing_key:
|
145
145
|
specification_version: 4
|
146
146
|
summary: An interface for providing process table information
|
147
147
|
test_files:
|
148
|
+
- spec/spec_helper.rb
|
148
149
|
- spec/sys_proctable_aix_spec.rb
|
149
150
|
- spec/sys_proctable_all_spec.rb
|
150
151
|
- spec/sys_proctable_darwin_spec.rb
|
metadata.gz.sig
CHANGED
Binary file
|
data/doc/top.txt
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
= Description
|
2
|
-
A simple 'top' interface for Ruby
|
3
|
-
|
4
|
-
= Prerequisites
|
5
|
-
Requires the "sys/proctable" package (which should be installed along
|
6
|
-
with this package).
|
7
|
-
|
8
|
-
= Synopsis
|
9
|
-
require "sys/top"
|
10
|
-
|
11
|
-
Sys::Top.top(5).each{ |ps|
|
12
|
-
p ps
|
13
|
-
}
|
14
|
-
|
15
|
-
= Constants
|
16
|
-
VERSION
|
17
|
-
Returns the version number of this package as a String.
|
18
|
-
|
19
|
-
= Class Methods
|
20
|
-
Sys::Top.top(number=10, field="pctcpu")
|
21
|
-
Returns an array of ProcTableStruct's. The size of the array (i.e. the
|
22
|
-
number of processes) that it returns is based on +number+, and sorted by
|
23
|
-
+pctcpu+. By default, the size and field values are 10 and "pctcpu",
|
24
|
-
respectively.
|
25
|
-
|
26
|
-
= Notes
|
27
|
-
Not all fields are available on all platforms. Please check your
|
28
|
-
platform specific documentation for which fields are available.
|
29
|
-
|
30
|
-
= Bugs
|
31
|
-
None that I'm aware of. Please log bug reports on the project page at
|
32
|
-
http://www.rubyforge.org/projects/sysutils
|
33
|
-
|
34
|
-
= License
|
35
|
-
Artistic 2.0
|
36
|
-
|
37
|
-
= Copyright
|
38
|
-
(C) 2004-2009 Daniel J. Berger
|
39
|
-
All Rights Reserved.
|
40
|
-
|
41
|
-
= Warranty
|
42
|
-
This package is provided "as is" and without any express or
|
43
|
-
implied warranties, including, without limitation, the implied
|
44
|
-
warranties of merchantability and fitness for a particular purpose.
|
45
|
-
|
46
|
-
= Author
|
47
|
-
Daniel J. Berger
|