foodtaster 0.0.4 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
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)
|