lib/dtr/agent/runner.rb in xli-dtr-0.0.5 vs lib/dtr/agent/runner.rb in xli-dtr-1.0.0
- old
+ new
@@ -1,6 +1,6 @@
-# Copyright (c) 2007-2008 Li Xiao
+# Copyright (c) 2007-2008 Li Xiao <iam@li-xiao.com>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
@@ -18,79 +18,66 @@
include DRbUndumped
include Service::Runner
def self.start(name, env)
self.new(name, env).start
- DTR.info "=> Runner #{name} provided"
DRb.thread.join if DRb.thread
end
attr_reader :name, :identifier
def initialize(name, env)
@name = name
@identifier = env[:identifier]
@env = env
- @started = 0
- @run_finished = 0
end
def start
#start service first, so that all logs can be sync with master process
start_service
DTR.info("=> Starting runner #{name} at #{Dir.pwd}, pid: #{Process.pid}")
init_environment
- provide_runner(self)
+ provide
+ DTR.info {"=> Runner #{name} provided"}
+ rescue Exception
+ DTR.error($!.message)
+ DTR.error($!.backtrace.join("\n"))
end
def init_environment
- DTR.info "#{name}: Initialize working environment..."
+ DTR.info {"#{name}: Initialize working environment..."}
+ ENV['DTR_RUNNER_NAME'] = name
+
@env[:libs].select{ |lib| !$LOAD_PATH.include?(lib) && File.exists?(lib) }.each do |lib|
$LOAD_PATH << lib
- DTR.debug "#{name}: appended lib: #{lib}"
+ DTR.debug {"#{name}: appended lib: #{lib}"}
end
- DTR.info "#{name}: libs loaded"
- DTR.debug "#{name}: $LOAD_PATH: #{$LOAD_PATH.inspect}"
+ DTR.info {"#{name}: libs loaded"}
+ DTR.debug {"#{name}: $LOAD_PATH: #{$LOAD_PATH.inspect}"}
@env[:files].each do |f|
begin
load f unless f =~ /^-/
- DTR.debug "#{name}: loaded #{f}"
+ DTR.debug {"#{name}: loaded #{f}"}
rescue LoadError => e
- DTR.error "#{name}: No such file to load -- #{f}"
- DTR.debug "Environment: #{@env}"
+ DTR.error {"#{name}: No such file to load -- #{f}"}
+ DTR.debug {"Environment: #{@env}"}
end
end
- DTR.info "#{name}: test files loaded"
+ DTR.info {"#{name}: test files loaded"}
end
def run(test, result, &progress_block)
- DTR.info "#{name}: +"
- DTR.debug "#{name}: running #{test}..."
- @started += 1
- test.run(result, &progress_block)
- rescue DRb::DRbConnError => e
- DTR.info "Rescued DRb::DRbConnError(#{e.message}), while running test: #{test.name}. The master process may be stopped."
- rescue Exception => e
- DTR.error "Unexpected exception: #{e.message}"
- DTR.error e.backtrace.join("\n")
- result.add_error(Test::Unit::Error.new(test.name, e))
- result.add_run
- progress_block.call(Test::Unit::TestCase::FINISHED, test.name)
+ DTR.debug {"#{name}: running #{test}..."}
+ Agent::TestCase.new(test, result, &progress_block).run
+ DTR.debug {"#{name}: done #{test}"}
ensure
- DTR.debug "#{name}: done #{test}"
- @run_finished += 1
- provide_runner(self)
+ provide
+ DTR.debug {"=> Runner #{name} provided"}
end
- def reboot
- DTR.info "#{self} is rebooting. Ran #{@started} tests, finished #{@run_finished}."
+ def provide
provide_runner(self)
- end
-
- def shutdown
- DTR.info "#{self} is shutting down. Ran #{@started} tests, finished #{@run_finished}."
- stop_service rescue exit!
end
def to_s
"Runner #{@name}"
end
\ No newline at end of file