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.
data/lib/foodtaster/client.rb
CHANGED
@@ -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
|
-
|
6
|
-
|
7
|
-
|
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)
|
data/lib/foodtaster/rspec_run.rb
CHANGED
@@ -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
|
-
|
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
|
|
data/lib/foodtaster/version.rb
CHANGED
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
|
-
|
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)
|