mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
[rackspace] consolidate servers tests
This commit is contained in:
parent
6d9712ad5c
commit
b7808c6998
16 changed files with 120 additions and 185 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
83
tests/rackspace/requests/servers/server_tests.rb
Normal file
83
tests/rackspace/requests/servers/server_tests.rb
Normal 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
|
|
@ -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
|
Loading…
Add table
Reference in a new issue