Commit 73f82cdc authored by Maiterth, Matthias's avatar Maiterth, Matthias
Browse files

Merge branch 'test-updates' into 'develop'

Test improvements

See merge request !107
parents 0bcabe2a 20bf758b
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ CLI_CONFIG = SettingsConfigDict(
)


def main():
def main(cli_args: list[str] | None = None):
    parser = argparse.ArgumentParser(
        description="""
            ExaDigiT Resource Allocator & Power Simulator (RAPS)
@@ -153,7 +153,7 @@ def main():

    # TODO: move telemetry and other misc scripts into here

    args = parser.parse_args()
    args = parser.parse_args(cli_args)
    args.func(args)


+20 −3
Original line number Diff line number Diff line
import pytest
import uuid
import shutil
from glob import glob
from pathlib import Path
import gc


def pytest_addoption(parser):
@@ -15,6 +19,19 @@ def pytest_runtest_setup(item):
        pytest.skip(reason)


@pytest.fixture
def random_id():
    return f"test-{str(uuid.uuid4())[:8]}"
@pytest.fixture()
def sim_output():
    """
    Handles cleaning up output from the sim.
    Can also be used even if you aren't outputing anything to run garbage collection after the sim.
    """
    out = f"test-output/test-{str(uuid.uuid4())[:8]}"
    yield out
    for file in glob(f"{out}*"):
        if Path(file).is_dir():
            shutil.rmtree(file)
        else:
            Path(file).unlink()

    # Also force a garbage collection to clean up memory after running a simulation
    gc.collect()
+17 −10
Original line number Diff line number Diff line
import pytest
from tests.util import DATA_PATH


@pytest.fixture(params=[
@@ -180,18 +181,24 @@ def system_config(system):


@pytest.fixture
def system_file(system):
def system_files(system):
    files = {
        "40frontiers": [],
        "adastraMI250": ["AdastaJobsMI250_15days.parquet"],
        "frontier": ["slurm/joblive/date=2024-01-18/", "jobprofile/date=2024-01-18/"],
        "fugaku": ["21_04.parquet"],
        "gcloudv2": ["/v2/google_cluster_data_2011_sample"],
        "lassen": ["Lassen-Supercomputer-Job-Dataset"],
        "marconi100": ["job_table.parquet"],
        "mit_supercloud": ["202201"],
        "setonix": [""],
        "adastraMI250": ["adastraMI250/AdastaJobsMI250_15days.parquet"],
        "frontier": ["frontier/slurm/joblive/date=2024-01-18/", "frontier/jobprofile/date=2024-01-18/"],
        "fugaku": ["fugaku/21_04.parquet"],
        "gcloudv2": ["gcloud/v2/google_cluster_data_2011_sample"],
        "lassen": ["lassen/Lassen-Supercomputer-Job-Dataset"],
        "marconi100": ["marconi100/job_table.parquet"],
        "mit_supercloud": ["mit_supercloud/202201"],
        "setonix": [],
        "summit": [],
        "lumi": []
    }
    return files.get(system, files)

    file_list = [DATA_PATH / f for f in files.get(system, [])]
    for file in file_list:
        assert file.exists(), \
            f"File `{file}' does not exist. does ./data exist or is RAPS_DATA_DIR set?"

    return [str(f) for f in file_list]
+1 −4
Original line number Diff line number Diff line
import gc
import pytest
from raps.engine import Engine
from raps.sim_config import SimConfig
@@ -15,7 +14,7 @@ pytestmark = [
]


def test_engine(system, system_config):
def test_engine(system, system_config, sim_output):
    if not system_config.get("main", False):
        pytest.skip(f"{system} does not support basic main run.")

@@ -35,5 +34,3 @@ def test_engine(system, system_config):

    assert engine_stats['time simulated'] == '0:02:00'
    # TODO: More specific tests of values

    gc.collect()
+2 −12
Original line number Diff line number Diff line
import os
import subprocess
import gc
import pytest
from tests.util import PROJECT_ROOT

@@ -11,7 +10,7 @@ pytestmark = [
]


def test_main_basic_run(system, system_config, random_id):
def test_main_basic_run(system, system_config, sim_output):
    if not system_config.get("main", False):
        pytest.skip(f"{system} does not support basic main run.")

@@ -20,15 +19,6 @@ def test_main_basic_run(system, system_config, random_id):
        "python", "main.py", "run",
        "--time", "1m",
        "--system", system,
        "-o", random_id
        "-o", sim_output
    ], capture_output=True, text=True, stdin=subprocess.DEVNULL)
    assert result.returncode == 0, f"Failed on {system}: {result.stderr}"

    subprocess.run(
        f"rm {random_id}.npz && rm -fr simulation_results/{random_id}",
        shell=True,
        check=True
    )

    del result
    gc.collect()
Loading