Sha256: 8287db9ac41fb42dbb77b734c09b6a66bb90ce3e04f47a48c736875fb0caa2f5

Contents?: true

Size: 1.78 KB

Versions: 8

Compression:

Stored size: 1.78 KB

Contents

require 'serverspec'
require 'pathname'
require 'net/ssh'

include SpecInfra::Helper::Ssh
include SpecInfra::Helper::DetectOS

def run(cmd)
  unless(system(cmd, out: $stdout, err: :out))
    puts 'Failed to setup vagrant machine'
    exit 1
  end
end

<% if(options[:bench_enable]) -%>
class StopWatch
  attr_accessor :total
  def stop
    @total = Time.now - @start
  end

  def reset
    @start = Time.now	
  end
end

WATCH = StopWatch.new
<% end -%>

RSpec.configure do |c|
  c.before :suite do
    c.host  = ENV['TARGET_HOST']
    c.ssh.close if c.ssh
    options = Net::SSH::Config.for(c.host)
    if(!ENV['LOCAL'])
	run("vagrant destroy #{c.host} -f")
      <% if(options[:bench_enable]) %>
      WATCH.reset
      <% end %>
	run("vagrant up #{c.host}")
      config = `vagrant ssh-config #{c.host}`
      sshhost =  sshuser = ''
      if config != ''
        config.each_line do |line|
          if match = /HostName (.*)/.match(line)
            sshhost = match[1]
          elsif  match = /User (.*)/.match(line)
            sshuser = match[1]
          elsif match = /IdentityFile (.*)/.match(line)
            options[:keys] =  [match[1].gsub(/"/,'')]
          elsif match = /Port (.*)/.match(line)
            options[:port] = match[1]
          end
        end
      end
    else
      sshhost = 'localhost' 
      sshuser = 'vagrant' 
    end
    c.ssh = Net::SSH.start(sshhost, sshuser, options)
  end

  c.after :suite do
    c.host  = ENV['TARGET_HOST']
    <% if(options[:bench_enable]) %>
    WATCH.stop
    rev = %x{git rev-parse HEAD}.chomp
    File.open('benchmark.json', 'a') { |f| 
	json = {:total => WATCH.total.to_i, :host => c.host, :revision => rev, :time => Time.now}.to_json
	f.write("#{json}\n") 
    }
    <% end %>
    run("vagrant destroy #{c.host} -f") unless ENV['SKIP_DESTROY']
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
opskeleton-0.8.9 templates/parent/spec/spec_helper.erb
opskeleton-0.8.8 templates/parent/spec/spec_helper.erb
opskeleton-0.8.7 templates/parent/spec/spec_helper.erb
opskeleton-0.8.6 templates/parent/spec/spec_helper.erb
opskeleton-0.8.5 templates/parent/spec/spec_helper.erb
opskeleton-0.8.4 templates/parent/spec/spec_helper.erb
opskeleton-0.8.3 templates/parent/spec/spec_helper.erb
opskeleton-0.8.2 templates/parent/spec/spec_helper.erb