Sha256: 21d305eebfa4f41ee9ae1eaa2e15ab47cc0523e4572dd0dbb4a1fcc2b8d7a290

Contents?: true

Size: 1.36 KB

Versions: 13

Compression:

Stored size: 1.36 KB

Contents

module DeepTest
  module Distributed
    class RemoteWorkerClient
      def initialize(options, test_server, failover_workers)
        @failover_workers = failover_workers
        @options = options
        @test_server = test_server
      end

      def load_files(filelist)
        @options.new_listener_list.before_sync

        t = Thread.new do
          @test_server.sync(@options)
          @worker_server = @test_server.spawn_worker_server(@options)
          @worker_server.load_files filelist
        end

        filelist.each {|f| load f}

        begin
          t.join
        rescue => e
          # The failover here doesn't invoke load_files on the failover_workers
          # because they will be LocalWorkers, which fork from the current 
          # process.  The fact that we depend in this here is damp...
          #
          fail_over("load_files", e)
        end
      end

      def start_all
        @worker_server.start_all
      rescue => e
        raise if failed_over?
        fail_over("start_all", e)
        retry
      end

      def stop_all
        @worker_server.stop_all
      end

      def fail_over(method, exception)
        @options.ui_instance.distributed_failover_to_local(method, exception)
        @worker_server = @failover_workers
      end

      def failed_over?
        @worker_server == @failover_workers
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 4 rubygems

Version Path
jason-o-matic-deep_test-1.2.2.1 lib/deep_test/distributed/remote_worker_client.rb
jason-o-matic-deep_test-1.2.2.2 lib/deep_test/distributed/remote_worker_client.rb
jason-o-matic-deep_test-1.2.2.3 lib/deep_test/distributed/remote_worker_client.rb
jason-o-matic-deep_test-1.2.2.4 lib/deep_test/distributed/remote_worker_client.rb
jperkins-deep_test-1.2.2 lib/deep_test/distributed/remote_worker_client.rb
jstorimer-deep-test-1.4.0 lib/deep_test/distributed/remote_worker_client.rb
jstorimer-deep-test-1.3.0 lib/deep_test/distributed/remote_worker_client.rb
jstorimer-deep-test-1.2.0 lib/deep_test/distributed/remote_worker_client.rb
jstorimer-deep-test-1.1.0 lib/deep_test/distributed/remote_worker_client.rb
jstorimer-deep-test-1.0.0 lib/deep_test/distributed/remote_worker_client.rb
deep_test-1.2.2 lib/deep_test/distributed/remote_worker_client.rb
deep_test-1.2.1 lib/deep_test/distributed/remote_worker_client.rb
deep_test-1.2.0 lib/deep_test/distributed/remote_worker_client.rb