94e54b340f036d5224fac682fc16138ef8f83d6c
[one.git] / tests / data_plane / vpp_lite_topo / config.sh
1 ODL_USER="admin"
2 ODL_PASSWD="admin"
3 ODL_IP="127.0.0.1"
4 ODL_PORT="8181"
5
6 # path to vpp executable
7 VPP_LITE_DIR=/vpp/build-root/install-vpp_debug-native/vpp/bin
8 VPP_LITE_BIN=${VPP_LITE_DIR}/vpp
9 VPP_API_TEST=/vpp/build-root/install-vpp_debug-native/vpp-api-test/bin/vpp_api_test
10 ONE_ROOT=/vpp/one
11
12 # read user config file if exists
13 if [ -f "${HOME}/.onerc" ] ; then
14   source "${HOME}/.onerc"
15 fi
16
17 if [ ! -f "${VPP_LITE_BIN}" ] ; then
18   echo "Error: VPP binary not found. You can set VPP_LITE_BIN in config.sh"
19   echo "Current value:"
20   echo "VPP_LITE_BIN=${VPP_LITE_BIN}"
21   exit 1
22 fi
23
24 if [ ! -f "${VPP_API_TEST}" ] ; then
25   echo "Error: vpp_api_test not found. Either it's not built or environment \
26     variable VPP_API_TEST is not set. You can build vpp_api_test with:"
27   echo "$ make build-vat"
28   echo "VPP_API_TEST can be set in config.sh or in ~/.onerc."
29   echo "Current value:"
30   echo "VPP_API_TEST=${VPP_API_TEST}"
31   exit 1
32 fi
33
34 if [ "${CFG_METHOD}" == '' ] ; then
35   CFG_METHOD=vat
36   echo
37   echo "* INFO: configuration method not selected, defaulting to 'vat'"
38   echo "* To define the method run the test as follows:"
39   echo "* $ sudo CFG_METHOD=vat|cli ./tests/<tc>.sh"
40   echo
41 fi
42
43 function clean_all
44 {
45   echo "Clearing all VPP instances.."
46   pkill vpp --signal 9
47   rm /dev/shm/* &> /dev/null
48
49   echo "Cleaning topology.."
50   ip netns exec intervppns ifconfig vppbr down &> /dev/null
51   ip netns exec intervppns brctl delbr vppbr &> /dev/null
52   ip netns exec intervppns1 ifconfig vppbr down &> /dev/null
53   ip netns exec intervppns1 brctl delbr vppbr &> /dev/null
54   ip netns exec intervppns2 ifconfig vppbr down &> /dev/null
55   ip netns exec intervppns2 brctl delbr vppbr &> /dev/null
56   ip netns exec intervpp-ns ifconfig vppbr1 down &> /dev/null
57   ip netns exec intervpp-ns brctl delbr vppbr1 &> /dev/null
58   ip netns exec xtr-rtr-ns ifconfig vppbr1 down &> /dev/null
59   ip netns exec xtr-rtr-ns brctl delbr vppbr1 &> /dev/null
60
61   ip link del dev veth_vpp1 &> /dev/null
62   ip link del dev veth_vpp2 &> /dev/null
63   ip link del dev vpp1_cus1 &> /dev/null
64   ip link del dev vpp2_cus1 &> /dev/null
65   ip link del dev vpp1_cus2 &> /dev/null
66   ip link del dev vpp2_cus2 &> /dev/null
67   ip link del dev vpp1 &> /dev/null
68   ip link del dev vpp2 &> /dev/null
69
70   ip link del dev veth_intervpp1 &> /dev/null
71   ip link del dev veth_intervpp2 &> /dev/null
72   ip link del dev veth_intervpp11 &> /dev/null
73   ip link del dev veth_intervpp12 &> /dev/null
74   ip link del dev veth_intervpp21 &> /dev/null
75   ip link del dev veth_intervpp22 &> /dev/null
76   ip link del dev intervpp1 &> /dev/null
77   ip link del dev intervpp2 &> /dev/null
78   ip link del dev xtr_rtr1 &> /dev/null
79   ip link del dev xtr_rtr2 &> /dev/null
80   ip link del dev xtr_rtr3 &> /dev/null
81
82   ip link del dev veth_odl &> /dev/null
83   ip link del dev odl &> /dev/null
84
85   ip netns del vppns1 &> /dev/null
86   ip netns del vppns2 &> /dev/null
87   ip netns del intervppns &> /dev/null
88   ip netns del intervppns1 &> /dev/null
89   ip netns del intervppns2 &> /dev/null
90   ip netns del vpp1-cus1-ns &> /dev/null
91   ip netns del vpp1-cus2-ns &> /dev/null
92   ip netns del vpp2-cus1-ns &> /dev/null
93   ip netns del vpp2-cus2-ns &> /dev/null
94   ip netns del intervpp-ns &> /dev/null
95   ip netns del vpp-ns1 &> /dev/null
96   ip netns del vpp-ns2 &> /dev/null
97   ip netns del xtr-rtr-ns &> /dev/null
98
99   if [ "$1" != "no_odl" ] ; then
100     odl_clear_all
101   fi
102 }
103
104 function maybe_pause
105 {
106   if [ "$WAIT" == "1" ] ; then
107     read -p  "press any key to continue .." -n1
108   fi
109 }
110
111
112 function start_vpp
113 {
114   # start_vpp port prefix
115
116   ${VPP_LITE_BIN} \
117     unix { log /tmp/$2.log           \
118            full-coredump             \
119            cli-listen localhost:$1 } \
120     api-trace { on } api-segment { prefix "$2" } \
121     plugins { plugin dpdk_plugin.so { disable } }
122 }
123
124 function print_status
125 {
126   # show_status rc error_msg
127   if [ $1 -ne 0 ] ; then
128     echo "Test failed: $2"
129   else
130     echo "Test passed."
131     test_result=0
132   fi
133 }
134
135 function assert_rc_ok
136 {
137   # assert_rc_ok rc cleanup_fcn error_msg
138   if [ $1 -ne 0 ] ; then
139     echo $3
140     maybe_pause
141     $2
142     exit $test_result
143   fi
144 }
145
146 function assert_rc_not_ok
147 {
148   if [ $1 -eq 0 ] ; then
149     echo $3
150     maybe_pause
151     $2
152     exit $test_result
153   fi
154 }
155
156 function start_map_resolver
157 {
158   echo "starting dummy map resolver on interface $1"
159   python scripts/dummy_mr.py "$1" 4342 &
160   mr_id=$!
161 }
162
163 function check_counters
164 {
165   python scripts/vat/check_counters.py ${VPP_API_TEST} ${VAT_TEMPLATES} "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8"
166 }
167