From: František Dvořák Date: Thu, 23 Jun 2016 09:03:15 +0000 (+0200) Subject: Unit-tests for OpenNebula network parsing. X-Git-Url: http://scientific.zcu.cz/git/?a=commitdiff_plain;h=0eb77f3a9fc47df9ac4d9b1977d7129da80c9b87;p=now.git Unit-tests for OpenNebula network parsing. --- diff --git a/lib/nebula.rb b/lib/nebula.rb index 5e3e7a6..3e76c54 100644 --- a/lib/nebula.rb +++ b/lib/nebula.rb @@ -9,6 +9,8 @@ module Now # NOW core class for communication with OpenNebula class Nebula attr_accessor :logger, :config + # for testing + attr_accessor :ctx @ctx = nil @server_ctx = nil @user_ctx = nil diff --git a/spec/nebula/get_spec.rb b/spec/nebula/get_spec.rb new file mode 100644 index 0000000..c5e6825 --- /dev/null +++ b/spec/nebula/get_spec.rb @@ -0,0 +1,83 @@ +require 'spec_helper' +require 'opennebula' + +describe 'network get' do + net1 = l('network-example') + net6a = l('network-ipv6-global') + net6b = l('network-ipv6-local') + nebula_base = Now::Nebula.new('opennebula' => { 'endpoint' => 'myendpoint' }) + + context 'example' do + let(:client) do + instance_double('client', call: net1) + end + let(:nebula) do + nebula_base.ctx = client + nebula_base + end + let(:range) { Now::Range.new(address: IPAddress.parse('192.168.0.4/24'), allocation: 'dynamic') } + + it 'get raw' do + vn_generic = OpenNebula::VirtualNetwork.build_xml(0) + vn = OpenNebula::VirtualNetwork.new(vn_generic, client) + vn.info + + expect(vn['ID']).to eq('0') + expect(vn['NAME']).to eq('example') + expect(vn['UNAME']).to eq('oneadmin') + expect(vn['GNAME']).to eq('users') + expect(vn['TEMPLATE/BRIDGE']).to eq('br0') + end + + it 'get by nebula' do + network = nebula.get(0) + + expect(network.id).to eq(0) + expect(network.title).to eq('example') + expect(network.range).to eq(range) + end + end + + context 'IPv6 global' do + let(:client) do + instance_double('client', call: net6a) + end + let(:nebula) do + nebula_base.ctx = client + nebula_base + end + let(:id) { 2 } + let(:range) { Now::Range.new(address: IPAddress.parse('2001:718:1801:1052::/64'), allocation: 'dynamic') } + + it 'get' do + network = nebula.get(id) + + expect(network.id).to eq(id) + expect(network.title).to eq('vx1') + #FIXME + pending('do not use size for netmask') + expect(network.range).to eq(range) + end + end + + context 'IPv6 local' do + let(:client) do + instance_double('client', call: net6b) + end + let(:nebula) do + nebula_base.ctx = client + nebula_base + end + let(:id) { 3 } + let(:range) { Now::Range.new(address: IPAddress.parse('fd00::/64'), allocation: 'dynamic') } + + it 'get' do + network = nebula.get(id) + + expect(network.id).to eq(id) + expect(network.title).to eq('vx2') + pending('do not use size for netmask') + expect(network.range).to eq(range) + end + end +end diff --git a/spec/nebula/network-dual.xml b/spec/nebula/network-dual.xml new file mode 100644 index 0000000..96dddb5 --- /dev/null +++ b/spec/nebula/network-dual.xml @@ -0,0 +1,55 @@ + + 5 + 0 + 0 + oneadmin + oneadmin + dual + + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + + + + + + + 0 + 0 + + + + + + + + + + + + + + + 0 + + + + + diff --git a/spec/nebula/network-example.xml b/spec/nebula/network-example.xml new file mode 100644 index 0000000..758e295 --- /dev/null +++ b/spec/nebula/network-example.xml @@ -0,0 +1,54 @@ + + 0 + 0 + 1 + oneadmin + users + example + + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + + + 0 + + + + + + + + 3 + + + + + + + + + + + + 3 + + + + diff --git a/spec/nebula/network-ipv6-global.xml b/spec/nebula/network-ipv6-global.xml new file mode 100644 index 0000000..f945490 --- /dev/null +++ b/spec/nebula/network-ipv6-global.xml @@ -0,0 +1,51 @@ + + 2 + 0 + 1 + oneadmin + users + vx1 + + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + + + 0 + + + + + + + 0 + 2 + + + + + + + + + + + + + 2 + + + + diff --git a/spec/nebula/network-ipv6-local.xml b/spec/nebula/network-ipv6-local.xml new file mode 100644 index 0000000..2f89fa5 --- /dev/null +++ b/spec/nebula/network-ipv6-local.xml @@ -0,0 +1,53 @@ + + 3 + 0 + 0 + oneadmin + oneadmin + vx2 + + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + + + + + + + 0 + 0 + + + + + + + + + + + + + 0 + + + + + diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 6398913..6e22b7a 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -3,3 +3,11 @@ require 'rspec' Dir['./models/helpers/*.rb', './models/*.rb', './lib/*.rb'].each do |file| require file end + +def l(name) + fname = File.expand_path("../nebula/#{name}.xml", __FILE__) + File.read(fname) +end + +$logger = Logger.new(STDOUT) +$logger.level = Logger::INFO