spec/heroku/scalr/metric_spec.rb in heroku-scalr-0.2.2 vs spec/heroku/scalr/metric_spec.rb in heroku-scalr-0.2.3

- old
+ new

@@ -13,21 +13,35 @@ end describe Heroku::Scalr::Metric::Abstract do + let!(:http_request) { stub_request(:head, "http://name.herokuapp.com/robots.txt") } let(:app) { Heroku::Scalr::App.new('name', api_key: 'key') } subject { described_class.new(app) } + its(:by) { should == 0 } + it "should perform HTTP pings" do + res = subject.send(:http_get) + res.status.should == 200 + http_request.should have_been_made + end + + it "should catch HTTP errors" do + Excon.stub!(:head).and_raise(Excon::Errors::Timeout) + res = subject.send(:http_get) + res.status.should == 598 + end + end describe Heroku::Scalr::Metric::Ping do let(:app) { Heroku::Scalr::App.new('name', api_key: 'key') } let(:ping_time) { 0.250 } - let!(:http_request) { stub_request(:get, "http://name.herokuapp.com/robots.txt") } + let!(:http_request) { stub_request(:head, "http://name.herokuapp.com/robots.txt") } subject { described_class.new(app) } before { Benchmark.stub(:realtime).and_yield.and_return(ping_time) } describe "low ping time" do @@ -56,11 +70,11 @@ end describe "failed requests" do let! :http_request do - stub_request(:get, "http://name.herokuapp.com/robots.txt").to_return(status: 404) + stub_request(:head, "http://name.herokuapp.com/robots.txt").to_return(status: 404) end it 'should not scale' do Heroku::Scalr.logger.should_receive(:warn) subject.by.should == 0 @@ -77,11 +91,11 @@ subject { described_class.new(app) } describe "low queue wait time" do let! :http_request do - stub_request(:get, "http://name.herokuapp.com/robots.txt").to_return(body: "", headers: { "X-Heroku-Queue-Wait" => 3 }) + stub_request(:head, "http://name.herokuapp.com/robots.txt").to_return(body: "", headers: { "X-Heroku-Queue-Wait" => 3 }) end it 'should scale down' do subject.by.should == -1 http_request.should have_been_made @@ -90,11 +104,11 @@ end describe "high queue wait time" do let! :http_request do - stub_request(:get, "http://name.herokuapp.com/robots.txt").to_return(body: "", headers: { "X-Heroku-Queue-Wait" => 300 }) + stub_request(:head, "http://name.herokuapp.com/robots.txt").to_return(body: "", headers: { "X-Heroku-Queue-Wait" => 300 }) end it 'should scale up' do subject.by.should == 1 http_request.should have_been_made @@ -103,11 +117,11 @@ end describe "normal queue wait time" do let! :http_request do - stub_request(:get, "http://name.herokuapp.com/robots.txt").to_return(body: "", headers: { "X-Heroku-Queue-Wait" => 20 }) + stub_request(:head, "http://name.herokuapp.com/robots.txt").to_return(body: "", headers: { "X-Heroku-Queue-Wait" => 20 }) end it 'should not scale' do subject.by.should == 0 http_request.should have_been_made @@ -116,10 +130,10 @@ end describe "queue wait unretrievable" do let! :http_request do - stub_request(:get, "http://name.herokuapp.com/robots.txt") + stub_request(:head, "http://name.herokuapp.com/robots.txt") end it 'should not scale' do Heroku::Scalr.logger.should_receive(:warn) subject.by.should == 0 \ No newline at end of file