pimon 0.1.11 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +7 -0
  2. data/bin/pimon +26 -19
  3. data/config/config.ru +11 -3
  4. data/config/default.yml +7 -13
  5. data/config/test.yml +6 -12
  6. data/config/test_broken.yml +0 -1
  7. data/lib/pimon.rb +2 -69
  8. data/lib/pimon/app.rb +81 -0
  9. data/lib/pimon/config.rb +34 -0
  10. data/lib/pimon/probe.rb +15 -0
  11. data/lib/pimon/probe/cpu_freq.rb +14 -0
  12. data/lib/pimon/probe/cpu_usage.rb +11 -8
  13. data/lib/pimon/probe/disk_usage.rb +11 -8
  14. data/lib/pimon/probe/memory_usage.rb +15 -10
  15. data/lib/pimon/probe/swap_usage.rb +16 -10
  16. data/lib/pimon/probe/system_memory.rb +16 -16
  17. data/lib/pimon/probe/temperature.rb +11 -13
  18. data/lib/pimon/probe/uptime.rb +37 -9
  19. data/lib/pimon/public/index.js +60 -120
  20. data/lib/pimon/public/normalize.css +427 -0
  21. data/lib/pimon/public/piecon.js +194 -0
  22. data/lib/pimon/public/style.css +13 -0
  23. data/lib/pimon/stats_collector.rb +66 -66
  24. data/lib/pimon/version.rb +1 -1
  25. data/lib/pimon/views/index.haml +17 -7
  26. data/pimon.gemspec +26 -25
  27. data/spec/{pimon_spec.rb → pimon/app_spec.rb} +9 -6
  28. data/spec/pimon/config_spec.rb +33 -0
  29. data/spec/pimon/stats_collector_spec.rb +13 -0
  30. data/spec/spec_helper.rb +9 -2
  31. metadata +195 -219
  32. data/.gitignore +0 -10
  33. data/.travis.yml +0 -6
  34. data/Gemfile +0 -20
  35. data/Gemfile.lock +0 -87
  36. data/README.md +0 -68
  37. data/Rakefile +0 -13
  38. data/WTFPL-LICENSE +0 -13
  39. data/bin/free.c +0 -12
  40. data/bin/makefile +0 -2
  41. data/bin/random.c +0 -21
  42. data/bin/random.h +0 -1
  43. data/bin/vmstat.c +0 -12
  44. data/lib/pimon/hash_extensions.rb +0 -12
  45. data/lib/pimon/pimon_config.rb +0 -32
  46. data/lib/pimon/probe/probe.rb +0 -13
  47. data/lib/pimon/probe/time_check.rb +0 -11
  48. data/lib/pimon/public/piecon.min.js +0 -5
  49. data/lib/pimon/stats.rb +0 -25
  50. data/spec/pimon_config_spec.rb +0 -17
  51. data/spec/stats_collector_spec.rb +0 -67
@@ -7,17 +7,20 @@ set :raise_errors, true
7
7
  set :logging, false
8
8
 
9
9
  def app
10
- Pimon
10
+ Pimon::App
11
11
  end
12
12
 
13
13
  RSpec.configure do |config|
14
14
  config.include Rack::Test::Methods
15
15
  end
16
16
 
17
- describe "Pimon" do
18
- it "should be success" do
19
-
20
- get '/'
21
- expect(last_response).to be_ok
17
+ describe Pimon::App do
18
+ describe 'GET /' do
19
+ before { get '/' }
20
+
21
+ it 'renders the index page' do
22
+ expect(last_response).to be_ok
23
+ expect(last_response.body).to include('test_hostname')
24
+ end
22
25
  end
23
26
  end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe Pimon::Config do
