1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

feature #863: fix tests

This commit is contained in:
Jaime Melis 2011-12-02 16:59:51 +01:00
parent 5f7cea8083
commit cb1c13c4b7
6 changed files with 50 additions and 47 deletions

View File

@ -64,7 +64,7 @@ class OpenNebulaHM < OpenNebulaNetwork
def device_exists?(dev, vlan=nil)
dev = "#{dev}.#{vlan}" if vlan
system("#{COMMANDS[:ip]} link show #{dev}")
OpenNebula.exec_and_log("#{COMMANDS[:ip]} link show #{dev}")
end
def create_dev_vlan(dev, vlan)

View File

@ -104,7 +104,7 @@ class OpenNebulaFirewall < OpenNebulaNetwork
def run_rules(rules)
rules.flatten.each do |rule|
system(rule)
OpenNebula.exec_and_log(rule)
end
end

View File

@ -52,7 +52,7 @@ class VM
nics = Nics.new(@hypervisor)
@vm_root.elements.each("TEMPLATE/NIC[VLAN=yes]") do |nic_element|
@vm_root.elements.each("TEMPLATE/NIC[VLAN=YES]") do |nic_element|
nic = nics.new_nic
nic_element.elements.each('*') do |nic_attribute|
@ -98,7 +98,7 @@ class OpenNebulaNetwork
def initialize(vm_tpl, hypervisor=nil)
if !hypervisor
@hypervisor = detect_hypervisor
@hypervisor = detect_hypervisor
else
@hypervisor = hypervisor
end

View File

@ -31,8 +31,8 @@ class Nics < Array
end
# A NIC using KVM. This class implements functions to get the physical interface
# that the NIC is using
# A NIC using KVM. This class implements functions to get the physical interface
# that the NIC is using
class NicKVM < Hash
def initialize
super(nil)
@ -70,8 +70,8 @@ class NicKVM < Hash
end
# A NIC using Xen. This class implements functions to get the physical interface
# that the NIC is using
# A NIC using Xen. This class implements functions to get the physical interface
# that the NIC is using
class NicXen < Hash
def initialize
super(nil)

View File

