]> git.proxmox.com Git - mirror_ovs.git/blame - tests/run-ryu
conntrack: Support zone limits.
[mirror_ovs.git] / tests / run-ryu
CommitLineData
e3c7ed29
BP
1#! /bin/sh
2
3run () {
4 echo "$@"
5 "$@" || exit 1
6}
7
8# Put built tools early in $PATH.
9builddir=`pwd`
10if test ! -e vswitchd/ovs-vswitchd; then
11 echo >&2 'not in build directory, please change directory or run via \"make check-ryu'
12 exit 1
13fi
14PATH=$builddir/ovsdb:$builddir/vswitchd:$builddir/utilities:$PATH; export PATH
15
16# Find srcdir.
17case $srcdir in
18 '') srcdir=$builddir ;;
19 /*) ;;
20 *) srcdir=`pwd`/$srcdir ;;
21esac
3c8a3b31 22if test ! -e "$srcdir"/README.rst; then
e3c7ed29
BP
23 echo >&2 'source directory not found, please set $srcdir or run via \"make check-ryu'
24 exit 1
25fi
26
27# Make sure ryu is available.
28if test X"$RYUDIR" = X; then
29 RYUDIR=$srcdir/../ryu
30fi
31PYTHONPATH=$RYUDIR:$PYTHONPATH; export PYTHONPATH
32PATH=$RYUDIR/bin:$PATH; export PATH
33if (ryu-manager --version) >/dev/null 2>&1; then
34 :
35else
36 echo >&2 '"ryu-manager" binary not found or cannot be run, please set $RYUDIR'
37 exit 1
38fi
39
40# Create sandbox.
41rm -rf sandbox
42mkdir sandbox
43cd sandbox
44sandbox=`pwd`
45
46# Set up environment for OVS programs to sandbox themselves.
47OVS_RUNDIR=$sandbox; export OVS_RUNDIR
48OVS_LOGDIR=$sandbox; export OVS_LOGDIR
49OVS_DBDIR=$sandbox; export OVS_DBDIR
50OVS_SYSCONFDIR=$sandbox; export OVS_SYSCONFDIR
51
52for signal in 0 1 2 3 13 14 15; do
53 trap 'kill `cat $sandbox/*.pid`; trap - $signal; kill -$signal $$' $signal
54done
55
56# Create database and start ovsdb-server.
57touch .conf.db.~lock~
58rm -f conf.db
59run ovsdb-tool create conf.db "$srcdir"/vswitchd/vswitch.ovsschema
60run ovsdb-server --detach --no-chdir --pidfile -vconsole:off --log-file \
61 --remote=punix:"$sandbox"/db.sock
62
63# Start ovs-vswitchd.
64run ovs-vswitchd --detach --no-chdir --pidfile -vconsole:off --log-file \
65 --enable-dummy --disable-system -vvconn -vnetdev_dummy
66
67# Add bridges for Ryu to use, and configure them to connect to Ryu.
68for config in \
34799871
SH
69 'br0 0000000000000001 a b pstream=punix' \
70 'br1 0000000000000002 c d stream=unix'
e3c7ed29
BP
71do
72 set $config
34799871 73 bridge=$1 dpid=$2 port1=$3 port2=$4 stream_mode=$5
e3c7ed29
BP
74 run ovs-vsctl --no-wait \
75 -- add-br $bridge \
76 -- set bridge $bridge \
77 datapath-type=dummy fail-mode=secure \
78 protocols='[OpenFlow10,OpenFlow11,OpenFlow12,OpenFlow13]' \
79 other-config:datapath-id=$dpid \
d4763d1d 80 -- set-controller $bridge tcp:127.0.0.1:6653 \
e3c7ed29
BP
81 -- set controller $bridge connection-mode=out-of-band \
82 max-backoff=1000 \
83 -- add-port $bridge $port1 \
5a0e4aec 84 -- set interface $port1 ofport_request=1 type=dummy \
34799871 85 options:${stream_mode}:"$sandbox"/p1.sock \
e3c7ed29 86 -- add-port $bridge $port2 \
34799871
SH
87 -- set interface $port2 ofport_request=2 type=dummy \
88 options:${stream_mode}:"$sandbox"/p2.sock
e3c7ed29
BP
89done
90
e3c7ed29 91logs=
95a93307
YT
92
93run_app() {
94 app=$1
e3c7ed29
BP
95 cat <<EOF
96
97--- Running $app...
98
99EOF
100 logfile=$sandbox/`echo $app | sed 's,/,.,g'`.log
101 logs="$logs
17b9089a 102 $logfile"
f097013a 103 ryu-manager --ofp-tcp-listen-port=6653 "$app" --log-file="$logfile" & pid=$!
e3c7ed29
BP
104 echo $pid > "$sandbox/ryu.pid"
105 i=0
106 while sleep 1; do
107 if grep -q -E 'TEST_FINISHED|Test end|uncaught exception' "$logfile" \
108 >/dev/null
109 then
110 break
111 fi
112
113 i=`expr $i + 1`
114 if test $i -ge 600; then
115 echo "--- TIMEOUT after $i seconds"
116 break
117 fi
118 done
119 kill $pid
120 wait
95a93307
YT
121}
122
123# Run Ryu.
124cd $RYUDIR
125for app in \
126 ryu/tests/switch/tester.py
127do
128 run_app $app
129done
130
131# tweak OVS setup because the following tests assume single bridge.
132run ovs-vsctl -- del-br br1
133
134for app in \
135 ryu/tests/integrated/test_add_flow_v10.py \
136 ryu/tests/integrated/test_request_reply_v12.py \
137 ryu/tests/integrated/test_add_flow_v12_actions.py \
138 ryu/tests/integrated/test_add_flow_v12_matches.py
139do
140 run_app $app
e3c7ed29
BP
141done
142
143cat <<EOF
144
145----------------------------------------------------------------------
146Logs may be found under $sandbox, e.g.:$logs
5a0e4aec
BP
147 $sandbox/ovs-vswitchd.log
148 $sandbox/ovsdb-server.log
e3c7ed29
BP
149----------------------------------------------------------------------
150EOF