4
+ context 'when created for the test environment' do
5
+ let(:config) { described_class.load(Pimon::Test::CONFIG) }
6
+
7
+ describe '#colors' do
8
+ subject { config.colors }
9
+
10
+ let(:expected_result) do
11
+ { 'cpu' => '#D2691E', 'disk' => '#CDC673', 'mem' => '#87CEFA', 'temp' => '#FF9B04', 'swap' => '#3CB371' }
12
+ end
13
+
14
+ it { is_expected.to eq(expected_result) }
15
+ end
16
+
17
+ describe '#stats' do
18
+ subject { config.stats }
19
+ it { is_expected.to eq('time_period_in_min' => 10) }
20
+ end
21
+
22
+ describe '#hostname' do
23
+ subject { config.hostname }
24
+ it { is_expected.to eq('test_hostname') }
25
+ end
26
+ end
27
+
28
+ context 'when created with an invalid environment' do
29
+ it 'raises an error' do
30
+ expect { Pimon::Config.load('invalid') }.to raise_error(Errno::ENOENT)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+ require 'json'
3
+
4
+ describe Pimon::StatsCollector do
5
+ context 'when new with a valid config' do
6
+ let(:stats_collector) { described_class.new(Pimon::Config.load(Pimon::Test::CONFIG)) }
7
+
8
+ it 'collects every stat' do
9
+ stats_collector.probes.each { |probe| allow(probe).to receive(:check) }
10
+ stats_collector.collect_stats
11
+ end
12
+ end
13
+ end
@@ -17,10 +17,11 @@ if ENV['COVERAGE'] || ENV['TRAVIS']
17
17
  end
18
18
  end
19
19
 
20
- require File.join(File.dirname(__FILE__), '..', 'lib', 'pimon.rb')
21
-
22
20
  require 'sinatra'
23
21
  require 'rack/test'
22
+ require 'timecop'
23
+
24
+ require File.join(File.dirname(__FILE__), '..', 'lib/pimon.rb')
24
25
 
25
26
  # Disable the `should` syntax...as explained here:
26
27
  # http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
@@ -30,3 +31,9 @@ RSpec.configure do |config|
30
31
  c.syntax = :expect
31
32
  end
32
33
  end
34
+
35
+ module Pimon
36
+ module Test
37
+ CONFIG = "#{File.dirname(__FILE__)}/../config/test.yml".freeze
38
+ end
39
+ end
metadata CHANGED
@@ -1,285 +1,261 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: pimon
3
- version: !ruby/object:Gem::Version
4
- hash: 13
5
- prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 11
10
- version: 0.1.11
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
11
5
  platform: ruby
12
- authors:
13
- - "Pedro Carri\xC3\xA7o"
6
+ authors:
7
+ - Pedro Carriço
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2013-11-01 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
11
+ date: 2015-09-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
21
14
  name: haml
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 57
29
- segments:
30
- - 4
31
- - 0
32
- - 3
33
- version: 4.0.3
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 4.0.7
34
20
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: sinatra
38
21
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
42
- - - ~>
43
- - !ruby/object:Gem::Version
44
- hash: 1
45
- segments:
46
- - 1
47
- - 4
48
- - 3
49
- version: 1.4.3
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 4.0.7
27
+ - !ruby/object:Gem::Dependency
28
+ name: sinatra
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.4.6
50
34
  type: :runtime
51
- version_requirements: *id002
52
- - !ruby/object:Gem::Dependency
53
- name: em-websocket
54
35
  prerelease: false
55
- requirement: &id003 !ruby/object:Gem::Requirement
56
- none: false
57
- requirements:
58
- - - "="
59
- - !ruby/object:Gem::Version
60
- hash: 3
61
- segments:
62
- - 0
63
- - 3
64
- - 8
65
- version: 0.3.8
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 1.4.6
41
+ - !ruby/object:Gem::Dependency
42
+ name: faye-websocket
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 0.10.0
66
48
  type: :runtime
67
- version_requirements: *id003
68
- - !ruby/object:Gem::Dependency
69
- name: sinatra-websocket
70
49
  prerelease: false
71
- requirement: &id004 !ruby/object:Gem::Requirement
72
- none: false
73
- requirements:
74
- - - ~>
75
- - !ruby/object:Gem::Version
76
- hash: 21
77
- segments:
78
- - 0
79
- - 2
80
- - 1
81
- version: 0.2.1
82
- type: :runtime
83
- version_requirements: *id004
84
- - !ruby/object:Gem::Dependency
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 0.10.0
55
+ - !ruby/object:Gem::Dependency
85
56
  name: sys-uptime
86
- prerelease: false
87
- requirement: &id005 !ruby/object:Gem::Requirement
88
- none: false
89
- requirements:
90
- - - ~>
91
- - !ruby/object:Gem::Version
92
- hash: 5
93
- segments:
94
- - 0
95
- - 6
96
- - 1
97
- version: 0.6.1
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.6.2
98
62
  type: :runtime
99
- version_requirements: *id005
100
- - !ruby/object:Gem::Dependency
101
- name: thin
102
63
  prerelease: false
