123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- """L0 Tests Runner.
- How to run this script?
- 1. Run all the tests: `python /path/to/apex/tests/L0/run_test.py` If you want an xml report,
- pass `--xml-report`, i.e. `python /path/to/apex/tests/L0/run_test.py --xml-report` and
- the file is created in `/path/to/apex/tests/L0`.
- 2. Run one of the tests (e.g. fused layer norm):
- `python /path/to/apex/tests/L0/run_test.py --include run_fused_layer_norm`
- 3. Run two or more of the tests (e.g. optimizers and fused layer norm):
- `python /path/to/apex/tests/L0/run_test.py --include run_optimizers run_fused_layer_norm`
- """
- import argparse
- import os
- import unittest
- import sys
- TEST_ROOT = os.path.dirname(os.path.abspath(__file__))
- TEST_DIRS = [
- "run_amp",
- "run_deprecated",
- "run_fp16util",
- "run_optimizers",
- "run_fused_layer_norm",
- "run_mlp",
- "run_transformer",
- ]
- DEFAULT_TEST_DIRS = [
- "run_optimizers",
- "run_fused_layer_norm",
- "run_mlp",
- "run_transformer",
- ]
- def parse_args():
- parser = argparse.ArgumentParser(
- description="L0 test runner",
- formatter_class=argparse.ArgumentDefaultsHelpFormatter,
- )
- parser.add_argument(
- "--include",
- nargs="+",
- choices=TEST_DIRS,
- default=DEFAULT_TEST_DIRS,
- help="select a set of tests to run (defaults to ALL tests).",
- )
- parser.add_argument(
- "--xml-report",
- default=None,
- action="store_true",
- help="[deprecated] pass this argument to get a junit xml report. Use `--xml-dir`. (requires `xmlrunner`)",
- )
- parser.add_argument(
- "--xml-dir",
- default=None,
- type=str,
- help="Directory to save junit test reports. (requires `xmlrunner`)",
- )
- args, _ = parser.parse_known_args()
- return args
- def main(args: argparse.Namespace) -> None:
- test_runner_kwargs = {"verbosity": 2}
- Runner = unittest.TextTestRunner
- xml_dir = None
- if (args.xml_report is not None) or (args.xml_dir is not None):
- if args.xml_report is not None:
- import warnings
- warnings.warn("The option of `--xml-report` is deprecated", FutureWarning)
- import xmlrunner
- from datetime import date # NOQA
- Runner = xmlrunner.XMLTestRunner
- if args.xml_report:
- xml_dir = os.path.abspath(os.path.dirname(__file__))
- else:
- xml_dir = os.path.abspath(args.xml_dir)
- if not os.path.exists(xml_dir):
- os.makedirs(xml_dir)
- errcode = 0
- for test_dir in args.include:
- if xml_dir is not None:
- xml_output = os.path.join(
- xml_dir,
- f"""TEST_{test_dir}_{date.today().strftime("%y%m%d")}""",
- )
- if not os.path.exists(xml_output):
- os.makedirs(xml_output)
- test_runner_kwargs["output"] = xml_output
- runner = Runner(**test_runner_kwargs)
- test_dir = os.path.join(TEST_ROOT, test_dir)
- suite = unittest.TestLoader().discover(test_dir)
- print("\nExecuting tests from " + test_dir)
- result = runner.run(suite)
- if not result.wasSuccessful():
- errcode = 1
- sys.exit(errcode)
- if __name__ == '__main__':
- args = parse_args()
- main(args)
|