foodtaster 0.0.4 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -27,7 +27,7 @@ module Foodtaster
27
27
 
28
28
  [:vm_defined?, :prepare_vm, :rollback_vm,
29
29
  :run_chef_on_vm, :execute_command_on_vm,
30
- :shutdown_vm].each do |method_name|
30
+ :shutdown_vm, :vm_prepared?].each do |method_name|
31
31
  define_method method_name do |*args|
32
32
  begin
33
33
  @v.send(method_name, *args)
@@ -2,9 +2,9 @@ module Foodtaster
2
2
  module RSpec
3
3
  module DslMethods
4
4
  def require_vm(vm_name)
5
- Foodtaster::RSpecRun.current.require_vm(vm_name)
6
-
7
- let(vm_name) { get_vm(vm_name) }
5
+ let(vm_name) do
6
+ get_vm(vm_name).tap { |vm| vm.prepare }
7
+ end
8
8
  end
9
9
 
10
10
  def run_chef_on(vm_name, options = {}, &block)
@@ -2,7 +2,7 @@ module Foodtaster
2
2
  module RSpec
3
3
  module ExampleMethods
4
4
  def get_vm(vm_name)
5
- Foodtaster::RSpecRun.current.get_vm(vm_name)
5
+ Foodtaster::Vm.get(vm_name)
6
6
  end
7
7
 
8
8
  def run_chef_on(vm_name, &block)
@@ -1,32 +1,19 @@
1
- require 'set'
2
-
3
1
  module Foodtaster
4
2
  class RSpecRun
3
+ attr_reader :client
4
+
5
5
  def initialize
6
- @required_vm_names = Set.new
7
6
  @client = nil
8
7
  @server_process = nil
9
8
  @stopped = false
10
9
  end
11
10
 
12
- def require_vm(vm_name)
13
- @required_vm_names.add(vm_name.to_sym)
14
- end
15
-
16
- def required_vm_names
17
- @required_vm_names
18
- end
19
-
20
- def get_vm(vm_name)
21
- Foodtaster::Vm.new(vm_name, @client)
22
- end
23
-
24
11
  def start
25
12
  setup_signal_handlers
26
13
  start_server_and_connect_client
27
14
 
28
15
  if (@server_process.nil? || @server_process.alive?) && @client
29
- prepare_required_vms
16
+ # prepare_required_vms
30
17
  else
31
18
  if @server_process
32
19
  Foodtaster.logger.fatal "Failed to start Foodtaster DRb Server:\n\n#{@server_process.output}"
@@ -43,7 +30,7 @@ module Foodtaster
43
30
 
44
31
  @stopped = true
45
32
  puts "" # newline after rspec output
46
- shutdown_required_vms if Foodtaster.config.shutdown_vms
33
+ Vm.shutdown_running_vms if Foodtaster.config.shutdown_vms
47
34
  terminate_server
48
35
  end
49
36
 
@@ -75,14 +62,6 @@ module Foodtaster
75
62
  end
76
63
  end
77
64
 
78
- def prepare_required_vms
79
- self.required_vm_names.each { |vm_name| get_vm(vm_name).prepare }
80
- end
81
-
82
- def shutdown_required_vms
83
- self.required_vm_names.each { |vm_name| get_vm(vm_name).shutdown }
84
- end
85
-
86
65
  def start_server_and_connect_client
87
66
  drb_port = Foodtaster.config.drb_port
88
67
 
@@ -1,3 +1,3 @@
1
1
  module Foodtaster
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.6"
3
3
  end
data/lib/foodtaster/vm.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'set'
2
+
1
3
  module Foodtaster
2
4
  class Vm
3
5
  class ExecResult
@@ -18,13 +20,37 @@ module Foodtaster
18
20
 
19
21
  attr_reader :name
20
22
 
21
- def initialize(name, client)
23
+ @@vms = Set.new
24
+
25
+ class << self
26
+ def register_vm(vm)
27
+ @@vms << vm
28
+ end
29
+
30
+ def shutdown_running_vms
31
+ @@vms.each do |vm|
32
+ vm.shutdown if vm.prepared?
33
+ end
34
+ end
35
+
36
+ def find_by_name(vm_name)
37
+ @@vms.find { |vm| vm.name == vm_name }
38
+ end
39
+
40
+ def get(vm_name)
41
+ find_by_name(vm_name) || self.new(vm_name)
42
+ end
43
+ end
44
+
45
+ def initialize(name)
22
46
  @name = name
23
- @client = client
47
+ @client = Foodtaster::RSpecRun.current.client
24
48
 
25
49
  unless @client.vm_defined?(name)
26
50
  raise ArgumentError, "No machine defined with name #{name}"
27
51
  end
52
+
53
+ self.class.register_vm(self)
28
54
  end
29
55
 
30
56
  def prepare
@@ -32,6 +58,10 @@ module Foodtaster
32
58
  @client.prepare_vm(name)
33
59
  end
34
60
 
61
+ def prepared?
62
+ @client.vm_prepared?(name)
63
+ end
64
+
35
65
  def shutdown
36
66
  Foodtaster.logger.debug "#{name}: Shutting down VM"
37
67
  @client.shutdown_vm(name)
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: foodtaster
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.4
5
+ version: 0.0.6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Mike Lapshin