From ec0f5151310fae720b12ce66bd00ca9ce368a368 Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Tue, 10 Jul 2018 12:27:29 +0200 Subject: [PATCH] tests: test newly added interfaces individually And add eth2/3 to /proc/net/dev, that way we don't need to create them "virtually" (which we shouldn't, for physical interfaces). Signed-off-by: Wolfgang Bumiller --- .../t.create_network.pl | 338 ++++++++++++------ 1 file changed, 232 insertions(+), 106 deletions(-) diff --git a/test/etc_network_interfaces/t.create_network.pl b/test/etc_network_interfaces/t.create_network.pl index 8f4974a..b363f16 100644 --- a/test/etc_network_interfaces/t.create_network.pl +++ b/test/etc_network_interfaces/t.create_network.pl @@ -1,10 +1,16 @@ save('proc_net_dev', <<'/proc/net/dev'); eth0: eth1: +eth2: +eth3: /proc/net/dev r(load('brbase')); +# +# Variables used for the various interfaces: +# + my $ip = '192.168.0.2'; my $nm = '255.255.255.0'; my $gw = '192.168.0.1'; @@ -13,6 +19,26 @@ my $physdev = 'eth0'; my $remoteip1 = '192.168.0.3'; my $remoteip2 = '192.168.0.4'; +# +# Hunk for the default bridge of the 'brbase' configuration +# + +my $vmbr0_part = <<"PART"; +auto vmbr0 +iface vmbr0 inet static + address 10.0.0.2 + netmask 255.255.255.0 + gateway 10.0.0.1 + bridge-ports eth0 + bridge-stp off + bridge-fd 0 +PART +chomp $vmbr0_part; + +# +# Configure eth1 statically, store its expected interfaces hunk in $eth1_part +# and test! +# $config->{ifaces}->{eth1} = { type => 'eth', @@ -24,41 +50,142 @@ $config->{ifaces}->{eth1} = { autostart => 1 }; -$config->{ifaces}->{eth2} = { - type => 'eth', +my $eth1_part = <<"PART"; +auto eth1 +iface eth1 inet static + address $ip + netmask $nm + gateway $gw +PART +chomp $eth1_part; + +expect load('loopback') . <<"CHECK"; +source-directory interfaces.d + +iface eth0 inet manual + +$eth1_part + +iface eth2 inet manual + +iface eth3 inet manual + +$vmbr0_part + +CHECK + +# +# Add a bond for eth2 & 3 and check the new output +# + +$config->{ifaces}->{bond0} = { + type => 'bond', + mtu => 1400, + slaves => 'eth2 eth3', + bond_mode => '802.3ad', + bond_xmit_hash_policy => 'layer3+4', + bond_miimon => 100, method => 'manual', families => ['inet'], autostart => 1 }; +my $bond0_part = <<"PART"; +auto bond0 +iface bond0 inet manual + bond-slaves eth2 eth3 + bond-miimon 100 + bond-mode 802.3ad + bond-xmit-hash-policy layer3+4 + mtu 1400 +PART +chomp $bond0_part; -$config->{ifaces}->{eth3} = { - type => 'eth', +expect load('loopback') . <<"CHECK"; +source-directory interfaces.d + +iface eth0 inet manual + +$eth1_part + +iface eth2 inet manual + +iface eth3 inet manual + +$bond0_part + +$vmbr0_part + +CHECK + +# +# Add vxlan1 and 2 +# + +$config->{ifaces}->{vxlan1} = { + type => 'vxlan', method => 'manual', families => ['inet'], + 'vxlan-id' => 1, + 'vxlan-svcnodeip' => $svcnodeip, + 'vxlan-physdev' => $physdev, autostart => 1 }; -$config->{ifaces}->{bond0} = { - type => 'bond', - mtu => 1400, - slaves => 'eth2 eth3', - bond_mode => '802.3ad', - bond_xmit_hash_policy => 'layer3+4', - bond_miimon => 100, +$config->{ifaces}->{vxlan2} = { + type => 'vxlan', method => 'manual', families => ['inet'], + 'vxlan-id' => 2, + 'vxlan-local-tunnelip' => $ip, autostart => 1 }; +my $vxlan12_part = <<"PART"; +auto vxlan1 +iface vxlan1 inet manual + vxlan-id 1 + vxlan-svcnodeip $svcnodeip + vxlan-physdev $physdev + +auto vxlan2 +iface vxlan2 inet manual + vxlan-id 2 + vxlan-local-tunnelip $ip +PART +chomp $vxlan12_part; + +expect load('loopback') . <<"CHECK"; +source-directory interfaces.d + +iface eth0 inet manual + +$eth1_part + +iface eth2 inet manual + +iface eth3 inet manual + +$bond0_part + +$vmbr0_part + +$vxlan12_part + +CHECK + +# +# Add vxlan3 and 3 bridges using vxlan1..3 +# + $config->{ifaces}->{vmbr1} = { mtu => 1400, type => 'bridge', method => 'manual', families => ['inet'], - bridge_stp => off, + bridge_stp => 'off', bridge_fd => 0, - bridge_ports => vxlan1, - bridge_vlan_aware => yes, + bridge_ports => 'vxlan1', + bridge_vlan_aware => 'yes', autostart => 1 }; @@ -66,9 +193,9 @@ $config->{ifaces}->{vmbr2} = { type => 'bridge', method => 'manual', families => ['inet'], - bridge_stp => off, + bridge_stp => 'off', bridge_fd => 0, - bridge_ports => vxlan2, + bridge_ports => 'vxlan2', autostart => 1 }; @@ -76,36 +203,39 @@ $config->{ifaces}->{vmbr3} = { type => 'bridge', method => 'manual', families => ['inet'], - bridge_stp => off, + bridge_stp => 'off', bridge_fd => 0, - bridge_ports => vxlan3, - bridge_vlan_aware => yes, + bridge_ports => 'vxlan3', + bridge_vlan_aware => 'yes', bridge_vids => '2-10', autostart => 1 }; -$config->{ifaces}->{vxlan1} = { - type => 'vxlan', - method => 'manual', - families => ['inet'], - 'vxlan-id' => 1, - 'vxlan-svcnodeip' => $svcnodeip, - 'vxlan-physdev' => $physdev, - autostart => 1 -}; +my $vmbr123_part = <<"PART"; +auto vmbr1 +iface vmbr1 inet manual + bridge-ports vxlan1 + bridge-stp off + bridge-fd 0 + bridge-vlan-aware yes + bridge-vids 2-4094 + mtu 1400 -$config->{ifaces}->{vxlan2} = { - type => 'vxlan', - method => 'manual', - families => ['inet'], - 'vxlan-id' => 2, - 'vxlan-local-tunnelip' => $ip, - 'bridge-learning' => 'off', - 'bridge-arp-nd-suppress' => 'on', - 'bridge-unicast-flood' => 'off', - 'bridge-multicast-flood' => 'off', - autostart => 1 -}; +auto vmbr2 +iface vmbr2 inet manual + bridge-ports vxlan2 + bridge-stp off + bridge-fd 0 + +auto vmbr3 +iface vmbr3 inet manual + bridge-ports vxlan3 + bridge-stp off + bridge-fd 0 + bridge-vlan-aware yes + bridge-vids 2-10 +PART +chomp $vmbr123_part; $config->{ifaces}->{vxlan3} = { type => 'vxlan', @@ -117,6 +247,51 @@ $config->{ifaces}->{vxlan3} = { autostart => 1 }; +my $vx = $config->{ifaces}->{vxlan2}; +$vx->{'bridge-learning'} = 'off'; +$vx->{'bridge-arp-nd-suppress'} = 'on'; +$vx->{'bridge-unicast-flood'} = 'off'; +$vx->{'bridge-multicast-flood'} = 'off'; +my $vxlan123_part = $vxlan12_part ."\n" . <<"PART"; + bridge-arp-nd-suppress on + bridge-learning off + bridge-multicast-flood off + bridge-unicast-flood off + +auto vxlan3 +iface vxlan3 inet manual + vxlan-id 3 + vxlan-remoteip $remoteip1 + vxlan-remoteip $remoteip2 + bridge-access 3 +PART +chomp $vxlan123_part; + +expect load('loopback') . <<"CHECK"; +source-directory interfaces.d + +iface eth0 inet manual + +$eth1_part + +iface eth2 inet manual + +iface eth3 inet manual + +$bond0_part + +$vmbr0_part + +$vmbr123_part + +$vxlan123_part + +CHECK + +# +# Now add vlans on all types of interfaces: vmbr1, bond0 and eth1 +# + $config->{ifaces}->{'vmbr1.100'} = { type => 'vlan', mtu => 1300, @@ -146,98 +321,46 @@ source-directory interfaces.d iface eth0 inet manual -auto eth1 -iface eth1 inet static - address $ip - netmask $nm - gateway $gw +$eth1_part -auto eth2 iface eth2 inet manual -auto eth3 iface eth3 inet manual auto eth1.100 iface eth1.100 inet manual mtu 1400 -auto bond0 -iface bond0 inet manual - bond-slaves eth2 eth3 - bond-miimon 100 - bond-mode 802.3ad - bond-xmit-hash-policy layer3+4 - mtu 1400 +$bond0_part auto bond0.100 iface bond0.100 inet manual mtu 1300 -auto vmbr0 -iface vmbr0 inet static - address 10.0.0.2 - netmask 255.255.255.0 - gateway 10.0.0.1 - bridge-ports eth0 - bridge-stp off - bridge-fd 0 - -auto vmbr1 -iface vmbr1 inet manual - bridge-ports vxlan1 - bridge-stp off - bridge-fd 0 - bridge-vlan-aware yes - bridge-vids 2-4094 - mtu 1400 - -auto vmbr2 -iface vmbr2 inet manual - bridge-ports vxlan2 - bridge-stp off - bridge-fd 0 +$vmbr0_part -auto vmbr3 -iface vmbr3 inet manual - bridge-ports vxlan3 - bridge-stp off - bridge-fd 0 - bridge-vlan-aware yes - bridge-vids 2-10 +$vmbr123_part auto vmbr1.100 iface vmbr1.100 inet manual mtu 1300 -auto vxlan1 -iface vxlan1 inet manual - vxlan-id 1 - vxlan-svcnodeip $svcnodeip - vxlan-physdev $physdev - -auto vxlan2 -iface vxlan2 inet manual - vxlan-id 2 - vxlan-local-tunnelip $ip - bridge-arp-nd-suppress on - bridge-learning off - bridge-multicast-flood off - bridge-unicast-flood off - -auto vxlan3 -iface vxlan3 inet manual - vxlan-id 3 - vxlan-remoteip $remoteip1 - vxlan-remoteip $remoteip2 - bridge-access 3 +$vxlan123_part CHECK +# +# Now check the new config for idempotency: +# + save('if', w()); r(load('if')); expect load('if'); +# +# Check a brbase with an ipv6 address on eth1 +# + r(load('brbase')); my $ip = 'fc05::2'; @@ -254,7 +377,6 @@ $config->{ifaces}->{eth1} = { autostart => 1 }; - expect load('loopback') . <<"CHECK"; source-directory interfaces.d @@ -266,6 +388,10 @@ iface eth1 inet6 static netmask $nm gateway $gw +iface eth2 inet manual + +iface eth3 inet manual + auto vmbr0 iface vmbr0 inet static address 10.0.0.2 -- 2.39.2