| ############################################################################ |
| # Copyright (C) SchedMD LLC. |
| ############################################################################ |
| import atf |
| import pytest |
| import re |
| |
| |
| # Setup/Teardown |
| @pytest.fixture(scope="module", autouse=True) |
| def setup(): |
| atf.require_config_parameter("FairShareDampeningFactor", 1) |
| |
| |
| @pytest.fixture(scope="function") |
| def compiled_program(tmp_path): |
| """Compile test program that uses plugin""" |
| test_program = str(tmp_path / "test.exe") |
| source_file = re.sub(r"\.py$", ".c", __file__) |
| atf.compile_against_libslurm( |
| source_file, |
| test_program, |
| full=True, |
| build_args=f"-ldl -lm -export-dynamic {atf.properties['slurm-build-dir']}/src/slurmctld/locks.o {atf.properties['slurm-build-dir']}/src/sshare/process.o", |
| ) |
| return test_program |
| |
| |
| def test_shares(compiled_program): |
| """Verify that shares return the expected values""" |
| output = atf.run_command_output(compiled_program, fatal=True) |
| assert ( |
| re.search(r"root\|\|\|1.000000\|210\|\|1.000000\|0.500000\|\|cpu=0\|", output) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountA\|\|40\|0.266667\|45\|0.214286\|0.214286\|0.572929\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountB\|\|30\|0.200000\|20\|0.095238\|0.184524\|0.527550\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountB\|User1\|1\|0.200000\|20\|0.095238\|0.184524\|0.527550\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountC\|\|10\|0.066667\|25\|0.119048\|0.142857\|0.226431\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountC\|User2\|1\|0.033333\|25\|0.119048\|0.130952\|0.065672\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountC\|User3\|1\|0.033333\|0\|0.000000\|0.071429\|0.226431\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountD\|\|60\|0.400000\|25\|0.119048\|0.119048\|0.813594\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountE\|\|25\|0.166667\|25\|0.119048\|0.119048\|0.609507\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountE\|User4\|1\|0.166667\|25\|0.119048\|0.119048\|0.609507\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountF\|\|35\|0.233333\|0\|0.000000\|0.069444\|0.813594\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountF\|User5\|1\|0.233333\|0\|0.000000\|0.069444\|0.813594\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountG\|\|0\|0.000000\|30\|0.142857\|0.142857\|0.000000\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountG\|User6\|0\|0.000000\|30\|0.142857\|0.142857\|0.000000\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountH\|\|50\|0.333333\|110\|0.523810\|0.523810\|0.336475\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountH\|UHRA1\|parent\|0.333333\|20\|0.095238\|0.523810\|0.336475\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountH\|UHRA2\|40\|0.078431\|20\|0.095238\|0.196078\|0.176777\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountH\|UHRA3\|50\|0.098039\|25\|0.119048\|0.238095\|0.185749\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountHTA\|\|parent\|0.333333\|45\|0.214286\|0.523810\|0.336475\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountHTA\|UHTAStd1\|parent\|0.333333\|10\|0.047619\|0.523810\|0.336475\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountHTA\|UHTAStd2\|30\|0.058824\|10\|0.047619\|0.131653\|0.211966\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |
| assert ( |
| re.search( |
| r"AccountHTA\|UHTAStd3\|50\|0.098039\|25\|0.119048\|0.238095\|0.185749\|\|cpu=0\|", |
| output, |
| ) |
| is not None |
| ) |