raindrops 0.10.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
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'