Class: DeepTest::Options
- Inherits:
-
Object
- Object
- DeepTest::Options
- Defined in:
- lib/deep_test/options.rb
Defined Under Namespace
Classes: InvalidOptionError
Constant Summary collapse
- VALID_OPTIONS =
[ Option.new(:distributed_server, Option::String, nil), Option.new(:number_of_workers, Option::Integer, 2), Option.new(:metrics_file, Option::String, nil), Option.new(:pattern, Option::String, nil), Option.new(:server_port, Option::Integer, 6969), Option.new(:sync_options, Option::Hash, {}), Option.new(:timeout_in_seconds, Option::Integer, 30), Option.new(:ui, Option::String, "DeepTest::UI::Console"), Option.new(:worker_listener, Option::String, "DeepTest::NullWorkerListener"), Option.new(:libs, Option::Array, []), Option.new(:requires, Option::Array, []), Option.new(:test_collector, Option::Symbol, :objectspace), ]
- UI_INSTANCES =
Don’t store UI instances in the options instance, which will need to be dumped over DRb. UI instances may not be dumpable and we don’t want to have to start yet another DRb Server
{}
Class Method Summary collapse
Instance Method Summary collapse
- #gathering_metrics? ⇒ Boolean
-
#initialize(hash) ⇒ Options
constructor
A new instance of Options.
- #mirror_path(base) ⇒ Object
- #new_listener_list ⇒ Object
- #new_workers ⇒ Object
- #origin_hostname ⇒ Object
- #server ⇒ Object
- #to_command_line ⇒ Object
- #ui=(value) ⇒ Object
- #ui_instance ⇒ Object
- #worker_listener=(value) ⇒ Object
Constructor Details
#initialize(hash) ⇒ Options
Returns a new instance of Options.
38 39 40 41 42 43 44 |
# File 'lib/deep_test/options.rb', line 38 def initialize(hash) @origin_hostname = Socket.gethostname check_option_keys(hash) VALID_OPTIONS.each do |option| send("#{option.name}=", hash[option.name] || option.default) end end |
Class Method Details
.from_command_line(command_line) ⇒ Object
30 31 32 33 34 35 36 |
# File 'lib/deep_test/options.rb', line 30 def self.from_command_line(command_line) hash = {} VALID_OPTIONS.each do |option| hash[option.name] = option.from_command_line(command_line) end new(hash) end |
Instance Method Details
#gathering_metrics? ⇒ Boolean
46 47 48 |
# File 'lib/deep_test/options.rb', line 46 def gathering_metrics? !@metrics_file.nil? end |
#mirror_path(base) ⇒ Object
79 80 81 82 83 |
# File 'lib/deep_test/options.rb', line 79 def mirror_path(base) raise "No source directory specified in sync_options" unless [:source] relative_mirror_path = origin_hostname + [:source].gsub('/','_') "#{base}/#{relative_mirror_path}" end |
#new_listener_list ⇒ Object
50 51 52 53 54 55 |
# File 'lib/deep_test/options.rb', line 50 def new_listener_list listeners = worker_listener.split(',').map do |listener| eval(listener).new end ListenerList.new(listeners) end |
#new_workers ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/deep_test/options.rb', line 85 def new_workers if distributed_server.nil? LocalWorkers.new self else begin server = Distributed::TestServer.connect(self) Distributed::RemoteWorkerClient.new(self, server, LocalWorkers.new(self)) rescue => e ui_instance.distributed_failover_to_local("connect", e) LocalWorkers.new self end end end |
#origin_hostname ⇒ Object
57 58 59 |
# File 'lib/deep_test/options.rb', line 57 def origin_hostname @origin_hostname end |
#server ⇒ Object
99 100 101 |
# File 'lib/deep_test/options.rb', line 99 def server Server.remote_reference(origin_hostname, server_port) end |
#to_command_line ⇒ Object
70 71 72 73 74 75 76 77 |
# File 'lib/deep_test/options.rb', line 70 def to_command_line command_line = [] VALID_OPTIONS.each do |option| value = send(option.name) command_line << option.to_command_line(value) end command_line.compact.join(' ') end |
#ui=(value) ⇒ Object
22 23 24 |
# File 'lib/deep_test/options.rb', line 22 def ui=(value) @ui = value.to_s end |
#ui_instance ⇒ Object
66 67 68 |
# File 'lib/deep_test/options.rb', line 66 def ui_instance UI_INSTANCES[self] ||= eval(ui).new(self) end |
#worker_listener=(value) ⇒ Object
26 27 28 |
# File 'lib/deep_test/options.rb', line 26 def worker_listener=(value) @worker_listener = value.to_s end |