spec/shared_examples/interface.rb in fozzie-1.0.3 vs spec/shared_examples/interface.rb in fozzie-1.1.0

- old
+ new

@@ -1,160 +1,154 @@ -shared_examples "interface" do - - it "#increment" do - subject.should_receive(:send).with('wat', 1, :count, 1) - subject.increment 'wat' - end - - it "#decrement" do - subject.should_receive(:send).with('wat', -1, :count, 1) - subject.decrement 'wat' - end - - it "#count" do - subject.should_receive(:send).with('wat', 5, :count, 1) - subject.count 'wat', 5 - end - - it "#timing" do - subject.should_receive(:send).with('wat', 500, :timing, 1) - subject.timing 'wat', 500 - end - - it "times a given block" do - subject.should_receive(:timing).with do |b, val, timing| - b == 'data.bin' && (1..11).include?(val) - end.exactly(3).times - - subject.time_for('data.bin') { sleep 0.01 } - subject.time_to_do('data.bin') { sleep 0.01 } - subject.time('data.bin') { sleep 0.01 } - end - - describe "event" do - it "for a commit" do - subject.should_receive(:gauge).with(['event', 'commit', nil], anything).twice - subject.commit - subject.committed - end - - it "for a build" do - subject.should_receive(:gauge).with(['event', 'build', nil], anything).twice - subject.build - subject.built - end - - it "for a deploy" do - subject.should_receive(:gauge).with(['event', 'deploy', nil], anything).twice - subject.deploy - subject.deployed - end - - it "for anything" do - subject.should_receive(:send).with(['event', 'foo', nil], anything, :gauge, 1) - subject.event 'foo' - end - - it "accepts an app name" do - subject.should_receive(:send).with(['event', 'foo', 'fozzie'], anything, :gauge, 1) - subject.event 'foo', 'fozzie' - end - end - - describe "#increment_on" do - it "registers success" do - subject.should_receive(:increment).with(["event.increment", "success"], 1) - subject.increment_on('event.increment', true).should == true - end - - it "registers failure" do - subject.should_receive(:increment).with(["event.increment", "fail"], 1) - subject.increment_on('event.increment', false).should == false - end - - it "simply questions the passed val with if" do - a = double - a.should_receive(:save).and_return({}) - subject.should_receive(:increment).with(["event.increment", "success"], 1) - subject.increment_on('event.increment', a.save).should == {} - end - - it "registers fail on nil return" do - a = double - a.should_receive(:save).and_return(nil) - subject.should_receive(:increment).with(["event.increment", "fail"], 1) - subject.increment_on('event.increment', a.save).should == nil - end - - describe "performing actions" do - it "registers success" do - a = double - a.should_receive(:save).and_return(true) - subject.should_receive(:increment).with(["event.increment", "success"], 1) - subject.increment_on('event.increment', a.save).should == true - end - - it "registers failure" do - a = double - a.should_receive(:save).and_return(false) - subject.should_receive(:increment).with(["event.increment", "fail"], 1) - subject.increment_on('event.increment', a.save).should == false - end - - it "registers positive even when nested" do - a = double - a.should_receive(:save).and_return(true) - subject.should_receive(:timing).with('event.run', anything, anything) - subject.should_receive(:increment).with(["event.increment", "success"], 1) - - res = subject.time_to_do "event.run" do - subject.increment_on('event.increment', a.save) - end - res.should == true - end - - it "registers negative even when nested" do - a = double - a.should_receive(:save).and_return(false) - subject.should_receive(:timing).with('event.run', anything, anything) - subject.should_receive(:increment).with(["event.increment", "fail"], 1) - - res = subject.time_to_do "event.run" do - subject.increment_on('event.increment', a.save) - end - res.should == false - end - end - end - - describe "#bulk" do - - it "registers statistics in a single call" do - Fozzie.c.adapter.should_receive(:register).once - - subject.bulk do - increment :foo - decrement :bar - end - end - - end - - it "registers a gauge measurement" do - subject.should_receive(:send).with("mystat", 99, :gauge, 1) - subject.gauge("mystat", 99) - end - - it "raises exception if natural exception from block" do - proc { subject.time_to_do('data.bin', 1, :gauge, 1) { raise ArgumentError, "testing" } }.should raise_error(ArgumentError) - end - - it "only calls the block once on error" do - Fozzie.c.adapter.stub(:send) { raise SocketError } - i = 0 - p = proc {|n| (n + 1) } - val = subject.time_to_do('data.bin') { i+= p.call(i) } - - val.should == 1 - end - -end \ No newline at end of file +shared_examples "interface" do + it "#increment" do + subject.should_receive(:send).with('wat', 1, :count, 1, {}) + subject.increment 'wat' + end + + it "#decrement" do + subject.should_receive(:send).with('wat', -1, :count, 1, {}) + subject.decrement 'wat' + end + + it "#count" do + subject.should_receive(:send).with('wat', 5, :count, 1, {}) + subject.count 'wat', 5 + end + + it "#timing" do + subject.should_receive(:send).with('wat', 500, :timing, 1, {}) + subject.timing 'wat', 500 + end + + it "times a given block" do + subject.should_receive(:timing).with(/data.bin/, kind_of(Numeric), 1, {}).exactly(3).times + + subject.time_for('data.bin') { true } + subject.time_to_do('data.bin') { true } + subject.time('data.bin') { true } + end + + describe "event" do + it "for a commit" do + subject.should_receive(:gauge).with(['event', 'commit', nil], anything, 1, {}).twice + subject.commit + subject.committed + end + + it "for a build" do + subject.should_receive(:gauge).with(['event', 'build', nil], anything, 1, {}).twice + subject.build + subject.built + end + + it "for a deploy" do + subject.should_receive(:gauge).with(['event', 'deploy', nil], anything, 1, {}).twice + subject.deploy + subject.deployed + end + + it "for anything" do + subject.should_receive(:send).with(['event', 'foo', nil], anything, :gauge, 1, {}) + subject.event 'foo' + end + + it "accepts an app name" do + subject.should_receive(:send).with(['event', 'foo', 'fozzie'], anything, :gauge, 1, {}) + subject.event 'foo', 'fozzie' + end + end + + describe "#increment_on" do + it "registers success" do + subject.should_receive(:increment).with(["event.increment", "success"], 1, {}) + subject.increment_on('event.increment', true).should == true + end + + it "registers failure" do + subject.should_receive(:increment).with(["event.increment", "fail"], 1, {}) + subject.increment_on('event.increment', false).should == false + end + + it "simply questions the passed val with if" do + a = double + a.should_receive(:save).and_return({}) + subject.should_receive(:increment).with(["event.increment", "success"], 1, {}) + subject.increment_on('event.increment', a.save).should == {} + end + + it "registers fail on nil return" do + a = double + a.should_receive(:save).and_return(nil) + subject.should_receive(:increment).with(["event.increment", "fail"], 1, {}) + subject.increment_on('event.increment', a.save).should == nil + end + + describe "performing actions" do + it "registers success" do + a = double + a.should_receive(:save).and_return(true) + subject.should_receive(:increment).with(["event.increment", "success"], 1, {}) + subject.increment_on('event.increment', a.save).should == true + end + + it "registers failure" do + a = double + a.should_receive(:save).and_return(false) + subject.should_receive(:increment).with(["event.increment", "fail"], 1, {}) + subject.increment_on('event.increment', a.save).should == false + end + + it "registers positive even when nested" do + a = double + a.should_receive(:save).and_return(true) + subject.should_receive(:timing).with('event.run', anything, anything, {}) + subject.should_receive(:increment).with(["event.increment", "success"], 1, {}) + + res = subject.time_to_do "event.run" do + subject.increment_on('event.increment', a.save) + end + res.should == true + end + + it "registers negative even when nested" do + a = double + a.should_receive(:save).and_return(false) + subject.should_receive(:timing).with('event.run', anything, anything, {}) + subject.should_receive(:increment).with(["event.increment", "fail"], 1, {}) + + res = subject.time_to_do "event.run" do + subject.increment_on('event.increment', a.save) + end + res.should == false + end + end + end + + describe "#bulk" do + it "registers statistics in a single call" do + Fozzie.c.adapter.should_receive(:register).once + + subject.bulk do + increment :foo + decrement :bar + end + end + end + + it "registers a gauge measurement" do + subject.should_receive(:send).with("mystat", 99, :gauge, 1, {}) + subject.gauge("mystat", 99) + end + + it "raises exception if natural exception from block" do + proc { subject.time_to_do('data.bin', 1, :gauge, 1) { raise ArgumentError, "testing" } }.should raise_error(ArgumentError) + end + + it "only calls the block once on error" do + Fozzie.c.adapter.stub(:send) { raise SocketError } + i = 0 + p = proc {|n| (n + 1) } + val = subject.time_to_do('data.bin') { i+= p.call(i) } + + val.should == 1 + end +end