[rackspace] consolidate servers tests

This commit is contained in:
geemus 2010-05-31 10:37:26 -05:00
parent 6d9712ad5c
commit b7808c6998
16 changed files with 120 additions and 185 deletions

View File

@ -67,7 +67,7 @@ module Fog
class Mock
def create_server(flavor_id, image_id, name, options = {})
def create_server(flavor_id, image_id, options = {})
response = Excon::Response.new
response.status = 202
@ -77,15 +77,14 @@ module Fog
'id' => 123456,
'imageId' => image_id,
'hostId' => "123456789ABCDEF01234567890ABCDEF",
'metadata' => options[:metadata] || {},
'name' => name,
'metadata' => options['metadata'] || {},
'name' => options['name'] || "server_#{rand(999)}",
'progress' => 0,
'status' => 'BUILD'
}
data['adminPass'] = "#{data['name']}password"
@data[:last_modified][:servers][data['id']] = Time.now
@data[:servers][data['id']] = data
response.body = { 'server' => data }
response.body = { 'server' => data.merge({'adminPass' => 'password'}) }
response
end

View File

@ -31,11 +31,10 @@ module Fog
@data[:servers].delete(server_id)
response.status = 202
end
response
else
response.status = 404
raise(Excon::Errors.status_error({:expects => 202}, response))
raise Fog::Rackspace::Servers::NotFound
end
response
end
end

View File

@ -40,11 +40,10 @@ module Fog
if server = list_servers_detail.body['servers'].detect { |server| server['id'] == server_id }
response.status = [200, 203][rand(1)]
response.body = { 'server' => server }
response
else
response.status = 404
raise(Excon::Errors.status_error({:expects => 202}, response))
raise Fog::Rackspace::Servers::NotFound
end
response
end
end

View File

@ -22,7 +22,7 @@ module Fog
class Mock
def reboot_server(server_id, type)
def reboot_server(server_id, type = 'SOFT')
Fog::Mock.not_implemented
end

View File

@ -33,11 +33,10 @@ module Fog
server['name'] = options['name']
end
response.status = 204
response
else
response.status = 404
raise(Excon::Errors.status_error({:expects => 202}, response))
raise Fog::Rackspace::Servers::NotFound
end
response
end
end

View File

@ -2,6 +2,9 @@ module Fog
module Rackspace
module Servers
class Error < Fog::Errors::Error; end
class NotFound < Fog::Errors::NotFound; end
def self.new(options={})
unless @required
@ -85,17 +88,27 @@ module Fog
def request(params)
@connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}")
response = @connection.request({
:body => params[:body],
:expects => params[:expects],
:headers => {
'Content-Type' => 'application/json',
'X-Auth-Token' => @auth_token
}.merge!(params[:headers] || {}),
:host => @host,
:method => params[:method],
:path => "#{@path}/#{params[:path]}"
})
begin
response = @connection.request({
:body => params[:body],
:expects => params[:expects],
:headers => {
'Content-Type' => 'application/json',
'X-Auth-Token' => @auth_token
}.merge!(params[:headers] || {}),
:host => @host,
:method => params[:method],
:path => "#{@path}/#{params[:path]}"
})
rescue Excon::Errors::Error => error
case error
when Excon::Errors::NotFound
raise Fog::Rackspace::Servers::NotFound
else
raise error
end
end
unless response.body.empty?
response.body = JSON.parse(response.body)
end

View File

@ -24,12 +24,8 @@ module Shindo
def succeeds(&block)
test('succeeds') do
begin
instance_eval(&block)
true
rescue Exception, Interrupt
false
end
instance_eval(&block)
true
end
end

View File

