TensorRT-LLMs/scripts/check_test_list.py
Emma Qiao 48db263d9a
infra: Add test list name check (#3097)
* Add steps to check test names

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Correct test-db command

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Switch to use a trt-llm image

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Update go path

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Correct go path

Signed-off-by: qqiao <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Move the test list check to test ci

Signed-off-by: qqiao <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Correct file path

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Fix path again

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Fix get path

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Fix typo

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Skip test list check for ARM

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Fix expression

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Change back unrelated file

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Correct qa test names

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Remove a stage

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Update jenkins/L0_Test.groovy

Co-authored-by: Yanchao Lu <yanchaol@nvidia.com>
Signed-off-by: Emma Qiao <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Move some steps to a python script

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Fix script path

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Split commands and debug

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Fix typo

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Fix typo

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Also correct case name in waives list

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Move check script to another folder

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Update qa list after rebase

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Fix rebase

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Remove the perf tests under QA

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

* Some tests already fixed after rebase to TOT

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>

---------

Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: qqiao <qqiao@nvidia.com>
Signed-off-by: Emma Qiao <qqiao@nvidia.com>
Co-authored-by: Yanchao Lu <yanchaol@nvidia.com>
2025-04-20 23:02:16 +08:00

81 lines
2.6 KiB
Python

import argparse
import os
import subprocess
def install_python_dependencies(llm_src):
subprocess.run(
f"cd {llm_src} && pip3 install --retries 1 -r requirements-dev.txt",
shell=True,
check=True)
subprocess.run(
f"pip3 install --force-reinstall --no-deps {llm_src}/../tensorrt_llm-*.whl",
shell=True,
check=True)
subprocess.run(
"pip3 install --extra-index-url https://urm.nvidia.com/artifactory/api/pypi/sw-tensorrt-pypi/simple "
"--ignore-installed trt-test-db==1.8.5+bc6df7",
shell=True,
check=True)
def verify_l0_test_lists(llm_src):
test_db_path = f"{llm_src}/tests/integration/test_lists/test-db"
test_list = f"{llm_src}/l0_test.txt"
# Remove dynamically generated perf tests
subprocess.run(f"rm -f {test_db_path}/*perf*", shell=True, check=True)
subprocess.run(
f"trt-test-db -d {test_db_path} --test-names --output {test_list}",
shell=True,
check=True)
subprocess.run(
f"cd {llm_src}/tests/integration/defs && "
f"pytest --apply-test-list-correction --test-list={test_list} --co -q",
shell=True,
check=True)
def verify_qa_test_lists(llm_src):
test_qa_path = f"{llm_src}/tests/integration/test_lists/qa"
# Remove dynamically generated perf tests
subprocess.run(f"rm -f {test_qa_path}/*perf*", shell=True, check=True)
test_def_files = subprocess.check_output(
f"ls -d {test_qa_path}/*.txt", shell=True).decode().strip().split('\n')
for test_def_file in test_def_files:
subprocess.run(
f"cd {llm_src}/tests/integration/defs && "
f"pytest --apply-test-list-correction --test-list={test_def_file} --co -q",
shell=True,
check=True)
def main():
parser = argparse.ArgumentParser(
description="Check test lists for L0 and QA.")
parser.add_argument("--l0",
action="store_true",
help="Enable L0 test list verification.")
parser.add_argument("--qa",
action="store_true",
help="Enable QA test list verification.")
args = parser.parse_args()
llm_src = os.path.realpath("TensorRT-LLM/src")
install_python_dependencies(llm_src)
# Verify L0 test lists
if args.l0:
verify_l0_test_lists(llm_src)
else:
print("Skipping L0 test list verification.")
# Verify QA test lists
if args.qa:
verify_qa_test_lists(llm_src)
else:
print("Skipping QA test list verification.")
if __name__ == "__main__":
main()