103
- requirement: &id006 !ruby/object:Gem::Requirement
104
- none: false
105
- requirements:
106
- - - ~>
107
- - !ruby/object:Gem::Version
108
- hash: 1
109
- segments:
110
- - 1
111
- - 5
112
- - 1
113
- version: 1.5.1
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 0.6.2
69
+ - !ruby/object:Gem::Dependency
70
+ name: thin
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 1.6.3
114
76
  type: :runtime
115
- version_requirements: *id006
116
- - !ruby/object:Gem::Dependency
117
- name: rack-test
118
77
  prerelease: false
119
- requirement: &id007 !ruby/object:Gem::Requirement
120
- none: false
121
- requirements:
122
- - - ~>
123
- - !ruby/object:Gem::Version
124
- hash: 3
125
- segments:
126
- - 0
127
- - 6
128
- - 2
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 1.6.3
83
+ - !ruby/object:Gem::Dependency
84
+ name: rack-test
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
129
89
  version: 0.6.2
130
90
  type: :development
131
- version_requirements: *id007
132
- - !ruby/object:Gem::Dependency
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 0.6.2
97
+ - !ruby/object:Gem::Dependency
133
98
  name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
102
+ - !ruby/object:Gem::Version
103
+ version: 3.0.0
104
+ type: :development
134
105
  prerelease: false
135
- requirement: &id008 !ruby/object:Gem::Requirement
136
- none: false
137
- requirements:
138
- - - ~>
139
- - !ruby/object:Gem::Version
140
- hash: 53
141
- segments:
142
- - 2
143
- - 14
144
- - 1
145
- version: 2.14.1
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 3.0.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '='
116
+ - !ruby/object:Gem::Version
117
+ version: 0.33.0
146
118
  type: :development
147
- version_requirements: *id008
148
- - !ruby/object:Gem::Dependency
149
- name: simplecov
150
119
  prerelease: false
151
- requirement: &id009 !ruby/object:Gem::Requirement
152
- none: false
153
- requirements:
154
- - - ~>
155
- - !ruby/object:Gem::Version
156
- hash: 1
157
- segments:
158
- - 0
159
- - 7
160
- - 1
161
- version: 0.7.1
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '='
123
+ - !ruby/object:Gem::Version
124
+ version: 0.33.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: simplecov
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '='
130
+ - !ruby/object:Gem::Version
131
+ version: 0.10.0
162
132
  type: :development
163
- version_requirements: *id009
164
- - !ruby/object:Gem::Dependency
165
- name: simplecov-rcov
166
133
  prerelease: false
167
- requirement: &id010 !ruby/object:Gem::Requirement
168
- none: false
169
- requirements:
170
- - - ~>
171
- - !ruby/object:Gem::Version
172
- hash: 17
173
- segments:
174
- - 0
175
- - 2
176
- - 3
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '='
137
+ - !ruby/object:Gem::Version
138
+ version: 0.10.0
139
+ - !ruby/object:Gem::Dependency
140
+ name: simplecov-rcov
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '='
144
+ - !ruby/object:Gem::Version
177
145
  version: 0.2.3
178
146
  type: :development
179
- version_requirements: *id010
180
- - !ruby/object:Gem::Dependency
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '='
151
+ - !ruby/object:Gem::Version
152
+ version: 0.2.3
153
+ - !ruby/object:Gem::Dependency
181
154
  name: timecop
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - '='
158
+ - !ruby/object:Gem::Version
159
+ version: 0.7.1
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '='
165
+ - !ruby/object:Gem::Version
166
+ version: 0.7.1
167
+ - !ruby/object:Gem::Dependency
168
+ name: coveralls
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - '='
172
+ - !ruby/object:Gem::Version
173
+ version: 0.8.2
174
+ type: :development
182
175
  prerelease: false
183
- requirement: &id011 !ruby/object:Gem::Requirement
184
- none: false
185
- requirements:
186
- - - ~>
187
- - !ruby/object:Gem::Version
188
- hash: 5
189
- segments:
190
- - 0
191
- - 6
192
- - 1
193
- version: 0.6.1
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - '='
179
+ - !ruby/object:Gem::Version
180
+ version: 0.8.2
181
+ - !ruby/object:Gem::Dependency
182
+ name: pry
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - '='
186
+ - !ruby/object:Gem::Version
187
+ version: 0.10.0
194
188
  type: :development
195
- version_requirements: *id011
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - '='
193
+ - !ruby/object:Gem::Version
194
+ version: 0.10.0
196
195
  description: Pimon is a simple server monitor designed for the Raspberry Pi.
