From 48d014bff2b896b3a9d8937d26facad9a54d5a1a Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Mon, 22 Feb 2010 16:28:30 -0800 Subject: [PATCH] tests: Add basic unit tests for interface-reconfigure. 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 --- tests/automake.mk | 3 +- tests/interface-reconfigure.at | 910 +++++++++++++++++++++++++++++++++ tests/testsuite.at | 1 + 3 files changed, 913 insertions(+), 1 deletion(-) create mode 100644 tests/interface-reconfigure.at diff --git a/tests/automake.mk b/tests/automake.mk index 920117f0b..e5cd0ec2f 100644 --- a/tests/automake.mk +++ b/tests/automake.mk @@ -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 index 000000000..446cc7cdc --- /dev/null +++ b/tests/interface-reconfigure.at @@ -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 < 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' + + + + + + False + + + OpaqueRef:86d81bcf-0d25-90b2-cb11-af2007bd586e + + + bd62a141-091f-3909-e334-0334f67ff3be + + + + + + OpaqueRef:NULL + + + -1 + + + + + + + 00:22:19:22:4b:af + + + None + + + + + + eth0 + + + + False + + + + + + OpaqueRef:83e4a934-aeb5-e6f0-a743-d1c7ef7364c5 + + + + + + False + + + OpaqueRef:NULL + + + df8d35c2-cc3a-a623-7065-d987a29feb75 + + + + + + OpaqueRef:NULL + + + -1 + + + + + + + 00:1b:21:29:ce:51 + + + None + + + + + + eth4 + + + + False + + + + + + OpaqueRef:bf51b4d3-7bdc-ea55-ba21-539b150b0531 + + + + + + False + + + OpaqueRef:86d81bcf-0d25-90b2-cb11-af2007bd586e + + + 2f87fc95-5ab4-571a-2487-3f4ac1985663 + + + + + + OpaqueRef:NULL + + + -1 + + + + + + + 00:22:19:22:4b:b1 + + + None + + + + + + eth1 + + + + False + + + + + + OpaqueRef:92b41bf6-aa21-45d3-1c86-c87a5fa98f7d + + + + + + False + + + OpaqueRef:NULL + + + d2dfdab3-daf4-afea-f055-a25a0d24d714 + + + + + + OpaqueRef:4c0eb823-4d96-da1d-e75f-411b85badb0c + + + 4 + + + + + + + fe:ff:ff:ff:ff:ff + + + None + + + + + + bond0 + + + + True + + + + + + OpaqueRef:a63afad0-fb4c-b4a4-3696-cbb3d88afc47 + + + + + + OpaqueRef:e623e1d6-cd02-be8d-820d-49d65c710297 + + + + False + + + OpaqueRef:NULL + + + f4ba396e-a993-a592-5fbc-a1d566afb59e + + + 10.0.0.188 + + + OpaqueRef:NULL + + + -1 + + + 255.0.0.0 + + + + 00:15:17:a0:29:81 + + + Static + + + + + + eth3 + + + + True + + + + + + OpaqueRef:d9189da2-d00b-61ba-8a6d-ac42cc868e32 + + + + + + True + + + OpaqueRef:NULL + + + 646ca9a1-36ad-e2f9-3ecc-1e5622c201c2 + + + 172.18.3.188 + + + OpaqueRef:NULL + + + -1 + + + 255.255.0.0 + + + + 00:15:17:a0:29:80 + + + DHCP + + + + + + eth2 + + + + True + + + + + + OpaqueRef:6e7c6e81-6b5e-b91f-e1f9-9e028567bdfe + + + + + + False + + + OpaqueRef:NULL + + + 3941edd2-865b-8dd8-61f0-199f5e1fa652 + + + + + + OpaqueRef:e623e1d6-cd02-be8d-820d-49d65c710297 + + + 123 + + + + + + + fe:ff:ff:ff:ff:ff + + + None + + + + + + eth3 + + + + True + + + + + + OpaqueRef:240fb5f8-addc-6ea3-f921-2a42b42acd17 + + + + + + OpaqueRef:4c0eb823-4d96-da1d-e75f-411b85badb0c + + + + False + + + OpaqueRef:NULL + + + 6c0327a9-afa3-fc19-6798-a1bfe20095ed + + + + + + OpaqueRef:NULL + + + -1 + + + + + + + 00:22:19:22:4b:af + + + None + + + + + + bond0 + + + + OpaqueRef:86d81bcf-0d25-90b2-cb11-af2007bd586e + + + + True + + + + + + OpaqueRef:ec1e5037-60ea-97e5-54b8-39bdb43c071a + + + + + OpaqueRef:69c904bb-8da9-3424-485b-8b47c2d3ef11 + + + dad825f1-6d81-386e-849c-5589281e53e1 + + + + OpaqueRef:e0955887-571f-17fc-a971-61c1ec7d81b6 + + + OpaqueRef:2956e6c8-487e-981c-85ff-c84796418768 + + + + + + OpaqueRef:69c904bb-8da9-3424-485b-8b47c2d3ef11 + + + 841814da-d0d2-9da4-0b2e-b6143480bbfb + + + OpaqueRef:d2d1e51e-4da9-3163-8f57-bb683429335e + + + + + OpaqueRef:2bc0fab5-523a-4125-609d-212391f5f6fc + + + 399279a2-5ccd-5368-9af3-8622a1f1ac82 + + + OpaqueRef:8e3e37e6-ebb9-087e-0201-f6a56bf554c3 + + + + + + OpaqueRef:d2d1e51e-4da9-3163-8f57-bb683429335e + + + + xapi2 + + + + 99be2da4-6c33-6f8e-49ea-3bc592fe3c85 + + + + + + OpaqueRef:2bc0fab5-523a-4125-609d-212391f5f6fc + + + + xenbr3 + + + + 2902ae1b-8013-897a-b697-0b200ea3aaa5 + + + + + + OpaqueRef:69c904bb-8da9-3424-485b-8b47c2d3ef11 + + + + xapi1 + + + + 45cbbb43-113d-a712-3231-c6463f253cef + + + + + + OpaqueRef:2956e6c8-487e-981c-85ff-c84796418768 + + + + xenbr1 + + + + 99f8771a-645a-26a3-e06c-30a401f1d009 + + + + + + OpaqueRef:205d1186-2cd1-d5e6-45e4-ea1698ea6e15 + + + + xenbr2 + + + + d08c8749-0c8f-9e8d-ce25-fd364661ee99 + + + + + + OpaqueRef:e0955887-571f-17fc-a971-61c1ec7d81b6 + + + + xenbr0 + + + + c9eecb03-560d-61de-b6a8-56dfc766f67e + + + + + + OpaqueRef:eea8da94-a5e6-18fc-34a7-5e9b5a235806 + + + + xenbr4 + + + + d2c14c89-29cc-51d4-7664-633eff02b2ad + + + + + + xapi0 + + + + dc0f0632-c2aa-1b78-2fea-0d3a23c51740 + + + + + + OpaqueRef:8e3e37e6-ebb9-087e-0201-f6a56bf554c3 + + + + xapi3 + + + + db7bdc03-074d-42ae-fc73-9b06de1d57f6 + + + +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]) + +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 + +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 + +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 + +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 diff --git a/tests/testsuite.at b/tests/testsuite.at index 4d8e896a6..f4e80cafe 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -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]) -- 2.43.0