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