tests: Add basic unit tests for interface-reconfigure.
authorBen Pfaff <blp@nicira.com>
Tue, 23 Feb 2010 00:28:30 +0000 (16:28 -0800)
committerBen Pfaff <blp@nicira.com>
Tue, 23 Feb 2010 17:55:51 +0000 (09:55 -0800)
These tests are probably not perfect, and we could and should certainly
add more of them, but they should at least help us to notice when commits
change interface-reconfigure's behavior.

Signed-off-by: Ben Pfaff <blp@nicira.com>
tests/automake.mk
tests/interface-reconfigure.at [new file with mode: 0644]
tests/testsuite.at

index 920117f..e5cd0ec 100644 (file)
@@ -38,7 +38,8 @@ TESTSUITE_AT = \
        tests/ovsdb-monitor.at \
        tests/ovsdb-idl.at \
        tests/stp.at \
-       tests/ovs-vsctl.at
+       tests/ovs-vsctl.at \
+       tests/interface-reconfigure.at
 TESTSUITE = $(srcdir)/tests/testsuite
 DISTCLEANFILES += tests/atconfig tests/atlocal $(TESTSUITE)
 
diff --git a/tests/interface-reconfigure.at b/tests/interface-reconfigure.at
new file mode 100644 (file)
index 0000000..446cc7c
--- /dev/null
@@ -0,0 +1,910 @@
+dnl IFR_SETUP
+dnl
+dnl Creates a directory tree for use with "interface-reconfigure --root-dir".
+m4_define([IFR_SETUP], 
+  [[for script in \
+        interface-reconfigure \
+        InterfaceReconfigure.py \
+        InterfaceReconfigureBridge.py \
+        InterfaceReconfigureVswitch.py
+    do
+        cp $top_srcdir/xenserver/opt_xensource_libexec_$script $script
+    done
+
+    mkdir -p etc
+    cat > etc/xensource-inventory <<EOF
+PRODUCT_BRAND='XenServer'
+PRODUCT_NAME='xenenterprise'
+PRODUCT_VERSION='5.5.0'
+BUILD_NUMBER='24648p'
+KERNEL_VERSION='2.6.18-128.1.6.el5.xs5.5.0.505.1024xen'
+XEN_VERSION='3.3.1'
+INSTALLATION_DATE='2010-02-10 16:45:28.748345'
+PRIMARY_DISK='/dev/disk/by-id/scsi-360022190add7fc001241a14e0ee3e85c'
+BACKUP_PARTITION='/dev/disk/by-id/scsi-360022190add7fc001241a14e0ee3e85c-part2'
+INSTALLATION_UUID='852ee692-71b4-439e-abfb-0eba72dc85f0'
+CONTROL_DOMAIN_UUID='44e6b66e-3074-4a3c-bbcd-756d845a3b56'
+DEFAULT_SR_PHYSDEVS='/dev/sda3'
+DOM0_MEM='752'
+MANAGEMENT_INTERFACE='xenbr2'
+EOF
+
+    mkdir -p etc/xensource
+    echo vswitch > etc/xensource/network.conf
+
+    for utility in \
+        sbin/ethtool \
+        sbin/ifconfig \
+        sbin/ifdown \
+        sbin/ifup \
+        sbin/ip \
+        sbin/update-issue \
+        sbin/vconfig \
+        usr/bin/ovs-vsctl \
+        usr/sbin/brctl
+    do
+        mkdir -p `dirname $utility`
+        cat > $utility <<'EOF'
+#! /bin/sh
+echo ${0} ${*} >&2
+EOF
+        chmod +x $utility
+    done
+
+    mkdir -p etc/sysconfig/network-scripts
+    configure_netdev () {
+        mkdir -p sys/class/net/${1}
+        echo ${2} > sys/class/net/${1}/address
+        echo ${3} > sys/class/net/${1}/tx_queue_len
+
+        : >> etc/sysconfig/network-scripts/ifcfg-${1}
+    }
+
+    configure_netdev lo   00:00:00:00:00:00 0
+    configure_netdev eth0 00:22:19:22:4b:af 1000
+    configure_netdev eth1 00:22:19:22:4b:b1 1000
+    configure_netdev eth2 00:15:17:a0:29:80 1000
+    configure_netdev eth3 00:15:17:a0:29:81 1000
+    configure_netdev eth4 00:1b:21:29:ce:51 1000
+
+    mkdir -p var/xapi
+    cat > var/xapi/network.dbcache <<'EOF'
+<?xml version="1.0" ?>
+<xenserver-network-configuration>
+       <pif ref="OpaqueRef:e0955887-571f-17fc-a971-61c1ec7d81b6">
+               <VLAN_slave_of/>
+               <management>
+                       False
+               </management>
+               <bond_slave_of>
+                       OpaqueRef:86d81bcf-0d25-90b2-cb11-af2007bd586e
+               </bond_slave_of>
+               <uuid>
+                       bd62a141-091f-3909-e334-0334f67ff3be
+               </uuid>
+               <IP>
+                       
+               </IP>
+               <VLAN_master_of>
+                       OpaqueRef:NULL
+               </VLAN_master_of>
+               <VLAN>
+                       -1
+               </VLAN>
+               <netmask>
+                       
+               </netmask>
+               <other_config/>
+               <MAC>
+                       00:22:19:22:4b:af
+               </MAC>
+               <ip_configuration_mode>
+                       None
+               </ip_configuration_mode>
+               <DNS>
+                       
+               </DNS>
+               <device>
+                       eth0
+               </device>
+               <bond_master_of/>
+               <currently_attached>
+                       False
+               </currently_attached>
+               <gateway>
+                       
+               </gateway>
+               <network>
+                       OpaqueRef:83e4a934-aeb5-e6f0-a743-d1c7ef7364c5
+               </network>
+       </pif>
+       <pif ref="OpaqueRef:eea8da94-a5e6-18fc-34a7-5e9b5a235806">
+               <VLAN_slave_of/>
+               <management>
+                       False
+               </management>
+               <bond_slave_of>
+                       OpaqueRef:NULL
+               </bond_slave_of>
+               <uuid>
+                       df8d35c2-cc3a-a623-7065-d987a29feb75
+               </uuid>
+               <IP>
+                       
+               </IP>
+               <VLAN_master_of>
+                       OpaqueRef:NULL
+               </VLAN_master_of>
+               <VLAN>
+                       -1
+               </VLAN>
+               <netmask>
+                       
+               </netmask>
+               <other_config/>
+               <MAC>
+                       00:1b:21:29:ce:51
+               </MAC>
+               <ip_configuration_mode>
+                       None
+               </ip_configuration_mode>
+               <DNS>
+                       
+               </DNS>
+               <device>
+                       eth4
+               </device>
+               <bond_master_of/>
+               <currently_attached>
+                       False
+               </currently_attached>
+               <gateway>
+                       
+               </gateway>
+               <network>
+                       OpaqueRef:bf51b4d3-7bdc-ea55-ba21-539b150b0531
+               </network>
+       </pif>
+       <pif ref="OpaqueRef:2956e6c8-487e-981c-85ff-c84796418768">
+               <VLAN_slave_of/>
+               <management>
+                       False
+               </management>
+               <bond_slave_of>
+                       OpaqueRef:86d81bcf-0d25-90b2-cb11-af2007bd586e
+               </bond_slave_of>
+               <uuid>
+                       2f87fc95-5ab4-571a-2487-3f4ac1985663
+               </uuid>
+               <IP>
+                       
+               </IP>
+               <VLAN_master_of>
+                       OpaqueRef:NULL
+               </VLAN_master_of>
+               <VLAN>
+                       -1
+               </VLAN>
+               <netmask>
+                       
+               </netmask>
+               <other_config/>
+               <MAC>
+                       00:22:19:22:4b:b1
+               </MAC>
+               <ip_configuration_mode>
+                       None
+               </ip_configuration_mode>
+               <DNS>
+                       
+               </DNS>
+               <device>
+                       eth1
+               </device>
+               <bond_master_of/>
+               <currently_attached>
+                       False
+               </currently_attached>
+               <gateway>
+                       
+               </gateway>
+               <network>
+                       OpaqueRef:92b41bf6-aa21-45d3-1c86-c87a5fa98f7d
+               </network>
+       </pif>
+       <pif ref="OpaqueRef:d2d1e51e-4da9-3163-8f57-bb683429335e">
+               <VLAN_slave_of/>
+               <management>
+                       False
+               </management>
+               <bond_slave_of>
+                       OpaqueRef:NULL
+               </bond_slave_of>
+               <uuid>
+                       d2dfdab3-daf4-afea-f055-a25a0d24d714
+               </uuid>
+               <IP>
+                       
+               </IP>
+               <VLAN_master_of>
+                       OpaqueRef:4c0eb823-4d96-da1d-e75f-411b85badb0c
+               </VLAN_master_of>
+               <VLAN>
+                       4
+               </VLAN>
+               <netmask>
+                       
+               </netmask>
+               <other_config/>
+               <MAC>
+                       fe:ff:ff:ff:ff:ff
+               </MAC>
+               <ip_configuration_mode>
+                       None
+               </ip_configuration_mode>
+               <DNS>
+                       
+               </DNS>
+               <device>
+                       bond0
+               </device>
+               <bond_master_of/>
+               <currently_attached>
+                       True
+               </currently_attached>
+               <gateway>
+                       
+               </gateway>
+               <network>
+                       OpaqueRef:a63afad0-fb4c-b4a4-3696-cbb3d88afc47
+               </network>
+       </pif>
+       <pif ref="OpaqueRef:2bc0fab5-523a-4125-609d-212391f5f6fc">
+               <VLAN_slave_of>
+                       <master>
+                               OpaqueRef:e623e1d6-cd02-be8d-820d-49d65c710297
+                       </master>
+               </VLAN_slave_of>
+               <management>
+                       False
+               </management>
+               <bond_slave_of>
+                       OpaqueRef:NULL
+               </bond_slave_of>
+               <uuid>
+                       f4ba396e-a993-a592-5fbc-a1d566afb59e
+               </uuid>
+               <IP>
+                       10.0.0.188
+               </IP>
+               <VLAN_master_of>
+                       OpaqueRef:NULL
+               </VLAN_master_of>
+               <VLAN>
+                       -1
+               </VLAN>
+               <netmask>
+                       255.0.0.0
+               </netmask>
+               <other_config/>
+               <MAC>
+                       00:15:17:a0:29:81
+               </MAC>
+               <ip_configuration_mode>
+                       Static
+               </ip_configuration_mode>
+               <DNS>
+                       
+               </DNS>
+               <device>
+                       eth3
+               </device>
+               <bond_master_of/>
+               <currently_attached>
+                       True
+               </currently_attached>
+               <gateway>
+                       
+               </gateway>
+               <network>
+                       OpaqueRef:d9189da2-d00b-61ba-8a6d-ac42cc868e32
+               </network>
+       </pif>
+       <pif ref="OpaqueRef:205d1186-2cd1-d5e6-45e4-ea1698ea6e15">
+               <VLAN_slave_of/>
+               <management>
+                       True
+               </management>
+               <bond_slave_of>
+                       OpaqueRef:NULL
+               </bond_slave_of>
+               <uuid>
+                       646ca9a1-36ad-e2f9-3ecc-1e5622c201c2
+               </uuid>
+               <IP>
+                       172.18.3.188
+               </IP>
+               <VLAN_master_of>
+                       OpaqueRef:NULL
+               </VLAN_master_of>
+               <VLAN>
+                       -1
+               </VLAN>
+               <netmask>
+                       255.255.0.0
+               </netmask>
+               <other_config/>
+               <MAC>
+                       00:15:17:a0:29:80
+               </MAC>
+               <ip_configuration_mode>
+                       DHCP
+               </ip_configuration_mode>
+               <DNS>
+                       
+               </DNS>
+               <device>
+                       eth2
+               </device>
+               <bond_master_of/>
+               <currently_attached>
+                       True
+               </currently_attached>
+               <gateway>
+                       
+               </gateway>
+               <network>
+                       OpaqueRef:6e7c6e81-6b5e-b91f-e1f9-9e028567bdfe
+               </network>
+       </pif>
+       <pif ref="OpaqueRef:8e3e37e6-ebb9-087e-0201-f6a56bf554c3">
+               <VLAN_slave_of/>
+               <management>
+                       False
+               </management>
+               <bond_slave_of>
+                       OpaqueRef:NULL
+               </bond_slave_of>
+               <uuid>
+                       3941edd2-865b-8dd8-61f0-199f5e1fa652
+               </uuid>
+               <IP>
+                       
+               </IP>
+               <VLAN_master_of>
+                       OpaqueRef:e623e1d6-cd02-be8d-820d-49d65c710297
+               </VLAN_master_of>
+               <VLAN>
+                       123
+               </VLAN>
+               <netmask>
+                       
+               </netmask>
+               <other_config/>
+               <MAC>
+                       fe:ff:ff:ff:ff:ff
+               </MAC>
+               <ip_configuration_mode>
+                       None
+               </ip_configuration_mode>
+               <DNS>
+                       
+               </DNS>
+               <device>
+                       eth3
+               </device>
+               <bond_master_of/>
+               <currently_attached>
+                       True
+               </currently_attached>
+               <gateway>
+                       
+               </gateway>
+               <network>
+                       OpaqueRef:240fb5f8-addc-6ea3-f921-2a42b42acd17
+               </network>
+       </pif>
+       <pif ref="OpaqueRef:69c904bb-8da9-3424-485b-8b47c2d3ef11">
+               <VLAN_slave_of>
+                       <master>
+                               OpaqueRef:4c0eb823-4d96-da1d-e75f-411b85badb0c
+                       </master>
+               </VLAN_slave_of>
+               <management>
+                       False
+               </management>
+               <bond_slave_of>
+                       OpaqueRef:NULL
+               </bond_slave_of>
+               <uuid>
+                       6c0327a9-afa3-fc19-6798-a1bfe20095ed
+               </uuid>
+               <IP>
+                       
+               </IP>
+               <VLAN_master_of>
+                       OpaqueRef:NULL
+               </VLAN_master_of>
+               <VLAN>
+                       -1
+               </VLAN>
+               <netmask>
+                       
+               </netmask>
+               <other_config/>
+               <MAC>
+                       00:22:19:22:4b:af
+               </MAC>
+               <ip_configuration_mode>
+                       None
+               </ip_configuration_mode>
+               <DNS>
+                       
+               </DNS>
+               <device>
+                       bond0
+               </device>
+               <bond_master_of>
+                       <slave>
+                               OpaqueRef:86d81bcf-0d25-90b2-cb11-af2007bd586e
+                       </slave>
+               </bond_master_of>
+               <currently_attached>
+                       True
+               </currently_attached>
+               <gateway>
+                       
+               </gateway>
+               <network>
+                       OpaqueRef:ec1e5037-60ea-97e5-54b8-39bdb43c071a
+               </network>
+       </pif>
+       <bond ref="OpaqueRef:86d81bcf-0d25-90b2-cb11-af2007bd586e">
+               <master>
+                       OpaqueRef:69c904bb-8da9-3424-485b-8b47c2d3ef11
+               </master>
+               <uuid>
+                       dad825f1-6d81-386e-849c-5589281e53e1
+               </uuid>
+               <slaves>
+                       <slave>
+                               OpaqueRef:e0955887-571f-17fc-a971-61c1ec7d81b6
+                       </slave>
+                       <slave>
+                               OpaqueRef:2956e6c8-487e-981c-85ff-c84796418768
+                       </slave>
+               </slaves>
+       </bond>
+       <vlan ref="OpaqueRef:4c0eb823-4d96-da1d-e75f-411b85badb0c">
+               <tagged_PIF>
+                       OpaqueRef:69c904bb-8da9-3424-485b-8b47c2d3ef11
+               </tagged_PIF>
+               <uuid>
+                       841814da-d0d2-9da4-0b2e-b6143480bbfb
+               </uuid>
+               <untagged_PIF>
+                       OpaqueRef:d2d1e51e-4da9-3163-8f57-bb683429335e
+               </untagged_PIF>
+       </vlan>
+       <vlan ref="OpaqueRef:e623e1d6-cd02-be8d-820d-49d65c710297">
+               <tagged_PIF>
+                       OpaqueRef:2bc0fab5-523a-4125-609d-212391f5f6fc
+               </tagged_PIF>
+               <uuid>
+                       399279a2-5ccd-5368-9af3-8622a1f1ac82
+               </uuid>
+               <untagged_PIF>
+                       OpaqueRef:8e3e37e6-ebb9-087e-0201-f6a56bf554c3
+               </untagged_PIF>
+       </vlan>
+       <network ref="OpaqueRef:a63afad0-fb4c-b4a4-3696-cbb3d88afc47">
+               <PIFs>
+                       <PIF>
+                               OpaqueRef:d2d1e51e-4da9-3163-8f57-bb683429335e
+                       </PIF>
+               </PIFs>
+               <bridge>
+                       xapi2
+               </bridge>
+               <other_config/>
+               <uuid>
+                       99be2da4-6c33-6f8e-49ea-3bc592fe3c85
+               </uuid>
+       </network>
+       <network ref="OpaqueRef:d9189da2-d00b-61ba-8a6d-ac42cc868e32">
+               <PIFs>
+                       <PIF>
+                               OpaqueRef:2bc0fab5-523a-4125-609d-212391f5f6fc
+                       </PIF>
+               </PIFs>
+               <bridge>
+                       xenbr3
+               </bridge>
+               <other_config/>
+               <uuid>
+                       2902ae1b-8013-897a-b697-0b200ea3aaa5
+               </uuid>
+       </network>
+       <network ref="OpaqueRef:ec1e5037-60ea-97e5-54b8-39bdb43c071a">
+               <PIFs>
+                       <PIF>
+                               OpaqueRef:69c904bb-8da9-3424-485b-8b47c2d3ef11
+                       </PIF>
+               </PIFs>
+               <bridge>
+                       xapi1
+               </bridge>
+               <other_config/>
+               <uuid>
+                       45cbbb43-113d-a712-3231-c6463f253cef
+               </uuid>
+       </network>
+       <network ref="OpaqueRef:92b41bf6-aa21-45d3-1c86-c87a5fa98f7d">
+               <PIFs>
+                       <PIF>
+                               OpaqueRef:2956e6c8-487e-981c-85ff-c84796418768
+                       </PIF>
+               </PIFs>
+               <bridge>
+                       xenbr1
+               </bridge>
+               <other_config/>
+               <uuid>
+                       99f8771a-645a-26a3-e06c-30a401f1d009
+               </uuid>
+       </network>
+       <network ref="OpaqueRef:6e7c6e81-6b5e-b91f-e1f9-9e028567bdfe">
+               <PIFs>
+                       <PIF>
+                               OpaqueRef:205d1186-2cd1-d5e6-45e4-ea1698ea6e15
+                       </PIF>
+               </PIFs>
+               <bridge>
+                       xenbr2
+               </bridge>
+               <other_config/>
+               <uuid>
+                       d08c8749-0c8f-9e8d-ce25-fd364661ee99
+               </uuid>
+       </network>
+       <network ref="OpaqueRef:83e4a934-aeb5-e6f0-a743-d1c7ef7364c5">
+               <PIFs>
+                       <PIF>
+                               OpaqueRef:e0955887-571f-17fc-a971-61c1ec7d81b6
+                       </PIF>
+               </PIFs>
+               <bridge>
+                       xenbr0
+               </bridge>
+               <other_config/>
+               <uuid>
+                       c9eecb03-560d-61de-b6a8-56dfc766f67e
+               </uuid>
+       </network>
+       <network ref="OpaqueRef:bf51b4d3-7bdc-ea55-ba21-539b150b0531">
+               <PIFs>
+                       <PIF>
+                               OpaqueRef:eea8da94-a5e6-18fc-34a7-5e9b5a235806
+                       </PIF>
+               </PIFs>
+               <bridge>
+                       xenbr4
+               </bridge>
+               <other_config/>
+               <uuid>
+                       d2c14c89-29cc-51d4-7664-633eff02b2ad
+               </uuid>
+       </network>
+       <network ref="OpaqueRef:0b7354a4-8f4b-aa08-2f16-a22c117e4211">
+               <PIFs/>
+               <bridge>
+                       xapi0
+               </bridge>
+               <other_config/>
+               <uuid>
+                       dc0f0632-c2aa-1b78-2fea-0d3a23c51740
+               </uuid>
+       </network>
+       <network ref="OpaqueRef:240fb5f8-addc-6ea3-f921-2a42b42acd17">
+               <PIFs>
+                       <PIF>
+                               OpaqueRef:8e3e37e6-ebb9-087e-0201-f6a56bf554c3
+                       </PIF>
+               </PIFs>
+               <bridge>
+                       xapi3
+               </bridge>
+               <other_config/>
+               <uuid>
+                       db7bdc03-074d-42ae-fc73-9b06de1d57f6
+               </uuid>
+       </network>
+</xenserver-network-configuration>
+EOF
+]])
+
+m4_define([IFR_RUN], [./interface-reconfigure --root-prefix=$PWD --no-syslog])
+
+m4_define([IFR_FILTER], [sed -n -e "s,$PWD,,g" -e 's/ -- /\
+    /g' -e '/^Running command:/!p' stderr])
+\f
+AT_BANNER([interface-reconfigure])
+
+AT_SETUP([non-VLAN, non-bond])
+AT_KEYWORDS([interface-reconfigure])
+IFR_SETUP
+
+AT_CHECK([IFR_RUN --force xenbr2 up], [0], [], [stderr])
+AT_CHECK([IFR_FILTER], [0], [[Force interface xenbr2 up
+Loading xapi database cache from /var/xapi/network.dbcache
+Configured for Vswitch datapath
+action_up: xenbr2
+Writing network configuration for xenbr2
+Configuring xenbr2 using DHCP configuration
+configure_datapath: bridge      - xenbr2
+configure_datapath: physical    - [u'eth2']
+configure_datapath: extra ports - []
+configure_datapath: extra bonds - []
+Applying changes to /etc/sysconfig/network-scripts/route-xenbr2 configuration
+Applying changes to /etc/sysconfig/network configuration
+Applying changes to /etc/sysconfig/network-scripts/ifcfg-xenbr2 configuration
+/sbin/ifconfig eth2 up
+/usr/bin/ovs-vsctl --timeout=20
+    --with-iface --if-exists del-port eth2
+    --may-exist add-br xenbr2
+    --may-exist add-port xenbr2 eth2
+    br-set-external-id xenbr2 xs-network-uuids d08c8749-0c8f-9e8d-ce25-fd364661ee99
+/sbin/ifup xenbr2
+/sbin/update-issue
+Committing changes to /etc/sysconfig/network-scripts/route-xenbr2 configuration
+Committing changes to /etc/sysconfig/network configuration
+Committing changes to /etc/sysconfig/network-scripts/ifcfg-xenbr2 configuration
+]])
+
+AT_CHECK([cat etc/sysconfig/network-scripts/ifcfg-xenbr2], [0],
+  [# DO NOT EDIT: This file (ifcfg-xenbr2) was autogenerated by interface-reconfigure
+XEMANAGED=yes
+DEVICE=xenbr2
+ONBOOT=no
+TYPE=Ethernet
+BOOTPROTO=dhcp
+PERSISTENT_DHCLIENT=yes
+])
+
+# Simulate interface-reconfigure creating xenbr2, so that we can tell
+# interface-reconfigure to take it back down.
+AT_CHECK([configure_netdev xenbr2 00:15:17:a0:29:80 0])
+
+AT_CHECK([IFR_RUN --force xenbr2 down], [0], [], [stderr])
+AT_CHECK([IFR_FILTER], [0], [[Force interface xenbr2 down
+Loading xapi database cache from /var/xapi/network.dbcache
+Configured for Vswitch datapath
+action_down: xenbr2
+/sbin/ifdown xenbr2
+deconfigure ipdev xenbr2 on xenbr2
+deconfigure_bridge: bridge           - xenbr2
+/usr/bin/ovs-vsctl --timeout=20
+    --with-iface --if-exists del-port xenbr2
+    --if-exists del-br xenbr2
+]])
+
+AT_CLEANUP
+\f
+AT_SETUP([VLAN, non-bond])
+AT_KEYWORDS([interface-reconfigure])
+IFR_SETUP
+
+AT_CHECK([IFR_RUN --force xapi3 up], [0], [], [stderr])
+AT_CHECK([IFR_FILTER], [0], [[Force interface xapi3 up
+Loading xapi database cache from /var/xapi/network.dbcache
+Configured for Vswitch datapath
+action_up: xapi3
+Writing network configuration for xapi3
+Configuring xapi3 using None configuration
+configure_datapath: bridge      - xenbr3
+configure_datapath: physical    - [u'eth3']
+configure_datapath: extra ports - []
+configure_datapath: extra bonds - []
+Applying changes to /etc/sysconfig/network-scripts/route-xapi3 configuration
+Applying changes to /etc/sysconfig/network-scripts/ifcfg-xapi3 configuration
+/sbin/ifconfig eth3 up
+/usr/bin/ovs-vsctl --timeout=20
+    --with-iface --if-exists del-port eth3
+    --may-exist add-br xenbr3
+    --may-exist add-port xenbr3 eth3
+    br-set-external-id xenbr3 xs-network-uuids 2902ae1b-8013-897a-b697-0b200ea3aaa5;db7bdc03-074d-42ae-fc73-9b06de1d57f6
+    --if-exists del-br xapi3
+    --may-exist add-br xapi3 xenbr3 123
+    br-set-external-id xapi3 xs-network-uuids 2902ae1b-8013-897a-b697-0b200ea3aaa5;db7bdc03-074d-42ae-fc73-9b06de1d57f6
+/sbin/ifup xapi3
+/sbin/update-issue
+Committing changes to /etc/sysconfig/network-scripts/route-xapi3 configuration
+Committing changes to /etc/sysconfig/network-scripts/ifcfg-xapi3 configuration
+]])
+
+AT_CHECK([cat etc/sysconfig/network-scripts/ifcfg-xapi3], [0],
+  [# DO NOT EDIT: This file (ifcfg-xapi3) was autogenerated by interface-reconfigure
+XEMANAGED=yes
+DEVICE=xapi3
+ONBOOT=no
+TYPE=Ethernet
+BOOTPROTO=none
+])
+
+# Simulate interface-reconfigure creating xapi3, so that we can tell
+# interface-reconfigure to take it back down.
+AT_CHECK([configure_netdev xapi3 00:23:20:AC:AF:02 0])
+
+AT_CHECK([IFR_RUN --force xapi3 down], [0], [], [stderr])
+AT_CHECK([IFR_FILTER], [0], [[Force interface xapi3 down
+Loading xapi database cache from /var/xapi/network.dbcache
+Configured for Vswitch datapath
+action_down: xapi3
+/sbin/ifdown xapi3
+deconfigure ipdev xapi3 on xenbr3
+deconfigure_bridge: bridge           - xapi3
+action_down: no more masters, bring down slave xenbr3
+deconfigure_bridge: bridge           - xenbr3
+/usr/bin/ovs-vsctl --timeout=20
+    --with-iface --if-exists del-port xapi3
+    --if-exists del-br xapi3
+    --if-exists del-br xenbr3
+]])
+
+AT_CLEANUP
+\f
+AT_SETUP([Bond, non-VLAN])
+AT_KEYWORDS([interface-reconfigure])
+IFR_SETUP
+
+# Pretend that bond0 exists, even though it would really be created by
+# a "create-bond" call in an ovs-vsctl invocation within
+# interface-reconfigure, because otherwise interface-reconfigure will
+# die with "failed to apply changes: netdev: up: device bond0 does not
+# exist" after it thinks it created bond0.
+AT_CHECK([configure_netdev bond0 00:23:20:e6:39:75 0])
+
+AT_CHECK([IFR_RUN --force xapi1 up], [0], [], [stderr])
+AT_CHECK([IFR_FILTER], [0], [[Force interface xapi1 up
+Loading xapi database cache from /var/xapi/network.dbcache
+Configured for Vswitch datapath
+action_up: xapi1
+Writing network configuration for xapi1
+Configuring xapi1 using None configuration
+configure_datapath: leaving bond bond0 up
+configure_datapath: leaving bond bond0 up
+configure_datapath: bridge      - xapi1
+configure_datapath: physical    - [u'eth0', u'eth1']
+configure_datapath: extra ports - []
+configure_datapath: extra bonds - []
+netdev: down: device xenbr0 does not exist, ignoring
+netdev: down: device xenbr1 does not exist, ignoring
+Applying changes to /etc/sysconfig/network-scripts/route-xapi1 configuration
+Applying changes to /etc/sysconfig/network-scripts/ifcfg-xapi1 configuration
+/sbin/ifconfig eth0 up
+/sbin/ifconfig eth1 up
+/usr/bin/ovs-vsctl --timeout=20
+    --if-exists del-br xenbr0
+    --if-exists del-br xenbr1
+    --with-iface --if-exists del-port eth0
+    --with-iface --if-exists del-port eth1
+    --may-exist add-br xapi1
+    --with-iface --if-exists del-port bond0
+    --fake-iface add-bond xapi1 bond0 eth0 eth1
+    br-set-external-id xapi1 xs-network-uuids 99be2da4-6c33-6f8e-49ea-3bc592fe3c85;45cbbb43-113d-a712-3231-c6463f253cef
+/sbin/ifup xapi1
+action_up: bring up bond0
+/sbin/ifconfig bond0 up
+/sbin/update-issue
+Committing changes to /etc/sysconfig/network-scripts/route-xapi1 configuration
+Committing changes to /etc/sysconfig/network-scripts/ifcfg-xapi1 configuration
+]])
+
+AT_CHECK([cat etc/sysconfig/network-scripts/ifcfg-xapi1], [0],
+  [# DO NOT EDIT: This file (ifcfg-xapi1) was autogenerated by interface-reconfigure
+XEMANAGED=yes
+DEVICE=xapi1
+ONBOOT=no
+TYPE=Ethernet
+BOOTPROTO=none
+])
+
+# Simulate interface-reconfigure creating xapi1, so that we can tell
+# interface-reconfigure to take it back down.
+AT_CHECK([configure_netdev xapi1 00:22:19:22:4B:AF 0])
+
+AT_CHECK([IFR_RUN --force xapi1 down], [0], [], [stderr])
+AT_CHECK([IFR_FILTER], [0], [[Force interface xapi1 down
+Loading xapi database cache from /var/xapi/network.dbcache
+Configured for Vswitch datapath
+action_down: xapi1
+/sbin/ifdown xapi1
+deconfigure ipdev xapi1 on xapi1
+deconfigure_bridge: bridge           - xapi1
+/usr/bin/ovs-vsctl --timeout=20
+    --with-iface --if-exists del-port xapi1
+    --if-exists del-br xapi1
+]])
+
+AT_CLEANUP
+\f
+AT_SETUP([VLAN on bond])
+AT_KEYWORDS([interface-reconfigure])
+IFR_SETUP
+
+# Pretend that bond0 exists, even though it would really be created by
+# a "create-bond" call in an ovs-vsctl invocation within
+# interface-reconfigure, because otherwise interface-reconfigure will
+# die with "failed to apply changes: netdev: up: device bond0 does not
+# exist" after it thinks it created bond0.
+AT_CHECK([configure_netdev bond0 00:23:20:e6:39:75 0])
+
+AT_CHECK([IFR_RUN --force xapi2 up], [0], [], [stderr])
+AT_CHECK([IFR_FILTER], [0], [[Force interface xapi2 up
+Loading xapi database cache from /var/xapi/network.dbcache
+Configured for Vswitch datapath
+action_up: xapi2
+Writing network configuration for xapi2
+Configuring xapi2 using None configuration
+configure_datapath: leaving bond bond0 up
+configure_datapath: leaving bond bond0 up
+configure_datapath: bridge      - xapi1
+configure_datapath: physical    - [u'eth0', u'eth1']
+configure_datapath: extra ports - []
+configure_datapath: extra bonds - []
+netdev: down: device xenbr0 does not exist, ignoring
+netdev: down: device xenbr1 does not exist, ignoring
+Applying changes to /etc/sysconfig/network-scripts/route-xapi2 configuration
+Applying changes to /etc/sysconfig/network-scripts/ifcfg-xapi2 configuration
+/sbin/ifconfig eth0 up
+/sbin/ifconfig eth1 up
+/usr/bin/ovs-vsctl --timeout=20
+    --if-exists del-br xenbr0
+    --if-exists del-br xenbr1
+    --with-iface --if-exists del-port eth0
+    --with-iface --if-exists del-port eth1
+    --may-exist add-br xapi1
+    --with-iface --if-exists del-port bond0
+    --fake-iface add-bond xapi1 bond0 eth0 eth1
+    br-set-external-id xapi1 xs-network-uuids 99be2da4-6c33-6f8e-49ea-3bc592fe3c85;45cbbb43-113d-a712-3231-c6463f253cef
+    --if-exists del-br xapi2
+    --may-exist add-br xapi2 xapi1 4
+    br-set-external-id xapi2 xs-network-uuids 99be2da4-6c33-6f8e-49ea-3bc592fe3c85;45cbbb43-113d-a712-3231-c6463f253cef
+/sbin/ifup xapi2
+action_up: bring up bond0
+/sbin/ifconfig bond0 up
+/sbin/update-issue
+Committing changes to /etc/sysconfig/network-scripts/route-xapi2 configuration
+Committing changes to /etc/sysconfig/network-scripts/ifcfg-xapi2 configuration
+]])
+
+AT_CHECK([cat etc/sysconfig/network-scripts/ifcfg-xapi2], [0],
+  [# DO NOT EDIT: This file (ifcfg-xapi2) was autogenerated by interface-reconfigure
+XEMANAGED=yes
+DEVICE=xapi2
+ONBOOT=no
+TYPE=Ethernet
+BOOTPROTO=none
+])
+
+# Simulate interface-reconfigure creating xapi2, so that we can tell
+# interface-reconfigure to take it back down.
+AT_CHECK([configure_netdev xapi2 00:23:20:A4:71:C2 0])
+
+AT_CHECK([IFR_RUN --force xapi2 down], [0], [], [stderr])
+AT_CHECK([IFR_FILTER], [0], [[Force interface xapi2 down
+Loading xapi database cache from /var/xapi/network.dbcache
+Configured for Vswitch datapath
+action_down: xapi2
+/sbin/ifdown xapi2
+deconfigure ipdev xapi2 on xapi1
+deconfigure_bridge: bridge           - xapi2
+action_down: no more masters, bring down slave xapi1
+deconfigure_bridge: bridge           - xapi1
+/usr/bin/ovs-vsctl --timeout=20
+    --with-iface --if-exists del-port xapi2
+    --if-exists del-br xapi2
+    --if-exists del-br xapi1
+]])
+
+AT_CLEANUP
index 4d8e896..f4e80ca 100644 (file)
@@ -52,3 +52,4 @@ m4_include([tests/reconnect.at])
 m4_include([tests/ovsdb.at])
 m4_include([tests/stp.at])
 m4_include([tests/ovs-vsctl.at])
+m4_include([tests/interface-reconfigure.at])