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