raindrops 0.19.0 → 0.19.1

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
- SHA1:
3
- metadata.gz: 18603c1f13f0f7abf68e5eb29780f9197bd919e3
4
- data.tar.gz: 3396d8e3399f9a744abb67ea6ea02cf2502bceab
2
+ SHA256:
3
+ metadata.gz: 0c5318918bfd5808ecc840404c67ed59f80019c6a705ef434b10ae92da78ba06
4
+ data.tar.gz: 1f25061c601aab07e3eb041cc9c2fd005438a1527994e0696b5eafc8dc148650
5
5
  SHA512:
6
- metadata.gz: b536305621cd6556aeaf719ac80197cd10929d82bddbab78044045136db0c98dbc6ae6f5465d9beb14461376593da71c69b615607002b08259218bdc93aff4ca
7
- data.tar.gz: e501e9081c6333c32411f595713e3b0ab63e1365e0d668efe4fbd2361348d47e2fffbe69d2b017883663f0f0be387fae218ebded14213b376ceac4a3f01eacff
6
+ metadata.gz: df8be08761d8444a8599da3a5885efc806df935820753f5b000f27ab408171438b0f6ff4650810b5096e648904f5993bbc2a1303b9571df213201919b4b7f565
7
+ data.tar.gz: 250b7236881f06fdd684b22f4844cacb7a0d2ca43703220fe3f0f4ebc49e51faf2015864ef6776edc0d66c7dfd2762e08145548a5dd06b55c2193e989f21a3fd
@@ -1,14 +1,13 @@
1
1
  ---
2
- cgit_url: https://bogomips.org/raindrops.git
3
- git_url: git://bogomips.org/raindrops.git
4
- rdoc_url: https://bogomips.org/raindrops/
5
- public_email: raindrops-public@bogomips.org
2
+ cgit_url: https://yhbt.net/raindrops.git/
3
+ rdoc_url: https://yhbt.net/raindrops/
4
+ public_email: raindrops-public@yhbt.net
6
5
  ml_url:
7
- - https://bogomips.org/raindrops-public/
6
+ - https://yhbt.net/raindrops-public/
8
7
  - http://ou63pmih66umazou.onion/raindrops-public
9
8
  nntp_url:
10
9
  - nntp://news.public-inbox.org/inbox.comp.lang.ruby.raindrops
11
10
  - nntp://ou63pmih66umazou.onion/inbox.comp.lang.ruby.raindrops
12
11
  source_code:
13
- - git clone git://bogomips.org/raindrops.git
14
- - git clone https://bogomips.org/raindrops.git
12
+ - git clone https://yhbt.net/raindrops.git
13
+ - torsocks git clone http://ou63pmih66umazou.onion/raindrops.git
@@ -1,7 +1,7 @@
1
1
  #!/bin/sh
2
2
 
3
3
  GVF=GIT-VERSION-FILE
4
- DEF_VER=v0.19.0
4
+ DEF_VER=v0.19.1
5
5
 
6
6
  LF='
7
7
  '
@@ -1,4 +1,4 @@
1
1
  all::
2
- RSYNC_DEST := bogomips.org:/srv/bogomips/raindrops
2
+ RSYNC_DEST := yhbt.net:/srv/yhbt/raindrops
3
3
  rfpackage := raindrops
4
4
  include pkg.mk
data/README CHANGED
@@ -59,20 +59,20 @@ If you use RubyGems:
59
59
  See Raindrops::Middleware and Raindrops::LastDataRecv documentation for
60
60
  use Rack servers. The entire library is fully-documented and we are
61
61
  responsive on the publically archived mailing list
62
- (mailto:raindrops-public@bogomips.org) if
62
+ (mailto:raindrops-public@yhbt.net) if
63
63
  you have any questions or comments.
64
64
 
65
65
  == Development
66
66
 
67
67
  You can get the latest source via git from the following locations:
68
68
 
69
- git://bogomips.org/raindrops.git
69
+ git://yhbt.net/raindrops.git
70
70
  git://repo.or.cz/raindrops.git (mirror)
71
71
 
72
72
  You may browse the code from the web and download the latest snapshot
73
73
  tarballs here:
74
74
 
75
- * https://bogomips.org/raindrops.git
75
+ * https://yhbt.net/raindrops.git
76
76
  * http://repo.or.cz/w/raindrops.git (gitweb)
77
77
 
78
78
  Inline patches (from "git format-patch") to the mailing list are
@@ -90,11 +90,12 @@ raindrops is licensed under the LGPL-2.1+
90
90
 
