@@ -5,7 +5,16 @@ module DryRunnable |
||
| 5 | 5 |
@dry_run = true |
| 6 | 6 |
|
| 7 | 7 |
log = StringIO.new |
| 8 |
- @dry_run_logger = Logger.new(log) |
|
| 8 |
+ @dry_run_started_at = Time.zone.now |
|
| 9 |
+ @dry_run_logger = Logger.new(log).tap { |logger|
|
|
| 10 |
+ logger.formatter = proc { |severity, datetime, progname, message|
|
|
| 11 |
+ elapsed_time = '%02d:%02d:%02d' % 2.times.inject([datetime - @dry_run_started_at]) { |(x, *xs)|
|
|
| 12 |
+ [*x.divmod(60), *xs] |
|
| 13 |
+ } |
|
| 14 |
+ |
|
| 15 |
+ "[#{elapsed_time}] #{severity} -- #{progname}: #{message}\n"
|
|
| 16 |
+ } |
|
| 17 |
+ } |
|
| 9 | 18 |
@dry_run_results = {
|
| 10 | 19 |
events: [], |
| 11 | 20 |
} |
@@ -13,13 +22,17 @@ module DryRunnable |
||
| 13 | 22 |
begin |
| 14 | 23 |
raise "#{short_type} does not support dry-run" unless can_dry_run?
|
| 15 | 24 |
readonly! |
| 25 |
+ @dry_run_started_at = Time.zone.now |
|
| 26 |
+ @dry_run_logger.info('Dry Run started')
|
|
| 16 | 27 |
if event |
| 17 | 28 |
raise "This agent cannot receive an event!" unless can_receive_events? |
| 18 | 29 |
receive([event]) |
| 19 | 30 |
else |
| 20 | 31 |
check |
| 21 | 32 |
end |
| 33 |
+ @dry_run_logger.info('Dry Run finished')
|
|
| 22 | 34 |
rescue => e |
| 35 |
+ @dry_run_logger.info('Dry Run failed')
|
|
| 23 | 36 |
error "Exception during dry-run. #{e.message}: #{e.backtrace.join("\n")}"
|
| 24 | 37 |
end |
| 25 | 38 |
|
@@ -70,7 +70,7 @@ describe DryRunnable do |
||
| 70 | 70 |
[@agent.memory, counts] |
| 71 | 71 |
} |
| 72 | 72 |
|
| 73 |
- expect(results[:log]).to match(/\AE, .+ ERROR -- : Exception during dry-run. SandboxedAgent does not support dry-run: /) |
|
| 73 |
+ expect(results[:log]).to match(/\A\[\d\d:\d\d:\d\d\] INFO -- : Dry Run failed\n\[\d\d:\d\d:\d\d\] ERROR -- : Exception during dry-run. SandboxedAgent does not support dry-run: /) |
|
| 74 | 74 |
expect(results[:events]).to eq([]) |
| 75 | 75 |
expect(results[:memory]).to eq({})
|
| 76 | 76 |
end |
@@ -86,7 +86,7 @@ describe DryRunnable do |
||
| 86 | 86 |
[@agent.memory, counts] |
| 87 | 87 |
} |
| 88 | 88 |
|
| 89 |
- expect(results[:log]).to match(/\AI, .+ INFO -- : Logging\nE, .+ ERROR -- : Recording error\n/) |
|
| 89 |
+ expect(results[:log]).to match(/\A\[\d\d:\d\d:\d\d\] INFO -- : Dry Run started\n\[\d\d:\d\d:\d\d\] INFO -- : Logging\n\[\d\d:\d\d:\d\d\] ERROR -- : Recording error\n/) |
|
| 90 | 90 |
expect(results[:events]).to eq([{ 'test' => 'foo' }, { 'test' => 'bar' }])
|
| 91 | 91 |
expect(results[:memory]).to eq({ 'last_status' => 'ok', 'dry_run' => true })
|
| 92 | 92 |
end |
@@ -101,7 +101,7 @@ describe DryRunnable do |
||
| 101 | 101 |
[@agent.memory, counts] |
| 102 | 102 |
} |
| 103 | 103 |
|
| 104 |
- expect(results[:log]).to match(/\AI, .+ INFO -- : Logging\nE, .+ ERROR -- : Recording error\n/) |
|
| 104 |
+ expect(results[:log]).to match(/\A\[\d\d:\d\d:\d\d\] INFO -- : Dry Run started\n\[\d\d:\d\d:\d\d\] INFO -- : Logging\n\[\d\d:\d\d:\d\d\] ERROR -- : Recording error\n/) |
|
| 105 | 105 |
expect(results[:events]).to eq([{ 'test' => 'superfoo' }, { 'test' => 'superbar' }])
|
| 106 | 106 |
expect(results[:memory]).to eq({ 'last_status' => 'ok', 'dry_run' => true })
|
| 107 | 107 |
end |
@@ -406,7 +406,7 @@ describe AgentsController do |
||
| 406 | 406 |
[users(:bob).agents.count, users(:bob).events.count, users(:bob).logs.count, agent.name, agent.updated_at] |
| 407 | 407 |
} |
| 408 | 408 |
json = JSON.parse(response.body) |
| 409 |
- expect(json['log']).to match(/^I, .* : Fetching #{Regexp.quote(url_from_event)}$/)
|
|
| 409 |
+ expect(json['log']).to match(/^\[\d\d:\d\d:\d\d\] INFO -- : Fetching #{Regexp.quote(url_from_event)}$/)
|
|
| 410 | 410 |
end |
| 411 | 411 |
end |
| 412 | 412 |
|