Merge branch 'master' of https://github.com/michaeldwan/foreman into feature/concurrency
Conflicts: spec/foreman/engine_spec.rb spec/foreman/export/bluepill_spec.rb spec/resources/export/bluepill/app.pill
This commit is contained in:
commit
f4123f4ae1
6 files changed
+76
-29
No files matched your search
@@ -5,7 +5,10 @@ class Foreman::Utils
|
|||||||
def self.parse_concurrency(concurrency)
|
def self.parse_concurrency(concurrency)
|
||||||
begin
|
begin
|
||||||
pairs = concurrency.to_s.gsub(/\s/, "").split(",")
|
pairs = concurrency.to_s.gsub(/\s/, "").split(",")
|
||||||
pairs.inject(Hash.new(1)) do |hash, pair|
|
|
||||||
|
default = concurrency.nil? ? 1 : 0
|
||||||
|
|
||||||
|
pairs.inject(Hash.new(default)) do |hash, pair|
|
||||||
process, amount = pair.split("=")
|
process, amount = pair.split("=")
|
||||||
hash.update(process => amount.to_i)
|
hash.update(process => amount.to_i)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ describe "Foreman::Engine" do
|
|||||||
write_procfile
|
write_procfile
|
||||||
engine = Foreman::Engine.new("Procfile",:concurrency => "alpha=2")
|
engine = Foreman::Engine.new("Procfile",:concurrency => "alpha=2")
|
||||||
mock.instance_of(Foreman::Process).run_process("./alpha", is_a(IO)).twice
|
mock.instance_of(Foreman::Process).run_process("./alpha", is_a(IO)).twice
|
||||||
mock.instance_of(Foreman::Process).run_process("./bravo", is_a(IO))
|
mock.instance_of(Foreman::Process).run_process("./bravo", is_a(IO)).never
|
||||||
mock(engine).watch_for_output
|
mock(engine).watch_for_output
|
||||||
mock(engine).watch_for_termination
|
mock(engine).watch_for_termination
|
||||||
engine.start
|
engine.start
|
||||||
|
|||||||
@@ -11,9 +11,18 @@ describe Foreman::Export::Bluepill do
|
|||||||
before(:each) { load_export_templates_into_fakefs("bluepill") }
|
before(:each) { load_export_templates_into_fakefs("bluepill") }
|
||||||
before(:each) { stub(bluepill).say }
|
before(:each) { stub(bluepill).say }
|
||||||
|
|
||||||
it "exports to the filesystem" do
|
def normalize_space(s)
|
||||||
bluepill.export("/tmp/init", :concurrency => "alpha=2")
|
s.gsub(/\n[\n\s]*/, "\n")
|
||||||
File.read("/tmp/init/app.pill").should == example_export_file("bluepill/app.pill")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
it "exports to the filesystem" do
|
||||||
|
bluepill.export("/tmp/init")
|
||||||
|
normalize_space(File.read("/tmp/init/app.pill")).should == normalize_space(example_export_file("bluepill/app.pill"))
|
||||||
|
end
|
||||||
|
|
||||||
|
it "exports to the filesystem with concurrency" do
|
||||||
|
bluepill.export("/tmp/init", :concurrency => "alpha=2")
|
||||||
|
|
||||||
|
normalize_space(File.read("/tmp/init/app.pill")).should == normalize_space(example_export_file("bluepill/app-concurrency.pill"))
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -12,14 +12,23 @@ describe Foreman::Export::Upstart do
|
|||||||
before(:each) { stub(upstart).say }
|
before(:each) { stub(upstart).say }
|
||||||
|
|
||||||
it "exports to the filesystem" do
|
it "exports to the filesystem" do
|
||||||
|
upstart.export("/tmp/init")
|
||||||
|
|
||||||
|
File.read("/tmp/init/app.conf").should == example_export_file("upstart/app.conf")
|
||||||
|
File.read("/tmp/init/app-alpha.conf").should == example_export_file("upstart/app-alpha.conf")
|
||||||
|
File.read("/tmp/init/app-alpha-1.conf").should == example_export_file("upstart/app-alpha-1.conf")
|
||||||
|
File.read("/tmp/init/app-bravo.conf").should == example_export_file("upstart/app-bravo.conf")
|
||||||
|
File.read("/tmp/init/app-bravo-1.conf").should == example_export_file("upstart/app-bravo-1.conf")
|
||||||
|
end
|
||||||
|
|
||||||
|
it "exports to the filesystem with concurrency" do
|
||||||
upstart.export("/tmp/init", :concurrency => "alpha=2")
|
upstart.export("/tmp/init", :concurrency => "alpha=2")
|
||||||
|
|
||||||
File.read("/tmp/init/app.conf").should == example_export_file("upstart/app.conf")
|
File.read("/tmp/init/app.conf").should == example_export_file("upstart/app.conf")
|
||||||
File.read("/tmp/init/app-alpha.conf").should == example_export_file("upstart/app-alpha.conf")
|
File.read("/tmp/init/app-alpha.conf").should == example_export_file("upstart/app-alpha.conf")
|
||||||
File.read("/tmp/init/app-alpha-1.conf").should == example_export_file("upstart/app-alpha-1.conf")
|
File.read("/tmp/init/app-alpha-1.conf").should == example_export_file("upstart/app-alpha-1.conf")
|
||||||
File.read("/tmp/init/app-alpha-2.conf").should == example_export_file("upstart/app-alpha-2.conf")
|
File.read("/tmp/init/app-alpha-2.conf").should == example_export_file("upstart/app-alpha-2.conf")
|
||||||
File.read("/tmp/init/app-bravo.conf").should == example_export_file("upstart/app-bravo.conf")
|
File.exists?("/tmp/init/app-bravo-1.conf").should == false
|
||||||
File.read("/tmp/init/app-bravo-1.conf").should == example_export_file("upstart/app-bravo-1.conf")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
context "with alternate templates" do
|
context "with alternate templates" do
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
Bluepill.application("app", :foreground => false, :log_file => "/var/log/bluepill.log") do |app|
|
||||||
|
|
||||||
|
app.uid = "app"
|
||||||
|
app.gid = "app"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
app.process("alpha-1") do |process|
|
||||||
|
process.start_command = "./alpha"
|
||||||
|
|
||||||
|
process.working_dir = "/tmp/app"
|
||||||
|
process.daemonize = true
|
||||||
|
process.environment = {"PORT" => "5000"}
|
||||||
|
process.stop_signals = [:quit, 30.seconds, :term, 5.seconds, :kill]
|
||||||
|
|
||||||
|
process.stdout = process.stderr = "/var/log/app/app-alpha-1.log"
|
||||||
|
|
||||||
|
process.monitor_children do |children|
|
||||||
|
children.stop_command "kill -QUIT {{PID}}"
|
||||||
|
end
|
||||||
|
|
||||||
|
process.group = "app-alpha"
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
app.process("alpha-2") do |process|
|
||||||
|
process.start_command = "./alpha"
|
||||||
|
|
||||||
|
process.working_dir = "/tmp/app"
|
||||||
|
process.daemonize = true
|
||||||
|
process.environment = {"PORT" => "5001"}
|
||||||
|
process.stop_signals = [:quit, 30.seconds, :term, 5.seconds, :kill]
|
||||||
|
|
||||||
|
process.stdout = process.stderr = "/var/log/app/app-alpha-2.log"
|
||||||
|
|
||||||
|
process.monitor_children do |children|
|
||||||
|
children.stop_command "kill -QUIT {{PID}}"
|
||||||
|
end
|
||||||
|
|
||||||
|
process.group = "app-alpha"
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
@@ -23,27 +23,6 @@ Bluepill.application("app", :foreground => false, :log_file => "/var/log/bluepil
|
|||||||
process.group = "app-alpha"
|
process.group = "app-alpha"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
app.process("alpha-2") do |process|
|
|
||||||
process.start_command = "./alpha"
|
|
||||||
|
|
||||||
process.working_dir = "/tmp/app"
|
|
||||||
process.daemonize = true
|
|
||||||
process.environment = {"PORT" => "5001"}
|
|
||||||
process.stop_signals = [:quit, 30.seconds, :term, 5.seconds, :kill]
|
|
||||||
|
|
||||||
process.stdout = process.stderr = "/var/log/app/app-alpha-2.log"
|
|
||||||
|
|
||||||
process.monitor_children do |children|
|
|
||||||
children.stop_command "kill -QUIT {{PID}}"
|
|
||||||
end
|
|
||||||
|
|
||||||
process.group = "app-alpha"
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
app.process("bravo-1") do |process|
|
app.process("bravo-1") do |process|
|
||||||
process.start_command = "./bravo"
|
process.start_command = "./bravo"
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user