197
- email:
196
+ email:
198
197
  - pedro.carrico@gmail.com
199
- executables:
198
+ executables:
200
199
  - pimon
201
200
  extensions: []
202
-
203
201
  extra_rdoc_files: []
204
-
205
- files:
206
- - .gitignore
207
- - .travis.yml
208
- - Gemfile
209
- - Gemfile.lock
210
- - README.md
211
- - Rakefile
212
- - WTFPL-LICENSE
213
- - bin/free.c
214
- - bin/makefile
202
+ files:
215
203
  - bin/pimon
216
- - bin/random.c
217
- - bin/random.h
218
- - bin/vmstat.c
219
204
  - config/config.ru
220
205
  - config/default.yml
221
206
  - config/test.yml
222
207
  - config/test_broken.yml
223
208
  - lib/pimon.rb
224
- - lib/pimon/hash_extensions.rb
225
- - lib/pimon/pimon_config.rb
209
+ - lib/pimon/app.rb
210
+ - lib/pimon/config.rb
211
+ - lib/pimon/probe.rb
212
+ - lib/pimon/probe/cpu_freq.rb
226
213
  - lib/pimon/probe/cpu_usage.rb
227
214
  - lib/pimon/probe/disk_usage.rb
228
215
  - lib/pimon/probe/memory_usage.rb
229
- - lib/pimon/probe/probe.rb
230
216
  - lib/pimon/probe/swap_usage.rb
231
217
  - lib/pimon/probe/system_memory.rb
232
218
  - lib/pimon/probe/temperature.rb
233
- - lib/pimon/probe/time_check.rb
234
219
  - lib/pimon/probe/uptime.rb
235
220
  - lib/pimon/public/favicon.ico
236
221
  - lib/pimon/public/index.js
237
- - lib/pimon/public/piecon.min.js
238
- - lib/pimon/stats.rb
222
+ - lib/pimon/public/normalize.css
223
+ - lib/pimon/public/piecon.js
224
+ - lib/pimon/public/style.css
239
225
  - lib/pimon/stats_collector.rb
240
226
  - lib/pimon/version.rb
241
227
  - lib/pimon/views/index.haml
242
228
  - pimon.gemspec
243
- - spec/pimon_config_spec.rb
244
- - spec/pimon_spec.rb
229
+ - spec/pimon/app_spec.rb
230
+ - spec/pimon/config_spec.rb
231
+ - spec/pimon/stats_collector_spec.rb
245
232
  - spec/spec_helper.rb
246
- - spec/stats_collector_spec.rb
247
233
  homepage: http://pimon.pedrocarrico.net/
248
- licenses: []
249
-
234
+ licenses:
235
+ - WTFPL
236
+ metadata: {}
250
237
  post_install_message: Thank you for using Pimon :-)
251
238
  rdoc_options: []
252
-
253
- require_paths:
239
+ require_paths:
254
240
  - lib
255
- required_ruby_version: !ruby/object:Gem::Requirement
256
- none: false
257
- requirements:
241
+ required_ruby_version: !ruby/object:Gem::Requirement
242
+ requirements:
258
243
  - - ">="
259
- - !ruby/object:Gem::Version
260
- hash: 29
261
- segments:
262
- - 1
263
- - 9
264
- version: "1.9"
265
- required_rubygems_version: !ruby/object:Gem::Requirement
266
- none: false
267
- requirements:
244
+ - !ruby/object:Gem::Version
245
+ version: '1.9'
246
+ required_rubygems_version: !ruby/object:Gem::Requirement
247
+ requirements:
268
248
  - - ">="
269
- - !ruby/object:Gem::Version
270
- hash: 3
271
- segments:
272
- - 0
273
- version: "0"
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
274
251
  requirements: []
275
-
276
252
  rubyforge_project:
277
- rubygems_version: 1.8.17
253
+ rubygems_version: 2.2.2
278
254
  signing_key:
279
- specification_version: 3
255
+ specification_version: 4
280
256
  summary: Pimon - Raspberry Pi server monitor
281
- test_files:
282
- - spec/pimon_config_spec.rb
283
- - spec/pimon_spec.rb
257
+ test_files:
258
+ - spec/pimon/app_spec.rb
259
+ - spec/pimon/config_spec.rb
260
+ - spec/pimon/stats_collector_spec.rb
284
261
  - spec/spec_helper.rb
285
- - spec/stats_collector_spec.rb