📄 test_unh1.py
字号:
#!/usr/bin/env python# Copyright (c) 2001-2007 International Computer Science Institute## Permission is hereby granted, free of charge, to any person obtaining a# copy of this software and associated documentation files (the "Software")# to deal in the Software without restriction, subject to the conditions# listed in the XORP LICENSE file. These conditions include: you must# preserve this copyright notice, and you cannot mention the copyright# holders in advertising related to the Software without their permission.# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This# notice is a summary of the XORP LICENSE file; the license in that file is# legally binding.# $XORP: xorp/tests/bgp/test_unh1.py,v 1.23 2007/02/16 22:47:32 pavlin Exp $## The tests in this file are based on the:# University of New Hampshire# InterOperability Laboratory# IPv4 CONSORTIUM# Border Gateway Protocol 4 (BGP) Operations Test Suite# Technical Document Revision 3.3#import syssys.path.append("..")from test_main import test_mainfrom test_main import coordfrom test_main import delayfrom test_builddir import builddirimport test_bgp_config as configTESTS=[ # Fields: # 0: Symbolic name for test # 1: Actual test function # 2: True if this test works. # 3: Optional Configuration String # 4: Optional Configuration Functions # NOTE: One of field 3 or 4 must be set and the other must be empty. ['1.1A', 'test1_1_A', True, '', ['conf_IBGP']], ['1.1B', 'test1_1_B', True, '', ['conf_EBGP']], ['1.4C', 'test1_4_C', True, '', ['conf_EBGP', 'conf_interfaces']], ['1.6B', 'test1_6_B', True, '', ['conf_EBGP', 'conf_interfaces']], ['1.10C', 'test1_10_C', True, '', ['conf_EBGP_IBGP_IBGP', 'conf_interfaces', 'conf_redist_static_incomplete']], ['1.12AB', 'test1_12_AB', True, '', ['conf_RUT_as2_TR1_as1_TR2_as2', 'conf_interfaces', 'conf_redist_static']], ['1.13A', 'test1_13_A', True, '', ['conf_RUT_as2_TR1_as1_TR2_as2', 'conf_interfaces', 'conf_redist_static_med']], ['1.13B', 'test1_13_B', True, '', ['conf_RUT_as2_TR1_as1_TR2_as2', 'conf_interfaces']], ['1.13C', 'test1_13_C', True, '', ['conf_RUT_as2_TR1_as1_TR2_as2', 'conf_interfaces']], ['1.15A', 'test1_15_A', True, '', ['conf_RUT_as3_TR1_as1_TR2_as2_TR3_as4', 'conf_interfaces']], ['1.15B', 'test1_15_B', True, '', ['conf_RUT_as3_TR1_as1_TR2_as2_TR3_as4', 'conf_interfaces', 'conf_aggregate_brief']], ['3.8A', 'test3_8_A', True, '', ['conf_EBGP']], ['4.6A', 'test4_6_A', True, '', ['conf_EBGP_EBGP', 'conf_interfaces', 'conf_redist_static_no_export']], ['4.8A', 'test4_8_A', True, '', ['conf_RUT_as2_TR1_as1', 'conf_interfaces', 'conf_redist_static', 'conf_multiprotocol']], ['4.11A', 'test4_11_A', True, '', ['conf_RUT_as2_TR1_as1_TR2_as1_TR3_as3', 'conf_interfaces', 'conf_damping']], ['4.11BCD', 'test4_11_BCD', True, '', ['conf_RUT_as2_TR1_as1_TR2_as1_TR3_as3', 'conf_interfaces', 'conf_preference_TR1', 'conf_damping']], ['4.12', 'test4_12', True, '', ['conf_RUT_as2_TR1_as1_TR2_as3', 'conf_interfaces', 'conf_damping']], ]def test1_1_A(): """ Direct connection Basic IBGP """ # configure the test peering. coord("reset") coord("target 127.0.0.1 10001") coord("initialise attach peer1") coord("peer1 establish AS 65000 holdtime 0 id 1.2.3.4 keepalive false") delay(2) coord("peer1 assert established"); return Truedef test1_1_B(): """ Direct connection Basic EBGP """ # configure the test peering. coord("reset") coord("target 127.0.0.1 10001") coord("initialise attach peer1") coord("peer1 establish AS 65001 holdtime 0 id 1.2.3.4 keepalive false") delay(2) coord("peer1 assert established"); return Truedef test1_4_C(): """ Set the holdtime to an illegal value of 2 seconds """ # Try and set the holdtime to 2 seconds which is illegal. try: if not config.conf_set_holdtime(builddir(1), "127.0.0.1", 2): return True except Exception, (ErrorMessage): print ErrorMessage return True return Falsedef test1_6_B(): """ Cease notification message """ # Set the prefix limit to 3 config.conf_set_prefix_limit(builddir(1), "peer1", 3) coord("reset") coord("target 127.0.0.1 10001") coord("initialise attach peer1") coord("peer1 establish AS 65001 holdtime 0 id 1.2.3.4 keepalive false") delay(2) coord("peer1 assert established"); packet = "packet update \ nexthop 127.0.0.2 \ origin 0 \ aspath 65001 \ med 0\ nlri %s" cease = 6 coord("peer1 expect packet notify %s" % cease) # Send four NRLIs to trigger a cease coord("peer1 send %s" % (packet % "172.16.0.0/16")) coord("peer1 send %s" % (packet % "172.16.0.0/17")) coord("peer1 send %s" % (packet % "172.16.0.0/18")) coord("peer1 send %s" % (packet % "172.16.0.0/19")) delay(2) coord("peer1 assert idle") coord("peer1 assert queue 0") return Truedef test1_10_C(): """ To verify that a BGP router properly generates the ORIGIN attribute """ coord("reset") coord("target 127.0.0.1 10001") coord("initialise attach peer1") coord("target 127.0.0.1 10002") coord("initialise attach peer2") coord("target 127.0.0.1 10003") coord("initialise attach peer3") coord("peer1 establish AS 65001 holdtime 0 id 10.0.0.1 keepalive false") coord("peer2 establish AS 65000 holdtime 0 id 10.0.0.2 keepalive false") coord("peer3 establish AS 65000 holdtime 0 id 10.0.0.3 keepalive false") delay(2) coord("peer1 assert established"); coord("peer2 assert established"); coord("peer3 assert established"); delay(2) incomplete = 2 coord("peer1 expect packet update \ nexthop 127.0.0.1 \ origin %s \ aspath 65000 \ med 0 nlri \ 172.16.0.0/16" % incomplete) if not config.conf_add_static_route4(builddir(1), "172.16.0.0/16"): return False delay(10) coord("peer1 assert established") coord("peer2 assert established") coord("peer3 assert established") coord("peer1 assert queue 0") return Truedef test1_12_AB(): """ Check the rewriting of the NEXT_HOP attribute. """ coord("reset") coord("target 127.0.0.1 10001") coord("initialise attach peer1") coord("target 127.0.0.1 10002") coord("initialise attach peer2") coord("peer1 establish AS 1 holdtime 0 id 10.0.0.1 keepalive false") coord("peer2 establish AS 2 holdtime 0 id 10.0.0.2 keepalive false") delay(2) coord("peer1 assert established"); coord("peer2 assert established"); delay(2) packet = "packet update \ nexthop 127.0.0.2 \ origin 0 \ nlri 172.16.0.0/16 %s" coord("peer1 expect %s" % (packet % "aspath 2 med 0")) coord("peer2 expect %s" % (packet % "aspath empty localpref 100")) if not config.conf_add_static_route4(builddir(1), "172.16.0.0/16", "127.0.0.2"): return False delay(10) coord("peer1 assert established") coord("peer2 assert established") coord("peer1 assert queue 0") coord("peer2 assert queue 0") return Truedef test1_13_A(): """ MULTI_EXIT_DISC Attribute """ coord("reset") coord("target 127.0.0.1 10001") coord("initialise attach peer1") coord("target 127.0.0.1 10002") coord("initialise attach peer2") coord("peer1 establish AS 1 holdtime 0 id 10.0.0.1 keepalive false") coord("peer2 establish AS 2 holdtime 0 id 10.0.0.2 keepalive false") packet1 = "packet update \ nexthop 127.0.0.1 \ origin 0 \ aspath 2 \ med 42 \ nlri 172.16.0.0/16" packet2 = "packet update \ nexthop 127.0.0.1 \ origin 0 \ aspath empty \ localpref 100 \ nlri 172.16.0.0/16" coord("peer1 expect %s" % packet1) coord("peer2 expect %s" % packet2) if not config.conf_add_static_route4(builddir(1), "172.16.0.0/16"): return False delay(10) coord("peer1 assert established") coord("peer2 assert established") coord("peer1 assert queue 0") coord("peer2 assert queue 0") return Truedef test1_13_B(): """ MULTI_EXIT_DISC Attribute """ coord("reset") coord("target 127.0.0.1 10001") coord("initialise attach peer1") coord("target 127.0.0.1 10002") coord("initialise attach peer2") coord("peer1 establish AS 1 holdtime 0 id 10.0.0.1 keepalive false") coord("peer2 establish AS 2 holdtime 0 id 10.0.0.2 keepalive false") packet = "packet update \ nexthop 127.0.0.2 \ origin 0 \ aspath 1 \ %s \ nlri 172.16.0.0/16" spacket = packet % "med 42" epacket = packet % "localpref 100" coord("peer1 expect %s" % epacket) coord("peer2 expect %s" % epacket) coord("peer1 send %s" % spacket) delay(10) coord("peer1 assert established") coord("peer2 assert established") coord("peer1 assert queue 1") coord("peer2 assert queue 0") return Truedef test1_13_C(): """ MULTI_EXIT_DISC Attribute """ coord("reset") coord("target 127.0.0.1 10001") coord("initialise attach peer1") coord("target 127.0.0.1 10002") coord("initialise attach peer2") coord("peer1 establish AS 1 holdtime 0 id 10.0.0.1 keepalive false") coord("peer2 establish AS 2 holdtime 0 id 10.0.0.2 keepalive false") packet = "packet update \ origin 0 \ %s \ nlri 172.16.0.0/16" spacket = packet % "nexthop 127.0.0.2 aspath empty med 42" # The nexthop is not re-written as it is on a common subnet. epacket = packet % "nexthop 127.0.0.2 aspath 2 med 0" coord("peer1 expect %s" % epacket) coord("peer2 expect %s" % epacket) coord("peer2 send %s" % spacket) delay(10) coord("peer1 assert established") coord("peer2 assert established") coord("peer1 assert queue 0") coord("peer2 assert queue 1") return Truedef test1_15_A(): """ ATOMIC_AGGREGATE Attribute """ coord("reset") coord("target 127.0.0.1 10001") coord("initialise attach peer1") coord("target 127.0.0.1 10002") coord("initialise attach peer2") coord("target 127.0.0.1 10003") coord("initialise attach peer3") delay(2) coord("peer1 establish AS 1 holdtime 0 id 10.0.0.1 keepalive false") coord("peer2 establish AS 2 holdtime 0 id 10.0.0.2 keepalive false") coord("peer3 establish AS 4 holdtime 0 id 10.0.0.3 keepalive false") packet1 = "packet update \ nexthop 127.0.0.2 \ origin 0 \ aspath %s \ med 0 \ nlri 192.0.0.0/8" packet2 = "packet update \ nexthop 127.0.0.2 \ origin 0 \ aspath %s \ med 0 \ nlri 192.1.0.0/16" spacket1 = packet1 % "1" spacket2 = packet2 % "2" epacket1 = packet1 % "3,1" epacket2 = packet2 % "3,2" coord("peer1 expect %s" % epacket2) coord("peer2 expect %s" % epacket1) coord("peer3 expect %s" % epacket1) coord("peer3 expect %s" % epacket2) coord("peer1 send %s" % spacket1) coord("peer2 send %s" % spacket2)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -