raindrops 0.19.0 → 0.19.1

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 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