AT_BANNER([ovn-nbctl]) # OVN_NBCTL_TEST_START m4_define([OVN_NBCTL_TEST_START], [dnl Create ovn-nb database. AT_KEYWORDS([ovn]) AT_CHECK([ovsdb-tool create ovn-nb.db $abs_top_srcdir/ovn/ovn-nb.ovsschema]) dnl Start ovsdb-server. AT_CHECK([ovsdb-server --detach --no-chdir --pidfile --log-file --remote=punix:$OVS_RUNDIR/ovnnb_db.sock ovn-nb.db], [0], [], [stderr]) on_exit "kill `cat ovsdb-server.pid`" AT_CHECK([[sed < stderr ' /vlog|INFO|opened log file/d /ovsdb_server|INFO|ovsdb-server (Open vSwitch)/d']]) AT_CAPTURE_FILE([ovsdb-server.log]) ]) # OVN_NBCTL_TEST_STOP m4_define([OVN_NBCTL_TEST_STOP], [# removes all 'Broken pipe' warning logs from ovsdb-server.log. this is in # that *ctl command (e.g. ovn-nbctl) exits right after committing the change # to database. however, in reaction, some daemon (e.g. ovn-controller-vtep) # may immediately update the database. this later update may cause database # sending update back to *ctl command if *ctl has not proceeded to exit yet. # and if *ctl command exits before database calling send, the send from # database will fail with 'Broken pipe' error. AT_CHECK([check_logs "$1 /Broken pipe/d"]) OVS_APP_EXIT_AND_WAIT([ovsdb-server])]) AT_SETUP([ovn-nbctl - basic lswitch commands]) OVN_NBCTL_TEST_START AT_CHECK([ovn-nbctl lswitch-add ls0]) AT_CHECK([ovn-nbctl lswitch-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl <0> (ls0) ]) AT_CHECK([ovn-nbctl lswitch-add ls1]) AT_CHECK([ovn-nbctl lswitch-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl <0> (ls0) <1> (ls1) ]) AT_CHECK([ovn-nbctl lswitch-del ls0]) AT_CHECK([ovn-nbctl lswitch-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl <0> (ls1) ]) AT_CHECK([ovn-nbctl show ls0]) AT_CHECK([ovn-nbctl lswitch-add ls0]) AT_CHECK([ovn-nbctl show ls0 | ${PERL} $srcdir/uuidfilt.pl], [0], [ lswitch <0> (ls0) ]) AT_CHECK([ovn-nbctl lswitch-add ls0], [1], [], [ovn-nbctl: ls0: an lswitch with this name already exists ]) AT_CHECK([ovn-nbctl --may-exist lswitch-add ls0]) AT_CHECK([ovn-nbctl show ls0 | ${PERL} $srcdir/uuidfilt.pl], [0], [ lswitch <0> (ls0) ]) AT_CHECK([ovn-nbctl --add-duplicate lswitch-add ls0]) AT_CHECK([ovn-nbctl --may-exist --add-duplicate lswitch-add ls0], [1], [], [ovn-nbctl: --may-exist and --add-duplicate may not be used together ]) AT_CHECK([ovn-nbctl lswitch-del ls0], [1], [], [ovn-nbctl: Multiple logical switches named 'ls0'. Use a UUID. ]) AT_CHECK([ovn-nbctl lswitch-del ls2], [1], [], [ovn-nbctl: ls2: lswitch name not found ]) AT_CHECK([ovn-nbctl --if-exists lswitch-del ls2]) AT_CHECK([ovn-nbctl lswitch-add]) AT_CHECK([ovn-nbctl lswitch-add]) AT_CHECK([ovn-nbctl --add-duplicate lswitch-add], [1], [], [ovn-nbctl: --add-duplicate requires specifying a name ]) AT_CHECK([ovn-nbctl --may-exist lswitch-add], [1], [], [ovn-nbctl: --may-exist requires specifying a name ]) OVN_NBCTL_TEST_STOP AT_CLEANUP dnl --------------------------------------------------------------------- AT_SETUP([ovn-nbctl - basic lport commands]) OVN_NBCTL_TEST_START AT_CHECK([ovn-nbctl lswitch-add ls0]) AT_CHECK([ovn-nbctl lport-add ls0 lp0]) AT_CHECK([ovn-nbctl lport-add ls0 lp0], [1], [], [ovn-nbctl: lp0: an lport with this name already exists ]) AT_CHECK([ovn-nbctl --may-exist lport-add ls0 lp0]) AT_CHECK([ovn-nbctl lport-list ls0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl <0> (lp0) ]) AT_CHECK([ovn-nbctl lport-add ls0 lp1]) AT_CHECK([ovn-nbctl lport-list ls0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl <0> (lp0) <1> (lp1) ]) AT_CHECK([ovn-nbctl lswitch-add ls1]) AT_CHECK([ovn-nbctl lport-add ls0 lp1], [1], [], [ovn-nbctl: lp1: an lport with this name already exists ]) AT_CHECK([ovn-nbctl --may-exist lport-add ls1 lp1], [1], [], [ovn-nbctl: lp1: lport already exists but in lswitch ls0 ]) AT_CHECK([ovn-nbctl --may-exist lport-add ls0 lp1 lp0 5], [1], [], [ovn-nbctl: lp1: lport already exists but has no parent ]) AT_CHECK([ovn-nbctl lport-del lp1]) AT_CHECK([ovn-nbctl lport-list ls0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl <0> (lp0) ]) AT_CHECK([ovn-nbctl lport-add ls0 lp2 lp3 5]) AT_CHECK([ovn-nbctl --may-exist lport-add ls0 lp2 lp4 5], [1], [], [ovn-nbctl: lp2: lport already exists with different parent lp3 ]) AT_CHECK([ovn-nbctl --may-exist lport-add ls0 lp2 lp3 10], [1], [], [ovn-nbctl: lp2: lport already exists with different tag 5 ]) AT_CHECK([ovn-nbctl clear Logical_Port lp2 tag]) AT_CHECK([ovn-nbctl --may-exist lport-add ls0 lp2 lp3 5], [1], [], [ovn-nbctl: lp2: lport already exists but has no tag ]) OVN_NBCTL_TEST_STOP AT_CLEANUP dnl --------------------------------------------------------------------- AT_SETUP([ovn-nbctl - lport addresses]) OVN_NBCTL_TEST_START AT_CHECK([ovn-nbctl lswitch-add ls0]) AT_CHECK([ovn-nbctl lport-add ls0 lp0]) AT_CHECK([ovn-nbctl lport-get-addresses lp0], [0], [dnl ]) AT_CHECK([ovn-nbctl lport-set-addresses lp0 00:11:22:33:44:55 unknown]) AT_CHECK([ovn-nbctl lport-get-addresses lp0], [0], [dnl 00:11:22:33:44:55 unknown ]) AT_CHECK([ovn-nbctl lport-set-addresses lp0]) AT_CHECK([ovn-nbctl lport-get-addresses lp0], [0], [dnl ]) OVN_NBCTL_TEST_STOP AT_CLEANUP dnl --------------------------------------------------------------------- AT_SETUP([ovn-nbctl - port security]) OVN_NBCTL_TEST_START AT_CHECK([ovn-nbctl lswitch-add ls0]) AT_CHECK([ovn-nbctl lport-add ls0 lp0]) AT_CHECK([ovn-nbctl lport-get-addresses lp0], [0], [dnl ]) AT_CHECK([ovn-nbctl lport-set-port-security lp0 aa:bb:cc:dd:ee:ff 00:11:22:33:44:55]) AT_CHECK([ovn-nbctl lport-get-port-security lp0], [0], [dnl 00:11:22:33:44:55 aa:bb:cc:dd:ee:ff ]) AT_CHECK([ovn-nbctl lport-set-port-security lp0]) AT_CHECK([ovn-nbctl lport-get-port-security lp0], [0], [dnl ]) OVN_NBCTL_TEST_STOP AT_CLEANUP dnl --------------------------------------------------------------------- AT_SETUP([ovn-nbctl - ACLs]) OVN_NBCTL_TEST_START AT_CHECK([ovn-nbctl lswitch-add ls0]) AT_CHECK([ovn-nbctl --log acl-add ls0 from-lport 600 udp drop]) AT_CHECK([ovn-nbctl --log acl-add ls0 to-lport 500 udp drop]) AT_CHECK([ovn-nbctl acl-add ls0 from-lport 400 tcp drop]) AT_CHECK([ovn-nbctl acl-add ls0 to-lport 300 tcp drop]) AT_CHECK([ovn-nbctl acl-add ls0 from-lport 200 ip drop]) AT_CHECK([ovn-nbctl acl-add ls0 to-lport 100 ip drop]) AT_CHECK([ovn-nbctl acl-list ls0], [0], [dnl from-lport 600 (udp) drop log from-lport 400 (tcp) drop from-lport 200 (ip) drop to-lport 500 (udp) drop log to-lport 300 (tcp) drop to-lport 100 (ip) drop ]) dnl Delete in one direction. AT_CHECK([ovn-nbctl acl-del ls0 to-lport]) AT_CHECK([ovn-nbctl acl-list ls0], [0], [dnl from-lport 600 (udp) drop log from-lport 400 (tcp) drop from-lport 200 (ip) drop ]) dnl Delete all ACLs. AT_CHECK([ovn-nbctl acl-del ls0]) AT_CHECK([ovn-nbctl acl-list ls0], [0], [dnl ]) AT_CHECK([ovn-nbctl acl-add ls0 from-lport 600 udp drop]) AT_CHECK([ovn-nbctl acl-add ls0 from-lport 400 tcp drop]) AT_CHECK([ovn-nbctl acl-add ls0 from-lport 200 ip drop]) dnl Delete a single flow. AT_CHECK([ovn-nbctl acl-del ls0 from-lport 400 tcp]) AT_CHECK([ovn-nbctl acl-list ls0], [0], [dnl from-lport 600 (udp) drop from-lport 200 (ip) drop ]) OVN_NBCTL_TEST_STOP AT_CLEANUP dnl --------------------------------------------------------------------- AT_SETUP([ovn-nbctl - basic logical router commands]) OVN_NBCTL_TEST_START AT_CHECK([ovn-nbctl lr-add lr0]) AT_CHECK([ovn-nbctl lr-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl <0> (lr0) ]) AT_CHECK([ovn-nbctl lr-add lr1]) AT_CHECK([ovn-nbctl lr-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl <0> (lr0) <1> (lr1) ]) AT_CHECK([ovn-nbctl lr-del lr0]) AT_CHECK([ovn-nbctl lr-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl <0> (lr1) ]) AT_CHECK([ovn-nbctl show lr0]) AT_CHECK([ovn-nbctl lr-add lr0]) AT_CHECK([ovn-nbctl show lr0 | ${PERL} $srcdir/uuidfilt.pl], [0], [ router <0> (lr0) ]) AT_CHECK([ovn-nbctl lr-add lr0], [1], [], [ovn-nbctl: lr0: a router with this name already exists ]) AT_CHECK([ovn-nbctl --may-exist lr-add lr0]) AT_CHECK([ovn-nbctl show lr0 | ${PERL} $srcdir/uuidfilt.pl], [0], [ router <0> (lr0) ]) AT_CHECK([ovn-nbctl --add-duplicate lr-add lr0]) AT_CHECK([ovn-nbctl --may-exist --add-duplicate lr-add lr0], [1], [], [ovn-nbctl: --may-exist and --add-duplicate may not be used together ]) AT_CHECK([ovn-nbctl lr-del lr0], [1], [], [ovn-nbctl: Multiple logical routers named 'lr0'. Use a UUID. ]) AT_CHECK([ovn-nbctl lr-del lr2], [1], [], [ovn-nbctl: lr2: router name not found ]) AT_CHECK([ovn-nbctl --if-exists lr-del lr2]) AT_CHECK([ovn-nbctl lr-add]) AT_CHECK([ovn-nbctl lr-add]) AT_CHECK([ovn-nbctl --add-duplicate lr-add], [1], [], [ovn-nbctl: --add-duplicate requires specifying a name ]) AT_CHECK([ovn-nbctl --may-exist lr-add], [1], [], [ovn-nbctl: --may-exist requires specifying a name ]) OVN_NBCTL_TEST_STOP AT_CLEANUP dnl --------------------------------------------------------------------- AT_SETUP([ovn-nbctl - basic lrport commands]) OVN_NBCTL_TEST_START AT_CHECK([ovn-nbctl lr-add lr0]) AT_CHECK([ovn-nbctl lrport-add lr0 lrp0]) AT_CHECK([ovn-nbctl lrport-add lr0 lrp0], [1], [], [ovn-nbctl: lrp0: an lrport with this name already exists ]) AT_CHECK([ovn-nbctl --may-exist lrport-add lr0 lrp0]) AT_CHECK([ovn-nbctl lrport-list lr0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl <0> (lrp0) ]) AT_CHECK([ovn-nbctl lrport-add lr0 lrp1]) AT_CHECK([ovn-nbctl lrport-list lr0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl <0> (lrp0) <1> (lrp1) ]) AT_CHECK([ovn-nbctl lr-add lr1]) AT_CHECK([ovn-nbctl lrport-add lr0 lrp1], [1], [], [ovn-nbctl: lrp1: an lrport with this name already exists ]) AT_CHECK([ovn-nbctl --may-exist lrport-add lr1 lrp1], [1], [], [ovn-nbctl: lrp1: lrport already exists but in router lr0 ]) AT_CHECK([ovn-nbctl lrport-del lrp1]) AT_CHECK([ovn-nbctl lrport-list lr0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl <0> (lrp0) ]) OVN_NBCTL_TEST_STOP AT_CLEANUP dnl --------------------------------------------------------------------- AT_SETUP([ovn-nbctl - lrport addresses]) OVN_NBCTL_TEST_START AT_CHECK([ovn-nbctl lr-add lr0]) AT_CHECK([ovn-nbctl lrport-add lr0 lrp0]) AT_CHECK([ovn-nbctl lrport-get-mac-address lrp0], [0], [ ]) AT_CHECK([ovn-nbctl lrport-set-mac-address lrp0 00:11:22:33:44:55]) AT_CHECK([ovn-nbctl lrport-get-mac-address lrp0], [0], [00:11:22:33:44:55 ]) AT_CHECK([ovn-nbctl lrport-set-mac-address lrp0]) AT_CHECK([ovn-nbctl lrport-get-mac-address lrp0], [0], [ ]) OVN_NBCTL_TEST_STOP AT_CLEANUP dnl --------------------------------------------------------------------- AT_SETUP([ovn-nbctl - lrport enable and disable]) OVN_NBCTL_TEST_START AT_CHECK([ovn-nbctl lr-add lr0]) AT_CHECK([ovn-nbctl lrport-add lr0 lrp0]) AT_CHECK([ovn-nbctl lrport-get-enabled lrp0], [0], [enabled ]) AT_CHECK([ovn-nbctl lrport-set-enabled lrp0 disabled]) AT_CHECK([ovn-nbctl lrport-get-enabled lrp0], [0], [disabled ]) AT_CHECK([ovn-nbctl lrport-set-enabled lrp0 enabled]) AT_CHECK([ovn-nbctl lrport-get-enabled lrp0], [0], [enabled ]) AT_CHECK([ovn-nbctl lrport-set-enabled lrp0 xyzzy], [1], [], [ovn-nbctl: xyzzy: state must be "enabled" or "disabled" ]) OVN_NBCTL_TEST_STOP AT_CLEANUP