daikon 0.8.1 → 0.8.2
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.
- data/Rakefile +28 -0
- data/daikon.gemspec +2 -2
- data/lib/daikon.rb +1 -1
- data/lib/daikon/monitor.rb +11 -9
- metadata +2 -2
data/Rakefile
CHANGED
@@ -26,3 +26,31 @@ require 'cucumber/rake/task'
|
|
26
26
|
Cucumber::Rake::Task.new(:features)
|
27
27
|
|
28
28
|
task :default => :spec
|
29
|
+
|
30
|
+
def parse_monitor
|
31
|
+
monitor = Daikon::Monitor.new(nil, nil)
|
32
|
+
|
33
|
+
File.open("monitor.log", "r") do |f|
|
34
|
+
until f.eof?
|
35
|
+
monitor.parse(f.readline)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
desc "benchmark monitor.log against the monitor parsing"
|
41
|
+
task :bench do
|
42
|
+
require 'benchmark'
|
43
|
+
Benchmark.bm do |bm|
|
44
|
+
bm.report do
|
45
|
+
parse_monitor
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
desc "perf tools the monitor.log"
|
51
|
+
task :perf do
|
52
|
+
require 'perftools'
|
53
|
+
PerfTools::CpuProfiler.start("daikon.profile") do
|
54
|
+
parse_monitor
|
55
|
+
end
|
56
|
+
end
|
data/daikon.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{daikon}
|
8
|
-
s.version = "0.8.
|
8
|
+
s.version = "0.8.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Nick Quaranto"]
|
12
|
-
s.date = %q{2011-03-
|
12
|
+
s.date = %q{2011-03-22}
|
13
13
|
s.default_executable = %q{daikon}
|
14
14
|
s.description = %q{daikon, a radishapp.com client}
|
15
15
|
s.email = %q{nick@quaran.to}
|
data/lib/daikon.rb
CHANGED
data/lib/daikon/monitor.rb
CHANGED
@@ -8,7 +8,7 @@ module Daikon
|
|
8
8
|
OTHER_COMMANDS = ["AUTH", "BGREWRITEAOF", "BGSAVE", "CONFIG GET", "CONFIG SET", "CONFIG RESETSTAT", "DBSIZE", "DEBUG OBJECT", "DEBUG SEGFAULT", "DISCARD", "ECHO", "EXEC", "FLUSHALL", "FLUSHDB", "INFO", "LASTSAVE", "MONITOR", "MULTI", "PING", "PSUBSCRIBE", "PUBLISH", "PUNSUBSCRIBE", "QUIT", "RANDOMKEY", "SAVE", "SELECT", "SHUTDOWN", "SUBSCRIBE", "SYNC", "UNSUBSCRIBE", "UNWATCH", "WATCH"].to_set
|
9
9
|
ALL_COMMANDS = READ_COMMANDS + WRITE_COMMANDS + OTHER_COMMANDS
|
10
10
|
|
11
|
-
NEW_FORMAT =
|
11
|
+
NEW_FORMAT = /^\+?\d+\.\d+ "(.*)"$/i
|
12
12
|
OLD_SINGLE_FORMAT = /^(#{NO_ARG_COMMANDS.join('|')})$/i
|
13
13
|
OLD_MORE_FORMAT = /^[A-Z]+ .*$/i
|
14
14
|
|
@@ -50,14 +50,14 @@ module Daikon
|
|
50
50
|
|
51
51
|
def parse(line)
|
52
52
|
if line =~ NEW_FORMAT
|
53
|
-
push($
|
53
|
+
push($1.split('" "'))
|
54
54
|
elsif line =~ OLD_SINGLE_FORMAT || line =~ OLD_MORE_FORMAT
|
55
|
-
push(line)
|
55
|
+
push(line.split)
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
def push(
|
60
|
-
command, key, *rest =
|
59
|
+
def push(split_command)
|
60
|
+
command, key, *rest = split_command
|
61
61
|
command.upcase!
|
62
62
|
|
63
63
|
return unless ALL_COMMANDS.member?(command)
|
@@ -66,6 +66,9 @@ module Daikon
|
|
66
66
|
incr_command(command)
|
67
67
|
incr_total(command)
|
68
68
|
if key
|
69
|
+
key.gsub!(".", "{PERIOD}") if key.include?('.')
|
70
|
+
key.gsub!("$", "{DOLLAR}") if key.include?('$')
|
71
|
+
|
69
72
|
incr_key(key)
|
70
73
|
incr_namespace(key)
|
71
74
|
else
|
@@ -75,9 +78,8 @@ module Daikon
|
|
75
78
|
end
|
76
79
|
|
77
80
|
def incr_namespace(key)
|
78
|
-
|
79
|
-
|
80
|
-
data["namespaces"][namespace] += 1
|
81
|
+
if marker = key =~ /:|-/
|
82
|
+
data["namespaces"][key[0...marker]] += 1
|
81
83
|
else
|
82
84
|
incr_global_namespace
|
83
85
|
end
|
@@ -92,7 +94,7 @@ module Daikon
|
|
92
94
|
end
|
93
95
|
|
94
96
|
def incr_key(key)
|
95
|
-
data["keys"][key
|
97
|
+
data["keys"][key] += 1
|
96
98
|
end
|
97
99
|
|
98
100
|
def incr_total(command)
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: daikon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.8.
|
5
|
+
version: 0.8.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Nick Quaranto
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-03-
|
13
|
+
date: 2011-03-22 00:00:00 -04:00
|
14
14
|
default_executable: daikon
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|