From 19b927ba4fd04ac8b847eebbafc25ce9a81cf8f5 Mon Sep 17 00:00:00 2001 From: Sergio Rubio Date: Mon, 2 Apr 2012 13:48:04 +0200 Subject: [PATCH] * Added VBD Shindo tests * added server wrapper to VBD model --- lib/fog/xenserver/models/compute/vbd.rb | 16 +++---- tests/xenserver/models/compute/vbd_tests.rb | 49 ++++++++++++++++++++ tests/xenserver/models/compute/vbds_tests.rb | 22 +++++++++ 3 files changed, 77 insertions(+), 10 deletions(-) create mode 100644 tests/xenserver/models/compute/vbd_tests.rb create mode 100644 tests/xenserver/models/compute/vbds_tests.rb diff --git a/lib/fog/xenserver/models/compute/vbd.rb b/lib/fog/xenserver/models/compute/vbd.rb index 0a5b06f99..3dad81950 100644 --- a/lib/fog/xenserver/models/compute/vbd.rb +++ b/lib/fog/xenserver/models/compute/vbd.rb @@ -13,24 +13,20 @@ module Fog attribute :uuid attribute :currently_attached attribute :reserved - attribute :__vdi, :aliases => :VDI - attribute :vm, :aliases => :VM + attribute :__vdi, :aliases => :VDI + attribute :__vm, :aliases => :VM attribute :device attribute :status_detail attribute :type attribute :userdevice - #ignore_attributes :current_operations, :qos_supported_algorithms, :qos_algorithm_params, :qos_algorithm_type, :other_config, - # :runtime_properties - - def initialize(attributes={}) - super - end - def vdi - #Fog::Compute::XenServer::VDI.new(connection.get_record( __vdi, 'VDI' )) connection.vdis.get __vdi end + + def server + connection.servers.get __vm + end end diff --git a/tests/xenserver/models/compute/vbd_tests.rb b/tests/xenserver/models/compute/vbd_tests.rb new file mode 100644 index 000000000..8855eced1 --- /dev/null +++ b/tests/xenserver/models/compute/vbd_tests.rb @@ -0,0 +1,49 @@ +Shindo.tests('Fog::Compute[:xenserver] | VBD model', ['VBD']) do + + vbds = Fog::Compute[:xenserver].vbds + vbd = vbds.first + + tests('The VBD model should') do + tests('have the action') do + test('reload') { vbd.respond_to? 'reload' } + end + tests('have attributes') do + model_attribute_hash = vbd.attributes + attributes = [ + :reference, + :uuid, + :currently_attached, + :__vdi, + :__vm, + :device, + :status_detail, + :type, + :userdevice + ] + 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 + tests("return a valid VDI") do + test("should be a Fog::Compute::XenServer::VDI") { vbd.vdi.kind_of? Fog::Compute::XenServer::VDI } + end + tests("return valid Server") do + test("should be a Fog::Compute::XenServer::Server") { vbd.server.kind_of? Fog::Compute::XenServer::Server } + end + + end + +end diff --git a/tests/xenserver/models/compute/vbds_tests.rb b/tests/xenserver/models/compute/vbds_tests.rb new file mode 100644 index 000000000..91e949a81 --- /dev/null +++ b/tests/xenserver/models/compute/vbds_tests.rb @@ -0,0 +1,22 @@ +Shindo.tests('Fog::Compute[:xenserver] | VBDs collection', ['vbds']) do + + conn = Fog::Compute[:xenserver] + + tests('The vbds collection') do + vbds = conn.vbds.all + + test('should not be empty') { !vbds.empty? } + + test('should be a kind of Fog::Compute::XenServer::Vbds') { vbds.kind_of? Fog::Compute::XenServer::Vbds } + + tests('should be able to reload itself').succeeds { vbds.reload } + + tests('should be able to get a model') do + tests('by reference').succeeds { + vbds.get(vbds.first.reference).is_a? Fog::Compute::XenServer::VBD + } + end + + end + +end