зеркало из https://github.com/microsoft/fog.git
[slicehost] consolidate tests
This commit is contained in:
Родитель
d4ae5fc2ef
Коммит
9aea1feb8b
|
@ -1,6 +1,9 @@
|
||||||
module Fog
|
module Fog
|
||||||
module Slicehost
|
module Slicehost
|
||||||
|
|
||||||
|
class Error < Fog::Errors::Error; end
|
||||||
|
class NotFound < Fog::Errors::NotFound; end
|
||||||
|
|
||||||
def self.new(options={})
|
def self.new(options={})
|
||||||
|
|
||||||
unless @required
|
unless @required
|
||||||
|
@ -79,15 +82,24 @@ module Fog
|
||||||
headers['Content-Type'] = 'application/xml'
|
headers['Content-Type'] = 'application/xml'
|
||||||
end
|
end
|
||||||
|
|
||||||
response = @connection.request({
|
begin
|
||||||
:body => params[:body],
|
response = @connection.request({
|
||||||
:expects => params[:expects],
|
:body => params[:body],
|
||||||
:headers => headers.merge!(params[:headers] || {}),
|
:expects => params[:expects],
|
||||||
:host => @host,
|
:headers => headers.merge!(params[:headers] || {}),
|
||||||
:method => params[:method],
|
:host => @host,
|
||||||
:parser => params[:parser],
|
:method => params[:method],
|
||||||
:path => params[:path]
|
:parser => params[:parser],
|
||||||
})
|
:path => params[:path]
|
||||||
|
})
|
||||||
|
rescue Excon::Errors::Error => error
|
||||||
|
case error
|
||||||
|
when Excon::Errors::NotFound
|
||||||
|
raise Fog::Slicehost::NotFound
|
||||||
|
else
|
||||||
|
raise error
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
response
|
response
|
||||||
end
|
end
|
||||||
|
|
|
@ -13,39 +13,4 @@ module Slicehost
|
||||||
@@connections[service]
|
@@connections[service]
|
||||||
end
|
end
|
||||||
|
|
||||||
module Formats
|
|
||||||
|
|
||||||
BACKUP = {
|
|
||||||
'date' => String,
|
|
||||||
'id' => Integer,
|
|
||||||
'name' => String,
|
|
||||||
'slice-id' => Integer
|
|
||||||
}
|
|
||||||
|
|
||||||
FLAVOR = {
|
|
||||||
'id' => Integer,
|
|
||||||
'name' => String,
|
|
||||||
'price' => Integer,
|
|
||||||
'ram' => Integer
|
|
||||||
}
|
|
||||||
|
|
||||||
IMAGE = {
|
|
||||||
'id' => Integer,
|
|
||||||
'name' => String
|
|
||||||
}
|
|
||||||
|
|
||||||
SLICE = {
|
|
||||||
'addresses' => [String],
|
|
||||||
'bw-in' => Float,
|
|
||||||
'bw-out' => Float,
|
|
||||||
'flavor-id' => Integer,
|
|
||||||
'id' => Integer,
|
|
||||||
'image-id' => Integer,
|
|
||||||
'name' => String,
|
|
||||||
'progress' => Integer,
|
|
||||||
'status' => String
|
|
||||||
}
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
|
@ -0,0 +1,17 @@
|
||||||
|
Shindo.tests('Slicehost | backup requests', ['slicehost']) do
|
||||||
|
|
||||||
|
@backup_format = {
|
||||||
|
'date' => String,
|
||||||
|
'id' => Integer,
|
||||||
|
'name' => String,
|
||||||
|
'slice-id' => Integer
|
||||||
|
}
|
||||||
|
|
||||||
|
tests('success') do
|
||||||
|
|
||||||
|
tests('#get_backups').formats({ 'backups' => [@backup_format] }) do
|
||||||
|
Slicehost[:slices].get_backups.body
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,14 +0,0 @@
|
||||||
Shindo.tests('Slicehost#create_slice', 'slicehost') do
|
|
||||||
tests('success') do
|
|
||||||
|
|
||||||
tests("#create_slice(1, 19, 'fogcreateslice')").formats(Slicehost::Formats::SLICE.merge('root-password' => String)) do
|
|
||||||
data = Slicehost[:slices].create_slice(1, 19, 'fogcreateslice').body
|
|
||||||
@id = data['id']
|
|
||||||
data
|
|
||||||
end
|
|
||||||
|
|
||||||
Fog.wait_for { Slicehost[:slices].get_slice(@id).body['status'] == 'active' }
|
|
||||||
Slicehost[:slices].delete_slice(@id)
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,20 +0,0 @@
|
||||||
Shindo.tests('Slicehost#delete_slice', 'slicehost') do
|
|
||||||
tests('success') do
|
|
||||||
|
|
||||||
@id = Slicehost[:slices].create_slice(1, 19, 'fogdeleteslice').body['id']
|
|
||||||
|
|
||||||
tests("#delete_slice(#{@id})").succeeds do
|
|
||||||
Fog.wait_for { Slicehost[:slices].get_slice(@id).body['status'] == 'active' }
|
|
||||||
Slicehost[:slices].delete_slice(@id)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
tests('failure') do
|
|
||||||
|
|
||||||
tests('delete_slice(0)').raises(Excon::Errors::NotFound) do
|
|
||||||
Slicehost[:slices].delete_slice(0)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
Shindo.tests('Slicehost | flavor requests', ['slicehost']) do
|
||||||
|
|
||||||
|
@flavor_format = {
|
||||||
|
'id' => Integer,
|
||||||
|
'name' => String,
|
||||||
|
'price' => Integer,
|
||||||
|
'ram' => Integer
|
||||||
|
}
|
||||||
|
|
||||||
|
tests('success') do
|
||||||
|
|
||||||
|
tests('#get_flavor(1)').formats(@flavor_format) do
|
||||||
|
Slicehost[:slices].get_flavor(1).body
|
||||||
|
end
|
||||||
|
|
||||||
|
tests('#get_flavors').formats({ 'flavors' => [@flavor_format] }) do
|
||||||
|
Slicehost[:slices].get_flavors.body
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
tests('failure') do
|
||||||
|
|
||||||
|
tests('#get_flavor(0)').raises(Excon::Errors::Forbidden) do
|
||||||
|
Slicehost[:slices].get_flavor(0)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -1,9 +0,0 @@
|
||||||
Shindo.tests('Slicehost#get_backups', 'slicehost') do
|
|
||||||
tests('success') do
|
|
||||||
|
|
||||||
tests('#get_backups').formats({ 'backups' => [Slicehost::Formats::BACKUP] }) do
|
|
||||||
Slicehost[:slices].get_backups.body
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,17 +0,0 @@
|
||||||
Shindo.tests('Slicehost#get_flavor', 'slicehost') do
|
|
||||||
tests('success') do
|
|
||||||
|
|
||||||
tests('#get_flavor(1)').formats(Slicehost::Formats::FLAVOR) do
|
|
||||||
Slicehost[:slices].get_flavor(1).body
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
tests('failure') do
|
|
||||||
|
|
||||||
tests('#get_flavor(0)').raises(Excon::Errors::Forbidden) do
|
|
||||||
Slicehost[:slices].get_flavor(0)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,9 +0,0 @@
|
||||||
Shindo.tests('Slicehost#get_flavors', 'slicehost') do
|
|
||||||
tests('success') do
|
|
||||||
|
|
||||||
tests('#get_flavors').formats({ 'flavors' => [Slicehost::Formats::FLAVOR] }) do
|
|
||||||
Slicehost[:slices].get_flavors.body
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,17 +0,0 @@
|
||||||
Shindo.tests('Slicehost#get_image', 'slicehost') do
|
|
||||||
tests('success') do
|
|
||||||
|
|
||||||
tests('#get_image(19)').formats(Slicehost::Formats::IMAGE) do
|
|
||||||
Slicehost[:slices].get_image(19).body
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
tests('failure') do
|
|
||||||
|
|
||||||
tests('#get_image(0)').raises(Excon::Errors::Forbidden) do
|
|
||||||
Slicehost[:slices].get_image(0)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,9 +0,0 @@
|
||||||
Shindo.tests('Slicehost#get_images', 'slicehost') do
|
|
||||||
tests('success') do
|
|
||||||
|
|
||||||
tests('#get_images').formats({ 'images' => [Slicehost::Formats::IMAGE] }) do
|
|
||||||
Slicehost[:slices].get_images.body
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,22 +0,0 @@
|
||||||
Shindo.tests('Slicehost#get_slice', 'slicehost') do
|
|
||||||
tests('success') do
|
|
||||||
|
|
||||||
@server = Slicehost[:slices].servers.create(:flavor_id => 1, :image_id => 19, :name => 'fogrebootslice')
|
|
||||||
|
|
||||||
tests("#get_slice(#{@server.id})").formats(Slicehost::Formats::SLICE) do
|
|
||||||
Slicehost[:slices].get_slice(@server.id).body
|
|
||||||
end
|
|
||||||
|
|
||||||
@server.wait_for { ready? }
|
|
||||||
@server.destroy
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
tests('failure') do
|
|
||||||
|
|
||||||
tests('#get_slice(0)').raises(Excon::Errors::Forbidden) do
|
|
||||||
Slicehost[:slices].get_slice(0)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,9 +0,0 @@
|
||||||
Shindo.tests('Slicehost#get_slices', 'slicehost') do
|
|
||||||
tests('success') do
|
|
||||||
|
|
||||||
formats({'slices' => [Slicehost::Formats::SLICE]}) do
|
|
||||||
Slicehost[:slices].get_slices.body
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
Shindo.tests('Slicehost | image requests', ['slicehost']) do
|
||||||
|
|
||||||
|
@image_format = {
|
||||||
|
'id' => Integer,
|
||||||
|
'name' => String
|
||||||
|
}
|
||||||
|
|
||||||
|
tests('success') do
|
||||||
|
|
||||||
|
tests('#get_image(19)').formats(@image_format) do
|
||||||
|
Slicehost[:slices].get_image(19).body
|
||||||
|
end
|
||||||
|
|
||||||
|
tests('#get_images').formats({ 'images' => [@image_format] }) do
|
||||||
|
Slicehost[:slices].get_images.body
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
tests('failure') do
|
||||||
|
|
||||||
|
tests('#get_image(0)').raises(Excon::Errors::Forbidden) do
|
||||||
|
Slicehost[:slices].get_image(0)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -1,23 +0,0 @@
|
||||||
Shindo.tests('Slicehost#reboot_slice', 'slicehost') do
|
|
||||||
tests('success') do
|
|
||||||
|
|
||||||
@server = Slicehost[:slices].servers.create(:flavor_id => 1, :image_id => 19, :name => 'fogrebootslice')
|
|
||||||
@server.wait_for { ready? }
|
|
||||||
|
|
||||||
tests("#reboot_slice(#{@server.id})").formats(Slicehost::Formats::SLICE) do
|
|
||||||
Slicehost[:slices].reboot_slice(@server.id).body
|
|
||||||
end
|
|
||||||
|
|
||||||
@server.wait_for { ready? }
|
|
||||||
@server.destroy
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
tests('failure') do
|
|
||||||
|
|
||||||
tests('#reboot_slice(0)').raises(Excon::Errors::Forbidden) do
|
|
||||||
Slicehost[:slices].reboot_slice(0)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
Shindo.tests('Slicehost | slice requests', ['slicehost']) do
|
||||||
|
|
||||||
|
@slice_format = {
|
||||||
|
'addresses' => [String],
|
||||||
|
'bw-in' => Float,
|
||||||
|
'bw-out' => Float,
|
||||||
|
'flavor-id' => Integer,
|
||||||
|
'id' => Integer,
|
||||||
|
'image-id' => Integer,
|
||||||
|
'name' => String,
|
||||||
|
'progress' => Integer,
|
||||||
|
'status' => String
|
||||||
|
}
|
||||||
|
|
||||||
|
tests('success') do
|
||||||
|
|
||||||
|
@slice_id = nil
|
||||||
|
|
||||||
|
tests("#create_slice(1, 19, 'fogcreateslice')").formats(@slice_format.merge('root-password' => String)) do
|
||||||
|
data = Slicehost[:slices].create_slice(1, 19, 'fogcreateslice').body
|
||||||
|
@slice_id = data['id']
|
||||||
|
data
|
||||||
|
end
|
||||||
|
|
||||||
|
Slicehost[:slices].slices.get(@slice_id).wait_for { ready? }
|
||||||
|
|
||||||
|
tests("#get_slice(#{@slice_id})").formats(@slice_format) do
|
||||||
|
Slicehost[:slices].get_slice(@slice_id).body
|
||||||
|
end
|
||||||
|
|
||||||
|
tests("#get_slices").formats({'slices' => [@slice_format]}) do
|
||||||
|
Slicehost[:slices].get_slices.body
|
||||||
|
end
|
||||||
|
|
||||||
|
tests("#reboot_slice(#{@slice_id})").formats(@slice_format) do
|
||||||
|
Slicehost[:slices].reboot_slice(@slice_id).body
|
||||||
|
end
|
||||||
|
|
||||||
|
Slicehost[:slices].slices.get(@slice_id).wait_for { ready? }
|
||||||
|
|
||||||
|
tests("#delete_slice(#{@slice_id})").succeeds do
|
||||||
|
Slicehost[:slices].delete_slice(@slice_id)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
tests('failure') do
|
||||||
|
|
||||||
|
tests('#get_slice(0)').raises(Excon::Errors::Forbidden) do
|
||||||
|
Slicehost[:slices].get_slice(0)
|
||||||
|
end
|
||||||
|
|
||||||
|
tests('#reboot_slice(0)').raises(Excon::Errors::Forbidden) do
|
||||||
|
Slicehost[:slices].reboot_slice(0)
|
||||||
|
end
|
||||||
|
|
||||||
|
tests('delete_slice(0)').raises(Fog::Slicehost::NotFound) do
|
||||||
|
Slicehost[:slices].delete_slice(0)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
Загрузка…
Ссылка в новой задаче