raindrops 0.10.0 → 0.11.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.
data/.gitignore CHANGED
@@ -13,5 +13,4 @@ Makefile
13
13
  /doc
14
14
  /LATEST
15
15
  /tmp
16
- # http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/
17
- /Gemfile.lock
16
+ /.rbx
@@ -1,7 +1,7 @@
1
1
  #!/bin/sh
2
2
 
3
3
  GVF=GIT-VERSION-FILE
4
- DEF_VER=v0.10.0.GIT
4
+ DEF_VER=v0.11.0
5
5
 
6
6
  LF='
7
7
  '
@@ -70,8 +70,8 @@ static ID id_new;
70
70
 
71
71
  struct listen_stats {
72
72
  uint32_t active;
73
- uint32_t listener_p:1;
74
- uint32_t queued:31;
73
+ uint32_t queued;
74
+ uint32_t listener_p;
75
75
  };
76
76
 
77
77
  #define OPLEN (sizeof(struct inet_diag_bc_op) + \
@@ -189,7 +189,7 @@ static struct listen_stats *stats_for(st_table *table, struct inet_diag_msg *r)
189
189
  struct listen_stats *stats;
190
190
  size_t keylen;
191
191
  size_t portlen = sizeof("65535");
192
- union any_addr sa = { 0 };
192
+ union any_addr sa;
193
193
  socklen_t len = sizeof(struct sockaddr_storage);
194
194
  int rc;
195
195
  int flags = NI_NUMERICHOST | NI_NUMERICSERV;
@@ -131,6 +131,7 @@ void Init_raindrops_linux_tcp_info(void)
131
131
  cTCP_Info = rb_define_class_under(cRaindrops, "TCP_Info", rb_cObject);
132
132
  rb_define_alloc_func(cTCP_Info, alloc);
133
133
  rb_define_private_method(cTCP_Info, "initialize", init, 1);
134
+ rb_define_method(cTCP_Info, "get!", init, 1);
134
135
 
135
136
  #define TCPI_DEFINE_METHOD(x) \
