mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
115 lines
3.1 KiB
Ruby
115 lines
3.1 KiB
Ruby
Shindo.tests('Fog::Compute[:xenserver] | VBD model', ['xenserver']) do
|
|
|
|
vbds = Fog::Compute[:xenserver].vbds
|
|
vbd = vbds.first
|
|
servers = Fog::Compute[:xenserver].servers
|
|
server = create_ephemeral_vm
|
|
|
|
tests('The VBD model should') do
|
|
tests('have the action') do
|
|
test('reload') { vbd.respond_to? 'reload' }
|
|
test('eject') { vbd.respond_to? 'eject' }
|
|
test('insert') { vbd.respond_to? 'insert' }
|
|
test('unplug') { vbd.respond_to? 'unplug' }
|
|
test('unplug_force') { vbd.respond_to? 'unplug_force' }
|
|
end
|
|
tests('have attributes') do
|
|
model_attribute_hash = vbd.attributes
|
|
attributes = [
|
|
:reference,
|
|
:uuid,
|
|
:currently_attached,
|
|
:__vdi,
|
|
:__vm,
|
|
:device,
|
|
:status_detail,
|
|
:type,
|
|
:allowed_operations,
|
|
:current_operations,
|
|
:status_code,
|
|
:storage_lock,
|
|
:mode,
|
|
:runtime_properties,
|
|
:unpluggable,
|
|
:userdevice,
|
|
:bootable,
|
|
:empty,
|
|
:__metrics
|
|
]
|
|
tests("The VBD model should respond to") do
|
|
attributes.each do |attribute|
|
|
test("#{attribute}") { vbd.respond_to? attribute }
|
|
end
|
|
end
|
|
tests("The attributes hash should have key") do
|
|
attributes.each do |attribute|
|
|
test("#{attribute}") { model_attribute_hash.has_key? attribute }
|
|
end
|
|
end
|
|
end
|
|
|
|
test('be a kind of Fog::Compute::XenServer::VBD') { vbd.kind_of? Fog::Compute::XenServer::VBD}
|
|
|
|
end
|
|
|
|
tests("A real VBD should") do
|
|
test("have a valid OpaqueRef") do
|
|
puts vbd.reference
|
|
(vbd.reference =~ /OpaqueRef:/).eql?(0) and \
|
|
vbd.reference != "OpaqueRef:NULL"
|
|
end
|
|
tests("belong to a VM when attached") do
|
|
vbds.each do |vbd|
|
|
test("#{vbd.uuid}") do
|
|
if vbd.currently_attached
|
|
(vbd.__vm =~ /OpaqueRef/).eql?(0) and \
|
|
vbd.__vm != "OpaqueRef:NULL"
|
|
else
|
|
true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
vbds.each do |vbd|
|
|
test("return a Fog::Compute::XenServer::VDI when type Disk") do
|
|
if vbd.type == 'Disk'
|
|
vbd.vdi.kind_of? Fog::Compute::XenServer::VDI
|
|
else
|
|
true
|
|
end
|
|
end
|
|
test("return a nil VDI when type CD") do
|
|
if vbd.type == 'CD'
|
|
vbd.vdi.nil?
|
|
else
|
|
true
|
|
end
|
|
end
|
|
test("return a VbdMetrics object when attached") do
|
|
if vbd.currently_attached
|
|
vbd.metrics.kind_of? Fog::Compute::XenServer::VbdMetrics
|
|
else
|
|
vbd.metrics.nil?
|
|
end
|
|
end
|
|
end
|
|
tests("return valid Server") do
|
|
test("should be a Fog::Compute::XenServer::Server") { vbd.server.kind_of? Fog::Compute::XenServer::Server }
|
|
end
|
|
test("be able to be unplugged when type is CD") do
|
|
if vbd.type == "CD"
|
|
vbd.unpluggable == true
|
|
else
|
|
vbd.unpluggable == false
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
tests("VBD Metrics should") do
|
|
test("have a last_updated Time property") { server.vbds.first.metrics.last_updated.kind_of? Time }
|
|
end
|
|
|
|
destroy_ephemeral_servers
|
|
|
|
end
|