* [PATCH] unix: show zero-value stats for idle listeners
@ 2012-06-13 1:39 Eric Wong
0 siblings, 0 replies; only message in thread
From: Eric Wong @ 2012-06-13 1:39 UTC (permalink / raw)
To: raindrops
When unix_listener_stats is called without arguments, it should
still match the behavior of tcp_listener_stats and return
ListenerStats object with zero values.
This allows callers to iterate through the results to find the
pathnames of all the Unix domain sockets in in listen mode.
---
Pushed to "master" git://bogomips.org/raindrops
I'm thinking about releasing raindrops v0.10.0 soon.
I probably won't have time to use unix_diag functionality in the
Linux 3.3 kernel. I'm also lacking motivation since it'll be a
while before Linux 3.3 is widely-available on servers, and I'm
still supporting raindrops on 2.6.18 kernels :<
Brian Corrigan (1):
resolve symlinks to Unix domain sockets
Eric Wong (3):
unix_listener_stats follows and remembers symlinks
middleware/proxy: favor __send__ for method dispatch
unix: show zero-value stats for idle listeners
lib/raindrops/linux.rb | 14 ++++++++++----
test/test_linux.rb | 11 +++++++++++
2 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/lib/raindrops/linux.rb b/lib/raindrops/linux.rb
index 1752b8a..7cfb653 100644
--- a/lib/raindrops/linux.rb
+++ b/lib/raindrops/linux.rb
@@ -54,14 +54,20 @@ module Raindrops::Linux
Regexp.escape(path)
end
end
- paths = /^\w+: \d+ \d+ 00000000 \d+ (\d+)\s+\d+ (#{paths.join('|')})$/n
+ paths = /^\w+: \d+ \d+ (\d+) \d+ (\d+)\s+\d+ (#{paths.join('|')})$/n
# no point in pread since we can't stat for size on this file
File.read(*PROC_NET_UNIX_ARGS).scan(paths) do |s|
path = s[-1]
- case s[0].to_i
- when 2 then rv[path].queued += 1
- when 3 then rv[path].active += 1
+ case s[0]
+ when "00000000" # client sockets
+ case s[1].to_i
+ when 2 then rv[path].queued += 1
+ when 3 then rv[path].active += 1
+ end
+ else
+ # listeners, vivify empty stats
+ rv[path]
end
end
diff --git a/test/test_linux.rb b/test/test_linux.rb
index a84eecf..0e79a86 100644
--- a/test/test_linux.rb
+++ b/test/test_linux.rb
@@ -67,6 +67,17 @@ class TestLinux < Test::Unit::TestCase
assert_equal 1, stats[tmp.path].queued
end
+ def test_unix_all_unused
+ tmp = Tempfile.new("\xde\xad\xbe\xef") # valid path, really :)
+ File.unlink(tmp.path)
+ us = UNIXServer.new(tmp.path)
+ stats = unix_listener_stats
+ assert stats.keys.include?(tmp.path), stats.inspect
+
+ assert_equal 0, stats[tmp.path].active
+ assert_equal 0, stats[tmp.path].queued
+ end
+
def test_unix_resolves_symlinks
tmp = Tempfile.new("\xde\xad\xbe\xef") # valid path, really :)
File.unlink(tmp.path)
--
Eric Wong
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2012-06-13 1:39 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-06-13 1:39 [PATCH] unix: show zero-value stats for idle listeners Eric Wong
Code repositories for project(s) associated with this public inbox
https://yhbt.net/raindrops.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).