From 943e0d257820d4b6bed5db88aea3e61a086e8239 Mon Sep 17 00:00:00 2001 From: Daniel Molina <dmolina@dmolina.fdi.ucm.es> Date: Fri, 2 Jul 2010 16:15:00 +0200 Subject: [PATCH] feature #192 Added OCA Tests --- src/oca/ruby/test.zip | Bin 0 -> 16807 bytes src/oca/ruby/test/HostPool_spec.rb | 97 ++++ src/oca/ruby/test/Host_spec.rb | 251 ++++++++++ src/oca/ruby/test/MockClient.rb | 49 ++ src/oca/ruby/test/UserPool_spec.rb | 81 ++++ src/oca/ruby/test/User_spec.rb | 161 +++++++ src/oca/ruby/test/VirtualMachinePool_spec.rb | 105 +++++ src/oca/ruby/test/VirtualMachine_spec.rb | 464 +++++++++++++++++++ src/oca/ruby/test/VirtualNetworkPool_spec.rb | 103 ++++ src/oca/ruby/test/VirtualNetwork_spec.rb | 183 ++++++++ src/oca/ruby/test/xml_test/host.xml | 38 ++ src/oca/ruby/test/xml_test/hostpool.xml | 52 +++ src/oca/ruby/test/xml_test/user.xml | 6 + src/oca/ruby/test/xml_test/userpool.xml | 14 + src/oca/ruby/test/xml_test/vm.xml | 59 +++ src/oca/ruby/test/xml_test/vmpool.xml | 92 ++++ src/oca/ruby/test/xml_test/vnet.xml | 23 + src/oca/ruby/test/xml_test/vnetpool.xml | 20 + 18 files changed, 1798 insertions(+) create mode 100644 src/oca/ruby/test.zip create mode 100644 src/oca/ruby/test/HostPool_spec.rb create mode 100644 src/oca/ruby/test/Host_spec.rb create mode 100644 src/oca/ruby/test/MockClient.rb create mode 100644 src/oca/ruby/test/UserPool_spec.rb create mode 100644 src/oca/ruby/test/User_spec.rb create mode 100644 src/oca/ruby/test/VirtualMachinePool_spec.rb create mode 100644 src/oca/ruby/test/VirtualMachine_spec.rb create mode 100644 src/oca/ruby/test/VirtualNetworkPool_spec.rb create mode 100644 src/oca/ruby/test/VirtualNetwork_spec.rb create mode 100644 src/oca/ruby/test/xml_test/host.xml create mode 100644 src/oca/ruby/test/xml_test/hostpool.xml create mode 100644 src/oca/ruby/test/xml_test/user.xml create mode 100644 src/oca/ruby/test/xml_test/userpool.xml create mode 100644 src/oca/ruby/test/xml_test/vm.xml create mode 100644 src/oca/ruby/test/xml_test/vmpool.xml create mode 100644 src/oca/ruby/test/xml_test/vnet.xml create mode 100644 src/oca/ruby/test/xml_test/vnetpool.xml diff --git a/src/oca/ruby/test.zip b/src/oca/ruby/test.zip new file mode 100644 index 0000000000000000000000000000000000000000..60ad41e9e211385ff8f7aa3ae832fe6d30a3dfee GIT binary patch literal 16807 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 b%PWzu;Gr*H;emlsU4Cv|`u*3efWQ6+)iigs literal 0 HcmV?d00001 diff --git a/src/oca/ruby/test/HostPool_spec.rb b/src/oca/ruby/test/HostPool_spec.rb new file mode 100644 index 0000000000..171e38cccd --- /dev/null +++ b/src/oca/ruby/test/HostPool_spec.rb @@ -0,0 +1,97 @@ +$: << '../' + +require 'OpenNebula' +require 'MockClient' + +module OpenNebula + + describe "Host using NOKOGIRI" do + before(:all) do + NOKOGIRI=true + + client = MockClient.new() + @host_pool = HostPool.new(client) + end + + it "should update the HOST_POOL info" do + rc = @host_pool.info() + rc.nil?.should eql(true) + end + + it "should iterate the HOST_POOL elements and get info from them" do + rc = @host_pool.each{ |host| + host.class.to_s.should eql("OpenNebula::Host") + if host.id == 0 + host.name.should eql('dummyhost') + elsif host.id == 1 + host.name.should eql('thost') + end + } + end + + it "should get a hash representation of the HOST_POOL" do + host_hash = @host_pool.to_hash + host_hash['HOST_POOL']['HOST'][0]['ID'].should eql('0') + host_hash['HOST_POOL']['HOST'][0]['NAME'].should eql('dummyhost') + host_hash['HOST_POOL']['HOST'][0]['STATE'].should eql('2') + host_hash['HOST_POOL']['HOST'][0]['IM_MAD'].should eql('im_dummy') + host_hash['HOST_POOL']['HOST'][0]['HOST_SHARE']['MEM_USAGE'].should eql('1572864') + host_hash['HOST_POOL']['HOST'][0]['HOST_SHARE']['CPU_USAGE'].should eql('300') + host_hash['HOST_POOL']['HOST'][0]['HOST_SHARE']['FREE_MEM'].should eql('16777216') + host_hash['HOST_POOL']['HOST'][0]['HOST_SHARE']['RUNNING_VMS'].should eql('3') + host_hash['HOST_POOL']['HOST'][1]['ID'].should eql('1') + host_hash['HOST_POOL']['HOST'][1]['NAME'].should eql('thost') + host_hash['HOST_POOL']['HOST'][1]['STATE'].should eql('2') + host_hash['HOST_POOL']['HOST'][1]['IM_MAD'].should eql('im_dummy') + host_hash['HOST_POOL']['HOST'][1]['HOST_SHARE']['MEM_USAGE'].should eql('0') + host_hash['HOST_POOL']['HOST'][1]['HOST_SHARE']['CPU_USAGE'].should eql('0') + host_hash['HOST_POOL']['HOST'][1]['HOST_SHARE']['FREE_MEM'].should eql('16777216') + host_hash['HOST_POOL']['HOST'][1]['HOST_SHARE']['RUNNING_VMS'].should eql('0') + end + end + + describe "Host using REXML" do + before(:all) do + NOKOGIRI=false + + client = MockClient.new() + @host_pool = HostPool.new(client) + end + + it "should update the HOST_POOL info" do + rc = @host_pool.info() + rc.nil?.should eql(true) + end + + it "should iterate the HOST_POOL elements and get info from them" do + rc = @host_pool.each{ |host| + host.class.to_s.should eql("OpenNebula::Host") + if host.id == 0 + host.name.should eql('dummyhost') + elsif host.id == 1 + host.name.should eql('thost') + end + } + end + + it "should get a hash representation of the HOST_POOL" do + host_hash = @host_pool.to_hash + host_hash['HOST_POOL']['HOST'][0]['ID'].should eql('0') + host_hash['HOST_POOL']['HOST'][0]['NAME'].should eql('dummyhost') + host_hash['HOST_POOL']['HOST'][0]['STATE'].should eql('2') + host_hash['HOST_POOL']['HOST'][0]['IM_MAD'].should eql('im_dummy') + host_hash['HOST_POOL']['HOST'][0]['HOST_SHARE']['MEM_USAGE'].should eql('1572864') + host_hash['HOST_POOL']['HOST'][0]['HOST_SHARE']['CPU_USAGE'].should eql('300') + host_hash['HOST_POOL']['HOST'][0]['HOST_SHARE']['FREE_MEM'].should eql('16777216') + host_hash['HOST_POOL']['HOST'][0]['HOST_SHARE']['RUNNING_VMS'].should eql('3') + host_hash['HOST_POOL']['HOST'][1]['ID'].should eql('1') + host_hash['HOST_POOL']['HOST'][1]['NAME'].should eql('thost') + host_hash['HOST_POOL']['HOST'][1]['STATE'].should eql('2') + host_hash['HOST_POOL']['HOST'][1]['IM_MAD'].should eql('im_dummy') + host_hash['HOST_POOL']['HOST'][1]['HOST_SHARE']['MEM_USAGE'].should eql('0') + host_hash['HOST_POOL']['HOST'][1]['HOST_SHARE']['CPU_USAGE'].should eql('0') + host_hash['HOST_POOL']['HOST'][1]['HOST_SHARE']['FREE_MEM'].should eql('16777216') + host_hash['HOST_POOL']['HOST'][1]['HOST_SHARE']['RUNNING_VMS'].should eql('0') + end + end +end \ No newline at end of file diff --git a/src/oca/ruby/test/Host_spec.rb b/src/oca/ruby/test/Host_spec.rb new file mode 100644 index 0000000000..224656f99a --- /dev/null +++ b/src/oca/ruby/test/Host_spec.rb @@ -0,0 +1,251 @@ +$: << '../' + +require 'OpenNebula' +require 'MockClient' + +module OpenNebula + + describe "Host using NOKOGIRI" do + before(:all) do + NOKOGIRI=true + + @xml = Host.build_xml(7) + + client = MockClient.new() + @host = Host.new(@xml,client) + end + + it "should create a Nokogiri Node" do + @xml.class.to_s.should eql('Nokogiri::XML::NodeSet') + end + + it "should allocate the new HOST" do + @host.allocate(nil,nil,nil,nil) + + @host.id.should eql(7) + end + + it "should update the HOST info" do + @host.info() + + @host.id.should eql(7) + @host.name.should eql('dummyhost') + @host.state.should eql(2) + @host.state_str.should eql('MONITORED') + @host.short_state_str.should eql('on') + end + + it "should enable the HOST" do + rc = @host.enable() + + rc.should eql(nil) + end + + it "should disable the HOST" do + rc = @host.disable() + + rc.should eql(nil) + end + + it "should delete the HOST" do + rc = @host.delete() + + rc.should eql(nil) + end + + it "should access an attribute using []" do + @host['ID'].should eql('7') + @host['NAME'].should eql('dummyhost') + @host['STATE'].should eql('2') + @host['IM_MAD'].should eql('im_dummy') + @host['LAST_MON_TIME'].should eql('1277733596') + @host['HOST_SHARE/MEM_USAGE'].should eql('1572864') + @host['HOST_SHARE/CPU_USAGE'].should eql('300') + @host['HOST_SHARE/FREE_CPU'].should eql('800') + @host['HOST_SHARE/RUNNING_VMS'].should eql('3') + @host['TEMPLATE/CPUSPEED'].should eql('2.2GHz') + @host['TEMPLATE/HYPERVISOR'].should eql('dummy') + @host['TEMPLATE/TOTALMEMORY'].should eql('16777216') + end + + it "should get a hash representation of the HOST" do + host_hash = @host.to_hash + host_hash['HOST']['ID'].should eql('7') + host_hash['HOST']['NAME'].should eql('dummyhost') + host_hash['HOST']['STATE'].should eql('2') + host_hash['HOST']['IM_MAD'].should eql('im_dummy') + host_hash['HOST']['LAST_MON_TIME'].should eql('1277733596') + host_hash['HOST']['HOST_SHARE']['MEM_USAGE'].should eql('1572864') + host_hash['HOST']['HOST_SHARE']['CPU_USAGE'].should eql('300') + host_hash['HOST']['HOST_SHARE']['FREE_CPU'].should eql('800') + host_hash['HOST']['HOST_SHARE']['RUNNING_VMS'].should eql('3') + host_hash['HOST']['TEMPLATE']['CPUSPEED'].should eql('2.2GHz') + host_hash['HOST']['TEMPLATE']['HYPERVISOR'].should eql('dummy') + host_hash['HOST']['TEMPLATE']['TOTALMEMORY'].should eql('16777216') + end + end + + describe "Host using REXML" do + before(:all) do + NOKOGIRI=false + + @xml = Host.build_xml(7) + + client = MockClient.new() + @host = Host.new(@xml,client) + end + + it "should create a REXML Element" do + @xml.class.to_s.should eql('REXML::Element') + end + + it "should allocate the new HOST" do + @host.allocate(nil,nil,nil,nil) + + @host.id.should eql(7) + end + + it "should update the HOST info" do + @host.info() + + @host.id.should eql(7) + @host.name.should eql('dummyhost') + @host.state.should eql(2) + @host.state_str.should eql('MONITORED') + @host.short_state_str.should eql('on') + end + + it "should enable the HOST" do + rc = @host.enable() + + rc.should eql(nil) + end + + it "should disable the HOST" do + rc = @host.disable() + + rc.should eql(nil) + end + + it "should delete the HOST" do + rc = @host.delete() + + rc.should eql(nil) + end + + it "should access an attribute using []" do + @host['ID'].should eql('7') + @host['NAME'].should eql('dummyhost') + @host['STATE'].should eql('2') + @host['IM_MAD'].should eql('im_dummy') + @host['LAST_MON_TIME'].should eql('1277733596') + @host['HOST_SHARE/MEM_USAGE'].should eql('1572864') + @host['HOST_SHARE/CPU_USAGE'].should eql('300') + @host['HOST_SHARE/FREE_CPU'].should eql('800') + @host['HOST_SHARE/RUNNING_VMS'].should eql('3') + @host['TEMPLATE/CPUSPEED'].should eql('2.2GHz') + @host['TEMPLATE/HYPERVISOR'].should eql('dummy') + @host['TEMPLATE/TOTALMEMORY'].should eql('16777216') + end + + it "should get a hash representation of the HOST" do + host_hash = @host.to_hash + host_hash['HOST']['ID'].should eql('7') + host_hash['HOST']['NAME'].should eql('dummyhost') + host_hash['HOST']['STATE'].should eql('2') + host_hash['HOST']['IM_MAD'].should eql('im_dummy') + host_hash['HOST']['LAST_MON_TIME'].should eql('1277733596') + host_hash['HOST']['HOST_SHARE']['MEM_USAGE'].should eql('1572864') + host_hash['HOST']['HOST_SHARE']['CPU_USAGE'].should eql('300') + host_hash['HOST']['HOST_SHARE']['FREE_CPU'].should eql('800') + host_hash['HOST']['HOST_SHARE']['RUNNING_VMS'].should eql('3') + host_hash['HOST']['TEMPLATE']['CPUSPEED'].should eql('2.2GHz') + host_hash['HOST']['TEMPLATE']['HYPERVISOR'].should eql('dummy') + host_hash['HOST']['TEMPLATE']['TOTALMEMORY'].should eql('16777216') + end + end + + + describe "Host using NOKOGIRI without id" do + before(:all) do + NOKOGIRI=true + + @xml = Host.build_xml() + + client = MockClient.new() + @host = Host.new(@xml,client) + end + + it "should create a Nokogiri Node" do + @xml.class.to_s.should eql('Nokogiri::XML::NodeSet') + end + + it "should get Error getting info" do + rc = @host.info() + + OpenNebula.is_error?(rc).should eql(true) + @host.id.should eql(nil) + @host.name.should eql(nil) + end + + it "should enable the HOST" do + rc = @host.enable() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should disable the HOST" do + rc = @host.disable() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should get Error deleting the HOST" do + rc = @host.delete() + + OpenNebula.is_error?(rc).should eql(true) + end + end + + describe "Host using REXML without id" do + before(:all) do + NOKOGIRI=false + + @xml = Host.build_xml() + + client = MockClient.new() + @host = Host.new(@xml,client) + end + + it "should create a REXML Element" do + @xml.class.to_s.should eql('REXML::Element') + end + + it "should get Error getting info" do + rc = @host.info() + + OpenNebula.is_error?(rc).should eql(true) + @host.id.should eql(nil) + @host.name.should eql(nil) + end + + it "should enable the HOST" do + rc = @host.enable() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should disable the HOST" do + rc = @host.disable() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should get Error deleting the HOST" do + rc = @host.delete() + + OpenNebula.is_error?(rc).should eql(true) + end + end + +end \ No newline at end of file diff --git a/src/oca/ruby/test/MockClient.rb b/src/oca/ruby/test/MockClient.rb new file mode 100644 index 0000000000..9ec22687ff --- /dev/null +++ b/src/oca/ruby/test/MockClient.rb @@ -0,0 +1,49 @@ +class MockClient + + def call(action, *args) + xmlrpc_action = "one."+action + + case xmlrpc_action + when "one.vn.info" + return File.read("xml_test/vnet.xml") + when "one.vn.allocate" + return 3 + when "one.vn.delete" + return nil + when "one.vm.info" + return File.read("xml_test/vm.xml") + when "one.vm.allocate" + return 6 + when "one.vm.delete" + return nil + when "one.vm.action" + return nil + when "one.vm.deploy" + return nil + when "one.vm.migrate" + return nil + when "one.host.info" + return File.read("xml_test/host.xml") + when "one.host.allocate" + return 7 + when "one.host.delete" + return nil + when "one.host.enable" + return nil + when "one.user.allocate" + return 3 + when "one.user.info" + return File.read("xml_test/user.xml") + when "one.user.delete" + return nil + when "one.vnpool.info" + return File.read("xml_test/vnetpool.xml") + when "one.vmpool.info" + return File.read("xml_test/vmpool.xml") + when "one.hostpool.info" + return File.read("xml_test/hostpool.xml") + when "one.userpool.info" + return File.read("xml_test/userpool.xml") + end + end +end \ No newline at end of file diff --git a/src/oca/ruby/test/UserPool_spec.rb b/src/oca/ruby/test/UserPool_spec.rb new file mode 100644 index 0000000000..38acf157eb --- /dev/null +++ b/src/oca/ruby/test/UserPool_spec.rb @@ -0,0 +1,81 @@ +$: << '../' + +require 'OpenNebula' +require 'MockClient' + +module OpenNebula + + describe "User using NOKOGIRI" do + before(:all) do + NOKOGIRI=true + + client = MockClient.new() + @user_pool = UserPool.new(client) + end + + it "should update the USER_POOL info" do + rc = @user_pool.info() + rc.nil?.should eql(true) + end + + it "should iterate the USER_POOL elements and get info from them" do + rc = @user_pool.each{ |user| + user.class.to_s.should eql("OpenNebula::User") + if user.id == 0 + user.name.should eql('oneadmin') + elsif user.id == 1 + user.name.should eql('dan') + end + } + end + + it "should get a hash representation of the USER_POOL" do + user_hash = @user_pool.to_hash + user_hash['USER_POOL']['USER'][0]['ID'].should eql('0') + user_hash['USER_POOL']['USER'][0]['NAME'].should eql('oneadmin') + user_hash['USER_POOL']['USER'][0]['PASSWORD'].should eql('f13a1234833436f71ab846572d251c0d40391e72') + user_hash['USER_POOL']['USER'][0]['ENABLED'].should eql('True') + user_hash['USER_POOL']['USER'][1]['ID'].should eql('1') + user_hash['USER_POOL']['USER'][1]['NAME'].should eql('dan') + user_hash['USER_POOL']['USER'][1]['PASSWORD'].should eql('d22a12348334v33f71ba846572d25250d40701e72') + user_hash['USER_POOL']['USER'][1]['ENABLED'].should eql('False') + end + end + + describe "User using REXML" do + before(:all) do + NOKOGIRI=false + + client = MockClient.new() + @user_pool = UserPool.new(client) + end + + it "should update the USER_POOL info" do + rc = @user_pool.info() + rc.nil?.should eql(true) + end + + it "should iterate the USER_POOL elements and get info from them" do + rc = @user_pool.each{ |user| + user.class.to_s.should eql("OpenNebula::User") + if user.id == 0 + user.name.should eql('oneadmin') + elsif user.id == 1 + user.name.should eql('dan') + end + } + end + + it "should get a hash representation of the USER_POOL" do + user_hash = @user_pool.to_hash + user_hash['USER_POOL']['USER'][0]['ID'].should eql('0') + user_hash['USER_POOL']['USER'][0]['NAME'].should eql('oneadmin') + user_hash['USER_POOL']['USER'][0]['PASSWORD'].should eql('f13a1234833436f71ab846572d251c0d40391e72') + user_hash['USER_POOL']['USER'][0]['ENABLED'].should eql('True') + user_hash['USER_POOL']['USER'][1]['ID'].should eql('1') + user_hash['USER_POOL']['USER'][1]['NAME'].should eql('dan') + user_hash['USER_POOL']['USER'][1]['PASSWORD'].should eql('d22a12348334v33f71ba846572d25250d40701e72') + user_hash['USER_POOL']['USER'][1]['ENABLED'].should eql('False') + end + end +end \ No newline at end of file diff --git a/src/oca/ruby/test/User_spec.rb b/src/oca/ruby/test/User_spec.rb new file mode 100644 index 0000000000..c889991271 --- /dev/null +++ b/src/oca/ruby/test/User_spec.rb @@ -0,0 +1,161 @@ +$: << '../' + +require 'OpenNebula' +require 'MockClient' + +module OpenNebula + + describe "User using NOKOGIRI" do + before(:all) do + NOKOGIRI=true + + @xml = User.build_xml(3) + + client = MockClient.new() + @user = User.new(@xml,client) + end + + it "should create a Nokogiri Node" do + @xml.class.to_s.should eql('Nokogiri::XML::NodeSet') + end + + it "should allocate the new USER" do + @user.allocate(nil,nil) + + @user.id.should eql(3) + end + + it "should update the USER info" do + @user.info() + + @user.id.should eql(3) + @user.name.should eql('dan') + end + + it "should delete the USER" do + rc = @user.delete() + + rc.should eql(nil) + end + + it "should access an attribute using []" do + @user['ID'].should eql('3') + @user['NAME'].should eql('dan') + @user['PASSWORD'].should eql('d22a12348334v33f71ba846572d25250d40701e72') + @user['ENABLED'].should eql('False') + end + + it "should get a hash representation of the USER" do + user_hash = @user.to_hash + user_hash['USER']['ID'].should eql('3') + user_hash['USER']['NAME'].should eql('dan') + user_hash['USER']['PASSWORD'].should eql('d22a12348334v33f71ba846572d25250d40701e72') + user_hash['USER']['ENABLED'].should eql('False') + end + end + + describe "User using REXML" do + before(:all) do + NOKOGIRI=false + + @xml = User.build_xml(3) + + client = MockClient.new() + @user = User.new(@xml,client) + end + + it "should create a REXML Element" do + @xml.class.to_s.should eql('REXML::Element') + end + + it "should allocate the new USER" do + @user.allocate(nil,nil) + + @user.id.should eql(3) + end + + it "should update the USER info" do + @user.info() + + @user.id.should eql(3) + @user.name.should eql('dan') + end + + it "should delete the USER" do + rc = @user.delete() + + rc.should eql(nil) + end + + it "should access an attribute using []" do + @user['ID'].should eql('3') + @user['NAME'].should eql('dan') + @user['PASSWORD'].should eql('d22a12348334v33f71ba846572d25250d40701e72') + @user['ENABLED'].should eql('False') + end + + it "should get a hash representation of the USER" do + user_hash = @user.to_hash + user_hash['USER']['ID'].should eql('3') + user_hash['USER']['NAME'].should eql('dan') + user_hash['USER']['PASSWORD'].should eql('d22a12348334v33f71ba846572d25250d40701e72') + user_hash['USER']['ENABLED'].should eql('False') + end + end + + + describe "User using NOKOGIRI without id" do + before(:all) do + NOKOGIRI=true + + @xml = User.build_xml() + + client = MockClient.new() + @user = User.new(@xml,client) + end + + it "should create a Nokogiri Node" do + @xml.class.to_s.should eql('Nokogiri::XML::NodeSet') + end + + it "should get Error getting info" do + rc = @user.info() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should get Error deleting the USER" do + rc = @user.delete() + + OpenNebula.is_error?(rc).should eql(true) + end + end + + describe "User using REXML without id" do + before(:all) do + NOKOGIRI=false + + @xml = User.build_xml() + + client = MockClient.new() + @user = User.new(@xml,client) + end + + it "should create a REXML Element" do + @xml.class.to_s.should eql('REXML::Element') + end + + it "should get Error getting info" do + rc = @user.info() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should get Error deleting the USER" do + rc = @user.delete() + + OpenNebula.is_error?(rc).should eql(true) + end + end + +end \ No newline at end of file diff --git a/src/oca/ruby/test/VirtualMachinePool_spec.rb b/src/oca/ruby/test/VirtualMachinePool_spec.rb new file mode 100644 index 0000000000..f8d66d0e62 --- /dev/null +++ b/src/oca/ruby/test/VirtualMachinePool_spec.rb @@ -0,0 +1,105 @@ +$: << '../' + +require 'OpenNebula' +require 'MockClient' + +module OpenNebula + + describe "VirtualMachinePool using NOKOGIRI" do + before(:all) do + NOKOGIRI=true + + client = MockClient.new() + @vm_pool = VirtualMachinePool.new(client) + end + + it "should update the VM_POOL info" do + rc = @vm_pool.info() + rc.nil?.should eql(true) + end + + it "should iterate the VM_POOL elements and get info from them" do + rc = @vm_pool.each{ |vm| + vm.class.to_s.should eql("OpenNebula::VirtualMachine") + if vm.id == 6 + vm.name.should eql('vm-example') + vm.state.should eql(3) + vm.state_str.should eql('ACTIVE') + elsif vm.id == 8 + vm.name.should eql('vmext') + vm.state.should eql(4) + vm.state_str.should eql('STOPPED') + end + } + end + + it "should get a hash representation of the VM_POOL" do + vm_hash = @vm_pool.to_hash + vm_hash['VM_POOL']['VM'][0]['ID'].should eql('6') + vm_hash['VM_POOL']['VM'][0]['UID'].should eql('0') + vm_hash['VM_POOL']['VM'][0]['USERNAME'].should eql('oneadmin') + vm_hash['VM_POOL']['VM'][0]['NAME'].should eql('vm-example') + vm_hash['VM_POOL']['VM'][0]['LAST_POLL'].should eql('1277910006') + vm_hash['VM_POOL']['VM'][0]['HISTORY']['HOSTNAME'].should eql('dummyhost') + vm_hash['VM_POOL']['VM'][0]['HISTORY']['STIME'].should eql('1277375186') + vm_hash['VM_POOL']['VM'][0]['HISTORY']['REASON'].should eql('0') + vm_hash['VM_POOL']['VM'][2]['ID'].should eql('8') + vm_hash['VM_POOL']['VM'][2]['UID'].should eql('0') + vm_hash['VM_POOL']['VM'][2]['USERNAME'].should eql('oneadmin') + vm_hash['VM_POOL']['VM'][2]['NAME'].should eql('vmext') + vm_hash['VM_POOL']['VM'][2]['LAST_POLL'].should eql('1277910006') + vm_hash['VM_POOL']['VM'][2]['HISTORY']['HOSTNAME'].should eql('thost') + vm_hash['VM_POOL']['VM'][2]['HISTORY']['STIME'].should eql('1277377556') + vm_hash['VM_POOL']['VM'][2]['HISTORY']['REASON'].should eql('0') + end + end + + describe "VirtualMachinePool using REXML" do + before(:all) do + NOKOGIRI=false + + client = MockClient.new() + @vm_pool = VirtualMachinePool.new(client) + end + + it "should update the VM_POOL info" do + rc = @vm_pool.info() + rc.nil?.should eql(true) + end + + it "should iterate the VM_POOL elements and get info from them" do + rc = @vm_pool.each{ |vm| + vm.class.to_s.should eql("OpenNebula::VirtualMachine") + if vm.id == 6 + vm.name.should eql('vm-example') + vm.state.should eql(3) + vm.state_str.should eql('ACTIVE') + elsif vm.id == 8 + vm.name.should eql('vmext') + vm.state.should eql(4) + vm.state_str.should eql('STOPPED') + end + } + end + + it "should get a hash representation of the VM_POOL" do + vm_hash = @vm_pool.to_hash + vm_hash['VM_POOL']['VM'][0]['ID'].should eql('6') + vm_hash['VM_POOL']['VM'][0]['UID'].should eql('0') + vm_hash['VM_POOL']['VM'][0]['USERNAME'].should eql('oneadmin') + vm_hash['VM_POOL']['VM'][0]['NAME'].should eql('vm-example') + vm_hash['VM_POOL']['VM'][0]['LAST_POLL'].should eql('1277910006') + vm_hash['VM_POOL']['VM'][0]['HISTORY']['HOSTNAME'].should eql('dummyhost') + vm_hash['VM_POOL']['VM'][0]['HISTORY']['STIME'].should eql('1277375186') + vm_hash['VM_POOL']['VM'][0]['HISTORY']['REASON'].should eql('0') + vm_hash['VM_POOL']['VM'][2]['ID'].should eql('8') + vm_hash['VM_POOL']['VM'][2]['UID'].should eql('0') + vm_hash['VM_POOL']['VM'][2]['USERNAME'].should eql('oneadmin') + vm_hash['VM_POOL']['VM'][2]['NAME'].should eql('vmext') + vm_hash['VM_POOL']['VM'][2]['LAST_POLL'].should eql('1277910006') + vm_hash['VM_POOL']['VM'][2]['HISTORY']['HOSTNAME'].should eql('thost') + vm_hash['VM_POOL']['VM'][2]['HISTORY']['STIME'].should eql('1277377556') + vm_hash['VM_POOL']['VM'][2]['HISTORY']['REASON'].should eql('0') + end + end +end \ No newline at end of file diff --git a/src/oca/ruby/test/VirtualMachine_spec.rb b/src/oca/ruby/test/VirtualMachine_spec.rb new file mode 100644 index 0000000000..2cd35489e9 --- /dev/null +++ b/src/oca/ruby/test/VirtualMachine_spec.rb @@ -0,0 +1,464 @@ +$: << '../' + +require 'OpenNebula' +require 'MockClient' + +module OpenNebula + + describe "VirtualMachine using NOKOGIRI" do + before(:all) do + NOKOGIRI=true + + @xml = VirtualMachine.build_xml(6) + + client = MockClient.new() + @vm = VirtualMachine.new(@xml,client) + end + + it "should create a Nokogiri Node" do + @xml.class.to_s.should eql('Nokogiri::XML::NodeSet') + end + + it "should allocate the new VM" do + @vm.allocate(nil) + + @vm.id.should eql(6) + end + + it "should update the VM info" do + @vm.info() + + @vm.id.should eql(6) + @vm.name.should eql('vm-example') + @vm.state.should eql(3) + @vm.state_str.should eql('ACTIVE') + @vm.lcm_state.should eql(3) + @vm.lcm_state_str.should eql('RUNNING') + @vm.status.should eql('runn') + end + + it "should deploy the VNET" do + rc = @vm.deploy(nil) + + rc.should eql(nil) + end + + it "should migrate the VNET" do + rc = @vm.migrate(nil) + + rc.should eql(nil) + end + + it "should live_migrate the VNET" do + rc = @vm.live_migrate(nil) + + rc.should eql(nil) + end + + it "should shutdown the VNET" do + rc = @vm.shutdown() + + rc.should eql(nil) + end + + it "should cancel the VNET" do + rc = @vm.cancel() + + rc.should eql(nil) + end + + it "should hold the VNET" do + rc = @vm.hold() + + rc.should eql(nil) + end + + it "should release the VNET" do + rc = @vm.release() + + rc.should eql(nil) + end + + it "should stop the VNET" do + rc = @vm.stop() + + rc.should eql(nil) + end + + it "should suspend the VNET" do + rc = @vm.suspend() + + rc.should eql(nil) + end + + it "should resume the VNET" do + rc = @vm.resume() + + rc.should eql(nil) + end + + it "should finalize the VNET" do + rc = @vm.finalize() + + rc.should eql(nil) + end + + it "should restart the VNET" do + rc = @vm.restart() + + rc.should eql(nil) + end + + it "should access an attribute using []" do + @vm['NAME'].should eql('vm-example') + @vm['DEPLOY_ID'].should eql('dummy') + @vm['TEMPLATE/MEMORY'].should eql('512') + @vm['ID'].should eql('6') + @vm['NAME'].should eql('vm-example') + @vm['LCM_STATE'].should eql('3') + @vm['DEPLOY_ID'].should eql('dummy') + @vm['TEMPLATE/MEMORY'].should eql('512') + @vm['TEMPLATE/CONTEXT/DNS'].should eql('192.169.1.4') + @vm['TEMPLATE/DISK/SIZE'].should eql('1024') + @vm['HISTORY/HOSTNAME'].should eql('dummyhost') + @vm['HISTORY/PSTIME'].should eql('1277375186') + end + + it "should get a hash representation of the VM" do + vm_hash = @vm.to_hash + vm_hash['VM']['ID'].should eql('6') + vm_hash['VM']['NAME'].should eql('vm-example') + vm_hash['VM']['LCM_STATE'].should eql('3') + vm_hash['VM']['DEPLOY_ID'].should eql('dummy') + vm_hash['VM']['TEMPLATE']['MEMORY'].should eql('512') + vm_hash['VM']['TEMPLATE']['CONTEXT']['DNS'].should eql('192.169.1.4') + vm_hash['VM']['TEMPLATE']['DISK'][0]['TARGET'].should eql('sda') + vm_hash['VM']['HISTORY']['HOSTNAME'].should eql('dummyhost') + vm_hash['VM']['HISTORY']['PSTIME'].should eql('1277375186') + end + end + + describe "VirtualMachine using REXML" do + before(:all) do + NOKOGIRI=false + + @xml = VirtualMachine.build_xml(6) + + client = MockClient.new() + @vm = VirtualMachine.new(@xml,client) + end + + it "should create a REXML Element" do + @xml.class.to_s.should eql('REXML::Element') + end + + it "should allocate the new VM" do + @vm.allocate(nil) + + @vm.id.should eql(6) + end + + it "should update the VM info" do + @vm.info() + + @vm.id.should eql(6) + @vm.name.should eql('vm-example') + @vm.state.should eql(3) + @vm.state_str.should eql('ACTIVE') + @vm.lcm_state.should eql(3) + @vm.lcm_state_str.should eql('RUNNING') + @vm.status.should eql('runn') + end + + it "should deploy the VNET" do + rc = @vm.deploy(nil) + + rc.should eql(nil) + end + + it "should migrate the VNET" do + rc = @vm.migrate(nil) + + rc.should eql(nil) + end + + it "should live_migrate the VNET" do + rc = @vm.live_migrate(nil) + + rc.should eql(nil) + end + + it "should shutdown the VNET" do + rc = @vm.shutdown() + + rc.should eql(nil) + end + + it "should cancel the VNET" do + rc = @vm.cancel() + + rc.should eql(nil) + end + + it "should hold the VNET" do + rc = @vm.hold() + + rc.should eql(nil) + end + + it "should release the VNET" do + rc = @vm.release() + + rc.should eql(nil) + end + + it "should stop the VNET" do + rc = @vm.stop() + + rc.should eql(nil) + end + + it "should suspend the VNET" do + rc = @vm.suspend() + + rc.should eql(nil) + end + + it "should resume the VNET" do + rc = @vm.resume() + + rc.should eql(nil) + end + + it "should finalize the VNET" do + rc = @vm.finalize() + + rc.should eql(nil) + end + + it "should restart the VNET" do + rc = @vm.restart() + + rc.should eql(nil) + end + + it "should access an attribute using []" do + @vm['NAME'].should eql('vm-example') + @vm['DEPLOY_ID'].should eql('dummy') + @vm['TEMPLATE/MEMORY'].should eql('512') + @vm['ID'].should eql('6') + @vm['NAME'].should eql('vm-example') + @vm['LCM_STATE'].should eql('3') + @vm['DEPLOY_ID'].should eql('dummy') + @vm['TEMPLATE/MEMORY'].should eql('512') + @vm['TEMPLATE/CONTEXT/DNS'].should eql('192.169.1.4') + @vm['TEMPLATE/DISK/SIZE'].should eql('1024') + @vm['HISTORY/HOSTNAME'].should eql('dummyhost') + @vm['HISTORY/PSTIME'].should eql('1277375186') + end + + it "should get a hash representation of the VM" do + vm_hash = @vm.to_hash + vm_hash['VM']['ID'].should eql('6') + vm_hash['VM']['NAME'].should eql('vm-example') + vm_hash['VM']['LCM_STATE'].should eql('3') + vm_hash['VM']['DEPLOY_ID'].should eql('dummy') + vm_hash['VM']['TEMPLATE']['MEMORY'].should eql('512') + vm_hash['VM']['TEMPLATE']['CONTEXT']['DNS'].should eql('192.169.1.4') + vm_hash['VM']['TEMPLATE']['DISK'][0]['TARGET'].should eql('sda') + vm_hash['VM']['HISTORY']['HOSTNAME'].should eql('dummyhost') + vm_hash['VM']['HISTORY']['PSTIME'].should eql('1277375186') + end + end + + + describe "VirtualMachine using NOKOGIRI without id" do + before(:all) do + NOKOGIRI=true + + @xml = VirtualMachine.build_xml() + + client = MockClient.new() + @vm = VirtualMachine.new(@xml,client) + end + + it "should create a Nokogiri Node" do + @xml.class.to_s.should eql('Nokogiri::XML::NodeSet') + end + + it "should deploy the VNET" do + rc = @vm.deploy(nil) + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should migrate the VNET" do + rc = @vm.migrate(nil) + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should live_migrate the VNET" do + rc = @vm.live_migrate(nil) + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should shutdown the VNET" do + rc = @vm.shutdown() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should cancel the VNET" do + rc = @vm.cancel() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should hold the VNET" do + rc = @vm.hold() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should release the VNET" do + rc = @vm.release() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should stop the VNET" do + rc = @vm.stop() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should suspend the VNET" do + rc = @vm.suspend() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should resume the VNET" do + rc = @vm.resume() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should finalize the VNET" do + rc = @vm.finalize() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should restart the VNET" do + rc = @vm.restart() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should get Error getting info" do + rc = @vm.info() + + OpenNebula.is_error?(rc).should eql(true) + @vm.id.should eql(nil) + @vm.name.should eql(nil) + end + end + + describe "VirtualMachine using REXML without id" do + before(:all) do + NOKOGIRI=false + + @xml = VirtualMachine.build_xml() + + client = MockClient.new() + @vm = VirtualMachine.new(@xml,client) + end + + it "should create a REXML Element" do + @xml.class.to_s.should eql('REXML::Element') + end + + it "should deploy the VNET" do + rc = @vm.deploy(nil) + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should migrate the VNET" do + rc = @vm.migrate(nil) + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should live_migrate the VNET" do + rc = @vm.live_migrate(nil) + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should shutdown the VNET" do + rc = @vm.shutdown() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should cancel the VNET" do + rc = @vm.cancel() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should hold the VNET" do + rc = @vm.hold() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should release the VNET" do + rc = @vm.release() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should stop the VNET" do + rc = @vm.stop() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should suspend the VNET" do + rc = @vm.suspend() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should resume the VNET" do + rc = @vm.resume() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should finalize the VNET" do + rc = @vm.finalize() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should restart the VNET" do + rc = @vm.restart() + + OpenNebula.is_error?(rc).should eql(true) + end + + it "should get Error getting info" do + rc = @vm.info() + + OpenNebula.is_error?(rc).should eql(true) + @vm.id.should eql(nil) + @vm.name.should eql(nil) + end + end +end \ No newline at end of file diff --git a/src/oca/ruby/test/VirtualNetworkPool_spec.rb b/src/oca/ruby/test/VirtualNetworkPool_spec.rb new file mode 100644 index 0000000000..bd373e488d --- /dev/null +++ b/src/oca/ruby/test/VirtualNetworkPool_spec.rb @@ -0,0 +1,103 @@ +$: << '../' + +require 'OpenNebula' +require 'MockClient' + +module OpenNebula + + describe "VirtualNetwork using NOKOGIRI" do + before(:all) do + NOKOGIRI=true + + client = MockClient.new() + @vnet_pool = VirtualNetworkPool.new(client) + end + + #it "should get nil, trying to get a hash, if the info method was not called before" do + # vnet_hash = @vnet_pool.to_hash + # vnet_hash.nil?.should eql(true) + #end + + it "should update the VNET_POOL info" do + rc = @vnet_pool.info() + rc.nil?.should eql(true) + end + + it "should iterate the VNET_POOL elements and get info from them" do + rc = @vnet_pool.each{ |vn| + vn.class.to_s.should eql("OpenNebula::VirtualNetwork") + if vn.id == 4 + vn.name.should eql('Red LAN') + elsif vn.id == 5 + vn.name.should eql('Public') + end + } + end + + it "should get a hash representation of the VNET_POOL" do + vnet_hash = @vnet_pool.to_hash + vnet_hash['VNET_POOL']['VNET'][0]['ID'].should eql('4') + vnet_hash['VNET_POOL']['VNET'][0]['UID'].should eql('0') + vnet_hash['VNET_POOL']['VNET'][0]['USERNAME'].should eql('oneadmin') + vnet_hash['VNET_POOL']['VNET'][0]['NAME'].should eql('Red LAN') + vnet_hash['VNET_POOL']['VNET'][0]['TYPE'].should eql('0') + vnet_hash['VNET_POOL']['VNET'][0]['BRIDGE'].should eql('vbr0') + vnet_hash['VNET_POOL']['VNET'][0]['TOTAL_LEASES'].should eql('0') + vnet_hash['VNET_POOL']['VNET'][1]['ID'].should eql('5') + vnet_hash['VNET_POOL']['VNET'][1]['UID'].should eql('0') + vnet_hash['VNET_POOL']['VNET'][1]['USERNAME'].should eql('oneadmin') + vnet_hash['VNET_POOL']['VNET'][1]['NAME'].should eql('Public') + vnet_hash['VNET_POOL']['VNET'][1]['TYPE'].should eql('0') + vnet_hash['VNET_POOL']['VNET'][1]['BRIDGE'].should eql('vbr0') + vnet_hash['VNET_POOL']['VNET'][1]['TOTAL_LEASES'].should eql('1') + end + end + + describe "VirtualNetwork using REXML" do + before(:all) do + NOKOGIRI=false + + client = MockClient.new() + @vnet_pool = VirtualNetworkPool.new(client) + end + + #it "should get nil, trying to get a hash, if the info method was not called before" do + # vnet_hash = @vnet_pool.to_hash + # vnet_hash.nil?.should eql(true) + #end + + it "should update the VNET_POOL info" do + rc = @vnet_pool.info() + rc.nil?.should eql(true) + end + + it "should iterate the VNET_POOL elements and get info from them" do + rc = @vnet_pool.each{ |vn| + vn.class.to_s.should eql("OpenNebula::VirtualNetwork") + if vn.id == 4 + vn.name.should eql('Red LAN') + elsif vn.id == 5 + vn.name.should eql('Public') + end + } + end + + it "should get a hash representation of the VNET_POOL" do + vnet_hash = @vnet_pool.to_hash + vnet_hash['VNET_POOL']['VNET'][0]['ID'].should eql('4') + vnet_hash['VNET_POOL']['VNET'][0]['UID'].should eql('0') + vnet_hash['VNET_POOL']['VNET'][0]['USERNAME'].should eql('oneadmin') + vnet_hash['VNET_POOL']['VNET'][0]['NAME'].should eql('Red LAN') + vnet_hash['VNET_POOL']['VNET'][0]['TYPE'].should eql('0') + vnet_hash['VNET_POOL']['VNET'][0]['BRIDGE'].should eql('vbr0') + vnet_hash['VNET_POOL']['VNET'][0]['TOTAL_LEASES'].should eql('0') + vnet_hash['VNET_POOL']['VNET'][1]['ID'].should eql('5') + vnet_hash['VNET_POOL']['VNET'][1]['UID'].should eql('0') + vnet_hash['VNET_POOL']['VNET'][1]['USERNAME'].should eql('oneadmin') + vnet_hash['VNET_POOL']['VNET'][1]['NAME'].should eql('Public') + vnet_hash['VNET_POOL']['VNET'][1]['TYPE'].should eql('0') + vnet_hash['VNET_POOL']['VNET'][1]['BRIDGE'].should eql('vbr0') + vnet_hash['VNET_POOL']['VNET'][1]['TOTAL_LEASES'].should eql('1') + end + end +end \ No newline at end of file diff --git a/src/oca/ruby/test/VirtualNetwork_spec.rb b/src/oca/ruby/test/VirtualNetwork_spec.rb new file mode 100644 index 0000000000..89682e28df --- /dev/null +++ b/src/oca/ruby/test/VirtualNetwork_spec.rb @@ -0,0 +1,183 @@ +$: << '../' + +require 'OpenNebula' +require 'MockClient' + +module OpenNebula + + describe "VirtualNetwork using NOKOGIRI" do + before(:all) do + NOKOGIRI=true + + @xml = VirtualNetwork.build_xml(3) + + client = MockClient.new() + @vnet = VirtualNetwork.new(@xml,client) + end + + it "should create a Nokogiri Node" do + @xml.class.to_s.should eql('Nokogiri::XML::NodeSet') + end + + it "should allocate the new VNET" do + @vnet.allocate(nil) + + @vnet.id.should eql(3) + end + + it "should update the VNET info" do + @vnet.info() + + @vnet.id.should eql(3) + @vnet.name.should eql('Red LAN') + end + + it "should delete the VNET" do + rc = @vnet.delete() + + rc.should eql(nil) + end + + it "should access an attribute using []" do + @vnet['ID'].should eql('3') + @vnet['NAME'].should eql('Red LAN') + @vnet['BRIDGE'].should eql('vbr0') + @vnet['TEMPLATE/NETWORK_ADDRESS'].should eql('192.168.0.0') + @vnet['TEMPLATE/TYPE'].should eql('RANGED') + @vnet['LEASES/LEASE/IP'].should eql('192.168.0.1') + @vnet['LEASES/LEASE/USED'].should eql('1') + end + + it "should get a hash representation of the VNET" do + vnet_hash = @vnet.to_hash + vnet_hash['VNET']['NAME'].should eql('Red LAN') + vnet_hash['VNET']['BRIDGE'].should eql('vbr0') + vnet_hash['VNET']['TEMPLATE']['NETWORK_ADDRESS'].should eql('192.168.0.0') + vnet_hash['VNET']['ID'].should eql('3') + vnet_hash['VNET']['NAME'].should eql('Red LAN') + vnet_hash['VNET']['BRIDGE'].should eql('vbr0') + vnet_hash['VNET']['TEMPLATE']['NETWORK_ADDRESS'].should eql('192.168.0.0') + vnet_hash['VNET']['TEMPLATE']['TYPE'].should eql('RANGED') + vnet_hash['VNET']['LEASES']['LEASE']['IP'].should eql('192.168.0.1') + vnet_hash['VNET']['LEASES']['LEASE']['USED'].should eql('1') + end + end + + describe "VirtualNetwork using REXML" do + before(:all) do + NOKOGIRI=false + + @xml = VirtualNetwork.build_xml(3) + + client = MockClient.new() + @vnet = VirtualNetwork.new(@xml,client) + end + + it "should create a REXML Element" do + @xml.class.to_s.should eql('REXML::Element') + end + + it "should allocate the new VNET" do + @vnet.allocate(nil) + + @vnet.id.should eql(3) + end + + it "should update the VNET info" do + @vnet.info() + + @vnet.id.should eql(3) + @vnet.name.should eql('Red LAN') + end + + it "should delete the VNET" do + rc = @vnet.delete() + + rc.should eql(nil) + end + + it "should access an attribute using []" do + @vnet['ID'].should eql('3') + @vnet['NAME'].should eql('Red LAN') + @vnet['BRIDGE'].should eql('vbr0') + @vnet['TEMPLATE/NETWORK_ADDRESS'].should eql('192.168.0.0') + @vnet['TEMPLATE/TYPE'].should eql('RANGED') + @vnet['LEASES/LEASE/IP'].should eql('192.168.0.1') + @vnet['LEASES/LEASE/USED'].should eql('1') + end + + it "should get a hash representation of the VNET" do + vnet_hash = @vnet.to_hash + vnet_hash['VNET']['NAME'].should eql('Red LAN') + vnet_hash['VNET']['BRIDGE'].should eql('vbr0') + vnet_hash['VNET']['TEMPLATE']['NETWORK_ADDRESS'].should eql('192.168.0.0') + vnet_hash['VNET']['ID'].should eql('3') + vnet_hash['VNET']['NAME'].should eql('Red LAN') + vnet_hash['VNET']['BRIDGE'].should eql('vbr0') + vnet_hash['VNET']['TEMPLATE']['NETWORK_ADDRESS'].should eql('192.168.0.0') + vnet_hash['VNET']['TEMPLATE']['TYPE'].should eql('RANGED') + vnet_hash['VNET']['LEASES']['LEASE']['IP'].should eql('192.168.0.1') + vnet_hash['VNET']['LEASES']['LEASE']['USED'].should eql('1') + end + end + + + describe "VirtualNetwork using NOKOGIRI without id" do + before(:all) do + NOKOGIRI=true + + @xml = VirtualNetwork.build_xml() + + client = MockClient.new() + @vnet = VirtualNetwork.new(@xml,client) + end + + it "should create a Nokogiri Node" do + @xml.class.to_s.should eql('Nokogiri::XML::NodeSet') + end + + it "should get Error getting info" do + rc = @vnet.info() + + OpenNebula.is_error?(rc).should eql(true) + @vnet.id.should eql(nil) + @vnet.name.should eql(nil) + end + + it "should get Error deleting the VNET" do + rc = @vnet.delete() + + OpenNebula.is_error?(rc).should eql(true) + end + end + + describe "VirtualNetwork using REXML without id" do + before(:all) do + NOKOGIRI=false + + @xml = VirtualNetwork.build_xml() + + client = MockClient.new() + @vnet = VirtualNetwork.new(@xml,client) + end + + it "should create a REXML Element" do + @xml.class.to_s.should eql('REXML::Element') + end + + it "should get Error getting info" do + rc = @vnet.info() + + OpenNebula.is_error?(rc).should eql(true) + @vnet.id.should eql(nil) + @vnet.name.should eql(nil) + end + + it "should get Error deleting the VNET" do + rc = @vnet.delete() + + OpenNebula.is_error?(rc).should eql(true) + end + end + +end \ No newline at end of file diff --git a/src/oca/ruby/test/xml_test/host.xml b/src/oca/ruby/test/xml_test/host.xml new file mode 100644 index 0000000000..55710fe305 --- /dev/null +++ b/src/oca/ruby/test/xml_test/host.xml @@ -0,0 +1,38 @@ +<HOST> + <ID>7</ID> + <NAME>dummyhost</NAME> + <STATE>2</STATE> + <IM_MAD>im_dummy</IM_MAD> + <VM_MAD>vmm_dummy</VM_MAD> + <TM_MAD>tm_dummy</TM_MAD> + <LAST_MON_TIME>1277733596</LAST_MON_TIME> + <HOST_SHARE> + <HID>0</HID> + <DISK_USAGE>0</DISK_USAGE> + <MEM_USAGE>1572864</MEM_USAGE> + <CPU_USAGE>300</CPU_USAGE> + <MAX_DISK>0</MAX_DISK> + <MAX_MEM>16777216</MAX_MEM> + <MAX_CPU>800</MAX_CPU> + <FREE_DISK>0</FREE_DISK> + <FREE_MEM>16777216</FREE_MEM> + <FREE_CPU>800</FREE_CPU> + <USED_DISK>0</USED_DISK> + <USED_MEM>0</USED_MEM> + <USED_CPU>0</USED_CPU> + <RUNNING_VMS>3</RUNNING_VMS> + </HOST_SHARE> + <TEMPLATE> + <CPUSPEED>2.2GHz</CPUSPEED> + <FREECPU>800</FREECPU> + <FREEMEMORY>16777216</FREEMEMORY> + <HOSTNAME>dummyhost</HOSTNAME> + <HYPERVISOR>dummy</HYPERVISOR> + <MAC>50:20:20:20:20:21</MAC> + <NAME>dummyhost</NAME> + <TOTALCPU>800</TOTALCPU> + <TOTALMEMORY>16777216</TOTALMEMORY> + <USEDCPU>0</USEDCPU> + <USEDMEMORY>0</USEDMEMORY> + </TEMPLATE> +</HOST> \ No newline at end of file diff --git a/src/oca/ruby/test/xml_test/hostpool.xml b/src/oca/ruby/test/xml_test/hostpool.xml new file mode 100644 index 0000000000..50fe5fc2b6 --- /dev/null +++ b/src/oca/ruby/test/xml_test/hostpool.xml @@ -0,0 +1,52 @@ +<HOST_POOL> + <HOST> + <ID>0</ID> + <NAME>dummyhost</NAME> + <STATE>2</STATE> + <IM_MAD>im_dummy</IM_MAD> + <VM_MAD>vmm_dummy</VM_MAD> + <TM_MAD>tm_dummy</TM_MAD> + <LAST_MON_TIME>1277912461</LAST_MON_TIME> + <HOST_SHARE> + <HID>0</HID> + <DISK_USAGE>0</DISK_USAGE> + <MEM_USAGE>1572864</MEM_USAGE> + <CPU_USAGE>300</CPU_USAGE> + <MAX_DISK>0</MAX_DISK> + <MAX_MEM>16777216</MAX_MEM> + <MAX_CPU>800</MAX_CPU> + <FREE_DISK>0</FREE_DISK> + <FREE_MEM>16777216</FREE_MEM> + <FREE_CPU>800</FREE_CPU> + <USED_DISK>0</USED_DISK> + <USED_MEM>0</USED_MEM> + <USED_CPU>0</USED_CPU> + <RUNNING_VMS>3</RUNNING_VMS> + </HOST_SHARE> + </HOST> + <HOST> + <ID>1</ID> + <NAME>thost</NAME> + <STATE>2</STATE> + <IM_MAD>im_dummy</IM_MAD> + <VM_MAD>vmm_dummy</VM_MAD> + <TM_MAD>tm_dummy</TM_MAD> + <LAST_MON_TIME>1277912461</LAST_MON_TIME> + <HOST_SHARE> + <HID>1</HID> + <DISK_USAGE>0</DISK_USAGE> + <MEM_USAGE>0</MEM_USAGE> + <CPU_USAGE>0</CPU_USAGE> + <MAX_DISK>0</MAX_DISK> + <MAX_MEM>16777216</MAX_MEM> + <MAX_CPU>800</MAX_CPU> + <FREE_DISK>0</FREE_DISK> + <FREE_MEM>16777216</FREE_MEM> + <FREE_CPU>800</FREE_CPU> + <USED_DISK>0</USED_DISK> + <USED_MEM>0</USED_MEM> + <USED_CPU>0</USED_CPU> + <RUNNING_VMS>0</RUNNING_VMS> + </HOST_SHARE> + </HOST> +</HOST_POOL> \ No newline at end of file diff --git a/src/oca/ruby/test/xml_test/user.xml b/src/oca/ruby/test/xml_test/user.xml new file mode 100644 index 0000000000..eab4482685 --- /dev/null +++ b/src/oca/ruby/test/xml_test/user.xml @@ -0,0 +1,6 @@ +<USER> + <ID>3</ID> + <NAME>dan</NAME> + <PASSWORD>d22a12348334v33f71ba846572d25250d40701e72</PASSWORD> + <ENABLED>False</ENABLED> +</USER> \ No newline at end of file diff --git a/src/oca/ruby/test/xml_test/userpool.xml b/src/oca/ruby/test/xml_test/userpool.xml new file mode 100644 index 0000000000..d6d5565131 --- /dev/null +++ b/src/oca/ruby/test/xml_test/userpool.xml @@ -0,0 +1,14 @@ +<USER_POOL> + <USER> + <ID>0</ID> + <NAME>oneadmin</NAME> + <PASSWORD>f13a1234833436f71ab846572d251c0d40391e72</PASSWORD> + <ENABLED>True</ENABLED> + </USER> + <USER> + <ID>1</ID> + <NAME>dan</NAME> + <PASSWORD>d22a12348334v33f71ba846572d25250d40701e72</PASSWORD> + <ENABLED>False</ENABLED> + </USER> +</USER_POOL> \ No newline at end of file diff --git a/src/oca/ruby/test/xml_test/vm.xml b/src/oca/ruby/test/xml_test/vm.xml new file mode 100644 index 0000000000..9b5f2a1b20 --- /dev/null +++ b/src/oca/ruby/test/xml_test/vm.xml @@ -0,0 +1,59 @@ +<VM> + <ID>6</ID> + <UID>0</UID> + <NAME>vm-example</NAME> + <LAST_POLL>1277729095</LAST_POLL> + <STATE>3</STATE> + <LCM_STATE>3</LCM_STATE> + <STIME>1277375180</STIME> + <ETIME>0</ETIME> + <DEPLOY_ID>dummy</DEPLOY_ID> + <MEMORY>512</MEMORY> + <CPU>1</CPU> + <NET_TX>12345</NET_TX> + <NET_RX>0</NET_RX> + <TEMPLATE> + <CONTEXT> + <DNS>192.169.1.4</DNS> + <TYPE/> + </CONTEXT> + <CPU>1</CPU> + <DISK> + <READONLY>no</READONLY> + <SOURCE>/srv/cloud/images/ttylinux/ttylinux.img</SOURCE> + <TARGET>sda</TARGET> + </DISK> + <DISK> + <READONLY>no</READONLY> + <SIZE>1024</SIZE> + <TARGET>sdb</TARGET> + <TYPE>swap</TYPE> + </DISK> + <MEMORY>512</MEMORY> + <NAME>vm-example</NAME> + <NIC> + <MAC>50:20:20:20:20:20</MAC> + </NIC> + <OS> + <INITRD>/initrd.img</INITRD> + <KERNEL>/vmlinuz</KERNEL> + <ROOT>sda</ROOT> + </OS> + <REQUIREMENTS>MAC="50:20:20:20:20:20"</REQUIREMENTS> + <VMID>6</VMID> + </TEMPLATE> + <HISTORY> + <SEQ>0</SEQ> + <HOSTNAME>dummyhost</HOSTNAME> + <HID>0</HID> + <STIME>1277375186</STIME> + <ETIME>0</ETIME> + <PSTIME>1277375186</PSTIME> + <PETIME>1277375186</PETIME> + <RSTIME>1277375186</RSTIME> + <RETIME>0</RETIME> + <ESTIME>0</ESTIME> + <EETIME>0</EETIME> + <REASON>0</REASON> + </HISTORY> +</VM> \ No newline at end of file diff --git a/src/oca/ruby/test/xml_test/vmpool.xml b/src/oca/ruby/test/xml_test/vmpool.xml new file mode 100644 index 0000000000..7811116fd8 --- /dev/null +++ b/src/oca/ruby/test/xml_test/vmpool.xml @@ -0,0 +1,92 @@ +<VM_POOL> + <VM> + <ID>6</ID> + <UID>0</UID> + <USERNAME>oneadmin</USERNAME> + <NAME>vm-example</NAME> + <LAST_POLL>1277910006</LAST_POLL> + <STATE>3</STATE> + <LCM_STATE>3</LCM_STATE> + <STIME>1277375180</STIME> + <ETIME>0</ETIME> + <DEPLOY_ID>dummy</DEPLOY_ID> + <MEMORY>512</MEMORY> + <CPU>1</CPU> + <NET_TX>12345</NET_TX> + <NET_RX>0</NET_RX> + <HISTORY> + <SEQ>0</SEQ> + <HOSTNAME>dummyhost</HOSTNAME> + <HID>0</HID> + <STIME>1277375186</STIME> + <ETIME>0</ETIME> + <PSTIME>1277375186</PSTIME> + <PETIME>1277375186</PETIME> + <RSTIME>1277375186</RSTIME> + <RETIME>0</RETIME> + <ESTIME>0</ESTIME> + <EETIME>0</EETIME> + <REASON>0</REASON> + </HISTORY> + </VM> + <VM> + <ID>7</ID> + <UID>0</UID> + <USERNAME>oneadmin</USERNAME> + <NAME>vm-in</NAME> + <LAST_POLL>1277910006</LAST_POLL> + <STATE>3</STATE> + <LCM_STATE>3</LCM_STATE> + <STIME>1277377464</STIME> + <ETIME>0</ETIME> + <DEPLOY_ID>dummy</DEPLOY_ID> + <MEMORY>1024</MEMORY> + <CPU>2</CPU> + <NET_TX>12345</NET_TX> + <NET_RX>0</NET_RX> + <HISTORY> + <SEQ>0</SEQ> + <HOSTNAME>thost</HOSTNAME> + <HID>0</HID> + <STIME>1277377466</STIME> + <ETIME>0</ETIME> + <PSTIME>1277377466</PSTIME> + <PETIME>1277377466</PETIME> + <RSTIME>1277377466</RSTIME> + <RETIME>0</RETIME> + <ESTIME>0</ESTIME> + <EETIME>0</EETIME> + <REASON>0</REASON> + </HISTORY> + </VM> + <VM> + <ID>8</ID> + <UID>0</UID> + <USERNAME>oneadmin</USERNAME> + <NAME>vmext</NAME> + <LAST_POLL>1277910006</LAST_POLL> + <STATE>4</STATE> + <LCM_STATE>5</LCM_STATE> + <STIME>1277377533</STIME> + <ETIME>0</ETIME> + <DEPLOY_ID>thost</DEPLOY_ID> + <MEMORY>256</MEMORY> + <CPU>1</CPU> + <NET_TX>12345</NET_TX> + <NET_RX>0</NET_RX> + <HISTORY> + <SEQ>0</SEQ> + <HOSTNAME>thost</HOSTNAME> + <HID>0</HID> + <STIME>1277377556</STIME> + <ETIME>0</ETIME> + <PSTIME>1277377556</PSTIME> + <PETIME>1277377556</PETIME> + <RSTIME>1277377556</RSTIME> + <RETIME>0</RETIME> + <ESTIME>0</ESTIME> + <EETIME>0</EETIME> + <REASON>0</REASON> + </HISTORY> + </VM> +</VM_POOL> \ No newline at end of file diff --git a/src/oca/ruby/test/xml_test/vnet.xml b/src/oca/ruby/test/xml_test/vnet.xml new file mode 100644 index 0000000000..8df0c43070 --- /dev/null +++ b/src/oca/ruby/test/xml_test/vnet.xml @@ -0,0 +1,23 @@ +<VNET> + <ID>3</ID> + <UID>0</UID> + <NAME>Red LAN</NAME> + <TYPE>0</TYPE> + <BRIDGE>vbr0</BRIDGE> + <TEMPLATE> + <BRIDGE>vbr0</BRIDGE> + <DNS>192.169.1.4</DNS> + <NAME>Red LAN</NAME> + <NETWORK_ADDRESS>192.168.0.0</NETWORK_ADDRESS> + <NETWORK_SIZE>C</NETWORK_SIZE> + <TYPE>RANGED</TYPE> + </TEMPLATE> + <LEASES> + <LEASE> + <IP>192.168.0.1</IP> + <MAC>00:03:c0:a8:00:01</MAC> + <USED>1</USED> + <VID>18</VID> + </LEASE> + </LEASES> +</VNET> \ No newline at end of file diff --git a/src/oca/ruby/test/xml_test/vnetpool.xml b/src/oca/ruby/test/xml_test/vnetpool.xml new file mode 100644 index 0000000000..bc77abac40 --- /dev/null +++ b/src/oca/ruby/test/xml_test/vnetpool.xml @@ -0,0 +1,20 @@ +<VNET_POOL> + <VNET> + <ID>4</ID> + <UID>0</UID> + <USERNAME>oneadmin</USERNAME> + <NAME>Red LAN</NAME> + <TYPE>0</TYPE> + <BRIDGE>vbr0</BRIDGE> + <TOTAL_LEASES>0</TOTAL_LEASES> + </VNET> + <VNET> + <ID>5</ID> + <UID>0</UID> + <USERNAME>oneadmin</USERNAME> + <NAME>Public</NAME> + <TYPE>0</TYPE> + <BRIDGE>vbr0</BRIDGE> + <TOTAL_LEASES>1</TOTAL_LEASES> + </VNET> +</VNET_POOL> \ No newline at end of file