foodtaster 0.0.4 → 0.0.6

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.
@@ -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