From: Y Bharath Date: Tue, 15 Apr 2025 05:47:14 +0000 (+0530) Subject: tests: Resource leak in common_config.py X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=refs%2Fpull%2F18658%2Fhead;p=mirror%2Ffrr.git tests: Resource leak in common_config.py Address pending changes from PR:18574 Signed-off-by: y-bharath14 --- diff --git a/tests/topotests/lib/common_config.py b/tests/topotests/lib/common_config.py index 54142e8526..a19c61b19d 100644 --- a/tests/topotests/lib/common_config.py +++ b/tests/topotests/lib/common_config.py @@ -330,13 +330,12 @@ def create_common_configurations( for router in routers: fname = "{}/{}/{}".format(tgen.logdir, router, FRRCFG_FILE) try: - frr_cfg_fd = open(fname, mode) - if config_type: - frr_cfg_fd.write(config_map[config_type]) - for line in config_dict[router]: - frr_cfg_fd.write("{} \n".format(str(line))) - frr_cfg_fd.write("\n") - + with open(fname, mode) as frr_cfg_fd: + if config_type: + frr_cfg_fd.write(config_map[config_type]) + for line in config_dict[router]: + frr_cfg_fd.write("{} \n".format(str(line))) + frr_cfg_fd.write("\n") except IOError as err: logger.error("Unable to open FRR Config '%s': %s" % (fname, str(err))) return False @@ -487,12 +486,13 @@ def save_initial_config_on_routers(tgen): procs = {} for rname in router_list: logger.debug("Fetching running config for router %s", rname) - procs[rname] = router_list[rname].popen( - ["/usr/bin/env", "vtysh", "-c", "show running-config no-header"], - stdin=None, - stdout=open(target_cfg_fmt.format(rname), "w"), - stderr=subprocess.PIPE, - ) + with open(target_cfg_fmt.format(rname), "w") as target_cfg_fd: + procs[rname] = router_list[rname].popen( + ["/usr/bin/env", "vtysh", "-c", "show running-config no-header"], + stdin=None, + stdout=target_cfg_fd, + stderr=subprocess.PIPE, + ) for rname, p in procs.items(): _, error = p.communicate() if p.returncode: @@ -543,12 +543,13 @@ def reset_config_on_routers(tgen, routerName=None): procs = {} for rname in router_list: logger.debug("Fetching running config for router %s", rname) - procs[rname] = router_list[rname].popen( - ["/usr/bin/env", "vtysh", "-c", "show running-config no-header"], - stdin=None, - stdout=open(run_cfg_fmt.format(rname, gen), "w"), - stderr=subprocess.PIPE, - ) + with open(run_cfg_fmt.format(rname, gen), "w") as run_cfg_fd: + procs[rname] = router_list[rname].popen( + ["/usr/bin/env", "vtysh", "-c", "show running-config no-header"], + stdin=None, + stdout=run_cfg_fd, + stderr=subprocess.PIPE, + ) for rname, p in procs.items(): _, error = p.communicate() if p.returncode: @@ -567,19 +568,20 @@ def reset_config_on_routers(tgen, routerName=None): logger.debug( "Generating delta for router %s to new configuration (gen %d)", rname, gen ) - procs[rname] = tgen.net.popen( - [ - "/usr/lib/frr/frr-reload.py", - "--test-reset", - "--input", - run_cfg_fmt.format(rname, gen), - "--test", - target_cfg_fmt.format(rname), - ], - stdin=None, - stdout=open(delta_fmt.format(rname, gen), "w"), - stderr=subprocess.PIPE, - ) + with open(delta_fmt.format(rname, gen), "w") as delta_fd: + procs[rname] = tgen.net.popen( + [ + "/usr/lib/frr/frr-reload.py", + "--test-reset", + "--input", + run_cfg_fmt.format(rname, gen), + "--test", + target_cfg_fmt.format(rname), + ], + stdin=None, + stdout=delta_fd, + stderr=subprocess.PIPE, + ) for rname, p in procs.items(): _, error = p.communicate() if p.returncode: