Skip to content

Commit

Permalink
Adding rake tasks to run a dev environment, and run a dev environment…
Browse files Browse the repository at this point in the history
… specifically for cucumber features to run against
  • Loading branch information
adamhjk committed Feb 23, 2009
1 parent 12a0731 commit 3865a6e
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 1 deletion.
3 changes: 3 additions & 0 deletions .gitignore
Expand Up @@ -10,5 +10,8 @@ chef/pkg
chef-server/pkg
chef/log
chef-server/log
log
couchdb.stderr
couchdb.stdout
features/data/tmp/**
*.swp
92 changes: 91 additions & 1 deletion Rakefile
Expand Up @@ -24,14 +24,104 @@ task :spec do
end
end

namespace :dev do
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|
Expand Down

0 comments on commit 3865a6e

Please sign in to comment.