pimon 0.1.11 → 0.2.0

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