summaryrefslogtreecommitdiffhomepage
path: root/test/scenario_test
diff options
context:
space:
mode:
Diffstat (limited to 'test/scenario_test')
-rw-r--r--test/scenario_test/bgp_router_test.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/test/scenario_test/bgp_router_test.py b/test/scenario_test/bgp_router_test.py
index a528c36d..4f7e981d 100644
--- a/test/scenario_test/bgp_router_test.py
+++ b/test/scenario_test/bgp_router_test.py
@@ -25,6 +25,9 @@ import time
import nose
from noseplugin import OptionParser, parser_option
from itertools import chain
+import ryu.lib.pcaplib as pcap
+from ryu.lib.packet.packet import Packet
+from ryu.lib.packet.bgp import BGPMessage
class GoBGPTestBase(unittest.TestCase):
@@ -354,6 +357,37 @@ class GoBGPTestBase(unittest.TestCase):
g1.wait_for(expected_state=BGP_FSM_ESTABLISHED, peer=e1)
+ def test_20_check_withdrawal_2(self):
+ g1 = self.gobgp
+ g2 = self.quaggas['g2']
+
+ dumpfile = g2.start_tcpdump()
+
+ g1.add_route('10.40.0.0/24')
+
+ time.sleep(1)
+
+ paths = g2.get_global_rib('10.40.0.0/24')
+ self.assertTrue(len(paths) == 1)
+
+ g1.local('gobgp global rib del 10.40.0.0/24')
+
+ time.sleep(1)
+
+ paths = g2.get_global_rib('10.40.0.0/24')
+ self.assertTrue(len(paths) == 0)
+
+ g2.stop_tcpdump()
+ time.sleep(1)
+
+ cnt = 0
+ for pkt in pcap.Reader(open(dumpfile)):
+ last = Packet(pkt[1]).protocols[-1]
+ if type(last) == str:
+ pkt = BGPMessage.parser(last)[0]
+ cnt += len(pkt.withdrawn_routes)
+
+ self.assertTrue(cnt == 1)
if __name__ == '__main__':