spec/pop_spec.rb in agent-0.9.1 vs spec/pop_spec.rb in agent-0.10.0

- old
+ new

@@ -13,20 +13,20 @@ @pop.close @pop.should be_closed end it "should run multiple times" do - @pop.send{Marshal.dump(1)} + @pop.send{1} @pop.should be_received - @pop.send{Marshal.dump(2)} + @pop.send{2} @pop.object.should == 2 end it "should continue when received" do go!{ @pop.wait; @ack.send(Time.now) } sleep 0.2 - @pop.send{Marshal.dump(1)} + @pop.send{1} s, _ = @ack.receive (Time.now - s).should be_within(0.01).of(0) end @@ -39,30 +39,43 @@ s, _ = @ack.receive (Time.now - s).should be_within(0.01).of(0) end - it "be able to be gracefully rolled back" do + it "should be able to be gracefully rolled back" do @pop.should_not be_received @pop.send{ raise Agent::Errors::Rollback } @pop.should_not be_received end + + it "should continue when it was already closed" do + @pop.close + + go!{ @pop.wait; @ack.send(Time.now) } + + sleep 0.2 + + s, _ = @ack.receive + + (Time.now - s).should be_within(0.01).of(0.2) + end end context "with a blocking_once" do before do @blocking_once = Agent::BlockingOnce.new @pop = Agent::Pop.new(:blocking_once => @blocking_once) end it "should only send only once" do @blocking_once.should_not be_performed - @pop.send{Marshal.dump(1)} + @pop.send{1} @pop.should be_received @blocking_once.should be_performed + @pop.object.should == 1 - @pop.send{Marshal.dump(2)} + @pop.send{2} @pop.object.should == 1 lambda{@pop.send{raise "an error"} }.should_not raise_error end @@ -71,20 +84,34 @@ @pop.should_not be_received @pop.send{ raise Agent::Errors::Rollback } @blocking_once.should_not be_performed @pop.should_not be_received end + + it "should send only once even when it is closed" do + @pop.close + @blocking_once.should_not be_performed + @pop.send{1} + @pop.should be_received + @blocking_once.should be_performed + @pop.object.should == nil + + @pop.send{2} + @pop.object.should == nil + + lambda{@pop.send{raise "an error"} }.should_not raise_error + end end context "with a notifier" do before do @notifier = Agent::Notifier.new @pop = Agent::Pop.new(:notifier => @notifier) end it "should notify when being sent" do @notifier.should_not be_notified - @pop.send{Marshal.dump(1)} + @pop.send{1} @notifier.should be_notified end it "should notify when being closed" do @notifier.should_not be_notified