redis-stat 0.1.2 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +1 -1
- data/lib/redis-stat.rb +28 -17
- data/lib/redis-stat/version.rb +1 -1
- data/test/test_redis-stat.rb +40 -1
- metadata +2 -2
data/README.md
CHANGED
@@ -13,7 +13,7 @@ gem install redis-stat
|
|
13
13
|
```
|
14
14
|
usage: redis-stat [HOST[:PORT]] [INTERVAL [COUNT]]
|
15
15
|
|
16
|
-
--csv=OUTPUT_CSV_FILE_PATH
|
16
|
+
--csv=OUTPUT_CSV_FILE_PATH Save the result in CSV format
|
17
17
|
-v, --verbose Show more info
|
18
18
|
--version Show version
|
19
19
|
--help Show this message
|
data/lib/redis-stat.rb
CHANGED
@@ -22,18 +22,19 @@ class RedisStat
|
|
22
22
|
@os = output_stream
|
23
23
|
trap('INT') { Thread.main.raise Interrupt }
|
24
24
|
|
25
|
-
|
25
|
+
csv = File.open(@options[:csv], 'w') if @options[:csv]
|
26
26
|
update_term_size!
|
27
27
|
|
28
|
+
prev_info = nil
|
28
29
|
begin
|
29
30
|
@started_at = Time.now
|
30
31
|
loop do
|
31
|
-
|
32
|
-
|
32
|
+
info = @redis.info.insensitive
|
33
|
+
info[:at] = Time.now.to_f
|
33
34
|
|
34
|
-
output
|
35
|
+
output info, prev_info, csv
|
35
36
|
|
36
|
-
|
37
|
+
prev_info = info
|
37
38
|
@count += 1
|
38
39
|
break if @max_count && @count >= @max_count
|
39
40
|
sleep @options[:interval]
|
@@ -46,7 +47,7 @@ class RedisStat
|
|
46
47
|
@os.puts ansi(:red, :bold) { e.to_s }
|
47
48
|
exit 1
|
48
49
|
ensure
|
49
|
-
|
50
|
+
csv.close if csv
|
50
51
|
end
|
51
52
|
@os.puts ansi(:blue, :bold) {
|
52
53
|
"Elapsed: #{"%.2f" % (Time.now - @started_at)} sec."
|
@@ -55,6 +56,18 @@ class RedisStat
|
|
55
56
|
|
56
57
|
private
|
57
58
|
def update_term_size!
|
59
|
+
if RUBY_PLATFORM.match(/java/)
|
60
|
+
require 'java'
|
61
|
+
begin
|
62
|
+
@term ||= Java::jline.Terminal.getTerminal
|
63
|
+
@term_width = (@term.getTerminalWidth rescue DEFAULT_TERM_WIDTH)
|
64
|
+
@term_height = (@term.getTerminalHeight rescue DEFAULT_TERM_HEIGHT) - 4
|
65
|
+
return
|
66
|
+
rescue Exception
|
67
|
+
# Fallback to tput (which yields incorrect values as of now)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
58
71
|
@term_width = (`tput cols` rescue DEFAULT_TERM_WIDTH).to_i
|
59
72
|
@term_height = (`tput lines` rescue DEFAULT_TERM_HEIGHT).to_i - 4
|
60
73
|
end
|
@@ -230,19 +243,17 @@ private
|
|
230
243
|
end.to_s
|
231
244
|
end
|
232
245
|
|
233
|
-
def humanize_number
|
234
|
-
return '-' if
|
246
|
+
def humanize_number num, k = 1000, suffix = ''
|
247
|
+
return '-' if num.nil?
|
235
248
|
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
format_number(
|
241
|
-
|
242
|
-
format_number(bytes / k ** 2) + 'M' + suffix
|
243
|
-
else
|
244
|
-
format_number(bytes / k ** 3) + 'G' + suffix
|
249
|
+
sign = num >= 0 ? '' : '-'
|
250
|
+
num = num.abs
|
251
|
+
mult = k.to_f
|
252
|
+
['', 'K', 'M', 'G', 'T', 'P', 'E'].each do |mp|
|
253
|
+
return sign + format_number(num * k / mult) + mp + suffix if num < mult || mp == 'E'
|
254
|
+
mult *= k
|
245
255
|
end
|
256
|
+
return nil
|
246
257
|
end
|
247
258
|
|
248
259
|
def ansi *args, &block
|
data/lib/redis-stat/version.rb
CHANGED
data/test/test_redis-stat.rb
CHANGED
@@ -4,6 +4,39 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
4
4
|
require 'redis-stat'
|
5
5
|
|
6
6
|
class TestRedisStat < Test::Unit::TestCase
|
7
|
+
def test_humanize_number
|
8
|
+
rs = RedisStat.new
|
9
|
+
assert_equal '0', rs.send(:humanize_number, 0.00)
|
10
|
+
assert_equal '7', rs.send(:humanize_number, 7)
|
11
|
+
assert_equal '0.01', rs.send(:humanize_number, 0.00751)
|
12
|
+
assert_equal '0.08', rs.send(:humanize_number, 0.0751)
|
13
|
+
assert_equal '0.75', rs.send(:humanize_number, 0.751)
|
14
|
+
assert_equal '7.51', rs.send(:humanize_number, 7.51)
|
15
|
+
assert_equal '75.1', rs.send(:humanize_number, 75.1)
|
16
|
+
assert_equal '7.51K', rs.send(:humanize_number, 7510)
|
17
|
+
assert_equal '75.1K', rs.send(:humanize_number, 75100)
|
18
|
+
assert_equal '751K', rs.send(:humanize_number, 751000)
|
19
|
+
assert_equal '7.51M', rs.send(:humanize_number, 7510000)
|
20
|
+
assert_equal '75.1M', rs.send(:humanize_number, 75100000)
|
21
|
+
assert_equal '751M', rs.send(:humanize_number, 751000000)
|
22
|
+
assert_equal '7.51G', rs.send(:humanize_number, 7510000000)
|
23
|
+
assert_equal '75.1G', rs.send(:humanize_number, 75100000000)
|
24
|
+
assert_equal '751G', rs.send(:humanize_number, 751000000000)
|
25
|
+
assert_equal '7.51T', rs.send(:humanize_number, 7510000000000)
|
26
|
+
assert_equal '75.1T', rs.send(:humanize_number, 75100000000000)
|
27
|
+
assert_equal '751T', rs.send(:humanize_number, 751000000000000)
|
28
|
+
assert_equal '7.51P', rs.send(:humanize_number, 7510000000000000)
|
29
|
+
assert_equal '75.1P', rs.send(:humanize_number, 75100000000000000)
|
30
|
+
assert_equal '751P', rs.send(:humanize_number, 751000000000000000)
|
31
|
+
assert_equal '7.51E', rs.send(:humanize_number, 7510000000000000000)
|
32
|
+
assert_equal '75.1E', rs.send(:humanize_number, 75100000000000000000)
|
33
|
+
assert_equal '751E', rs.send(:humanize_number, 751000000000000000000)
|
34
|
+
assert_equal '7510E', rs.send(:humanize_number, 7510000000000000000000)
|
35
|
+
|
36
|
+
assert_equal '7.51PB', rs.send(:humanize_number, 7.51 * (1024 ** 5), 1024, 'B')
|
37
|
+
assert_equal '-7.51PB', rs.send(:humanize_number, -7.51 * (1024 ** 5), 1024, 'B')
|
38
|
+
end
|
39
|
+
|
7
40
|
def test_option_parse
|
8
41
|
options = RedisStat::Option.parse([])
|
9
42
|
assert_equal RedisStat::Option::DEFAULT.sort, options.sort
|
@@ -66,8 +99,14 @@ class TestRedisStat < Test::Unit::TestCase
|
|
66
99
|
end
|
67
100
|
|
68
101
|
def test_start
|
69
|
-
|
102
|
+
csv = '/tmp/redis-stat.csv'
|
103
|
+
cnt = 50
|
104
|
+
rs = RedisStat.new :interval => 0.01, :count => cnt, :verbose => true, :csv => csv
|
70
105
|
rs.start $stdout
|
106
|
+
|
107
|
+
assert_equal cnt + 1, File.read(csv).lines.to_a.length
|
108
|
+
ensure
|
109
|
+
File.unlink csv
|
71
110
|
end
|
72
111
|
end
|
73
112
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis-stat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ansi
|