require File.dirname(__FILE__) + '/../spec_helper' describe "Eye::Dsl::Chain" do it "should understand chain options" do conf = <<-E Eye.application("bla") do chain :grace => 5.seconds process("3") do pid_file "3" end group :yy do end end E h = { "bla" => { :name=>"bla", :chain=>{:start=>{:grace=>5, :action=>:start}, :restart=>{:grace=>5, :action=>:restart}}, :groups=>{ "__default__"=>{ :name=>"__default__", :chain=>{:start=>{:grace=>5, :action=>:start}, :restart=>{:grace=>5, :action=>:restart}}, :application=>"bla", :processes=>{ "3"=>{ :name=>"3", :chain=>{:start=>{:grace=>5, :action=>:start}, :restart=>{:grace=>5, :action=>:restart}}, :application=>"bla", :group=>"__default__", :pid_file=>"3"}}}, "yy"=>{ :name=>"yy", :chain=>{:start=>{:grace=>5, :action=>:start}, :restart=>{:grace=>5, :action=>:restart}}, :application=>"bla", :processes=>{}}}} } Eye::Dsl.parse_apps(conf).should == h end it "1 inner group have" do conf = <<-E Eye.application("bla") do group "gr1" do chain :grace => 5.seconds end process("p1"){pid_file('1')} end E h = { "bla" => {:name => "bla", :groups=>{ "gr1"=>{:name => "gr1", :application => "bla", :chain=>{:start=>{:grace=>5, :action=>:start}, :restart=>{:grace=>5, :action=>:restart}}, :processes=>{}}, "__default__"=>{:name => "__default__", :application => "bla", :processes=>{"p1"=>{:pid_file=>"1", :application=>"bla", :group=>"__default__", :name=>"p1"}}}}}} Eye::Dsl.parse_apps(conf).should == h end it "1 group have, 1 not" do conf = <<-E Eye.application("bla") do group "gr1" do working_dir "/tmp" chain :grace => 5.seconds end group("gr2"){ working_dir '/tmp' } end E h = { "bla" => {:name => "bla", :groups=>{ "gr1"=>{:name => "gr1", :application => "bla", :working_dir=>"/tmp", :chain=>{:start=>{:grace=>5, :action=>:start}, :restart=>{:grace=>5, :action=>:restart}}, :processes=>{}}, "gr2"=>{:working_dir=>"/tmp", :processes=>{}, :name => "gr2", :application => "bla"}}}} Eye::Dsl.parse_apps(conf).should == h end it "one option" do conf = <<-E Eye.application("bla") do chain :grace => 5.seconds, :action => :start, :type => :async process("3") do pid_file "3" end end E h = {"bla" => {:name => "bla", :chain=>{ :start=>{:grace=>5, :action=>:start, :type=>:async}}, :groups=>{ "__default__"=>{:name => "__default__", :application => "bla", :chain=>{:start=>{:grace=>5, :action=>:start, :type=>:async}}, :processes=>{"3"=>{:chain=>{:start=>{:grace=>5, :action=>:start, :type=>:async}}, :pid_file=>"3", :application=>"bla", :group=>"__default__", :name=>"3"}}}}}} Eye::Dsl.parse_apps(conf).should == h end it "group can rewrite part of options" do conf = <<-E Eye.application("bla") do chain :grace => 5.seconds group "gr" do chain :grace => 10.seconds, :action => :start, :type => :sync process("3") do pid_file "3" end end end E h = {"bla" => {:name => "bla", :chain=>{ :start=>{:grace=>5, :action=>:start}, :restart=>{:grace=>5, :action=>:restart}}, :groups=>{ "gr"=>{:name => "gr", :application => "bla", :chain=>{ :start=>{:grace=>10, :action=>:start, :type=>:sync}, :restart=>{:grace=>5, :action=>:restart}}, :processes=>{"3"=>{:chain=>{:start=>{:grace=>10, :action=>:start, :type=>:sync}, :restart=>{:grace=>5, :action=>:restart}}, :pid_file=>"3", :application=>"bla", :group=>"gr", :name=>"3"}}}}}} Eye::Dsl.parse_apps(conf).should == h end end