nosey 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/nosey/munin.rb +36 -11
- data/lib/nosey/version.rb +2 -2
- data/spec/lib/nosey/munin_spec.rb +26 -0
- metadata +2 -2
data/lib/nosey/munin.rb
CHANGED
@@ -3,15 +3,15 @@ require 'socket'
|
|
3
3
|
module Nosey
|
4
4
|
module Munin
|
5
5
|
# Print the output of the munin graph to $stdout
|
6
|
-
def self.graph(args=ARGV,&block)
|
7
|
-
|
6
|
+
def self.graph(args=ARGV,out=$stdio,&block)
|
7
|
+
graph = Graph::DSL.new(&block).graph
|
8
8
|
|
9
9
|
# Munin passes configure into this to figure out the graph.
|
10
|
-
puts case args.first
|
10
|
+
out.puts case args.first
|
11
11
|
when 'configure'
|
12
|
-
|
12
|
+
graph.configure
|
13
13
|
else
|
14
|
-
|
14
|
+
graph.sample
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
@@ -20,7 +20,7 @@ module Nosey
|
|
20
20
|
attr_accessor :data, :title, :vertical_label, :category
|
21
21
|
attr_writer :probe_set
|
22
22
|
|
23
|
-
def initialize(data)
|
23
|
+
def initialize(data=nil)
|
24
24
|
@data = data
|
25
25
|
@category = 'App' # Default it to app duuude
|
26
26
|
yield self if block_given?
|
@@ -77,7 +77,6 @@ module Nosey
|
|
77
77
|
report[@probe_set ||= report.keys.first]
|
78
78
|
end
|
79
79
|
|
80
|
-
|
81
80
|
def title
|
82
81
|
@title ||= probe_set
|
83
82
|
end
|
@@ -110,6 +109,11 @@ module Nosey
|
|
110
109
|
class Graph::DSL
|
111
110
|
Category = 'App'
|
112
111
|
|
112
|
+
def initialize(&block)
|
113
|
+
block.arity > 1 ? block.call(self) : instance_eval(&block)
|
114
|
+
self
|
115
|
+
end
|
116
|
+
|
113
117
|
def socket(host=EventMachine::Nosey::SocketServer::Host,port=EventMachine::Nosey::SocketServer::Port)
|
114
118
|
@host, @port = host, port
|
115
119
|
self
|
@@ -121,6 +125,21 @@ module Nosey
|
|
121
125
|
self
|
122
126
|
end
|
123
127
|
|
128
|
+
def title(title)
|
129
|
+
@title = title
|
130
|
+
self
|
131
|
+
end
|
132
|
+
|
133
|
+
def vertical_label(vertical_label)
|
134
|
+
@vertical_label = vertical_label
|
135
|
+
self
|
136
|
+
end
|
137
|
+
|
138
|
+
def data(data)
|
139
|
+
@data = data
|
140
|
+
self
|
141
|
+
end
|
142
|
+
|
124
143
|
# Category this thing will be in
|
125
144
|
def category(category=Category)
|
126
145
|
@category = category
|
@@ -129,14 +148,20 @@ module Nosey
|
|
129
148
|
|
130
149
|
# Configure an instance of a client.
|
131
150
|
def graph
|
132
|
-
Graph.new do |c|
|
133
|
-
c.
|
134
|
-
c.
|
135
|
-
c.
|
151
|
+
Graph.new read_data do |c|
|
152
|
+
c.probe_set = @probe_set
|
153
|
+
c.category = @category
|
154
|
+
c.title = @title
|
155
|
+
c.vertical_label = @vertical_label
|
136
156
|
end
|
137
157
|
end
|
138
158
|
|
139
159
|
private
|
160
|
+
# Let us drop a string right in here in case we need to test some stuff
|
161
|
+
def read_data
|
162
|
+
@data || read_socket
|
163
|
+
end
|
164
|
+
|
140
165
|
# Read the report YAML data from the socket
|
141
166
|
def read_socket
|
142
167
|
UNIXSocket.new(@host).gets("\n\n")
|
data/lib/nosey/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
module Nosey
|
2
|
-
VERSION = "0.0.
|
3
|
-
end
|
2
|
+
VERSION = "0.0.5"
|
3
|
+
end
|
@@ -52,4 +52,30 @@ describe Nosey::Munin::Graph do
|
|
52
52
|
@text.scan(/[A-Za-z0-9_]+\.value .+\n/).should have(6).items
|
53
53
|
end
|
54
54
|
end
|
55
|
+
|
56
|
+
context "munin client" do
|
57
|
+
def graph(report, *argv)
|
58
|
+
out = StringIO.new
|
59
|
+
|
60
|
+
Nosey::Munin.graph argv, out do |g|
|
61
|
+
g.data report.to_s
|
62
|
+
g.category 'Bananas'
|
63
|
+
g.title 'Fruit Fly Charts'
|
64
|
+
g.vertical_label 'Wing speed (beats per second'
|
65
|
+
end
|
66
|
+
|
67
|
+
out.rewind
|
68
|
+
out.read
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should configure" do
|
72
|
+
graph(@report, 'configure').should match(/graph_title Fruit Fly Charts/)
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should sample" do
|
76
|
+
graph(@report).should match(/chopper_avg\.value \d+/)
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should read from socket"
|
80
|
+
end
|
55
81
|
end
|