91
91
  All feedback (bug reports, user/development discussion, patches, pull
92
92
  requests) go to the publically archived mailing list:
93
- mailto:raindrops-public@bogomips.org
93
+ mailto:raindrops-public@yhbt.net
94
94
 
95
95
  Mailing list archives are available over HTTPS and NNTP:
96
96
 
97
- * https://bogomips.org/raindrops-public/
97
+ * https://yhbt.net/raindrops-public/
98
+ * http://ou63pmih66umazou.onion/raindrops-public/
98
99
  * nntp://news.public-inbox.org/inbox.comp.lang.ruby.raindrops
99
100
 
100
101
  Since archives are public, scrub sensitive information and
@@ -15,7 +15,6 @@
15
15
  usage = "Usage: #$0 [-d DELAY] [-t QUEUED_THRESHOLD] ADDR..."
16
16
  ARGV.size > 0 or abort usage
17
17
  delay = false
18
- all = false
19
18
  queued_thresh = -1
20
19
  # "normal" exits when driven on the command-line
21
20
  trap(:INT) { exit 130 }
@@ -25,7 +24,7 @@
25
24
  opts.banner = usage
26
25
  opts.on('-d', '--delay=DELAY', Float) { |n| delay = n }
27
26
  opts.on('-t', '--queued-threshold=INT', Integer) { |n| queued_thresh = n }
28
- opts.on('-a', '--all') { all = true }
27
+ opts.on('-a', '--all') { } # noop
29
28
  opts.parse! ARGV
30
29
  end
31
30
 
@@ -1,5 +1,5 @@
1
1
  # This is a snippet of the config that powers
2
- # https://raindrops-demo.bogomips.org/
2
+ # https://yhbt.net/raindrops-demo/
3
3
  # This may be used with the packaged zbatery.conf.rb
4
4
  #
5
5
  # zbatery -c zbatery.conf.ru watcher_demo.ru -E none
@@ -143,7 +143,7 @@
143
143
  $defs.push(format("-DHAVE_GCC_ATOMIC_BUILTINS"))
144
144
  true
145
145
  else
146
- prev_cflags = $CFLAGS
146
+ $CFLAGS = prev_cflags
147
147
  false
148
148
  end
149
149
  end
@@ -205,7 +205,7 @@ static void bug_warn_nogvl(const char *fmt, ...)
205
205
  va_end(ap);
206
206
 
207
207
  fprintf(stderr, "Please report how you produced this at "\
208
- "raindrops-public@bogomips.org\n");
208
+ "raindrops-public@yhbt.net\n");
209
209
  fflush(stderr);
210
210
  }
211
211
 
@@ -12,7 +12,7 @@
12
12
  # Unlike many classes in this package, the core Raindrops class is
13
13
  # intended to be portable to all reasonably modern *nix systems
14
14
  # supporting mmap(). Please let us know if you have portability
15
- # issues, patches or pull requests at mailto:raindrops-public@bogomips.org
15
+ # issues, patches or pull requests at mailto:raindrops-public@yhbt.net
16
16
  class Raindrops
17
17
 
18
18
  # Used to represent the number of +active+ and +queued+ sockets for
@@ -142,8 +142,8 @@ def master_loop
142
142
  warn "Unhandled exception in #{__FILE__}:#{__LINE__}: #{e}"
143
143
  break
144
144
  end while true
145
- ensure
146
- flush_master
145
+ ensure
146
+ flush_master
147
147
  end
148
148
 
149
149
  # Loads the last shared \Aggregate from the master thread/process
@@ -175,14 +175,14 @@ def flush_master
175
175
  # worker thread or process
176
176
  def stop_master_loop
177
177
  sleep 0.1 until mq_send(false)
178
- rescue Errno::EINTR
179
- retry
178
+ rescue Errno::EINTR
179
+ retry
180
180
  end
181
181
 
182
182
  def lock! io, type # :nodoc:
183
183
  io.fcntl Fcntl::F_SETLKW, type
184
- rescue Errno::EINTR
185
- retry
184
+ rescue Errno::EINTR
185
+ retry
186
186
  end
187
187
 
188
188
  # we use both a mutex for thread-safety and fcntl lock for process-safety
@@ -14,8 +14,7 @@ module Raindrops::Linux
14
14
  # The standard proc path for active UNIX domain sockets, feel free to call
15
15
  # String#replace on this if your /proc is mounted in a non-standard location
16
16
  # for whatever reason
17
- PROC_NET_UNIX_ARGS = %w(/proc/net/unix)
18
- defined?(::Encoding) and PROC_NET_UNIX_ARGS.push({ :encoding => "binary" })
17
+ PROC_NET_UNIX_ARGS = [ '/proc/net/unix', { encoding: "binary" }]
19
18
 
