forked from chef/chef
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRakefile
131 lines (114 loc) · 2.88 KB
/
Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
require 'rubygems'
require 'cucumber/rake/task'
gems = %w[chef chef-server]
desc "Build the chef gems"
task :gem do
gems.each do |dir|
Dir.chdir(dir) { sh "rake package" }
end
end
desc "Install the chef gems"
task :install do
gems.each do |dir|
Dir.chdir(dir) { sh "rake install" }
end
end
desc "Run the rspec tests"
task :spec do
gems.each do |dir|
Dir.chdir(dir) { sh "rake spec" }
end
end
def start_dev_environment(type="normal")
@couchdb_server_pid = nil
@chef_server_pid = nil
@chef_indexer_pid = nil
@stompserver_pid = nil
ccid = fork
if ccid
@couchdb_server_pid = ccid
else
exec("couchdb")
end
scid = fork
if scid
@stompserver_pid = scid
else
exec("stompserver")
end
mcid = fork
if mcid # parent
@chef_indexer_pid = mcid
else # child
case type
when "normal"
exec("chef-indexer -l debug")
when "features"
exec("chef-indexer -c #{File.join(File.dirname(__FILE__), "features", "data", "config", "server.rb")} -l debug")
end
end
mcid = fork
if mcid # parent
@chef_server_pid = mcid
else # child
case type
when "normal"
exec("chef-server -l debug -N -c 2")
when "features"
exec("chef-server -C #{File.join(File.dirname(__FILE__), "features", "data", "config", "server.rb")} -l debug -N -c 2")
end
end
puts "Running Chef at #{@chef_server_pid}"
puts "Running Chef Indexer at #{@chef_indexer_pid}"
puts "Running CouchDB at #{@couchdb_server_pid}"
puts "Running Stompserver at #{@stompserver_pid}"
end
def stop_dev_environment
puts "Stopping CouchDB"
Process.kill("KILL", @couchdb_server_pid)
puts "Stopping Stomp server"
Process.kill("KILL", @stompserver_pid)
puts "Stopping Chef Server"
Process.kill("INT", @chef_server_pid)
puts "Stopping Chef Indexer"
Process.kill("INT", @chef_indexer_pid)
puts "\nCouchDB, Stomp, Chef Server and Chef Indexer killed - have a nice day!"
end
def wait_for_ctrlc
puts "Hit CTRL-C to destroy development environment"
trap("CHLD", "IGNORE")
trap("INT") do
stop_dev_environment
exit 1
end
while true
sleep 10
end
end
desc "Run a Devel instance of Chef"
task :dev => "dev:install" do
start_dev_environment
wait_for_ctrlc
end
namespace :dev do
desc "Install a Devel instance of Chef with the example-repository"
task :install do
gems.each do |dir|
Dir.chdir(dir) { sh "rake install" }
end
Dir.chdir("example-repository") { sh("rake install") }
end
desc "Install a test instance of Chef for doing features against"
task :features do
gems.each do |dir|
Dir.chdir(dir) { sh "rake install" }
end
start_dev_environment("features")
wait_for_ctrlc
end
end
Cucumber::Rake::Task.new(:features) do |t|
t.step_pattern = 'features/steps/**/*.rb'
supportdir = 'features/support'
t.cucumber_opts = "--format pretty -r #{supportdir}"
end