Sha256: 20c3d35cfecbc8b089018d232e2ba7b7ca7c3bb41d690c0c59ce27029c01cfbe

Contents?: true

Size: 1.8 KB

Versions: 44

Compression:

Stored size: 1.8 KB

Contents

#!/usr/local/ruby-current/bin/ruby

require 'thread'
require 'optimist'

$opts = Optimist::options do
  banner <<-EOS
Usage:
#{$0} [-s <skipaz>] [-n <nocleanup>]
  EOS
  opt :skipaz, "skip an availability zone", :require => false, :type => :string
  opt :nocleanup, "no cleanup on successful run"
end

def test(file, flags = "")
  bok = "/opt/mu/lib/demo/#{file}"
  filename = file.split('.').first+flags.gsub(/ /, "")
  output = "#{Dir.home}/#{filename}.out"

  puts "deploying #{bok} #{flags}; sending output to #{output}"

  cmd="/opt/mu/bin/mu-deploy #{bok} #{flags}"
  if $opts[:skipaz]
    cmd += " -p azskip=#{$opts[:skipaz]}"
  end
  
  `#{cmd} >& #{output}`
  status = $?.to_i

  deploy_id = File.foreach(output).grep(/Deployment id:/)[0].scan(/\(([^\)]+)\)/).last.first
  if status == 0
    message = "Deployment of #{bok} #{flags} as #{deploy_id} was successful"
    if !$opts[:nocleanup] 
      message += ", tore down #{deploy_id}" 
      `/opt/mu/bin/mu-cleanup -s #{deploy_id} >> #{output}`
    end
  else
    message = "error deploying #{bok} #{flags}. See #{output} for details" 
  end
  puts message

  status
end

def main
  boks = %w(simple-server-rails.yaml simple-windows.yaml simple-server.yaml dnszone.yaml cache_cluster.yaml wordpress.yaml)
  successes = 0
  failures = 0

  work_q = Queue.new
  boks.each{ |x|
    work_q.push({ "bok" => x, "arg" => "-c" })
    work_q.push({ "bok" => x, "arg" => "" })
  }
  workers = (0...4).map do
    Thread.new do
      begin
        while job = work_q.pop(true)
          status = test job["bok"], job["arg"]
          if status == 0
            successes += 1
          else
            failures += 1
          end
        end
      rescue ThreadError
      end
    end
  end; "ok"
  workers.map(&:join); "ok"

  puts "#{successes} successes, #{failures} failures"
end

main

Version data entries

44 entries across 44 versions & 1 rubygems

Version Path
cloud-mu-3.6.10 test/smoke_test.rb
cloud-mu-3.6.9 test/smoke_test.rb
cloud-mu-3.6.8 test/smoke_test.rb
cloud-mu-3.6.7 test/smoke_test.rb
cloud-mu-3.6.5 test/smoke_test.rb
cloud-mu-3.6.4 test/smoke_test.rb
cloud-mu-3.6.3 test/smoke_test.rb
cloud-mu-3.5.1 test/smoke_test.rb
cloud-mu-3.5.0 test/smoke_test.rb
cloud-mu-3.4.0 test/smoke_test.rb
cloud-mu-3.3.2 test/smoke_test.rb
cloud-mu-3.3.1 test/smoke_test.rb
cloud-mu-3.3.0 test/smoke_test.rb
cloud-mu-3.2.0 test/smoke_test.rb
cloud-mu-3.1.6 test/smoke_test.rb
cloud-mu-3.1.5 test/smoke_test.rb
cloud-mu-3.1.4 test/smoke_test.rb
cloud-mu-3.1.3 test/smoke_test.rb
cloud-mu-3.1.2 test/smoke_test.rb
cloud-mu-3.1.2beta2 test/smoke_test.rb