summaryrefslogtreecommitdiffstats
path: root/tests/data_plane/vpp_lite_topo/test_driver/src_dst.sh
blob: c4a756dee8fb7d6d680eb3676fc0a45d89e90f5b (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
140
141
142
143
144
145
146
147
source config.sh
source odl_utils.sh
source topologies/3_node_star.sh

ODL_CONFIG_FILE1="map1.json"
ODL_CONFIG_FILE2="map2.json"

if [ "$1" == "clean" ] ; then
  3_node_star_topo_clean
  exit 0
fi

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

function send_ping_from_ns
{
  ip netns exec "${1}" "${2}" -w 20 -c 1 "${3}"
  assert_rc_ok $? 3_node_star_topo_clean "No ICMP Response!"
}

function send_ping_from_ns_no_verify
{
  ip netns exec "${1}" "${2}" -c 1 "${3}"
}

function test_src_dst
{
  3_node_star_topo_setup
  post_curl "add-mapping" "map3.json"
  post_curl "add-mapping" "map4.json"

  maybe_pause

  test_result=1

  # send ping for first EID
  send_ping_from_ns vpp-ns1 ${1} ${2}

  # TODO assert counters

  maybe_pause

  # send ping for second EID
  send_ping_from_ns vpp-ns3 ${1} ${2}

  maybe_pause

  # verify first tunnel still works
  send_ping_from_ns vpp-ns1 ${1} ${2}

  maybe_pause

  # verify second tunnel still works
  send_ping_from_ns vpp-ns3 ${1} ${2}
  rc=$?

  maybe_pause
  3_node_star_topo_clean
  print_status $rc "No ICMP response!"
  exit $test_result
}

function test_src_dst_l2
{
  3_node_star_topo_setup
  post_curl "add-mapping" "map3.json"
  post_curl "add-mapping" "map4.json"

  maybe_pause

  test_result=1

  # send ping for first EID
  send_ping_from_ns vpp-ns5 ${1} ${2}

  # TODO assert counters

  maybe_pause

  # send ping for second EID
  send_ping_from_ns vpp-ns8 ${1} ${2}

  maybe_pause

  # verify first tunnel still works
  send_ping_from_ns vpp-ns5 ${1} ${2}

  maybe_pause

  # verify second tunnel still works
  send_ping_from_ns vpp-ns8 ${1} ${2}
  rc=$?

  maybe_pause
  3_node_star_topo_clean
  print_status $rc "No ICMP response!"
  exit $test_result
}

function mapping_exists
{
  python scripts/vat/mapping_exists.py ${VPP_API_TEST} "$1" "$2" ${VAT_TEMPLATES}
}

function test_mapping_timers
{
  3_node_star_topo_setup
  post_curl "add-mapping" "map3.json"
  post_curl "add-mapping" "map4.json"

  maybe_pause

  test_result=1

  send_ping_from_ns vpp-ns1 ${1} ${2}
  send_ping_from_ns vpp-ns3 ${1} ${2}

  # wait for map-requests to resolve
  sleep 2

  mapping_exists "vpp1" "6.0.1.0/24|6.0.2.0/24"
  assert_rc_ok $? 3_node_star_topo_clean "mapping not in map-cache!"
  mapping_exists "vpp1" "6.0.5.0/24|6.0.2.0/24"
  assert_rc_ok $? 3_node_star_topo_clean "mapping not in map-cache!"
  mapping_exists "vpp2" "6.0.1.0/24"
  assert_rc_ok $? 3_node_star_topo_clean "mapping not in map-cache!"

  # sleep enough so the mapping expires
  sleep 65

  maybe_pause

  mapping_exists "vpp1" "6.0.1.0/24|6.0.2.0/24"
  assert_rc_not_ok $? 3_node_star_topo_clean "mapping still present in map-cache!"
  mapping_exists "vpp1" "6.0.5.0/24|6.0.2.0/24"
  assert_rc_not_ok $? 3_node_star_topo_clean "mapping still present in map-cache!"
  mapping_exists "vpp2" "6.0.1.0/24"
  assert_rc_not_ok $? 3_node_star_topo_clean "mapping still present in map-cache!"

  maybe_pause
  3_node_star_topo_clean
  echo "Test passed."
  exit 0
}