nosey 0.0.7 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,10 +1,12 @@
1
1
  require 'eventmachine'
2
+ require 'strscan'
2
3
 
3
4
  module EventMachine
4
5
  module Nosey
5
6
  class SocketServer < EventMachine::Connection
6
7
  Host = '/tmp/nosey.socket'
7
8
  Port = nil
9
+ CommandPattern = /[A-Z]+\n/
8
10
 
9
11
  attr_accessor :report
10
12
 
@@ -15,21 +17,25 @@ module EventMachine
15
17
 
16
18
  def receive_data(data)
17
19
  buffer << data
18
- # Stop buffering if a newline is detected and process command
19
- process_command buffer.strip if data =~ /\n/
20
+ # Look for commands in the buffer and process them
21
+ # TODO - For higher performance, queue this in a Em::Queue
22
+ while command = buffer.scan(CommandPattern)
23
+ process_command command
24
+ end
20
25
  end
21
26
 
22
27
  def process_command(command)
23
- case command
28
+ case command.strip
24
29
  when 'READ' # This is for more normal uses cases where you want to watch stats
25
30
  send_data report.to_s
26
31
  when 'RESET' # This is used primarly by munin, or other tools that can't track state.
27
32
  send_data report.to_s
28
33
  report.reset
34
+ when 'QUIT'
35
+ close_connection_after_writing
29
36
  else
30
- send_data "No Comprende. send 'read' to see stats or 'reset' to read and reset."
37
+ send_data "No Comprende. READ, RESET, o QUIT."
31
38
  end
32
- close_connection_after_writing
33
39
  end
34
40
 
35
41
  # A nice short-cut for peeps who aren't familar with EM to fire up
@@ -40,7 +46,7 @@ module EventMachine
40
46
 
41
47
  private
42
48
  def buffer
43
- @buffer ||= ""
49
+ @buffer ||= StringScanner.new("")
44
50
  end
45
51
  end
46
52
  end
data/lib/nosey/munin.rb CHANGED
@@ -122,7 +122,7 @@ module Nosey
122
122
  # We use this command to read Nosey data from the socket, but more
123
123
  # importantly, reset it so that when we come back around the next time
124
124
  # we can grab all the data that's occured since that time.
125
- ResetCommand = "RESET\n"
125
+ ResetCommand = "RESET\nQUIT\n"
126
126
 
127
127
  # Default munin category. Zie app!
128
128
  Category = 'App'
@@ -188,7 +188,6 @@ module Nosey
188
188
 
189
189
  # Read the report YAML data from the socket
190
190
  def read_socket
191
- p ResetCommand
192
191
  socket = UNIXSocket.new(@host)
193
192
  socket.puts(ResetCommand)
194
193
  socket.gets("\n\n")
data/lib/nosey/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Nosey
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.9"
3
3
  end
@@ -23,7 +23,7 @@ describe EventMachine::Nosey::SocketServer do
23
23
  socket.callback{|data|
24
24
  @resp = data
25
25
  }
26
- socket.send_data("READ\n")
26
+ socket.send_data("READ\nQUIT\n")
27
27
 
28
28
  ly{2}.test{|count| YAML.load(@resp)['Group 0']['hit'] == count }
29
29
  end
@@ -36,10 +36,10 @@ describe EventMachine::Nosey::SocketServer do
36
36
  s1 = Nosey::Test::ReadSocket.start('/tmp/nosey.socket')
37
37
  s2 = Nosey::Test::ReadSocket.start('/tmp/nosey.socket')
38
38
 
39
- s1.send_data("RESET\n")
39
+ s1.send_data("RESET\nQUIT\n")
40
40
  s1.callback{|data|
41
41
  @r1 = data
42
- s2.send_data("READ\n")
42
+ s2.send_data("READ\nQUIT\n")
43
43
  s2.callback{|data|
44
44
  @r2 = data
45
45
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nosey
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-19 00:00:00.000000000Z
12
+ date: 2011-09-20 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: eventmachine
16
- requirement: &70234556114360 !ruby/object:Gem::Requirement
16
+ requirement: &70198108041380 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70234556114360
24
+ version_requirements: *70198108041380
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: thor
27
- requirement: &70234556113540 !ruby/object:Gem::Requirement
27
+ requirement: &70198108040880 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70234556113540
35
+ version_requirements: *70198108040880
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70234556112860 !ruby/object:Gem::Requirement
38
+ requirement: &70198108040120 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70234556112860
46
+ version_requirements: *70198108040120
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: guard-rspec
49
- requirement: &70234556110900 !ruby/object:Gem::Requirement
49
+ requirement: &70198108039680 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70234556110900
57
+ version_requirements: *70198108039680
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: guard-bundler
60
- requirement: &70234556110300 !ruby/object:Gem::Requirement
60
+ requirement: &70198108039160 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70234556110300
68
+ version_requirements: *70198108039160
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: growl
71
- requirement: &70234556109540 !ruby/object:Gem::Requirement
71
+ requirement: &70198108038680 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70234556109540
79
+ version_requirements: *70198108038680
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rb-fsevent
82
- requirement: &70234556108520 !ruby/object:Gem::Requirement
82
+ requirement: &70198108038200 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70234556108520
90
+ version_requirements: *70198108038200
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: em-ventually
93
- requirement: &70234556107600 !ruby/object:Gem::Requirement
93
+ requirement: &70198108037700 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70234556107600
101
+ version_requirements: *70198108037700
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: ruby-debug19
104
- requirement: &70234556106180 !ruby/object:Gem::Requirement
104
+ requirement: &70198108037280 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,7 +109,7 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *70234556106180
112
+ version_requirements: *70198108037280
113
113
  description: Nosey is a way to instrument your Evented Ruby applications to track
114
114
  counts, aggregates, etc. It was built a Poll Everywhere because we need a way to
115
115
  peer into our Evented apps and grab some basic statistics so that we could graph