]>
git.proxmox.com Git - mirror_frr.git/blob - tests/topotests/bgp_prefix_list_topo1/test_prefix_lists.py
4 # Copyright (c) 2019 by VMware, Inc. ("VMware")
5 # Used Copyright (c) 2018 by Network Device Education Foundation,
6 # Inc. ("NetDEF") in this file.
8 # Permission to use, copy, modify, and/or distribute this software
9 # for any purpose with or without fee is hereby granted, provided
10 # that the above copyright notice and this permission notice appear
13 # THE SOFTWARE IS PROVIDED "AS IS" AND VMWARE DISCLAIMS ALL WARRANTIES
14 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
15 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL VMWARE BE LIABLE FOR
16 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
17 # DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
18 # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
19 # ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
24 Following tests are covered to test prefix-list functionality:
27 - Create topology (setup module)
28 Creating 4 routers topology, r1, r2, r3 are in IBGP and
31 - Verify for bgp to converge
34 - Test ip prefix-lists IN permit
35 - Test ip prefix-lists OUT permit
36 - Test ip prefix-lists IN deny and permit any
37 - Test delete ip prefix-lists
38 - Test ip prefix-lists OUT deny and permit any
39 - Test modify ip prefix-lists IN permit to deny
40 - Test modify ip prefix-lists IN deny to permit
41 - Test modify ip prefix-lists OUT permit to deny
42 - Test modify prefix-lists OUT deny to permit
43 - Test ip prefix-lists implicit deny
51 # Save the Current Working Directory to find configuration files.
52 CWD
= os
.path
.dirname(os
.path
.realpath(__file__
))
53 sys
.path
.append(os
.path
.join(CWD
, "../"))
55 # pylint: disable=C0413
56 # Import topogen and topotest helpers
57 from lib
.topogen
import Topogen
, get_topogen
59 # Import topoJson from lib, to create topology and initial configuration
60 from lib
.common_config
import (
64 reset_config_on_routers
,
70 from lib
.topolog
import logger
71 from lib
.bgp
import verify_bgp_convergence
, create_router_bgp
, clear_bgp_and_verify
72 from lib
.topojson
import build_config_from_json
75 pytestmark
= [pytest
.mark
.bgpd
]
79 bgp_convergence
= False
82 def setup_module(mod
):
84 Sets up the pytest environment
89 testsuite_run_time
= time
.asctime(time
.localtime(time
.time()))
90 logger
.info("Testsuite start time: {}".format(testsuite_run_time
))
93 logger
.info("Running setup_module to create topology")
95 # This function initiates the topology build with Topogen...
96 json_file
= "{}/prefix_lists.json".format(CWD
)
97 tgen
= Topogen(json_file
, mod
.__name
__)
100 # ... and here it calls Mininet initialization functions.
102 # Starting topology, create tmp files which are loaded to routers
103 # to start deamons and then start routers
106 # Creating configuration from JSON
107 build_config_from_json(tgen
, topo
)
109 # Checking BGP convergence
110 global BGP_CONVERGENCE
112 # Don't run this test if we have any failure.
113 if tgen
.routers_have_failure():
114 pytest
.skip(tgen
.errors
)
116 # Api call verify whether BGP is converged
117 BGP_CONVERGENCE
= verify_bgp_convergence(tgen
, topo
)
118 assert BGP_CONVERGENCE
is True, "setup_module :Failed \n Error:" " {}".format(
122 logger
.info("Running setup_module() done")
125 def teardown_module(mod
):
127 Teardown the pytest environment
132 logger
.info("Running teardown_module to delete topology")
136 # Stop toplogy and Remove tmp files
140 "Testsuite end time: {}".format(time
.asctime(time
.localtime(time
.time())))
142 logger
.info("=" * 40)
145 #####################################################
149 #####################################################
152 def test_ip_prefix_lists_in_permit(request
):
154 Create ip prefix list and test permit prefixes IN direction
158 if BGP_CONVERGENCE
is not True:
159 pytest
.skip("skipped because of BGP Convergence failure")
162 tc_name
= request
.node
.name
163 write_test_header(tc_name
)
165 # Create Static routes
169 {"network": "20.0.20.1/32", "no_of_ip": 1, "next_hop": "10.0.0.2"}
173 result
= create_static_routes(tgen
, input_dict
)
174 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
176 # Create ip prefix list
181 "pf_list_1": [{"seqid": 10, "network": "any", "action": "permit"}]
186 result
= create_prefix_lists(tgen
, input_dict_2
)
187 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
189 # Configure bgp neighbor with prefix list
197 {"redist_type": "static"},
198 {"redist_type": "connected"},
215 {"name": "pf_list_1", "direction": "in"}
227 result
= create_router_bgp(tgen
, topo
, input_dict_3
)
228 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
230 # Verifying RIB routes
233 result
= verify_rib(tgen
, "ipv4", dut
, input_dict
, protocol
=protocol
)
234 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
236 write_test_footer(tc_name
)
239 def test_ip_prefix_lists_out_permit(request
):
241 Create ip prefix list and test permit prefixes out direction
245 if BGP_CONVERGENCE
is not True:
246 pytest
.skip("skipped because of BGP Convergence failure")
249 tc_name
= request
.node
.name
250 write_test_header(tc_name
)
252 # Creating configuration from JSON
253 reset_config_on_routers(tgen
)
255 # Create Static routes
259 {"network": "10.0.20.1/32", "no_of_ip": 1, "next_hop": "10.0.0.2"}
263 result
= create_static_routes(tgen
, input_dict
)
264 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
266 # Create Static routes
270 {"network": "20.0.20.1/32", "no_of_ip": 1, "next_hop": "10.0.0.2"}
274 result
= create_static_routes(tgen
, input_dict_1
)
275 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
280 {"network": "10.0.0.2/30", "no_of_ip": 1, "next_hop": "10.0.0.9"}
284 result
= create_static_routes(tgen
, input_dict_5
)
285 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
287 # Api call to redistribute static routes
289 # Create ip prefix list
295 {"seqid": 10, "network": "20.0.20.1/32", "action": "permit"}
301 result
= create_prefix_lists(tgen
, input_dict_2
)
302 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
304 # Configure prefix list to bgp neighbor
305 # Configure bgp neighbor with prefix list
327 {"redist_type": "static"},
328 {"redist_type": "connected"},
337 result
= create_router_bgp(tgen
, topo
, input_dict_3
)
338 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
340 # Verifying RIB routes
343 result
= verify_rib(tgen
, "ipv4", dut
, input_dict_1
, protocol
=protocol
)
344 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
347 tgen
, "ipv4", dut
, input_dict
, protocol
=protocol
, expected
=False
351 ), "Testcase {} : Failed \n Error: Routes still" " present in RIB".format(tc_name
)
352 write_test_footer(tc_name
)
355 def test_ip_prefix_lists_in_deny_and_permit_any(request
):
357 Create ip prefix list and test permit/deny prefixes IN direction
361 if BGP_CONVERGENCE
is not True:
362 pytest
.skip("skipped because of BGP Convergence failure")
365 tc_name
= request
.node
.name
366 write_test_header(tc_name
)
368 # Creating configuration from JSON
369 reset_config_on_routers(tgen
)
371 # Create Static Routes
375 {"network": "10.0.20.1/32", "no_of_ip": 1, "next_hop": "10.0.0.2"}
379 result
= create_static_routes(tgen
, input_dict
)
380 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
382 # Api call to redistribute static routes
383 # Create ip prefix list
389 {"seqid": "10", "network": "10.0.20.1/32", "action": "deny"},
390 {"seqid": "11", "network": "any", "action": "permit"},
396 result
= create_prefix_lists(tgen
, input_dict_2
)
397 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
399 # Configure bgp neighbor with prefix list
407 {"redist_type": "static"},
408 {"redist_type": "connected"},
425 {"name": "pf_list_1", "direction": "in"}
437 # Configure prefix list to bgp neighbor
438 result
= create_router_bgp(tgen
, topo
, input_dict_3
)
439 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
441 # Verifying RIB routes
445 tgen
, "ipv4", dut
, input_dict
, protocol
=protocol
, expected
=False
449 ), "Testcase {} : Failed \n Error: Routes still" " present in RIB".format(tc_name
)
451 write_test_footer(tc_name
)
454 def test_delete_prefix_lists(request
):
456 Delete ip prefix list
460 if BGP_CONVERGENCE
is not True:
461 pytest
.skip("skipped because of BGP Convergence failure")
464 tc_name
= request
.node
.name
465 write_test_header(tc_name
)
467 # Creating configuration from JSON
468 reset_config_on_routers(tgen
)
470 # Create ip prefix list
476 {"seqid": "10", "network": "10.0.20.1/32", "action": "deny"}
482 result
= create_prefix_lists(tgen
, input_dict_2
)
483 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
485 result
= verify_prefix_lists(tgen
, input_dict_2
)
486 assert result
is not True, "Testcase {} : Failed \n Error: {}".format(
498 "network": "10.0.20.1/32",
507 result
= create_prefix_lists(tgen
, input_dict_2
)
508 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
510 result
= verify_prefix_lists(tgen
, input_dict_2
)
511 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
513 write_test_footer(tc_name
)
516 def test_ip_prefix_lists_out_deny_and_permit_any(request
):
518 Create ip prefix list and test deny/permit any prefixes OUT direction
522 if BGP_CONVERGENCE
is not True:
523 pytest
.skip("skipped because of BGP Convergence failure")
526 tc_name
= request
.node
.name
527 write_test_header(tc_name
)
529 # Creating configuration from JSON
530 reset_config_on_routers(tgen
)
532 # Create Static Routes
536 {"network": "10.0.20.1/32", "no_of_ip": 9, "next_hop": "10.0.0.2"}
540 result
= create_static_routes(tgen
, input_dict
)
541 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
543 # Create Static Routes
547 {"network": "20.0.20.1/32", "no_of_ip": 9, "next_hop": "10.0.0.1"}
551 result
= create_static_routes(tgen
, input_dict_1
)
552 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
554 # Api call to redistribute static routes
556 # Create ip prefix list
564 "network": "10.0.0.0/8",
568 {"seqid": "11", "network": "any", "action": "permit"},
574 result
= create_prefix_lists(tgen
, input_dict_3
)
575 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
577 # Configure prefix list to bgp neighbor
585 {"redist_type": "static"},
586 {"redist_type": "connected"},
599 {"redist_type": "static"},
600 {"redist_type": "connected"},
632 result
= create_router_bgp(tgen
, topo
, input_dict_4
)
633 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
635 # Verifying RIB routes
638 result
= verify_rib(tgen
, "ipv4", dut
, input_dict_1
, protocol
=protocol
)
639 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
641 # Verifying RIB routes
645 tgen
, "ipv4", dut
, input_dict
, protocol
=protocol
, expected
=False
649 ), "Testcase {} : Failed \n Error: Routes still" " present in RIB".format(tc_name
)
650 write_test_footer(tc_name
)
653 def test_modify_prefix_lists_in_permit_to_deny(request
):
655 Modify ip prefix list and test permit to deny prefixes IN direction
659 if BGP_CONVERGENCE
is not True:
660 pytest
.skip("skipped because of BGP Convergence failure")
663 tc_name
= request
.node
.name
664 write_test_header(tc_name
)
666 # Creating configuration from JSON
667 reset_config_on_routers(tgen
)
669 # Create Static Routes
673 {"network": "10.0.20.1/32", "no_of_ip": 9, "next_hop": "10.0.0.2"}
677 result
= create_static_routes(tgen
, input_dict
)
678 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
680 # Api call to redistribute static routes
682 # Create ip prefix list
690 "network": "10.0.0.0/8",
699 result
= create_prefix_lists(tgen
, input_dict_2
)
700 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
702 # Configure prefix list to bgp neighbor
710 {"redist_type": "static"},
711 {"redist_type": "connected"},
728 {"name": "pf_list_1", "direction": "in"}
740 result
= create_router_bgp(tgen
, topo
, input_dict_3
)
741 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
743 # Verifying RIB routes
746 result
= verify_rib(tgen
, "ipv4", dut
, input_dict
, protocol
=protocol
)
747 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
757 "network": "10.0.0.0/8",
761 {"seqid": "11", "network": "any", "action": "permit"},
767 result
= create_prefix_lists(tgen
, input_dict_1
)
768 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
770 # Api call to clear bgp, so config changes would be reflected
772 result
= clear_bgp_and_verify(tgen
, topo
, dut
)
773 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
775 # Verifying RIB routes
779 tgen
, "ipv4", dut
, input_dict
, protocol
=protocol
, expected
=False
783 ), "Testcase {} : Failed \n Error: Routes still" " present in RIB".format(tc_name
)
785 write_test_footer(tc_name
)
788 def test_modify_prefix_lists_in_deny_to_permit(request
):
790 Modify ip prefix list and test deny to permit prefixes IN direction
794 if BGP_CONVERGENCE
is not True:
795 pytest
.skip("skipped because of BGP Convergence failure")
798 tc_name
= request
.node
.name
799 write_test_header(tc_name
)
801 # Creating configuration from JSON
802 reset_config_on_routers(tgen
)
804 # Create Static Routes
808 {"network": "10.0.20.1/32", "no_of_ip": 9, "next_hop": "10.0.0.2"}
812 result
= create_static_routes(tgen
, input_dict
)
813 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
815 # Api call to redistribute static routes
817 # Create ip prefix list
825 "network": "10.0.0.0/8",
829 {"seqid": "11", "network": "any", "action": "permit"},
835 result
= create_prefix_lists(tgen
, input_dict_1
)
836 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
838 # Configure prefix list to bgp neighbor
846 {"redist_type": "static"},
847 {"redist_type": "connected"},
864 {"name": "pf_list_1", "direction": "in"}
876 result
= create_router_bgp(tgen
, topo
, input_dict_2
)
877 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
879 # Verifying RIB routes
883 tgen
, "ipv4", dut
, input_dict
, protocol
=protocol
, expected
=False
887 ), "Testcase {} : Failed \n Error: Routes still" " present in RIB".format(tc_name
)
889 # Modify ip prefix list
897 "network": "10.0.0.0/8",
906 result
= create_prefix_lists(tgen
, input_dict_1
)
907 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
909 # Api call to clear bgp, so config changes would be reflected
911 result
= clear_bgp_and_verify(tgen
, topo
, dut
)
912 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
914 # Verifying RIB routes
917 result
= verify_rib(tgen
, "ipv4", dut
, input_dict
, protocol
=protocol
)
918 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
920 write_test_footer(tc_name
)
923 def test_modify_prefix_lists_out_permit_to_deny(request
):
925 Modify ip prefix list and test permit to deny prefixes OUT direction
929 if BGP_CONVERGENCE
is not True:
930 pytest
.skip("skipped because of BGP Convergence failure")
933 tc_name
= request
.node
.name
934 write_test_header(tc_name
)
936 # Creating configuration from JSON
937 reset_config_on_routers(tgen
)
939 # Create Static Routes
943 {"network": "10.0.20.1/32", "no_of_ip": 9, "next_hop": "10.0.0.2"}
947 result
= create_static_routes(tgen
, input_dict
)
948 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
950 # Api call to redistribute static routes
952 # Create ip prefix list
960 "network": "10.0.0.0/8",
969 result
= create_prefix_lists(tgen
, input_dict_1
)
970 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
972 # Configure prefix list to bgp neighbor
980 {"redist_type": "static"},
981 {"redist_type": "connected"},
1013 result
= create_router_bgp(tgen
, topo
, input_dict_2
)
1014 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
1016 # Verifying RIB routes
1019 result
= verify_rib(tgen
, "ipv4", dut
, input_dict
, protocol
=protocol
)
1020 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
1022 # Modify ip prefix list
1030 "network": "10.0.0.0/8",
1034 {"seqid": "11", "network": "any", "action": "permit"},
1040 result
= create_prefix_lists(tgen
, input_dict_1
)
1041 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
1043 # Api call to clear bgp, so config changes would be reflected
1045 result
= clear_bgp_and_verify(tgen
, topo
, dut
)
1046 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
1048 # Verifying RIB routes
1051 result
= verify_rib(
1052 tgen
, "ipv4", dut
, input_dict
, protocol
=protocol
, expected
=False
1056 ), "Testcase {} : Failed \n Error: Routes still" " present in RIB".format(tc_name
)
1058 write_test_footer(tc_name
)
1061 def test_modify_prefix_lists_out_deny_to_permit(request
):
1063 Modify ip prefix list and test deny to permit prefixes OUT direction
1066 tgen
= get_topogen()
1067 if BGP_CONVERGENCE
is not True:
1068 pytest
.skip("skipped because of BGP Convergence failure")
1071 tc_name
= request
.node
.name
1072 write_test_header(tc_name
)
1074 # Creating configuration from JSON
1075 reset_config_on_routers(tgen
)
1077 # Create Static Routes
1081 {"network": "10.0.20.1/32", "no_of_ip": 9, "next_hop": "10.0.0.2"}
1085 result
= create_static_routes(tgen
, input_dict
)
1086 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
1088 # Api call to redistribute static routes
1089 # Create ip prefix list
1097 "network": "10.0.0.0/8",
1101 {"seqid": "11", "network": "any", "action": "permit"},
1107 result
= create_prefix_lists(tgen
, input_dict_1
)
1108 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
1110 # Configure prefix list to bgp neighbor
1118 {"redist_type": "static"},
1119 {"redist_type": "connected"},
1137 "name": "pf_list_1",
1151 result
= create_router_bgp(tgen
, topo
, input_dict_2
)
1152 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
1154 # Verifying RIB routes
1157 result
= verify_rib(
1158 tgen
, "ipv4", dut
, input_dict
, protocol
=protocol
, expected
=False
1162 ), "Testcase {} : Failed \n Error: Routes still" " present in RIB".format(tc_name
)
1164 # Modify ip prefix list
1172 "network": "10.0.0.0/8",
1181 result
= create_prefix_lists(tgen
, input_dict_1
)
1182 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
1184 # Api call to clear bgp, so config changes would be reflected
1186 result
= clear_bgp_and_verify(tgen
, topo
, dut
)
1187 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
1189 # Verifying RIB routes
1192 result
= verify_rib(tgen
, "ipv4", dut
, input_dict
, protocol
=protocol
)
1193 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
1195 write_test_footer(tc_name
)
1198 def test_ip_prefix_lists_implicit_deny(request
):
1200 Create ip prefix list and test implicit deny
1203 tgen
= get_topogen()
1204 if BGP_CONVERGENCE
is not True:
1205 pytest
.skip("skipped because of BGP Convergence failure")
1208 tc_name
= request
.node
.name
1209 write_test_header(tc_name
)
1211 # Creating configuration from JSON
1212 reset_config_on_routers(tgen
)
1214 # Create Static Routes
1218 {"network": "10.0.20.1/32", "no_of_ip": 9, "next_hop": "10.0.0.2"}
1222 result
= create_static_routes(tgen
, input_dict
)
1223 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
1225 # Create Static Routes
1229 {"network": "20.0.20.1/32", "no_of_ip": 9, "next_hop": "10.0.0.1"}
1233 result
= create_static_routes(tgen
, input_dict
)
1234 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
1236 # Api call to redistribute static routes
1237 # Create ip prefix list
1245 "network": "10.0.0.0/8",
1254 result
= create_prefix_lists(tgen
, input_dict_3
)
1255 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
1257 # Configure prefix list to bgp neighbor
1265 {"redist_type": "static"},
1266 {"redist_type": "connected"},
1279 {"redist_type": "static"},
1280 {"redist_type": "connected"},
1298 "name": "pf_list_1",
1312 result
= create_router_bgp(tgen
, topo
, input_dict_4
)
1313 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
1315 # Verifying RIB routes
1318 result
= verify_rib(tgen
, "ipv4", dut
, input_dict
, protocol
=protocol
)
1319 assert result
is True, "Testcase {} : Failed \n Error: {}".format(tc_name
, result
)
1321 # Verifying RIB routes
1324 result
= verify_rib(
1325 tgen
, "ipv4", dut
, input_dict_1
, protocol
=protocol
, expected
=False
1329 ), "Testcase {} : Failed \n Error: Routes still" " present in RIB".format(tc_name
)
1331 write_test_footer(tc_name
)
1334 if __name__
== "__main__":
1335 args
= ["-s"] + sys
.argv
[1:]
1336 sys
.exit(pytest
.main(args
))