@ -1,18 +1,18 @@
#!/usr/bin/env ruby
$: << File.dirname(__FILE__) + '/..' \
<< './'
$: << File.dirname(__FILE__)
$: << File.join(File.dirname(__FILE__), '..')
$: << File.join(File.dirname(__FILE__),'../../../mad/ruby/')
require 'rubygems'
require 'rspec'
require 'SystemMock'
require 'pp'
require 'OpenNebulaNetwork'
require 'Ebtables'
require 'ebtables/Ebtables'
require 'Firewall'
require 'HostManaged'
require 'OpenvSwitch'
require '802.1Q/HostManaged'
require 'ovswitch/OpenvSwitch'
OUTPUT = Hash.new
Dir[File.dirname(__FILE__) + "/output/**"].each do |f|
@ -20,6 +20,9 @@ Dir[File.dirname(__FILE__) + "/output/**"].each do |f|
OUTPUT[key] = File.read(f)
end
require 'scripts_common'
require 'SystemMock'
include OpenNebula
include SystemMock
RSpec.configure do |config|
@ -56,21 +59,6 @@ describe 'networking' do
onevlan.vm.nics.should == nics_expected
end
it "filter nics in kvm" do
$capture_commands = {
/virsh.*dumpxml/ => OUTPUT[:virsh_dumpxml]
}
onevlan = OpenNebulaNetwork.new(OUTPUT[:onevm_show],"kvm")
onevlan.filter(:bridge => "br1")
nics_expected = [{:bridge=>"br1",
:ip=>"10.1.1.1",
:mac=>"02:00:0a:01:01:01",
:network=>"r1",
:network_id=>"1",
:tap=>"vnet1"}]
onevlan.vm.filtered_nics.should == nics_expected
end
end
describe 'ebtables' do
@ -88,7 +76,10 @@ describe 'ebtables' do
"sudo /sbin/ebtables -A FORWARD -s ! 02:00:0a:01:01:01 -i vnet1 -j DROP",
"sudo /sbin/ebtables -A FORWARD -s ! 02:00:0a:01:02:00/ff:ff:ff:ff:ff:00 -o vnet2 -j DROP",
"sudo /sbin/ebtables -A FORWARD -s ! 02:00:0a:01:02:01 -i vnet2 -j DROP"]
$collector[:system].should == ebtables_cmds
ebtables_cmds.map{|c| c + " 2>&1 1>/dev/null"}.each do |cmd|
$collector[:backtick].include?(cmd).should == true
end
end
end
@ -106,7 +97,9 @@ describe 'openvswitch' do
"sudo /usr/local/bin/ovs-vsctl set Port vnet2 tag=4"
]
$collector[:system].should == openvswitch_tags
openvswitch_tags.map{|c| c + " 2>&1 1>/dev/null"}.each do |cmd|
$collector[:backtick].include?(cmd).should == true
end
end
it "force VLAN_ID for Open vSwitch vlans in kvm" do
@ -117,12 +110,14 @@ describe 'openvswitch' do
}
onevlan = OpenvSwitchVLAN.new(OUTPUT[:onevm_show_vlan_id_kvm],"kvm")
onevlan.activate
onevlan_rules = ["sudo /usr/local/bin/ovs-vsctl set Port vnet0 tag=6",
"sudo /usr/local/bin/ovs-vsctl set Port vnet1 tag=50",
"sudo /usr/local/bin/ovs-vsctl set Port vnet1 tag=51"]
$collector[:system].should == onevlan_rules
onevlan_rules.map{|c| c + " 2>&1 1>/dev/null"}.each do |cmd|
$collector[:backtick].include?(cmd).should == true
end
end
end
@ -146,7 +141,9 @@ describe 'firewall' do
"sudo /sbin/iptables -A one-36-3 -p icmp -m state --state ESTABLISHED -j ACCEPT",
"sudo /sbin/iptables -A one-36-3 -p icmp -j DROP"]
$collector[:system].should == fw_activate_rules
fw_activate_rules.map{|c| c + " 2>&1 1>/dev/null"}.each do |cmd|
$collector[:backtick].include?(cmd).should == true
end
end
end
@ -155,20 +152,23 @@ describe 'host-managed' do
$capture_commands = {
/virsh.*dumpxml/ => OUTPUT[:virsh_dumpxml_phydev],
/brctl show/ => OUTPUT[:brctl_show],
/brctl add/ => nil,
/vconfig/ => nil,
/ip link/ => nil
/brctl add/ => nil,
/vconfig/ => nil,
/ip link/ => nil
}
hm = OpenNebulaHM.new(OUTPUT[:onevm_show_phydev_kvm],"kvm")
hm.activate
hm_activate_rules = ["sudo /usr/sbin/brctl addbr onebr6",
hm_activate_rules = ["sudo /sbin/brctl addbr onebr6",
"sudo /sbin/ip link set onebr6 up",
"sudo /sbin/ip link show eth0.8",
"sudo /sbin/vconfig add eth0 8",
"sudo /sbin/ip link set eth0.8 up",
"sudo /usr/sbin/brctl addif onebr6 eth0.8"]
$collector[:system].should == hm_activate_rules
"sudo /sbin/brctl addif onebr6 eth0.8"]
hm_activate_rules.map{|c| c + " 2>&1 1>/dev/null"}.each do |cmd|
$collector[:backtick].include?(cmd).should == true
end
end
it "force VLAN_ID for vlans in kvm" do
@ -182,19 +182,21 @@ describe 'host-managed' do
hm = OpenNebulaHM.new(OUTPUT[:onevm_show_vlan_id_kvm],"kvm")
hm.activate
hm_vlan_id = ["sudo /usr/sbin/brctl addbr onebr10",
hm_vlan_id = ["sudo /sbin/brctl addbr onebr10",
"sudo /sbin/ip link set onebr10 up",
"sudo /sbin/ip link show eth0.50",
"sudo /sbin/vconfig add eth0 50",
"sudo /sbin/ip link set eth0.50 up",
"sudo /usr/sbin/brctl addif onebr10 eth0.50",
"sudo /usr/sbin/brctl addbr specialbr",
"sudo /sbin/brctl addif onebr10 eth0.50",
"sudo /sbin/brctl addbr specialbr",
"sudo /sbin/ip link set specialbr up",
"sudo /sbin/ip link show eth0.51",
"sudo /sbin/vconfig add eth0 51",
"sudo /sbin/ip link set eth0.51 up",
"sudo /usr/sbin/brctl addif specialbr eth0.51"]
"sudo /sbin/brctl addif specialbr eth0.51"]
$collector[:system].should == hm_vlan_id
hm_vlan_id.map{|c| c + " 2>&1 1>/dev/null"}.each do |cmd|
$collector[:backtick].include?(cmd).should == true
end
end
end

View File

@ -1,14 +1,15 @@
module SystemMock
require 'open3'
def execute_cmd(cmd)
if $capture_commands
$capture_commands.each do |regex, output|
if cmd.match(regex)
Kernel.send(:`,":;exit 0")
return output
end
end
end
Open3.popen3(cmd){|stdin, stdout, stderr| stdout.read}
Kernel.send(:`,cmd)
end
def `(cmd)