jason-o-matic-deep_test 1.2.2.10 → 1.2.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,15 +17,38 @@ module DeepTest
17
17
 
18
18
  def sync(options)
19
19
  if options.sync_options[:push_code]
20
- @slaves.each do |slave|
21
- DeepTest.logger.debug "sync to: #{slave.inspect}"
22
- RSync.sync(Struct.new(:address).new(URI::parse(slave.__drburi).host), options, options.mirror_path(slave.config[:work_dir]))
23
- end
20
+ multi_push_sync(options)
24
21
  else
25
22
  DeepTest.logger.debug "dispatch sync for #{options.origin_hostname}"
26
23
  @slave_controller.dispatch(:sync, options)
27
24
  end
28
25
  end
26
+
27
+ def multi_push_sync(options)
28
+ puts "Syncing..."
29
+ sync_start = Time.now
30
+
31
+ threads = @slaves.map do |slave|
32
+ Thread.new do
33
+ Thread.current[:receiver] = slave
34
+ Timeout.timeout(options.timeout_in_seconds) do
35
+ RSync.sync(Struct.new(:address).new(URI::parse(slave.__drburi).host), options, options.mirror_path(slave.config[:work_dir]))
36
+ end
37
+ end
38
+ end
39
+
40
+ results = []
41
+ threads.each do |t|
42
+ begin
43
+ results << t.value
44
+ rescue Timeout::Error
45
+ DeepTest.logger.error "Timeout syncing to #{t[:receiver].__drburi}"
46
+ raise
47
+ end
48
+ end
49
+
50
+ puts "Sync took #{Time.now - sync_start} seconds"
51
+ end
29
52
 
30
53
  class WorkerServerProxy
31
54
 
@@ -4,8 +4,9 @@ module DeepTest
4
4
  def self.sync(connection_info, options, destination)
5
5
  command = Args.new(connection_info, options).command(destination)
6
6
  DeepTest.logger.debug("rsycing: #{command}")
7
- successful = system command
8
- raise "RSync Failed!!" unless successful
7
+ output = `#{command}`
8
+ raise "RSync Failed!!\nCommand failed: #{command}\nWith output:\nBEGIN#{'=' * 80}\n#{output}\nEND#{'=' * 82}" unless $?.success?
9
+ output
9
10
  end
10
11
 
11
12
  class Args
@@ -20,7 +21,7 @@ module DeepTest
20
21
  # The '/' after source tells rsync to copy the contents
21
22
  # of source to destination, rather than the source directory
22
23
  # itself
23
- "rsync -az --delete #{@sync_options[:rsync_options]} #{source_location}/ #{destination_location(destination)}".strip.squeeze(" ")
24
+ "rsync -az --delete #{@sync_options[:rsync_options]} #{source_location}/ #{destination_location(destination)} 2>&1".strip.squeeze(" ")
24
25
  end
25
26
 
26
27
  def source_location
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jason-o-matic-deep_test
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2.10
4
+ version: 1.2.2.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - anonymous z, Dan Manges, David Vollbracht