20
19
  # Get ListenStats from an array of +paths+
21
20
  #
@@ -42,11 +41,11 @@ def unix_listener_stats(paths = nil)
42
41
  else
43
42
  paths = paths.map do |path|
44
43
  path = path.dup
45
- path.force_encoding(Encoding::BINARY) if defined?(Encoding)
44
+ path.force_encoding(Encoding::BINARY)
46
45
  if File.symlink?(path)
47
46
  link = path
48
47
  path = File.readlink(link)
49
- path.force_encoding(Encoding::BINARY) if defined?(Encoding)
48
+ path.force_encoding(Encoding::BINARY)
50
49
  rv[link] = rv[path] # vivify ListenerStats
51
50
  else
52
51
  rv[path] # vivify ListenerStats
@@ -57,7 +56,7 @@ def unix_listener_stats(paths = nil)
57
56
  paths = /^\w+: \d+ \d+ (\d+) \d+ (\d+)\s+\d+ (#{paths.join('|')})$/n
58
57
 
59
58
  # no point in pread since we can't stat for size on this file
60
- File.read(*PROC_NET_UNIX_ARGS).scan(paths) do |s|
59
+ File.read(PROC_NET_UNIX_ARGS[0], encoding: 'binary').scan(paths) do |s|
61
60
  path = s[-1]
62
61
  case s[0]
63
62
  when "00000000" # client sockets
@@ -62,9 +62,9 @@
62
62
  # = Demo Server
63
63
  #
64
64
  # There is a server running this middleware (and Watcher) at
65
- # https://raindrops-demo.bogomips.org/_raindrops
65
+ # https://yhbt.net/raindrops-demo/_raindrops
66
66
  #
67
- # Also check out the Watcher demo at https://raindrops-demo.bogomips.org/
67
+ # Also check out the Watcher demo at https://yhbt.net/raindrops-demo/
68
68
  #
69
69
  # The demo server is only limited to 30 users, so be sure not to abuse it
70
70
  # by using the /tail/ endpoint too much.
@@ -35,28 +35,28 @@
35
35
  # Returns a plain text summary + histogram with X-* HTTP headers for
36
36
  # active connections.
37
37
  #
38
- # e.g.: curl https://raindrops-demo.bogomips.org/active/0.0.0.0%3A80.txt
38
+ # e.g.: curl https://yhbt.net/raindrops-demo/active/0.0.0.0%3A80.txt
39
39
  #
40
40
  # === GET /active/$LISTENER.html
41
41
  #
42
42
  # Returns an HTML summary + histogram with X-* HTTP headers for
43
43
  # active connections.
44
44
  #
45
- # e.g.: curl https://raindrops-demo.bogomips.org/active/0.0.0.0%3A80.html
45
+ # e.g.: curl https://yhbt.net/raindrops-demo/active/0.0.0.0%3A80.html
46
46
  #
47
47
  # === GET /queued/$LISTENER.txt
48
48
  #
49
49
  # Returns a plain text summary + histogram with X-* HTTP headers for
50
50
  # queued connections.
51
51
  #
52
- # e.g.: curl https://raindrops-demo.bogomips.org/queued/0.0.0.0%3A80.txt
52
+ # e.g.: curl https://yhbt.net/raindrops-demo/queued/0.0.0.0%3A80.txt
53
53
  #
54
54
  # === GET /queued/$LISTENER.html
55
55
  #
56
56
  # Returns an HTML summary + histogram with X-* HTTP headers for
57
57
  # queued connections.
58
58
  #
59
- # e.g.: curl https://raindrops-demo.bogomips.org/queued/0.0.0.0%3A80.html
59
+ # e.g.: curl https://yhbt.net/raindrops-demo/queued/0.0.0.0%3A80.html
60
60
  #
61
61
  # === POST /reset/$LISTENER
62
62
  #
@@ -95,9 +95,9 @@
95
95
  #
96
96
  # = Demo Server
97
97
  #
98
- # There is a server running this app at https://raindrops-demo.bogomips.org/
98
+ # There is a server running this app at https://yhbt.net/raindrops-demo/
99
99
  # The Raindrops::Middleware demo is also accessible at
100
- # https://raindrops-demo.bogomips.org/_raindrops
100
+ # https://yhbt.net/raindrops-demo/_raindrops
101
101
  #
102
102
  # The demo server is only limited to 30 users, so be sure not to abuse it
103
103
  # by using the /tail/ endpoint too much.
@@ -106,7 +106,7 @@ class Raindrops::Watcher
106
106
  attr_reader :snapshot
107
107
  include Rack::Utils
108
108
  include Raindrops::Linux
109
- DOC_URL = "https://bogomips.org/raindrops/Raindrops/Watcher.html"
109
+ DOC_URL = "https://yhbt.net/raindrops/Raindrops/Watcher.html"
110
110
  Peak = Struct.new(:first, :last)
111
111
 
112
112
  def initialize(opts = {})
data/pkg.mk CHANGED
@@ -60,7 +60,7 @@ doc:: .document .olddoc.yml $(pkg_extra) $(PLACEHOLDERS)
60
60
  -find lib -type f -name '*.rbc' -exec rm -f '{}' ';'
61
61
  -find ext -type f -name '*.rbc' -exec rm -f '{}' ';'
62
62
  $(RM) -r doc
63
- $(RDOC) -f oldweb
63
+ $(RDOC) -f dark216
64
64
  $(OLDDOC) merge
65
65
  install -m644 COPYING doc/COPYING
66
66
  install -m644 NEWS doc/NEWS
@@ -8,13 +8,13 @@
8
8
  s.version = (ENV["VERSION"] ||= '0.18.0').dup
9
9
  s.authors = ["raindrops hackers"]
10
10
  s.description = File.read('README').split("\n\n")[1]
11
- s.email = %q{raindrops-public@bogomips.org}
11
+ s.email = %q{raindrops-public@yhbt.net}
12
12
  s.extensions = %w(ext/raindrops/extconf.rb)
13
13
  s.extra_rdoc_files = IO.readlines('.document').map!(&:chomp!).keep_if do |f|
14
14
  File.exist?(f)
15
15
  end
16
16
  s.files = manifest
17
- s.homepage = 'https://bogomips.org/raindrops/'
17
+ s.homepage = 'https://yhbt.net/raindrops/'
18
18
  s.summary = 'real-time stats for preforking Rack servers'
19
19
  s.required_ruby_version = '>= 1.9.3'
20
20
  s.test_files = test_files
@@ -2,8 +2,8 @@ def ipv6_enabled?
2
2
  tmp = TCPServer.new(ENV["TEST_HOST6"] || '::1', 0)
3
3
  tmp.close
4
4
  true
5
- rescue => e
6
- warn "skipping IPv6 tests, host does not seem to be IPv6 enabled:"
7
- warn " #{e.class}: #{e}"
8
- false
5
+ rescue => e
6
+ warn "skipping IPv6 tests, host does not seem to be IPv6 enabled:"
7
+ warn " #{e.class}: #{e}"
8
+ false
9
9
  end
@@ -76,6 +76,7 @@ def test_unix_all_unused
76
76
 
77
77
  assert_equal 0, stats[tmp.path].active
78
78
  assert_equal 0, stats[tmp.path].queued
79
+ us.close
79
80
  end
80
81
 
81
82
  def test_unix_resolves_symlinks
@@ -151,8 +152,8 @@ def test_tcp_reuse_sock
151
152
  assert_equal 1, stats.size
152
153
  assert_equal 0, stats[addr].queued
153
154
  assert_equal 1, stats[addr].active
154
- ensure
155
- nlsock.close
155
+ ensure
156
+ nlsock.close
156
157
  end
157
158
 
158
159
  def test_tcp_multi
@@ -37,7 +37,7 @@ def test_leak
37
37
  end
38
38
  cur_kb = rss_kb
39
39
  p [ :cur_kb, cur_kb ]
40
- ensure
41
- s.close
40
+ ensure
41
+ s.close
42
42
  end
43
43
  end if ENV["STRESS"].to_i != 0
@@ -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
- rescue RangeError
137
+ rescue RangeError
138
138
  end # if RUBY_PLATFORM =~ /linux/
139
139
 
140
140
  def test_evaporate
@@ -60,10 +60,10 @@ 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
- ensure
64
- c.close if c
65
- a.close if a
66
- s.close
63
+ ensure
64
+ c.close if c
65
+ a.close if a
66
+ s.close
67
67
  end
68
68
 
69
69
  def test_tcp_server_state_closed
@@ -118,28 +118,28 @@ def test_tail_queued_min
118
118
 
119
119
  def test_x_current_header
120
120
  env = @req.class.env_for "/active/#@addr.txt"
121
- status, headers, body = @app.call(env)
121
+ _status, headers, _body = @app.call(env)
122
122
  assert_equal "0", headers["X-Current"], headers.inspect
123
123
 
124
124
  env = @req.class.env_for "/queued/#@addr.txt"
125
- status, headers, body = @app.call(env)
125
+ _status, headers, _body = @app.call(env)
126
126
  assert_equal "1", headers["X-Current"], headers.inspect
127
127
 
128
128
  @ios << @srv.accept
129
129
  sleep 0.1
130
130
 
131
131
  env = @req.class.env_for "/queued/#@addr.txt"
132
- status, headers, body = @app.call(env)
132
+ _status, headers, _body = @app.call(env)
133
133
  assert_equal "0", headers["X-Current"], headers.inspect
134
134
 
135
135
  env = @req.class.env_for "/active/#@addr.txt"
136
- status, headers, body = @app.call(env)
136
+ _status, headers, _body = @app.call(env)
137
137
  assert_equal "1", headers["X-Current"], headers.inspect
138
138
  end
139
139
 
140
140
  def test_peaks
141
141
  env = @req.class.env_for "/active/#@addr.txt"
142
- status, headers, body = @app.call(env.dup)
142
+ _status, headers, _body = @app.call(env.dup)
143
143
  start = headers["X-First-Peak-At"]
144
144
  assert headers["X-First-Peak-At"], headers.inspect
145
145
  assert headers["X-Last-Peak-At"], headers.inspect
@@ -148,14 +148,14 @@ def test_peaks
148
148
  before = headers["X-Last-Peak-At"]
149
149
 
150
150
  env = @req.class.env_for "/queued/#@addr.txt"
151
- status, headers, body = @app.call(env)
151
+ _status, headers, _body = @app.call(env)
152
152
  assert_nothing_raised { Time.parse(headers["X-First-Peak-At"]) }
153
153
  assert_nothing_raised { Time.parse(headers["X-Last-Peak-At"]) }
154
154
  assert_equal before, headers["X-Last-Peak-At"], "should not change"
155
155
 
156
156
  sleep 2
157
157
  env = @req.class.env_for "/active/#@addr.txt"
158
- status, headers, body = @app.call(env.dup)
158
+ _status, headers, _body = @app.call(env.dup)
159
159
  assert_equal before, headers["X-Last-Peak-At"], headers.inspect
160
160
 
161
161
  @ios << @srv.accept
@@ -167,7 +167,7 @@ def test_peaks
167
167
  end
168
168
  sleep 0.1
169
169
  env = @req.class.env_for "/queued/#@addr.txt"
170
- status, headers, body = @app.call(env.dup)
170
+ _status, headers, _body = @app.call(env.dup)
171
171
  assert headers["X-Last-Peak-At"], headers.inspect
172
172
  assert_nothing_raised { Time.parse(headers["X-Last-Peak-At"]) }
173
173
  assert before != headers["X-Last-Peak-At"]
@@ -177,7 +177,7 @@ def test_peaks
177
177
  sleep 2
178
178
 
179
179
  env = @req.class.env_for "/queued/#@addr.txt"
180
- status, headers, body = @app.call(env)
180
+ _status, headers, _body = @app.call(env)
181
181
  assert_equal "0", headers["X-Current"]
182
182
  assert_nothing_raised { Time.parse(headers["X-Last-Peak-At"]) }
183
183
  assert_equal queued_before, headers["X-Last-Peak-At"], "should not change"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: raindrops
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.0
4
+ version: 0.19.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - raindrops hackers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-09 00:00:00.000000000 Z
11
+ date: 2020-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aggregate
@@ -78,7 +78,7 @@ description: |-
78
78
  should support any Rack HTTP server on platforms supporting POSIX shared
79
79
  memory. It may also be used as a generic scoreboard for sharing atomic
80
80
  counters across multiple processes.
81
- email: raindrops-public@bogomips.org
81
+ email: raindrops-public@yhbt.net
82
82
  executables: []
83
83
  extensions:
84
84
  - ext/raindrops/extconf.rb
@@ -149,7 +149,7 @@ files:
149
149
  - test/test_struct.rb
150
150
  - test/test_tcp_info.rb
151
151
  - test/test_watcher.rb
152
- homepage: https://bogomips.org/raindrops/
152
+ homepage: https://yhbt.net/raindrops/
153
153
  licenses:
154
154
  - LGPL-2.1+
155
155
  metadata: {}
@@ -168,8 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
168
  - !ruby/object:Gem::Version
169
169
  version: '0'
170
170
  requirements: []
171
- rubyforge_project:
172
- rubygems_version: 2.6.12
171
+ rubygems_version: 3.0.2
173
172
  signing_key:
174
173
  specification_version: 4
175
174
  summary: real-time stats for preforking Rack servers