summaryrefslogtreecommitdiffstats
path: root/tests/data_plane/vpp_lite_topo/test_driver/basic.sh
blob: ec96f162c3893f63bb538ae3453eed580b8453d3 (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
source config.sh
source odl_utils.sh
source topologies/2_node_topo.sh

ODL_CONFIG_FILE1="vpp1.json"
ODL_CONFIG_FILE2="vpp2.json"
ODL_CONFIG_FILE3="update_vpp2.json"

if [ "$1" == "clean" ] ; then
  2_node_topo_clean
  exit 0
fi

if [[ $(id -u) != 0 ]]; then
  echo "Error: run this as a root."
  exit 1
fi

function test_basic
{
  if [ "$3" != "no_setup" ] ; then
    2_node_topo_setup
  fi

  maybe_pause
  test_result=1

  ip netns exec vppns1 "${1}" -w 15 -c 1 "${2}"
  assert_rc_ok $? 2_node_topo_clean "No ICMP response!"

  maybe_pause
  # change IP addresses of destination RLOC
  echo "set int ip address del host-intervpp2 6.0.3.2/24" | nc 0 5003
  echo "set int ip address host-intervpp2 6.0.3.20/24" | nc 0 5003
  echo "set int ip address del host-intervpp2 6:0:3::2/64" | nc 0 5003
  echo "set int ip address host-intervpp2 6:0:3::20/64" | nc 0 5003
  post_curl "update-mapping" ${ODL_CONFIG_FILE3}

  ip netns exec vppns1 "${1}" -w 15 -c 1 "${2}"
  rc=$?

  # test done

  maybe_pause
  2_node_topo_clean
  print_status $rc "No ICMP response!"
  exit $test_result
}

function test_basic_map_register
{
  2_node_topo_setup no_odl
  post_curl "add-key" ${ODL_CONFIG_FILE1}
  post_curl "add-key" ${ODL_CONFIG_FILE2}

  maybe_pause

  test_result=1

  wait_for_map_register=10
  echo "Waiting for map registration $wait_for_map_register seconds .."
  sleep $wait_for_map_register

  ip netns exec vppns1 "${1}" -w 15 -c 1 "${2}"
  rc=$?

  count=`echo "show error" | nc 0 5002 | grep 'map-notifies received' | awk '{print $1}'`
  if [ "$count" -eq 0 ] ; then
    echo "no map-notifies received! ($count)"
    rc=1
  fi

  maybe_pause

  # test done
  2_node_topo_clean
  print_status $rc "No ICMP response!"
  exit $test_result
}

function test_rloc_probe
{
  2_node_topo_setup

  maybe_pause
  test_result=1

  ip netns exec vppns1 "${1}" -w 15 -c 1 "${2}"
  rc=$?
  assert_rc_ok $rc 2_node_topo_clean "No ICMP response!"

  sleep 65

  count=`echo "show error" | nc 0 5002 | grep 'rloc-probe replies received' | awk '{print $1}'`
  if [ "$count" != "1" ] ; then
    echo "rloc-probe replies received is not 1! ($count)"
    rc=1
  fi

  count=`echo "show error" | nc 0 5003 | grep 'rloc-probe requests received' | awk '{print $1}'`
  if [ "$count" != "1" ] ; then
    echo "rloc-probe requests received is not 1! ($count)"
    rc=1
  fi

  # test done

  maybe_pause
  2_node_topo_clean
  print_status $rc "unexpected value"
  exit $test_result
}