]> git.puffer.fish Git - mirror/frr.git/commitdiff
tests: Resource leak in common_config.py 18658/head
authorY Bharath <y.bharath@samsung.com>
Tue, 15 Apr 2025 05:47:14 +0000 (11:17 +0530)
committerY Bharath <y.bharath@samsung.com>
Tue, 15 Apr 2025 05:54:44 +0000 (11:24 +0530)
Address pending changes from PR:18574

Signed-off-by: y-bharath14 <y.bharath@samsung.com>
tests/topotests/lib/common_config.py

index 54142e8526cc29e8e5513a6ee974384bf6bbb327..a19c61b19dd1024f08711221dd9079d8554c2332 100644 (file)
@@ -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: