lib/testbot.rb in testbot-0.4.6 vs lib/testbot.rb in testbot-0.4.7
- old
+ new
@@ -1,146 +1,2 @@
-# Because rails 2 autoloads constrants even if they already exists?...
-unless defined?(Testbot)
- require File.join(File.dirname(__FILE__), '/shared/simple_daemonize')
- require File.join(File.dirname(__FILE__), '/adapters/adapter')
- require 'fileutils'
-
- module Testbot
- require 'railtie' if defined?(Rails)
-
- # Don't forget to update readme and changelog
- def self.version
- version = "0.4.6"
- dev_version_file = File.join(File.dirname(__FILE__), '..', 'DEV_VERSION')
- if File.exists?(dev_version_file)
- version += File.read(dev_version_file)
- end
- version
- end
-
- if ENV['INTEGRATION_TEST']
- SERVER_PID = "/tmp/integration_test_testbot_server.pid"
- RUNNER_PID = "/tmp/integration_test_testbot_runner.pid"
- else
- SERVER_PID = "/tmp/testbot_server.pid"
- RUNNER_PID = "/tmp/testbot_runner.pid"
- end
-
- DEFAULT_WORKING_DIR = "/tmp/testbot"
- DEFAULT_SERVER_PATH = "/tmp/testbot/#{ENV['USER']}"
- DEFAULT_USER = "testbot"
- DEFAULT_PROJECT = "project"
- DEFAULT_RUNNER_USAGE = "100%"
- SERVER_PORT = ENV['INTEGRATION_TEST'] ? 22880 : 2288
-
- class CLI
-
- def self.run(argv)
- return false if argv == []
- opts = parse_args(argv)
-
- if opts[:help]
- return false
- elsif opts[:version]
- puts "Testbot #{Testbot.version}"
- elsif [ true, 'run', 'start' ].include?(opts[:server])
- start_server(opts[:server])
- elsif opts[:server] == 'stop'
- stop('server', Testbot::SERVER_PID)
- elsif [ true, 'run', 'start' ].include?(opts[:runner])
- require File.join(File.dirname(__FILE__), '/runner')
- return false unless valid_runner_opts?(opts)
- start_runner(opts)
- elsif opts[:runner] == 'stop'
- stop('runner', Testbot::RUNNER_PID)
- elsif adapter = Adapter.all.find { |adapter| opts[adapter.type.to_sym] }
- require File.join(File.dirname(__FILE__), '/requester')
- start_requester(opts, adapter)
- end
-
- true
- end
-
- def self.parse_args(argv)
- last_setter = nil
- hash = {}
- str = ''
- argv.each_with_index do |arg, i|
- if arg.include?('--')
- str = ''
- last_setter = arg.split('--').last.to_sym
- hash[last_setter] = true if (i == argv.size - 1) || argv[i+1].include?('--')
- else
- str += ' ' + arg
- hash[last_setter] = str.strip
- end
- end
- hash
- end
-
- def self.start_runner(opts)
- stop('runner', Testbot::RUNNER_PID)
-
- proc = lambda {
- working_dir = opts[:working_dir] || Testbot::DEFAULT_WORKING_DIR
- FileUtils.mkdir_p(working_dir)
- Dir.chdir(working_dir)
- runner = Runner.new(:server_host => opts[:connect],
- :auto_update => opts[:auto_update], :max_instances => opts[:cpus],
- :ssh_tunnel => opts[:ssh_tunnel], :server_user => opts[:user],
- :max_jruby_instances => opts[:max_jruby_instances],
- :dev_gem_root => opts[:dev_gem_root],
- :wait_for_updated_gem => opts[:wait_for_updated_gem],
- :jruby_opts => opts[:jruby_opts])
- runner.run!
- }
-
- if opts[:runner] == 'run'
- proc.call
- else
- puts "Testbot runner started (pid: #{Process.pid})"
- SimpleDaemonize.start(proc, Testbot::RUNNER_PID, "testbot (runner)")
- end
- end
-
- def self.start_server(type)
- stop('server', Testbot::SERVER_PID)
-
- if type == 'run'
- require File.join(File.dirname(__FILE__), '/server')
- Sinatra::Application.run! :environment => "production"
- else
- puts "Testbot server started (pid: #{Process.pid})"
- SimpleDaemonize.start(lambda {
- ENV['DISABLE_LOGGING'] = "true"
- require File.join(File.dirname(__FILE__), '/server')
- Sinatra::Application.run! :environment => "production"
- }, Testbot::SERVER_PID, "testbot (server)")
- end
- end
-
- def self.stop(name, pid)
- puts "Testbot #{name} stopped" if SimpleDaemonize.stop(pid)
- end
-
- def self.start_requester(opts, adapter)
- requester = Requester.new(:server_host => opts[:connect],
- :rsync_path => opts[:rsync_path],
- :rsync_ignores => opts[:rsync_ignores].to_s,
- :available_runner_usage => nil,
- :project => opts[:project],
- :ssh_tunnel => opts[:ssh_tunnel], :server_user => opts[:user])
- requester.run_tests(adapter, adapter.base_path)
- end
-
- def self.valid_runner_opts?(opts)
- opts[:connect].is_a?(String)
- end
-
- def self.lib_path
- File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
- end
-
- end
-
- end
-end
+# Rails plugin hook
+require File.expand_path(File.join(File.dirname(__FILE__), '/shared/testbot'))