summaryrefslogtreecommitdiff
path: root/tests/ovn-sbctl.at
blob: 3b61d9da584acba5ebafcff8c200cba1106f7347 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
AT_BANNER([ovn-sbctl])

# OVN_SBCTL_TEST_START
m4_define([OVN_SBCTL_TEST_START],
  [dnl Create databases (ovn-nb, ovn-sb).
   AT_KEYWORDS([ovn])
   for daemon in ovn-nb ovn-sb; do
      AT_CHECK([ovsdb-tool create $daemon.db $abs_top_srcdir/${daemon%%-*}/${daemon}.ovsschema])
   done

   dnl Start ovsdb-servers.
   AT_CHECK([ovsdb-server --detach --no-chdir --pidfile=$OVS_RUNDIR/ovnnb_db.pid --unixctl=$OVS_RUNDIR/ovnnb_db.ctl --log-file=$OVS_RUNDIR/ovsdb_nb.log --remote=punix:$OVS_RUNDIR/ovnnb_db.sock ovn-nb.db ], [0], [], [stderr])
   AT_CHECK([ovsdb-server --detach --no-chdir --pidfile=$OVS_RUNDIR/ovnsb_db.pid --unixctl=$OVS_RUNDIR/ovnsb_db.ctl --log-file=$OVS_RUNDIR/ovsdb_sb.log --remote=punix:$OVS_RUNDIR/ovnsb_db.sock ovn-sb.db], [0], [], [stderr])
   on_exit "kill `cat ovnnb_db.pid` `cat ovnsb_db.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])

   dnl Start ovn-northd.
   AT_CHECK([ovn-northd --detach --pidfile --log-file --ovnnb-db=unix:$OVS_RUNDIR/ovnnb_db.sock --ovnsb-db=unix:$OVS_RUNDIR/ovnsb_db.sock], [0], [], [stderr])
   on_exit "kill `cat ovn-northd.pid`"
   AT_CHECK([[sed < stderr '
/vlog|INFO|opened log file/d']])
   AT_CAPTURE_FILE([ovn-northd.log])
])

# OVN_SBCTL_TEST_STOP
m4_define([OVN_SBCTL_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([ovn-northd])
   OVS_APP_EXIT_AND_WAIT_BY_TARGET([$OVS_RUNDIR/ovnnb_db.ctl], [$OVS_RUNDIR/ovnnb_db.pid])
   OVS_APP_EXIT_AND_WAIT_BY_TARGET([$OVS_RUNDIR/ovnsb_db.ctl], [$OVS_RUNDIR/ovnsb_db.pid])])

dnl ---------------------------------------------------------------------

AT_SETUP([ovn-sbctl - chassis commands])
OVN_SBCTL_TEST_START
ovn_init_db ovn-sb

AT_CHECK([ovn-sbctl chassis-add ch0 geneve 1.2.3.4])
AT_CHECK([ovn-sbctl -f csv -d bare --no-headings --columns ip,type list encap | sort],
         [0], [dnl
1.2.3.4,geneve
])

AT_CHECK([ovn-sbctl chassis-add ch1 stt,geneve,vxlan 1.2.3.5])
AT_CHECK([ovn-sbctl -f csv -d bare --no-headings --columns ip,type list encap | sort],
         [0], [dnl
1.2.3.4,geneve
1.2.3.5,geneve
1.2.3.5,stt
1.2.3.5,vxlan
])

AT_CHECK([ovn-sbctl chassis-del ch0])
AT_CHECK([ovn-sbctl -f csv -d bare --no-headings --columns ip,type list encap | sort],
         [0], [dnl
1.2.3.5,geneve
1.2.3.5,stt
1.2.3.5,vxlan
])

OVN_SBCTL_TEST_STOP
as ovn-sb
OVS_APP_EXIT_AND_WAIT([ovsdb-server])
AT_CLEANUP

dnl ---------------------------------------------------------------------

AT_SETUP([ovn-sbctl])
OVN_SBCTL_TEST_START

AT_CHECK([ovn-nbctl ls-add br-test])
AT_CHECK([ovn-nbctl lsp-add br-test vif0])
AT_CHECK([ovn-nbctl lsp-set-addresses vif0 f0:ab:cd:ef:01:02])
AT_CHECK([ovn-sbctl chassis-add ch0 stt 1.2.3.5])
AT_CHECK([ovn-sbctl lsp-bind vif0 ch0])

AT_CHECK([ovn-sbctl show], [0], [dnl
Chassis "ch0"
    Encap stt
        ip: "1.2.3.5"
    Port_Binding "vif0"
])

# adds another 'vif1'
AT_CHECK([ovn-nbctl lsp-add br-test vif1])
AT_CHECK([ovn-nbctl lsp-set-addresses vif1 f0:ab:cd:ef:01:03])
AT_CHECK([ovn-sbctl lsp-bind vif1 ch0])

AT_CHECK([ovn-sbctl show | sed 's/vif[[0-9]]/vif/'], [0], [dnl
Chassis "ch0"
    Encap stt
        ip: "1.2.3.5"
    Port_Binding "vif"
    Port_Binding "vif"
])

# deletes 'vif1'
AT_CHECK([ovn-nbctl lsp-del vif1])

AT_CHECK([ovn-sbctl show], [0], [dnl
Chassis "ch0"
    Encap stt
        ip: "1.2.3.5"
    Port_Binding "vif0"
])

uuid=$(ovn-sbctl --columns=_uuid list Chassis ch0 | cut -d ':' -f2 | tr -d ' ')
AT_CHECK_UNQUOTED([ovn-sbctl --columns=logical_port,mac,chassis list Port_Binding], [0], [dnl
logical_port        : "vif0"
mac                 : [["f0:ab:cd:ef:01:02"]]
chassis             : ${uuid}
])

# test the passing down of logical port type and options.
AT_CHECK([ovn-nbctl lsp-add br-test vtep0])
AT_CHECK([ovn-nbctl lsp-set-type vtep0 vtep])
AT_CHECK([ovn-nbctl lsp-set-options vtep0 vtep_physical_switch=p0 vtep_logical_switch=l0])

OVS_WAIT_UNTIL([test -n "`ovn-sbctl --columns=logical_port list Port_Binding | grep vtep0`" ])
AT_CHECK_UNQUOTED([ovn-sbctl --columns=logical_port,mac,type,options list Port_Binding vtep0], [0], [dnl
logical_port        : "vtep0"
mac                 : [[]]
type                : vtep
options             : {vtep_logical_switch="l0", vtep_physical_switch="p0"}
])

OVN_SBCTL_TEST_STOP
AT_CLEANUP