| ... | ... |
@@ -3,6 +3,7 @@ require_relative "rubysermon/mod_loader" |
| 3 | 3 |
require_relative "rubysermon/mod_template" |
| 4 | 4 |
require_relative "rubysermon/configurator" |
| 5 | 5 |
require_relative "rubysermon/db" |
| 6 |
+require_relative "rubysermon/output_driver_template" |
|
| 6 | 7 |
|
| 7 | 8 |
require "date" |
| 8 | 9 |
|
| ... | ... |
@@ -12,17 +13,23 @@ module Rubysermon |
| 12 | 12 |
MOD_PATH = "#{LIB_PATH}/rubysermon/mod"
|
| 13 | 13 |
|
| 14 | 14 |
class App |
| 15 |
+ |
|
| 16 |
+ #todo: refactor |
|
| 15 | 17 |
def initialize |
| 16 | 18 |
@config = { repeat: 60,
|
| 17 | 19 |
config_path: "#{LIB_PATH}/rubysermon/config.json",
|
| 18 | 20 |
db_path: "/tmp/rubysermon_history.db", |
| 19 |
- history_size: 90 |
|
| 21 |
+ history_size: 90, |
|
| 22 |
+ output: "Dummy" |
|
| 20 | 23 |
} |
| 21 | 24 |
|
| 22 | 25 |
@running_mods = [] |
| 23 | 26 |
@enabled_mods = [] |
| 24 | 27 |
@db = nil |
| 25 | 28 |
|
| 29 |
+ require "#{LIB_PATH}/rubysermon/output_drivers/#{@config[:output].downcase}"
|
|
| 30 |
+ @output_driver = (Rubysermon.const_get(@config[:output])).new |
|
| 31 |
+ |
|
| 26 | 32 |
@results = [] |
| 27 | 33 |
|
| 28 | 34 |
check_args() |
| ... | ... |
@@ -101,6 +108,7 @@ module Rubysermon |
| 101 | 101 |
end |
| 102 | 102 |
|
| 103 | 103 |
def save_results(mod, time, result) |
| 104 |
+ #results should be specialized object |
|
| 104 | 105 |
mod_results = @results[mod] |
| 105 | 106 |
|
| 106 | 107 |
if mod_results.size >= @config[:history_size] |
| ... | ... |
@@ -117,7 +125,9 @@ module Rubysermon |
| 117 | 117 |
end |
| 118 | 118 |
|
| 119 | 119 |
def make_output |
| 120 |
- |
|
| 120 |
+ @results.each do |mod, mod_results| |
|
| 121 |
+ @output_driver.log(mod, mod_results) |
|
| 122 |
+ end |
|
| 121 | 123 |
end |
| 122 | 124 |
end |
| 123 | 125 |
end |
| ... | ... |
@@ -62,4 +62,22 @@ class Rubysermon_test < MiniTest::Unit::TestCase |
| 62 | 62 |
|
| 63 | 63 |
assert_equal("Wrong config file path. Exiting.", exception.message)
|
| 64 | 64 |
end |
| 65 |
+ |
|
| 66 |
+ def test_results_cpu |
|
| 67 |
+ skip("Use thread instead of sleep")
|
|
| 68 |
+ #depends on cpu module |
|
| 69 |
+ |
|
| 70 |
+ ARGV[0] = "#{TEST_PATH}/fixtures/dummy_results.json"
|
|
| 71 |
+ @app = Rubysermon::App.new |
|
| 72 |
+ |
|
| 73 |
+ |
|
| 74 |
+ thread = Thread.new do |
|
| 75 |
+ @app.run() |
|
| 76 |
+ end |
|
| 77 |
+ |
|
| 78 |
+ sleep(2) |
|
| 79 |
+ thread.kill() |
|
| 80 |
+ |
|
| 81 |
+ #todo check stdout |
|
| 82 |
+ end |
|
| 65 | 83 |
end |
| 66 | 84 |
\ No newline at end of file |