@ -44,21 +44,6 @@ module Rackspace
'updated' => String
}
SERVER = {
'addresses' => {
'private' => [String],
'public' => [String]
},
'flavorId' => Integer,
'hostId' => String,
'id' => Integer,
'imageId' => Integer,
'metadata' => {},
'name' => String,
'progress' => Integer,
'status' => String
}
SUMMARY = {
'id' => Integer,
'name' => String

View File

@ -1,18 +0,0 @@
Shindo.tests('Rackspace::Servers#create_server', 'rackspace') do
tests('success') do
@server_id = nil
tests('#create_server(1, 19)').formats(Rackspace::Servers::Formats::SERVER.merge('adminPass' => String)) do
# 1 => 256MB, 19 => Gentoo
data = Rackspace[:servers].create_server(1, 19).body['server']
@server_id = data['id']
data
end
@server = Rackspace[:servers].servers.get(@server_id)
@server.wait_for { ready? }
@server.destroy
end
end

View File

@ -1,19 +0,0 @@
Shindo.tests('Rackspace::Servers#delete_server', 'rackspace') do
tests('success') do
@server = Rackspace[:servers].servers.create(:flavor_id => 1, :image_id => 19, :name => 'foggetserverdetails')
@server.wait_for { ready? }
tests("#delete_server(#{@server.id})").succeeds do
Rackspace[:servers].delete_server(@server.id)
end
end
tests('failure') do
tests('#delete_server(0)').raises(Excon::Errors::NotFound) do
Rackspace[:servers].delete_server(0)
end
end
end

View File

@ -1,21 +0,0 @@
Shindo.tests('Rackspace::Servers#get_server_details', 'rackspace') do
tests('success') do
@server = Rackspace[:servers].servers.create(:flavor_id => 1, :image_id => 19, :name => 'foggetserverdetails')
tests("#get_server_details(#{@server.id})").formats(Rackspace::Servers::Formats::SERVER) do
Rackspace[:servers].get_server_details(@server.id).body['server']
end
@server.wait_for { ready? }
@server.destroy
end
tests('failure') do
tests('#get_server_details(0)').raises(Excon::Errors::NotFound) do
Rackspace[:servers].get_server_details(0)
end
end
end

View File

@ -1,14 +0,0 @@
Shindo.tests('Rackspace::Servers#list_servers_detail', 'rackspace') do
tests('success') do
@server = Rackspace[:servers].servers.create(:flavor_id => 1, :image_id => 19, :name => 'foglistserversdetail')
tests('#list_servers_detail').formats({'servers' => [Rackspace::Servers::Formats::SERVER]}) do
Rackspace[:servers].list_servers_detail.body
end
@server.wait_for { ready? }
@server.destroy
end
end

View File

@ -1,14 +0,0 @@
Shindo.tests('Rackspace::Servers#list_servers', 'rackspace') do
tests('success') do
@server = Rackspace[:servers].servers.create(:flavor_id => 1, :image_id => 19, :name => 'foglistservers')
tests('#list_servers').formats({'servers' => [Rackspace::Servers::Formats::SUMMARY]}) do
Rackspace[:servers].list_servers.body
end
@server.wait_for { ready? }
@server.destroy
end
end

View File

@ -1,30 +0,0 @@
Shindo.tests('Rackspace::Servers#reboot_server', 'rackspace') do
tests('success') do
@server = Rackspace[:servers].servers.create(:flavor_id => 1, :image_id => 19, :name => 'fogrebootserver')
before do
@server.wait_for { ready? }
end
tests("#reboot_server(#{@server.id}, 'HARD')").succeeds do
Rackspace[:servers].reboot_server(@server.id, 'HARD')
end
tests("#reboot_server(#{@server.id}, 'SOFT')").succeeds do
Rackspace[:servers].reboot_server(@server.id, 'SOFT')
end
@server.wait_for { ready? }
@server.destroy
end
tests('failure') do
tests('#reboot_server(0)').raises(Excon::Errors::NotFound) do
Rackspace[:servers].reboot_server(0)
end
end
end

View File

@ -0,0 +1,83 @@
Shindo.tests('Rackspace::Servers | server requests', ['rackspace']) do
@server_format = {
'addresses' => {
'private' => [String],
'public' => [String]
},
'flavorId' => Integer,
'hostId' => String,
'id' => Integer,
'imageId' => Integer,
'metadata' => {},
'name' => String,
'progress' => Integer,
'status' => String
}
tests('success') do
@server_id = nil
tests('#create_server(1, 19)').formats(@server_format.merge('adminPass' => String)) do
# 1 => 256MB, 19 => Gentoo
data = Rackspace[:servers].create_server(1, 19).body['server']
@server_id = data['id']
data
end
Rackspace[:servers].servers.get(@server_id).wait_for { ready? }
tests("#get_server_details(#{@server_id})").formats(@server_format) do
Rackspace[:servers].get_server_details(@server_id).body['server']
end
tests('#list_servers').formats({'servers' => [Rackspace::Servers::Formats::SUMMARY]}) do
Rackspace[:servers].list_servers.body
end
tests('#list_servers_detail').formats({'servers' => [@server_format]}) do
Rackspace[:servers].list_servers_detail.body
end
tests("#update_server(#{@server_id}, :name => 'fogupdatedserver', :adminPass => 'fogupdatedserver')").succeeds do
Rackspace[:servers].update_server(@server_id, :name => 'fogupdatedserver', :adminPass => 'fogupdatedserver')
end
tests("#reboot_server(#{@server_id}, 'HARD')").succeeds do
Rackspace[:servers].reboot_server(@server_id, 'HARD')
end
tests("#reboot_server(#{@server_id}, 'SOFT')").succeeds do
Rackspace[:servers].reboot_server(@server_id, 'SOFT')
end
Rackspace[:servers].servers.get(@server_id).wait_for { ready? }
tests("#delete_server(#{@server_id})").succeeds do
Rackspace[:servers].delete_server(@server_id)
end
end
tests('failure') do
tests('#delete_server(0)').raises(Fog::Rackspace::Servers::NotFound) do
Rackspace[:servers].delete_server(0)
end
tests('#get_server_details(0)').raises(Fog::Rackspace::Servers::NotFound) do
Rackspace[:servers].get_server_details(0)
end
tests("#update_server(0, :name => 'fogupdatedserver', :adminPass => 'fogupdatedserver')").raises(Fog::Rackspace::Servers::NotFound) do
Rackspace[:servers].update_server(0, :name => 'fogupdatedserver', :adminPass => 'fogupdatedserver')
end
tests('#reboot_server(0)').raises(Fog::Rackspace::Servers::NotFound) do
Rackspace[:servers].reboot_server(0)
end
end
end

View File

@ -1,22 +0,0 @@
Shindo.tests('Rackspace::Servers#update_server', 'rackspace') do
tests('success') do
@server = Rackspace[:servers].servers.create(:flavor_id => 1, :image_id => 19, :name => 'fogupdateserver')
@server.wait_for { ready? }
tests("#update_server(#{@server.id}, :name => 'fogupdatedserver', :adminPass => 'fogupdatedserver')").succeeds do
Rackspace[:servers].update_server(@server.id, :name => 'fogupdatedserver', :adminPass => 'fogupdatedserver')
end
@server.destroy
end
tests('failure') do
tests("#update_server(0, :name => 'fogupdatedserver', :adminPass => 'fogupdatedserver')").raises(Excon::Errors::NotFound) do
Rackspace[:servers].update_server(0, :name => 'fogupdatedserver', :adminPass => 'fogupdatedserver')
end
end
end