raindrops 0.13.0 → 0.19.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 +7 -0
- data/.document +1 -2
- data/.gitattributes +4 -0
- data/.gitignore +1 -1
- data/.olddoc.yml +13 -0
- data/GIT-VERSION-GEN +1 -1
- data/GNUmakefile +1 -2
- data/LICENSE +3 -3
- data/README +28 -34
- data/TODO +2 -0
- data/archive/.gitignore +3 -0
- data/archive/slrnpull.conf +4 -0
- data/examples/linux-listener-stats.rb +1 -2
- data/examples/watcher_demo.ru +1 -1
- data/examples/yahns.conf.rb +30 -0
- data/examples/zbatery.conf.rb +4 -1
- data/ext/raindrops/extconf.rb +107 -2
- data/ext/raindrops/linux_inet_diag.c +94 -101
- data/ext/raindrops/raindrops.c +28 -7
- data/ext/raindrops/tcp_info.c +245 -0
- data/lib/raindrops.rb +1 -1
- data/lib/raindrops/aggregate.rb +1 -1
- data/lib/raindrops/aggregate/last_data_recv.rb +1 -5
- data/lib/raindrops/aggregate/pmq.rb +23 -17
- data/lib/raindrops/linux.rb +5 -6
- data/lib/raindrops/middleware.rb +4 -6
- data/lib/raindrops/middleware/proxy.rb +2 -2
- data/lib/raindrops/watcher.rb +13 -13
- data/pkg.mk +26 -50
- data/raindrops.gemspec +14 -21
- data/test/ipv6_enabled.rb +4 -4
- data/test/test_aggregate_pmq.rb +1 -1
- data/test/test_inet_diag_socket.rb +1 -1
- data/test/test_last_data_recv_unicorn.rb +1 -1
- data/test/test_linux.rb +10 -2
- data/test/test_linux_all_tcp_listen_stats_leak.rb +2 -2
- data/test/test_linux_ipv6.rb +8 -0
- data/test/test_raindrops.rb +1 -1
- data/test/{test_linux_tcp_info.rb → test_tcp_info.rb} +34 -14
- data/test/test_watcher.rb +15 -10
- metadata +59 -171
- data/.wrongdoc.yml +0 -6
- data/Rakefile +0 -28
- data/ext/raindrops/linux_tcp_info.c +0 -173
data/test/test_linux_ipv6.rb
CHANGED
@@ -12,6 +12,14 @@ class TestLinuxIPv6 < Test::Unit::TestCase
|
|
12
12
|
|
13
13
|
TEST_ADDR = ENV["TEST_HOST6"] || "::1"
|
14
14
|
|
15
|
+
def setup
|
16
|
+
@to_close = []
|
17
|
+
end
|
18
|
+
|
19
|
+
def teardown
|
20
|
+
@to_close.each { |io| io.close unless io.closed? }
|
21
|
+
end
|
22
|
+
|
15
23
|
def test_tcp
|
16
24
|
s = TCPServer.new(TEST_ADDR, 0)
|
17
25
|
port = s.addr[1]
|
data/test/test_raindrops.rb
CHANGED
@@ -134,7 +134,7 @@ def test_resize_mremap
|
|
134
134
|
assert_equal 0, rd[rd.capa - 1]
|
135
135
|
assert_equal 1, rd.incr(rd.capa - 1)
|
136
136
|
assert_raises(ArgumentError) { rd[rd.capa] }
|
137
|
-
|
137
|
+
rescue RangeError
|
138
138
|
end # if RUBY_PLATFORM =~ /linux/
|
139
139
|
|
140
140
|
def test_evaporate
|
@@ -5,15 +5,15 @@
|
|
5
5
|
require 'socket'
|
6
6
|
require 'pp'
|
7
7
|
$stderr.sync = $stdout.sync = true
|
8
|
-
class
|
8
|
+
class TestTCP_Info < Test::Unit::TestCase
|
9
9
|
|
10
10
|
TEST_ADDR = ENV['UNICORN_TEST_ADDR'] || '127.0.0.1'
|
11
11
|
|
12
12
|
# Linux kernel commit 5ee3afba88f5a79d0bff07ddd87af45919259f91
|
13
13
|
TCP_INFO_useful_listenq = `uname -r`.strip >= '2.6.24'
|
14
14
|
|
15
|
-
|
16
|
-
|
15
|
+
def test_tcp_server_unacked
|
16
|
+
return if RUBY_PLATFORM !~ /linux/ # unacked not implemented on others...
|
17
17
|
s = TCPServer.new(TEST_ADDR, 0)
|
18
18
|
rv = Raindrops::TCP_Info.new s
|
19
19
|
c = TCPSocket.new TEST_ADDR, s.addr[1]
|
@@ -29,10 +29,8 @@ def test_tcp_server
|
|
29
29
|
tmp.get!(s)
|
30
30
|
assert_equal before, tmp.object_id
|
31
31
|
|
32
|
-
|
33
|
-
|
34
|
-
a.close if a
|
35
|
-
s.close
|
32
|
+
ensure
|
33
|
+
[ c, a, s ].compact.each(&:close)
|
36
34
|
end
|
37
35
|
|
38
36
|
def test_accessors
|
@@ -42,12 +40,14 @@ def test_accessors
|
|
42
40
|
assert tcp_info_methods.size >= 32
|
43
41
|
tcp_info_methods.each do |m|
|
44
42
|
next if m.to_sym == :get!
|
43
|
+
next if ! tmp.respond_to?(m)
|
45
44
|
val = tmp.__send__ m
|
46
45
|
assert_kind_of Integer, val
|
47
46
|
assert val >= 0
|
48
47
|
end
|
49
|
-
|
50
|
-
|
48
|
+
assert tmp.respond_to?(:state), 'every OS knows about TCP state, right?'
|
49
|
+
ensure
|
50
|
+
s.close
|
51
51
|
end
|
52
52
|
|
53
53
|
def test_tcp_server_delayed
|
@@ -60,9 +60,29 @@ def test_tcp_server_delayed
|
|
60
60
|
a = s.accept
|
61
61
|
i = Raindrops::TCP_Info.new(a)
|
62
62
|
assert i.last_data_recv >= delay_ms, "#{i.last_data_recv} < #{delay_ms}"
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
63
|
+
ensure
|
64
|
+
c.close if c
|
65
|
+
a.close if a
|
66
|
+
s.close
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_tcp_server_state_closed
|
70
|
+
s = TCPServer.new(TEST_ADDR, 0)
|
71
|
+
c = TCPSocket.new(TEST_ADDR, s.addr[1])
|
72
|
+
i = Raindrops::TCP_Info.allocate
|
73
|
+
a = s.accept
|
74
|
+
i.get!(a)
|
75
|
+
state = i.state
|
76
|
+
if Raindrops.const_defined?(:TCP)
|
77
|
+
assert_equal state, Raindrops::TCP[:ESTABLISHED]
|
78
|
+
end
|
79
|
+
c = c.close
|
80
|
+
sleep(0.01) # wait for kernel to update state
|
81
|
+
i.get!(a)
|
82
|
+
assert_not_equal state, i.state
|
83
|
+
ensure
|
84
|
+
s.close if s
|
85
|
+
c.close if c
|
86
|
+
a.close if a
|
67
87
|
end
|
68
|
-
end if
|
88
|
+
end if defined? Raindrops::TCP_Info
|
data/test/test_watcher.rb
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
require "test/unit"
|
3
3
|
require "rack"
|
4
4
|
require "raindrops"
|
5
|
+
begin
|
6
|
+
require 'aggregate'
|
7
|
+
rescue LoadError => e
|
8
|
+
warn "W: #{e} skipping #{__FILE__}"
|
9
|
+
end
|
5
10
|
|
6
11
|
class TestWatcher < Test::Unit::TestCase
|
7
12
|
TEST_ADDR = ENV['UNICORN_TEST_ADDR'] || '127.0.0.1'
|
@@ -113,28 +118,28 @@ def test_tail_queued_min
|
|
113
118
|
|
114
119
|
def test_x_current_header
|
115
120
|
env = @req.class.env_for "/active/#@addr.txt"
|
116
|
-
|
121
|
+
_status, headers, _body = @app.call(env)
|
117
122
|
assert_equal "0", headers["X-Current"], headers.inspect
|
118
123
|
|
119
124
|
env = @req.class.env_for "/queued/#@addr.txt"
|
120
|
-
|
125
|
+
_status, headers, _body = @app.call(env)
|
121
126
|
assert_equal "1", headers["X-Current"], headers.inspect
|
122
127
|
|
123
128
|
@ios << @srv.accept
|
124
129
|
sleep 0.1
|
125
130
|
|
126
131
|
env = @req.class.env_for "/queued/#@addr.txt"
|
127
|
-
|
132
|
+
_status, headers, _body = @app.call(env)
|
128
133
|
assert_equal "0", headers["X-Current"], headers.inspect
|
129
134
|
|
130
135
|
env = @req.class.env_for "/active/#@addr.txt"
|
131
|
-
|
136
|
+
_status, headers, _body = @app.call(env)
|
132
137
|
assert_equal "1", headers["X-Current"], headers.inspect
|
133
138
|
end
|
134
139
|
|
135
140
|
def test_peaks
|
136
141
|
env = @req.class.env_for "/active/#@addr.txt"
|
137
|
-
|
142
|
+
_status, headers, _body = @app.call(env.dup)
|
138
143
|
start = headers["X-First-Peak-At"]
|
139
144
|
assert headers["X-First-Peak-At"], headers.inspect
|
140
145
|
assert headers["X-Last-Peak-At"], headers.inspect
|
@@ -143,14 +148,14 @@ def test_peaks
|
|
143
148
|
before = headers["X-Last-Peak-At"]
|
144
149
|
|
145
150
|
env = @req.class.env_for "/queued/#@addr.txt"
|
146
|
-
|
151
|
+
_status, headers, _body = @app.call(env)
|
147
152
|
assert_nothing_raised { Time.parse(headers["X-First-Peak-At"]) }
|
148
153
|
assert_nothing_raised { Time.parse(headers["X-Last-Peak-At"]) }
|
149
154
|
assert_equal before, headers["X-Last-Peak-At"], "should not change"
|
150
155
|
|
151
156
|
sleep 2
|
152
157
|
env = @req.class.env_for "/active/#@addr.txt"
|
153
|
-
|
158
|
+
_status, headers, _body = @app.call(env.dup)
|
154
159
|
assert_equal before, headers["X-Last-Peak-At"], headers.inspect
|
155
160
|
|
156
161
|
@ios << @srv.accept
|
@@ -162,7 +167,7 @@ def test_peaks
|
|
162
167
|
end
|
163
168
|
sleep 0.1
|
164
169
|
env = @req.class.env_for "/queued/#@addr.txt"
|
165
|
-
|
170
|
+
_status, headers, _body = @app.call(env.dup)
|
166
171
|
assert headers["X-Last-Peak-At"], headers.inspect
|
167
172
|
assert_nothing_raised { Time.parse(headers["X-Last-Peak-At"]) }
|
168
173
|
assert before != headers["X-Last-Peak-At"]
|
@@ -172,10 +177,10 @@ def test_peaks
|
|
172
177
|
sleep 2
|
173
178
|
|
174
179
|
env = @req.class.env_for "/queued/#@addr.txt"
|
175
|
-
|
180
|
+
_status, headers, _body = @app.call(env)
|
176
181
|
assert_equal "0", headers["X-Current"]
|
177
182
|
assert_nothing_raised { Time.parse(headers["X-Last-Peak-At"]) }
|
178
183
|
assert_equal queued_before, headers["X-Last-Peak-At"], "should not change"
|
179
184
|
assert_equal start, headers["X-First-Peak-At"]
|
180
185
|
end
|
181
|
-
end if RUBY_PLATFORM =~ /linux/
|
186
|
+
end if RUBY_PLATFORM =~ /linux/ && defined?(Aggregate)
|
metadata
CHANGED
@@ -1,207 +1,101 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
name:
|
3
|
-
cmFpbmRyb3Bz
|
2
|
+
name: raindrops
|
4
3
|
version: !ruby/object:Gem::Version
|
5
|
-
version: 0.
|
6
|
-
prerelease:
|
4
|
+
version: 0.19.2
|
7
5
|
platform: ruby
|
8
6
|
authors:
|
9
|
-
-
|
10
|
-
cmFpbmRyb3BzIGhhY2tlcnM=
|
7
|
+
- raindrops hackers
|
11
8
|
autorequire:
|
12
9
|
bindir: bin
|
13
10
|
cert_chain: []
|
14
|
-
date:
|
11
|
+
date: 2021-05-25 00:00:00.000000000 Z
|
15
12
|
dependencies:
|
16
13
|
- !ruby/object:Gem::Dependency
|
17
|
-
name:
|
18
|
-
YWdncmVnYXRl
|
14
|
+
name: aggregate
|
19
15
|
requirement: !ruby/object:Gem::Requirement
|
20
|
-
none: false
|
21
16
|
requirements:
|
22
|
-
- -
|
23
|
-
fj4=
|
17
|
+
- - "~>"
|
24
18
|
- !ruby/object:Gem::Version
|
25
|
-
version:
|
26
|
-
MC4y
|
19
|
+
version: '0.2'
|
27
20
|
type: :development
|
28
21
|
prerelease: false
|
29
22
|
version_requirements: !ruby/object:Gem::Requirement
|
30
|
-
none: false
|
31
23
|
requirements:
|
32
|
-
- -
|
33
|
-
fj4=
|
24
|
+
- - "~>"
|
34
25
|
- !ruby/object:Gem::Version
|
35
|
-
version:
|
36
|
-
MC4y
|
26
|
+
version: '0.2'
|
37
27
|
- !ruby/object:Gem::Dependency
|
38
|
-
name:
|
39
|
-
aW8tZXh0cmE=
|
28
|
+
name: test-unit
|
40
29
|
requirement: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
30
|
requirements:
|
43
|
-
- -
|
44
|
-
fj4=
|
31
|
+
- - "~>"
|
45
32
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
47
|
-
MS4y
|
48
|
-
- - !binary |-
|
49
|
-
Pj0=
|
50
|
-
- !ruby/object:Gem::Version
|
51
|
-
version: !binary |-
|
52
|
-
MS4yLjM=
|
53
|
-
type: :development
|
54
|
-
prerelease: false
|
55
|
-
version_requirements: !ruby/object:Gem::Requirement
|
56
|
-
none: false
|
57
|
-
requirements:
|
58
|
-
- - !binary |-
|
59
|
-
fj4=
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: !binary |-
|
62
|
-
MS4y
|
63
|
-
- - !binary |-
|
64
|
-
Pj0=
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: !binary |-
|
67
|
-
MS4yLjM=
|
68
|
-
- !ruby/object:Gem::Dependency
|
69
|
-
name: !binary |-
|
70
|
-
cG9zaXhfbXE=
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
none: false
|
73
|
-
requirements:
|
74
|
-
- - !binary |-
|
75
|
-
fj4=
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: !binary |-
|
78
|
-
Mi4w
|
79
|
-
type: :development
|
80
|
-
prerelease: false
|
81
|
-
version_requirements: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
|
-
requirements:
|
84
|
-
- - !binary |-
|
85
|
-
fj4=
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
version: !binary |-
|
88
|
-
Mi4w
|
89
|
-
- !ruby/object:Gem::Dependency
|
90
|
-
name: !binary |-
|
91
|
-
cmFjaw==
|
92
|
-
requirement: !ruby/object:Gem::Requirement
|
93
|
-
none: false
|
94
|
-
requirements:
|
95
|
-
- - !binary |-
|
96
|
-
fj4=
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
version: !binary |-
|
99
|
-
MS4y
|
33
|
+
version: '3.0'
|
100
34
|
type: :development
|
101
35
|
prerelease: false
|
102
36
|
version_requirements: !ruby/object:Gem::Requirement
|
103
|
-
none: false
|
104
37
|
requirements:
|
105
|
-
- -
|
106
|
-
fj4=
|
38
|
+
- - "~>"
|
107
39
|
- !ruby/object:Gem::Version
|
108
|
-
version:
|
109
|
-
MS4y
|
40
|
+
version: '3.0'
|
110
41
|
- !ruby/object:Gem::Dependency
|
111
|
-
name:
|
112
|
-
dW5pY29ybg==
|
42
|
+
name: posix_mq
|
113
43
|
requirement: !ruby/object:Gem::Requirement
|
114
|
-
none: false
|
115
44
|
requirements:
|
116
|
-
- -
|
117
|
-
Pj0=
|
45
|
+
- - "~>"
|
118
46
|
- !ruby/object:Gem::Version
|
119
|
-
version:
|
120
|
-
MC45OA==
|
47
|
+
version: '2.0'
|
121
48
|
type: :development
|
122
49
|
prerelease: false
|
123
50
|
version_requirements: !ruby/object:Gem::Requirement
|
124
|
-
none: false
|
125
51
|
requirements:
|
126
|
-
- -
|
127
|
-
Pj0=
|
52
|
+
- - "~>"
|
128
53
|
- !ruby/object:Gem::Version
|
129
|
-
version:
|
130
|
-
MC45OA==
|
54
|
+
version: '2.0'
|
131
55
|
- !ruby/object:Gem::Dependency
|
132
|
-
name:
|
133
|
-
d3Jvbmdkb2M=
|
56
|
+
name: rack
|
134
57
|
requirement: !ruby/object:Gem::Requirement
|
135
|
-
none: false
|
136
58
|
requirements:
|
137
|
-
- -
|
138
|
-
fj4=
|
59
|
+
- - ">="
|
139
60
|
- !ruby/object:Gem::Version
|
140
|
-
version:
|
141
|
-
|
142
|
-
- - !binary |-
|
143
|
-
Pj0=
|
61
|
+
version: '1.2'
|
62
|
+
- - "<"
|
144
63
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
146
|
-
MS42LjI=
|
64
|
+
version: '3.0'
|
147
65
|
type: :development
|
148
66
|
prerelease: false
|
149
67
|
version_requirements: !ruby/object:Gem::Requirement
|
150
|
-
none: false
|
151
68
|
requirements:
|
152
|
-
- -
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
servers. It is designed for preforking servers such as Rainbows! and
|
166
|
-
|
167
|
-
Unicorn, but should support any Rack HTTP server under Ruby 2.0, 1.9,
|
168
|
-
|
169
|
-
1.8 and Rubinius on platforms supporting POSIX shared memory. It may
|
170
|
-
|
171
|
-
also be used as a generic scoreboard for sharing atomic counters across
|
172
|
-
|
173
|
-
multiple processes.'
|
174
|
-
email: !binary |-
|
175
|
-
cmFpbmRyb3BzQGxpYnJlbGlzdC5vcmc=
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '1.2'
|
72
|
+
- - "<"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '3.0'
|
75
|
+
description: |-
|
76
|
+
raindrops is a real-time stats toolkit to show statistics for Rack HTTP
|
77
|
+
servers. It is designed for preforking servers such as unicorn, but
|
78
|
+
should support any Rack HTTP server on platforms supporting POSIX shared
|
79
|
+
memory. It may also be used as a generic scoreboard for sharing atomic
|
80
|
+
counters across multiple processes.
|
81
|
+
email: raindrops-public@yhbt.net
|
176
82
|
executables: []
|
177
83
|
extensions:
|
178
|
-
-
|
179
|
-
ZXh0L3JhaW5kcm9wcy9leHRjb25mLnJi
|
84
|
+
- ext/raindrops/extconf.rb
|
180
85
|
extra_rdoc_files:
|
181
86
|
- README
|
182
87
|
- LICENSE
|
183
88
|
- NEWS
|
184
|
-
- ChangeLog
|
185
|
-
- lib/raindrops.rb
|
186
|
-
- lib/raindrops/aggregate.rb
|
187
|
-
- lib/raindrops/aggregate/last_data_recv.rb
|
188
|
-
- lib/raindrops/aggregate/pmq.rb
|
189
|
-
- lib/raindrops/last_data_recv.rb
|
190
|
-
- lib/raindrops/linux.rb
|
191
|
-
- lib/raindrops/middleware.rb
|
192
|
-
- lib/raindrops/middleware/proxy.rb
|
193
|
-
- lib/raindrops/struct.rb
|
194
|
-
- lib/raindrops/watcher.rb
|
195
89
|
- ext/raindrops/raindrops.c
|
196
90
|
- ext/raindrops/linux_inet_diag.c
|
197
|
-
- ext/raindrops/
|
91
|
+
- ext/raindrops/tcp_info.c
|
198
92
|
files:
|
199
|
-
- .document
|
200
|
-
- .
|
201
|
-
- .
|
202
|
-
- .
|
93
|
+
- ".document"
|
94
|
+
- ".gitattributes"
|
95
|
+
- ".gitignore"
|
96
|
+
- ".manifest"
|
97
|
+
- ".olddoc.yml"
|
203
98
|
- COPYING
|
204
|
-
- ChangeLog
|
205
99
|
- GIT-VERSION-FILE
|
206
100
|
- GIT-VERSION-GEN
|
207
101
|
- GNUmakefile
|
@@ -209,19 +103,21 @@ files:
|
|
209
103
|
- LICENSE
|
210
104
|
- NEWS
|
211
105
|
- README
|
212
|
-
- Rakefile
|
213
106
|
- TODO
|
107
|
+
- archive/.gitignore
|
108
|
+
- archive/slrnpull.conf
|
214
109
|
- examples/linux-listener-stats.rb
|
215
110
|
- examples/middleware.ru
|
216
111
|
- examples/watcher.ru
|
217
112
|
- examples/watcher_demo.ru
|
113
|
+
- examples/yahns.conf.rb
|
218
114
|
- examples/zbatery.conf.rb
|
219
115
|
- ext/raindrops/extconf.rb
|
220
116
|
- ext/raindrops/linux_inet_diag.c
|
221
|
-
- ext/raindrops/linux_tcp_info.c
|
222
117
|
- ext/raindrops/my_fileno.h
|
223
118
|
- ext/raindrops/raindrops.c
|
224
119
|
- ext/raindrops/raindrops_atomic.h
|
120
|
+
- ext/raindrops/tcp_info.c
|
225
121
|
- lib/raindrops.rb
|
226
122
|
- lib/raindrops/aggregate.rb
|
227
123
|
- lib/raindrops/aggregate/last_data_recv.rb
|
@@ -245,44 +141,36 @@ files:
|
|
245
141
|
- test/test_linux_all_tcp_listen_stats_leak.rb
|
246
142
|
- test/test_linux_ipv6.rb
|
247
143
|
- test/test_linux_middleware.rb
|
248
|
-
- test/test_linux_tcp_info.rb
|
249
144
|
- test/test_middleware.rb
|
250
145
|
- test/test_middleware_unicorn.rb
|
251
146
|
- test/test_middleware_unicorn_ipv6.rb
|
252
147
|
- test/test_raindrops.rb
|
253
148
|
- test/test_raindrops_gc.rb
|
254
149
|
- test/test_struct.rb
|
150
|
+
- test/test_tcp_info.rb
|
255
151
|
- test/test_watcher.rb
|
256
|
-
homepage:
|
152
|
+
homepage: https://yhbt.net/raindrops/
|
257
153
|
licenses:
|
258
|
-
-
|
259
|
-
|
154
|
+
- LGPL-2.1+
|
155
|
+
metadata: {}
|
260
156
|
post_install_message:
|
261
|
-
rdoc_options:
|
262
|
-
- -t
|
263
|
-
- raindrops - real-time stats for preforking Rack servers
|
264
|
-
- -W
|
265
|
-
- http://bogomips.org/raindrops.git/tree/%s
|
157
|
+
rdoc_options: []
|
266
158
|
require_paths:
|
267
159
|
- lib
|
268
160
|
required_ruby_version: !ruby/object:Gem::Requirement
|
269
|
-
none: false
|
270
161
|
requirements:
|
271
|
-
- -
|
162
|
+
- - ">="
|
272
163
|
- !ruby/object:Gem::Version
|
273
|
-
version:
|
164
|
+
version: 1.9.3
|
274
165
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
275
|
-
none: false
|
276
166
|
requirements:
|
277
|
-
- -
|
167
|
+
- - ">="
|
278
168
|
- !ruby/object:Gem::Version
|
279
169
|
version: '0'
|
280
170
|
requirements: []
|
281
|
-
|
282
|
-
cmFpbmJvd3M=
|
283
|
-
rubygems_version: 1.8.23
|
171
|
+
rubygems_version: 3.0.2
|
284
172
|
signing_key:
|
285
|
-
specification_version:
|
173
|
+
specification_version: 4
|
286
174
|
summary: real-time stats for preforking Rack servers
|
287
175
|
test_files:
|
288
176
|
- test/test_aggregate_pmq.rb
|
@@ -293,11 +181,11 @@ test_files:
|
|
293
181
|
- test/test_linux_all_tcp_listen_stats_leak.rb
|
294
182
|
- test/test_linux_ipv6.rb
|
295
183
|
- test/test_linux_middleware.rb
|
296
|
-
- test/test_linux_tcp_info.rb
|
297
184
|
- test/test_middleware.rb
|
298
185
|
- test/test_middleware_unicorn.rb
|
299
186
|
- test/test_middleware_unicorn_ipv6.rb
|
300
187
|
- test/test_raindrops.rb
|
301
188
|
- test/test_raindrops_gc.rb
|
302
189
|
- test/test_struct.rb
|
190
|
+
- test/test_tcp_info.rb
|
303
191
|
- test/test_watcher.rb
|