From 6b85116784cfddf1633b48e4c5152948afd5f512 Mon Sep 17 00:00:00 2001 From: Austin Macdonald Date: Tue, 4 Jun 2024 09:31:22 -0500 Subject: [PATCH] Add tests for max value update --- src/duct.py | 6 ++++-- test/test_aggregation.py | 2 -- test/test_report.py | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 4 deletions(-) delete mode 100644 test/test_aggregation.py create mode 100644 test/test_report.py diff --git a/src/duct.py b/src/duct.py index ab226065..abf829cf 100755 --- a/src/duct.py +++ b/src/duct.py @@ -52,6 +52,7 @@ def __init__( self.arguments = arguments self.session_id = session_id self.gpus = [] + self.env = None self.number = 0 self.system_info = {} self.output_prefix = output_prefix @@ -103,13 +104,14 @@ def get_system_info(self): except subprocess.CalledProcessError: self.gpus = ["Failed to query GPU info"] - def update_max_resources(self, maxes, sample): + @staticmethod + def update_max_resources(maxes, sample): for pid in sample: if pid in maxes: for key, value in sample[pid].items(): maxes[pid][key] = max(maxes[pid].get(key, value), value) else: - maxes[pid] = sample[pid] + maxes[pid] = sample[pid].copy() def collect_sample(self): process_data = {} diff --git a/test/test_aggregation.py b/test/test_aggregation.py deleted file mode 100644 index 4d496347..00000000 --- a/test/test_aggregation.py +++ /dev/null @@ -1,2 +0,0 @@ -def test_sanity(): - pass diff --git a/test/test_report.py b/test/test_report.py new file mode 100644 index 00000000..44ed7d9b --- /dev/null +++ b/test/test_report.py @@ -0,0 +1,37 @@ +from collections import defaultdict +from duct import Report + +ex0 = {"pid1": {"pcpu": 0.0}} +ex1 = {"pid1": {"pcpu": 1.0}} +ex2 = {"pid2": {"pcpu": 1.0}} +ex2pids = {"pid1": {"pcpu": 0.0}, "pid2": {"pcpu": 0.0}} + + +def test_update_max_resources_initial_values_one_pid(): + maxes = defaultdict(dict) + Report.update_max_resources(maxes, ex0) + assert maxes == ex0 + + +def test_update_max_resources_max_values_one_pid(): + maxes = defaultdict(dict) + Report.update_max_resources(maxes, ex0) + Report.update_max_resources(maxes, ex1) + assert maxes == ex1 + + +def test_update_max_resources_initial_values_two_pids(): + maxes = defaultdict(dict) + Report.update_max_resources(maxes, ex2pids) + assert maxes == ex2pids + + +def test_update_max_resources_max_update_values_two_pids(): + maxes = defaultdict(dict) + Report.update_max_resources(maxes, ex2pids) + Report.update_max_resources(maxes, ex1) + Report.update_max_resources(maxes, ex2) + assert maxes.keys() == ex2pids.keys() + assert maxes != ex2pids + assert maxes["pid1"] == ex1["pid1"] + assert maxes["pid2"] == ex2["pid2"]