nosey 0.0.7 → 0.0.9

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.
@@ -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