136
137
  rb_define_method(cTCP_Info, #x, tcp_info_##x, 0)
@@ -326,11 +326,13 @@ void Init_raindrops_linux_inet_diag(void);
326
326
  void Init_raindrops_linux_tcp_info(void);
327
327
  #endif
328
328
 
329
- #ifndef _SC_NPROCESSORS_ONLN
330
- # ifdef _SC_NPROC_ONLN
331
- # define _SC_NPROCESSORS_ONLN _SC_NPROC_ONLN
329
+ #ifndef _SC_NPROCESSORS_CONF
330
+ # if defined _SC_NPROCESSORS_ONLN
331
+ # define _SC_NPROCESSORS_CONF _SC_NPROCESSORS_ONLN
332
+ # elif defined _SC_NPROC_ONLN
333
+ # define _SC_NPROCESSORS_CONF _SC_NPROC_ONLN
332
334
  # elif defined _SC_CRAY_NCPU
333
- # define _SC_NPROCESSORS_ONLN _SC_CRAY_NCPU
335
+ # define _SC_NPROCESSORS_CONF _SC_CRAY_NCPU
334
336
  # endif
335
337
  #endif
336
338
 
@@ -359,8 +361,8 @@ void Init_raindrops_ext(void)
359
361
  VALUE cRaindrops = rb_define_class("Raindrops", rb_cObject);
360
362
  long tmp = 2;
361
363
 
362
- #ifdef _SC_NPROCESSORS_ONLN
363
- tmp = sysconf(_SC_NPROCESSORS_ONLN);
364
+ #ifdef _SC_NPROCESSORS_CONF
365
+ tmp = sysconf(_SC_NPROCESSORS_CONF);
364
366
  #endif
365
367
  /* no point in padding on single CPU machines */
366
368
  if (tmp == 1)
@@ -260,7 +260,7 @@ class Raindrops::Watcher
260
260
  headers.map { |k,v|
261
261
  "<tr><td>#{k.gsub(/^X-/, '')}</td><td>#{v}</td></tr>"
262
262
  }.join << "</table><pre>#{escape_html agg}</pre>" \
263
- "<form action='/reset/#{escape addr}' method='post'>" \
263
+ "<form action='../reset/#{escape addr}' method='post'>" \
264
264
  "<input type='submit' name='x' value='reset' /></form>" \
265
265
  "</body>"
266
266
  headers["Content-Type"] = "text/html"
@@ -323,7 +323,7 @@ class Raindrops::Watcher
323
323
  res = Rack::Response.new
324
324
  url = req.referer || "#{req.host_with_port}/"
325
325
  res.redirect(url)
326
- res.content_type.replace "text/plain"
326
+ res["Content-Type"] = "text/plain"
327
327
  res.write "Redirecting to #{url}"
328
328
  res.finish
329
329
  end
@@ -346,14 +346,14 @@ class Raindrops::Watcher
346
346
  end.map do |addr,stats|
347
347
  e_addr = escape addr
348
348
  "<tr>" \
349
- "<td><a href='/tail/#{e_addr}.txt' " \
349
+ "<td><a href='tail/#{e_addr}.txt' " \
350
350
  "title='&quot;tail&quot; output in real time'" \
351
351
  ">#{escape_html addr}</a></td>" \
352
- "<td><a href='/active/#{e_addr}.html' " \
352
+ "<td><a href='active/#{e_addr}.html' " \
353
353
  "title='show active connection stats'>#{stats.active}</a></td>" \
354
- "<td><a href='/queued/#{e_addr}.html' " \
354
+ "<td><a href='queued/#{e_addr}.html' " \
355
355
  "title='show queued connection stats'>#{stats.queued}</a></td>" \
356
- "<td><form action='/reset/#{e_addr}' method='post'>" \
356
+ "<td><form action='reset/#{e_addr}' method='post'>" \
357
357
  "<input title='reset statistics' " \
358
358
  "type='submit' name='x' value='x' /></form></td>" \
359
359
  "</tr>" \
@@ -22,7 +22,11 @@ Gem::Specification.new do |s|
22
22
  s.rdoc_options = rdoc_options
23
23
  s.rubyforge_project = %q{rainbows}
24
24
  s.test_files = test_files
25
- s.add_development_dependency('bundler', '~> 1.0.10')
25
+ s.add_development_dependency('aggregate', '~> 0.2')
26
+ s.add_development_dependency('io-extra', [ '~> 1.2', '>= 1.2.3'])
27
+ s.add_development_dependency('posix_mq', '~> 2.0')
28
+ s.add_development_dependency('rack', '~> 1.2')
29
+ s.add_development_dependency('unicorn', '>= 0.98')
26
30
 
27
31
  # s.licenses = %w(LGPLv3) # accessor not compatible with older RubyGems
28
32
  end
@@ -12,6 +12,7 @@ class TestLinuxTCP_Info < Test::Unit::TestCase
12
12
  # Linux kernel commit 5ee3afba88f5a79d0bff07ddd87af45919259f91
13
13
  TCP_INFO_useful_listenq = `uname -r`.strip >= '2.6.24'
14
14
 
15
+
15
16
  def test_tcp_server
16
17
  s = TCPServer.new(TEST_ADDR, 0)
17
18
  rv = Raindrops::TCP_Info.new s
@@ -23,6 +24,11 @@ class TestLinuxTCP_Info < Test::Unit::TestCase
23
24
  a = s.accept
24
25
  tmp = Raindrops::TCP_Info.new s
25
26
  assert_equal 0, tmp.unacked
27
+ before = tmp.object_id
28
+
29
+ tmp.get!(s)
30
+ assert_equal before, tmp.object_id
31
+
26
32
  ensure
27
33
  c.close if c
28
34
  a.close if a
@@ -35,6 +41,7 @@ class TestLinuxTCP_Info < Test::Unit::TestCase
35
41
  tcp_info_methods = tmp.methods - Object.new.methods
36
42
  assert tcp_info_methods.size >= 32
37
43
  tcp_info_methods.each do |m|
44
+ next if m.to_sym == :get!
38
45
  val = tmp.__send__ m
39
46
  assert_kind_of Integer, val
40
47
  assert val >= 0
metadata CHANGED
@@ -1,51 +1,152 @@
1
- --- !ruby/object:Gem::Specification
2
- name: raindrops
3
- version: !ruby/object:Gem::Version
4
- hash: 55
1
+ --- !ruby/object:Gem::Specification
2
+ name: !binary |-
3
+ cmFpbmRyb3Bz
4
+ version: !ruby/object:Gem::Version
5
+ version: 0.11.0
5
6
  prerelease:
6
- segments:
7
- - 0
8
- - 10
9
- - 0
10
- version: 0.10.0
11
7
  platform: ruby
12
- authors:
13
- - raindrops hackers
8
+ authors:
9
+ - !binary |-
10
+ cmFpbmRyb3BzIGhhY2tlcnM=
14
11
  autorequire:
15
12
  bindir: bin
16
13
  cert_chain: []
17
-
18
- date: 2012-06-19 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: bundler
14
+ date: 2013-04-20 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: !binary |-
18
+ YWdncmVnYXRl
19
+ requirement: !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - !binary |-
23
+ fj4=
24
+ - !ruby/object:Gem::Version
25
+ version: !binary |-
26
+ MC4y
27
+ type: :development
28
+ prerelease: false
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - !binary |-
33
+ fj4=
34
+ - !ruby/object:Gem::Version
35
+ version: !binary |-
36
+ MC4y
37
+ - !ruby/object:Gem::Dependency
38
+ name: !binary |-
39
+ aW8tZXh0cmE=
40
+ requirement: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - !binary |-
44
+ fj4=
45
+ - !ruby/object:Gem::Version
46
+ version: !binary |-
47
+ MS4y
48
+ - - !binary |-
49
+ Pj0=
50
+ - !ruby/object:Gem::Version
51
+ version: !binary |-
52
+ MS4yLjM=
53
+ type: :development
22
54
  prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
55
+ version_requirements: !ruby/object:Gem::Requirement
24
56
  none: false
25
- requirements:
26
- - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 1
31
- - 0
32
- - 10
33
- version: 1.0.10
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
34
79
  type: :development
35
- version_requirements: *id001
36
- description: |-
37
- Raindrops is a real-time stats toolkit to show statistics for Rack HTTP
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
100
+ type: :development
101
+ prerelease: false
102
+ version_requirements: !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - !binary |-
106
+ fj4=
107
+ - !ruby/object:Gem::Version
108
+ version: !binary |-
109
+ MS4y
110
+ - !ruby/object:Gem::Dependency
111
+ name: !binary |-
112
+ dW5pY29ybg==
113
+ requirement: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - !binary |-
117
+ Pj0=
118
+ - !ruby/object:Gem::Version
119
+ version: !binary |-
120
+ MC45OA==
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: !ruby/object:Gem::Requirement
124
+ none: false
125
+ requirements:
126
+ - - !binary |-
127
+ Pj0=
128
+ - !ruby/object:Gem::Version
129
+ version: !binary |-
130
+ MC45OA==
131
+ description: ! 'Raindrops is a real-time stats toolkit to show statistics for Rack
132
+ HTTP
133
+
38
134
  servers. It is designed for preforking servers such as Rainbows! and
135
+
39
136
  Unicorn, but should support any Rack HTTP server under Ruby 1.9, 1.8 and
137
+
40
138
  Rubinius on platforms supporting POSIX shared memory. It may also be
139
+
41
140
  used as a generic scoreboard for sharing atomic counters across multiple
42
- processes.
43
- email: raindrops@librelist.org
44
- executables: []
45
141
 
46
- extensions:
47
- - ext/raindrops/extconf.rb
48
- extra_rdoc_files:
142
+ processes.'
143
+ email: !binary |-
144
+ cmFpbmRyb3BzQGxpYnJlbGlzdC5vcmc=
145
+ executables: []
146
+ extensions:
147
+ - !binary |-
148
+ ZXh0L3JhaW5kcm9wcy9leHRjb25mLnJi
149
+ extra_rdoc_files:
49
150
  - README
50
151
  - LICENSE
51
152
  - NEWS
@@ -63,7 +164,7 @@ extra_rdoc_files:
63
164
  - ext/raindrops/raindrops.c
64
165
  - ext/raindrops/linux_inet_diag.c
65
166
  - ext/raindrops/linux_tcp_info.c
66
- files:
167
+ files:
67
168
  - .document
68
169
  - .gitignore
69
170
  - .manifest
@@ -73,7 +174,6 @@ files:
73
174
  - GIT-VERSION-FILE
74
175
  - GIT-VERSION-GEN
75
176
  - GNUmakefile
76
- - Gemfile
77
177
  - LATEST
78
178
  - LICENSE
79
179
  - NEWS
@@ -124,41 +224,34 @@ files:
124
224
  - test/test_watcher.rb
125
225
  homepage: http://raindrops.bogomips.org/
126
226
  licenses: []
127
-
128
227
  post_install_message:
129
- rdoc_options:
228
+ rdoc_options:
130
229
  - -t
131
230
  - raindrops - real-time stats for preforking Rack servers
132
231
  - -W
133
232
  - http://bogomips.org/raindrops.git/tree/%s
134
- require_paths:
233
+ require_paths:
135
234
  - lib
136
- required_ruby_version: !ruby/object:Gem::Requirement
235
+ required_ruby_version: !ruby/object:Gem::Requirement
137
236
  none: false
138
- requirements:
139
- - - ">="
140
- - !ruby/object:Gem::Version
141
- hash: 3
142
- segments:
143
- - 0
144
- version: "0"
145
- required_rubygems_version: !ruby/object:Gem::Requirement
237
+ requirements:
238
+ - - ! '>='
239
+ - !ruby/object:Gem::Version
240
+ version: '0'
241
+ required_rubygems_version: !ruby/object:Gem::Requirement
146
242
  none: false
147
- requirements:
148
- - - ">="
149
- - !ruby/object:Gem::Version
150
- hash: 3
151
- segments:
152
- - 0
153
- version: "0"
243
+ requirements:
244
+ - - ! '>='
245
+ - !ruby/object:Gem::Version
246
+ version: '0'
154
247
  requirements: []
155
-
156
- rubyforge_project: rainbows
157
- rubygems_version: 1.8.24
248
+ rubyforge_project: !binary |-
249
+ cmFpbmJvd3M=
250
+ rubygems_version: 1.8.23
158
251
  signing_key:
159
252
  specification_version: 3
160
253
  summary: real-time stats for preforking Rack servers
161
- test_files:
254
+ test_files:
162
255
  - test/test_aggregate_pmq.rb
163
256
  - test/test_inet_diag_socket.rb
164
257
  - test/test_last_data_recv_unicorn.rb
data/Gemfile DELETED
@@ -1,6 +0,0 @@
1
- source(ENV["GEM_SOURCE"] || :rubygems)
2
- gem 'aggregate', '~> 0.2'
3
- gem 'io-extra', '~> 1.2.3'
4
- gem 'posix_mq', '~> 1.0'
5
- gem 'rack', '~> 1.2'
6
- gem 'unicorn', '>= 0.98'