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

ODL_CONFIG_FILE1="map1.json"
ODL_CONFIG_FILE2="map2.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 send_ping_from_ns
{
  ip netns exec "${1}" "${2}" -w 20 -c 1 "${3}"
  assert_rc_ok $? 2_node_topo_clean "No ICMP Response!"
}

function send_ping_from_ns_expect_failure
{
  ip netns exec "${1}" "${2}" -w 10 -c 1 "${3}"
  assert_rc_not_ok $? 2_node_topo_clean "Reply received, but failure expected!"
}

function remove_sd_mapping {
  curl -X POST -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Content-Type: application/json" -H "Cache-Control: no-cache" -H "Postman-Token: 1e4f00f4-74eb-20d7-97da-89963f37713b" -d '{
    "input": {
        "eid": {
            "address-type": "ietf-lisp-address-types:source-dest-key-lcaf",
            "source-dest-key": {
                "source": "'$1'",
                "dest": "'$2'"
            }
        }
    }
}' "http://${ODL_IP}:8181/restconf/operations/odl-mappingservice:remove-mapping"
}

function remove_mapping1 {
curl -X DELETE -H "Content-Type: application/json" -H "Cache-Control: no-cache" "http://${ODL_IP}:${ODL_PORT}/restconf/config/odl-mappingservice:mapping-database/virtual-network-identifier/0/mapping/${1}/northbound/"
}

function test_src_dst_overwrite
{
  2_node_topo_setup

  maybe_pause

  test_result=1

  # send ping request
  send_ping_from_ns vppns1 ${1} ${2}

  maybe_pause

  # Replace ODL mapping with negative one
  post_curl "add-mapping" "replace1.json"

  # wait for SMR being resolved
  sleep 2

  maybe_pause

  # now ping should fail
  send_ping_from_ns_expect_failure vppns1 ${1} ${2}

  maybe_pause

  # Replace ODL mapping with positive one
  post_curl "add-mapping" "replace2.json"

  # wait for SMR being resolved
  sleep 2

  maybe_pause

  # expect ping reply again
  send_ping_from_ns vppns1 ${1} ${2}
  rc=$?

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

function test_src_dst_overwrite_superset
{
  2_node_topo_setup

  maybe_pause

  test_result=1

  # send ping request
  send_ping_from_ns vppns1 ${1} ${2}

  maybe_pause

  # Replace ODL mapping with negative one
  post_curl "add-mapping" "replace1.json"
  remove_sd_mapping "6.0.1.0/24" "6.0.2.0/24"

  # wait for SMR being resolved
  sleep 2

  maybe_pause

  # now ping should fail
  send_ping_from_ns_expect_failure vppns1 ${1} ${2}

  maybe_pause

  # Replace ODL mapping with positive one
  post_curl "add-mapping" "replace2.json"
  remove_sd_mapping "6.0.0.0/16" "6.0.2.0/24"

  # wait for SMR being resolved
  sleep 2

  maybe_pause

  # expect ping reply again
  send_ping_from_ns vppns1 ${1} ${2}
  rc=$?

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