misc,ext,tests: Automatically split CI TestLib tests across GitHub Action jobs (#263)

This PR utilizes GitHub Action's matrix's to automatically distribute
the CI testlib gem5 build and test jobs across available GitHub Action
Runners.

The CI tests (the `quick` testlib tests, i.e. those run with `./main.py
run`) are distributed across the runners on a per directory basis ---
all directories under "tests/gem5" are run as their own jobs.

The necessary gem5 builds for each workflow are now automatically
inferred via the introduction of `./main.py list`'s `--build-targets`
flag which returns the gem5 build target for a given test or collection
of tests. E.g., `./main.py list --build-targets` will return the build
targets for all the `quick` testlib tests and `./main.py list
--build-target --uid=<id>` will return the build targets the test suite
`<id>` requires.

Moving from monolithic jobs to fine-grained ones will make the locaiton
of test failures more obvious. Each job has it's own artifact containing
"test/testing-results" for the tests run in that job. In addition,
maintenance of these files should become less burdensome due to less
hardcoding.
This commit is contained in:
Bobby R. Bruce
2023-09-27 14:32:16 -07:00
committed by GitHub
8 changed files with 198 additions and 44 deletions

View File

@@ -318,6 +318,10 @@ def checkpoint(dir):
drain()
memWriteback(root)
# Recursively create the checkpoint directory if it does not exist.
os.makedirs(dir, exist_ok=True)
print("Writing checkpoint")
_m5.core.serializeAll(dir)