]> git.proxmox.com Git - ovs.git/blame - tests/system-dpdk.at
Merge tag 'v2.15.0' into master-dfsg
[ovs.git] / tests / system-dpdk.at
CommitLineData
c92ccb42
BS
1m4_define([CONFIGURE_VETH_OFFLOADS],
2 [AT_CHECK([ethtool -K $1 tx off], [0], [ignore], [ignore])])
3
a7e4849e
MR
4AT_BANNER([OVS-DPDK unit tests])
5
6dnl --------------------------------------------------------------------------
c92ccb42 7dnl Check if EAL init is successful
49df3c0f 8AT_SETUP([OVS-DPDK - EAL init])
a7e4849e 9AT_KEYWORDS([dpdk])
a01786b4 10OVS_DPDK_PRE_CHECK()
a7e4849e
MR
11OVS_DPDK_START()
12AT_CHECK([grep "DPDK Enabled - initializing..." ovs-vswitchd.log], [], [stdout])
13AT_CHECK([grep "EAL" ovs-vswitchd.log], [], [stdout])
14AT_CHECK([grep "DPDK Enabled - initialized" ovs-vswitchd.log], [], [stdout])
a01786b4
AC
15OVS_VSWITCHD_STOP(["/Global register is changed during/d
16/EAL: Invalid NUMA socket, default to 0/d
b042ea2a 17/EAL: WARNING: cpu flags constant_tsc=yes nonstop_tsc=no -> using unreliable clock cycles !/d
a01786b4 18/EAL: No free hugepages reported in hugepages-1048576kB/d"])
a7e4849e
MR
19AT_CLEANUP
20dnl --------------------------------------------------------------------------
21
22
23
24dnl --------------------------------------------------------------------------
25dnl Add standard DPDK PHY port
49df3c0f 26AT_SETUP([OVS-DPDK - add standard DPDK port])
a7e4849e
MR
27AT_KEYWORDS([dpdk])
28
a01786b4 29OVS_DPDK_PRE_PHY_SKIP()
a7e4849e
MR
30OVS_DPDK_START()
31
32dnl Add userspace bridge and attach it to OVS
33AT_CHECK([ovs-vsctl add-br br10 -- set bridge br10 datapath_type=netdev])
34AT_CHECK([ovs-vsctl add-port br10 phy0 -- set Interface phy0 type=dpdk options:dpdk-devargs=$(cat PCI_ADDR)], [], [stdout], [stderr])
35AT_CHECK([ovs-vsctl show], [], [stdout])
36sleep 2
37
38dnl Clean up
39AT_CHECK([ovs-vsctl del-port br10 phy0], [], [stdout], [stderr])
40OVS_VSWITCHD_STOP("/does not exist. The Open vSwitch kernel module is probably not loaded./d
41/Failed to enable flow control/d
cf8f6f81 42/Global register is changed during/d
b042ea2a 43/EAL: WARNING: cpu flags constant_tsc=yes nonstop_tsc=no -> using unreliable clock cycles !/d
cf8f6f81
TL
44/EAL: No free hugepages reported in hugepages-1048576kB/d
45")
a7e4849e
MR
46AT_CLEANUP
47dnl --------------------------------------------------------------------------
48
49
50
51dnl --------------------------------------------------------------------------
52dnl Add vhost-user-client port
49df3c0f 53AT_SETUP([OVS-DPDK - add vhost-user-client port])
a7e4849e 54AT_KEYWORDS([dpdk])
f9e1eba9 55OVS_DPDK_PRE_CHECK()
a7e4849e
MR
56OVS_DPDK_START()
57
58dnl Add userspace bridge and attach it to OVS
59AT_CHECK([ovs-vsctl add-br br10 -- set bridge br10 datapath_type=netdev])
7d897046 60AT_CHECK([ovs-vsctl add-port br10 dpdkvhostuserclient0 -- set Interface dpdkvhostuserclient0 type=dpdkvhostuserclient options:vhost-server-path=$OVS_RUNDIR/dpdkvhostclient0], [], [stdout], [stderr])
a7e4849e
MR
61AT_CHECK([ovs-vsctl show], [], [stdout])
62sleep 2
63
64dnl Parse log file
65AT_CHECK([grep "VHOST_CONFIG: vhost-user client: socket created" ovs-vswitchd.log], [], [stdout])
66AT_CHECK([grep "vHost User device 'dpdkvhostuserclient0' created in 'client' mode, using client socket" ovs-vswitchd.log], [], [stdout])
7d897046 67AT_CHECK([grep "VHOST_CONFIG: $OVS_RUNDIR/dpdkvhostclient0: reconnecting..." ovs-vswitchd.log], [], [stdout])
a7e4849e
MR
68
69dnl Clean up
70AT_CHECK([ovs-vsctl del-port br10 dpdkvhostuserclient0], [], [stdout], [stderr])
322e49a6
AC
71OVS_VSWITCHD_STOP(["\@does not exist. The Open vSwitch kernel module is probably not loaded.@d
72\@Failed to enable flow control@d
7d897046 73\@VHOST_CONFIG: failed to connect to $OVS_RUNDIR/dpdkvhostclient0: No such file or directory@d
322e49a6
AC
74\@Global register is changed during@d
75\@EAL: Invalid NUMA socket, default to 0@d
76\@EAL: WARNING: cpu flags constant_tsc=yes nonstop_tsc=no -> using unreliable clock cycles !@d
77\@EAL: No free hugepages reported in hugepages-1048576kB@d"])
a7e4849e
MR
78AT_CLEANUP
79dnl --------------------------------------------------------------------------
c92ccb42
BS
80
81
82
83dnl --------------------------------------------------------------------------
84dnl Ping vhost-user port
49df3c0f 85AT_SETUP([OVS-DPDK - ping vhost-user ports])
c92ccb42
BS
86AT_KEYWORDS([dpdk])
87OVS_DPDK_PRE_CHECK()
6899c94c 88AT_SKIP_IF([! which dpdk-testpmd >/dev/null 2>/dev/null])
c92ccb42
BS
89OVS_DPDK_START()
90
91dnl Find number of sockets
92AT_CHECK([lscpu], [], [stdout])
93AT_CHECK([cat stdout | grep "NUMA node(s)" | awk '{c=1; while (c++<$(3)) {printf "512,"}; print "512"}' > NUMA_NODE])
94
95dnl Add userspace bridge and attach it to OVS
96AT_CHECK([ovs-vsctl add-br br10 -- set bridge br10 datapath_type=netdev])
97AT_CHECK([ovs-vsctl add-port br10 dpdkvhostuser0 -- set Interface dpdkvhostuser0 \
98 type=dpdkvhostuser], [],
99 [stdout], [stderr])
100AT_CHECK([ovs-vsctl show], [], [stdout])
101
102dnl Parse log file
103AT_CHECK([grep "VHOST_CONFIG: vhost-user server: socket created" \
104 ovs-vswitchd.log], [], [stdout])
105AT_CHECK([grep "Socket $OVS_RUNDIR/dpdkvhostuser0 created for vhost-user port dpdkvhostuser0" \
106 ovs-vswitchd.log], [], [stdout])
107AT_CHECK([grep "VHOST_CONFIG: bind to $OVS_RUNDIR/dpdkvhostuser0" ovs-vswitchd.log], [],
108 [stdout])
109
110dnl Set up namespaces
111ADD_NAMESPACES(ns1, ns2)
112
113dnl Add veth device
114ADD_VETH(tap1, ns2, br10, "172.31.110.12/24")
115
116dnl Execute testpmd in background
117on_exit "pkill -f -x -9 'tail -f /dev/null'"
6899c94c 118tail -f /dev/null | dpdk-testpmd --socket-mem="$(cat NUMA_NODE)" --no-pci\
c92ccb42
BS
119 --vdev="net_virtio_user,path=$OVS_RUNDIR/dpdkvhostuser0" \
120 --vdev="net_tap0,iface=tap0" --file-prefix page0 \
121 --single-file-segments -- -a >$OVS_RUNDIR/testpmd-dpdkvhostuser0.log 2>&1 &
122
123dnl Give settling time to the testpmd processes - NOTE: this is bad form.
124sleep 10
125
126dnl Move the tap devices to the namespaces
127AT_CHECK([ps aux | grep testpmd], [], [stdout], [stderr])
128AT_CHECK([ip link show], [], [stdout], [stderr])
129AT_CHECK([ip link set tap0 netns ns1], [], [stdout], [stderr])
130
131AT_CHECK([ip netns exec ns1 ip link show], [], [stdout], [stderr])
132AT_CHECK([ip netns exec ns1 ip link show | grep tap0], [], [stdout], [stderr])
133AT_CHECK([ip netns exec ns1 ip link set tap0 up], [], [stdout], [stderr])
134AT_CHECK([ip netns exec ns1 ip addr add 172.31.110.11/24 dev tap0], [],
135 [stdout], [stderr])
136
137AT_CHECK([ip netns exec ns1 ip link show], [], [stdout], [stderr])
138AT_CHECK([ip netns exec ns2 ip link show], [], [stdout], [stderr])
139AT_CHECK([ip netns exec ns1 ping -c 4 -I tap0 172.31.110.12], [], [stdout],
140 [stderr])
141
142dnl Clean up the testpmd now
143pkill -f -x -9 'tail -f /dev/null'
144
145dnl Clean up
146AT_CHECK([ovs-vsctl del-port br10 dpdkvhostuser0], [], [stdout], [stderr])
147OVS_VSWITCHD_STOP(["\@does not exist. The Open vSwitch kernel module is probably not loaded.@d
148\@Failed to enable flow control@d
149\@VHOST_CONFIG: recvmsg failed@d
150\@VHOST_CONFIG: failed to connect to $OVS_RUNDIR/dpdkvhostuser0: No such file or directory@d
151\@Global register is changed during@d
152\@dpdkvhostuser ports are considered deprecated; please migrate to dpdkvhostuserclient ports.@d
153\@failed to enumerate system datapaths: No such file or directory@d
154\@EAL: Invalid NUMA socket, default to 0@d
155\@EAL: WARNING: cpu flags constant_tsc=yes nonstop_tsc=no -> using unreliable clock cycles !@d
156\@EAL: No free hugepages reported in hugepages-1048576kB@d"])
157AT_CLEANUP
158dnl --------------------------------------------------------------------------
159
160dnl --------------------------------------------------------------------------
161dnl Ping vhost-user-client port
49df3c0f 162AT_SETUP([OVS-DPDK - ping vhost-user-client ports])
c92ccb42
BS
163AT_KEYWORDS([dpdk])
164OVS_DPDK_PRE_CHECK()
6899c94c 165AT_SKIP_IF([! which dpdk-testpmd >/dev/null 2>/dev/null])
c92ccb42
BS
166OVS_DPDK_START()
167
168dnl Find number of sockets
169AT_CHECK([lscpu], [], [stdout])
170AT_CHECK([cat stdout | grep "NUMA node(s)" | awk '{c=1; while (c++<$(3)) {printf "512,"}; print "512"}' > NUMA_NODE])
171
172dnl Add userspace bridge and attach it to OVS
173AT_CHECK([ovs-vsctl add-br br10 -- set bridge br10 datapath_type=netdev])
174AT_CHECK([ovs-vsctl add-port br10 dpdkvhostuserclient0 -- set Interface \
175 dpdkvhostuserclient0 \
176 type=dpdkvhostuserclient \
177 options:vhost-server-path=$OVS_RUNDIR/dpdkvhostclient0], [],
178 [stdout], [stderr])
179AT_CHECK([ovs-vsctl show], [], [stdout])
180
181dnl Parse log file
182AT_CHECK([grep "VHOST_CONFIG: vhost-user client: socket created" ovs-vswitchd.log], [], [stdout])
183AT_CHECK([grep "vHost User device 'dpdkvhostuserclient0' created in 'client' mode, using client socket" ovs-vswitchd.log], [], [stdout])
184AT_CHECK([grep "VHOST_CONFIG: $OVS_RUNDIR/dpdkvhostclient0: reconnecting..." ovs-vswitchd.log], [], [stdout])
185
186dnl Set up namespaces
187ADD_NAMESPACES(ns1, ns2)
188
189dnl Add veth device
190ADD_VETH(tap1, ns2, br10, "172.31.110.12/24")
191
192dnl Execute testpmd in background
193on_exit "pkill -f -x -9 'tail -f /dev/null'"
6899c94c 194tail -f /dev/null | dpdk-testpmd --socket-mem="$(cat NUMA_NODE)" --no-pci\
c92ccb42
BS
195 --vdev="net_virtio_user,path=$OVS_RUNDIR/dpdkvhostclient0,server=1" \
196 --vdev="net_tap0,iface=tap0" --file-prefix page0 \
197 --single-file-segments -- -a >$OVS_RUNDIR/testpmd-dpdkvhostuserclient0.log 2>&1 &
198
199dnl Give settling time to the testpmd processes - NOTE: this is bad form.
200sleep 10
201
202dnl Move the tap devices to the namespaces
203AT_CHECK([ps aux | grep testpmd], [], [stdout], [stderr])
204AT_CHECK([ip link show], [], [stdout], [stderr])
205AT_CHECK([ip link set tap0 netns ns1], [], [stdout], [stderr])
206
207AT_CHECK([ip netns exec ns1 ip link show], [], [stdout], [stderr])
208AT_CHECK([ip netns exec ns1 ip link show | grep tap0], [], [stdout], [stderr])
209AT_CHECK([ip netns exec ns1 ip link set tap0 up], [], [stdout], [stderr])
210AT_CHECK([ip netns exec ns1 ip addr add 172.31.110.11/24 dev tap0], [],
211 [stdout], [stderr])
212
213AT_CHECK([ip netns exec ns1 ip link show], [], [stdout], [stderr])
214AT_CHECK([ip netns exec ns2 ip link show], [], [stdout], [stderr])
215AT_CHECK([ip netns exec ns1 ping -c 4 -I tap0 172.31.110.12], [], [stdout],
216 [stderr])
217
218dnl Clean up the testpmd now
219pkill -f -x -9 'tail -f /dev/null'
220
221dnl Clean up
222AT_CHECK([ovs-vsctl del-port br10 dpdkvhostuserclient0], [], [stdout], [stderr])
223OVS_VSWITCHD_STOP(["\@does not exist. The Open vSwitch kernel module is probably not loaded.@d
224\@Failed to enable flow control@d
225\@VHOST_CONFIG: recvmsg failed@d
226\@VHOST_CONFIG: failed to connect to $OVS_RUNDIR/dpdkvhostclient0: No such file or directory@d
227\@Global register is changed during@d
228\@dpdkvhostuser ports are considered deprecated; please migrate to dpdkvhostuserclient ports.@d
229\@failed to enumerate system datapaths: No such file or directory@d
230\@EAL: Invalid NUMA socket, default to 0@d
231\@EAL: WARNING: cpu flags constant_tsc=yes nonstop_tsc=no -> using unreliable clock cycles !@d
232\@EAL: No free hugepages reported in hugepages-1048576kB@d"])
233AT_CLEANUP
234dnl --------------------------------------------------------------------------