Skip to content
2 changes: 1 addition & 1 deletion .github/workflows/setup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ on:
description: Matrix variants to run on Windows.
value: ${{ jobs.setup.outputs.windows_variants }}
test_type:
description: The test type to run for component tests (i.e. smoke, full)
description: The test type to run for component tests (i.e. quick, full)
value: ${{ jobs.setup.outputs.test_type }}
windows_test_labels:
description: ROCm projects to run Windows tests on. Optional filter.
Expand Down
2 changes: 1 addition & 1 deletion build_tools/github_actions/amdgpu_family_matrix.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@
"family": "gfx1151",
"fetch-gfx-targets": ["gfx1151"],
"build_variants": ["release"],
# TODO(#3299): Re-enable smoke tests once capacity is available for Windows gfx1151
# TODO(#3299): Re-enable quick tests once capacity is available for Windows gfx1151
"run-full-tests-only": True,
},
},
Expand Down
34 changes: 26 additions & 8 deletions build_tools/github_actions/configure_ci.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
* windows_amdgpu_families : List of valid Windows AMD GPU families to execute build and test jobs
* windows_test_labels : List of test names to run on Windows, optionally filtered by PR labels.
* enable_build_jobs: If true, builds will be enabled
* test_type: The type of test that component tests will run (i.e. smoke, full)
* test_type: The type of test that component tests will run (i.e. quick, full)
* run_functional_tests: If true, functional tests will be enabled (nightly/scheduled builds)

Written to GITHUB_STEP_SUMMARY:
Expand Down Expand Up @@ -604,6 +604,7 @@ def main(base_args, linux_families, windows_families):
print(f" is_schedule: {is_schedule}")
print(f" linux_use_prebuilt_artifacts: {linux_use_prebuilt_artifacts}")
print(f" windows_use_prebuilt_artifacts: {windows_use_prebuilt_artifacts}")
pr_labels = None
if is_pull_request:
pr_labels = get_pr_labels(base_args)
print(f" pr_labels: {pr_labels}")
Expand Down Expand Up @@ -646,15 +647,15 @@ def main(base_args, linux_families, windows_families):
)
print("")

test_type = "smoke"
test_type_reason = "default (smoke tests)"
test_type = "quick"
test_type_reason = "default (quick tests)"
run_functional_tests = False

if is_schedule:
# Always build and run full tests on scheduled runs.
enable_build_jobs = True
test_type = "full"
test_type_reason = "scheduled run triggers full tests"
test_type = "comprehensive"
test_type_reason = "scheduled run triggers comprehensive tests"
# Functional tests run on nightly/scheduled builds
run_functional_tests = True
elif is_workflow_dispatch:
Expand All @@ -677,7 +678,7 @@ def main(base_args, linux_families, windows_families):
enable_build_jobs = is_ci_run_required(modified_paths)

# If the modified path contains any git submodules, we want to run a full test suite.
# Otherwise, we just run smoke tests
# Otherwise, we just run quick tests
submodule_paths = get_git_submodule_paths(repo_root=THEROCK_DIR)
matching_submodule_paths = list(set(submodule_paths) & set(modified_paths))
if matching_submodule_paths:
Expand All @@ -691,8 +692,8 @@ def main(base_args, linux_families, windows_families):
test_type_reason = f"test label(s) specified: {combined_test_labels}"

for matrix_row in linux_variants_output + windows_variants_output:
# If the "run-full-tests-only" flag is set for this family, we do not run tests if it is a smoke test type
if matrix_row.get("run-full-tests-only", False) and test_type == "smoke":
# If the "run-full-tests-only" flag is set for this family, we do not run tests if it is a quick test type
if matrix_row.get("run-full-tests-only", False) and test_type == "quick":
matrix_row["test-runs-on"] = ""
# For nightly_check_only_for_family architectures, we want to run only full tests during nightly (scheduled) run
# Otherwise, we run sanity checks in all other scenarios (presubmit/postsubmit)
Expand All @@ -701,6 +702,23 @@ def main(base_args, linux_families, windows_families):
):
matrix_row["sanity_check_only_for_family"] = True

# If a test filter label is included, we set the "test_type" to the designated filter
if pr_labels and any("test_filter:" in label for label in pr_labels):
for label in pr_labels:
if "test_filter:" in label:
filter_type = label.split(":")[1]
# If the filter type is not recognized, we ignore the label and keep the default test type
if filter_type not in [
"quick",
"standard",
"comprehensive",
"full",
]:
continue
test_type = filter_type
test_type_reason = f"test filter label specified: {label}"
break

print(f"test_type decision: '{test_type}' (reason: {test_type_reason})")

# Format variants for summary - handle both regular and multi-arch modes
Expand Down
4 changes: 2 additions & 2 deletions build_tools/github_actions/fetch_test_configurations.py
Original file line number Diff line number Diff line change
Expand Up @@ -543,9 +543,9 @@ def run():
job_config_data["shard_arr"] = [i + 1 for i in range(total_shards)]
job_config_data["total_shards"] = total_shards

# If the test type is smoke tests, we only need one shard for the test job
# If the test type is quick tests, we only need one shard for the test job
# Note: Benchmarks always use test_type="full" but have total_shards=1 anyway
if test_type == "smoke":
if test_type == "quick":
job_config_data["total_shards"] = 1
job_config_data["shard_arr"] = [1]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ def print_reproduction_steps(args: argparse.Namespace) -> None:
"--test-type",
type=str,
default="full",
help="Test type (e.g., full, smoke)",
help="Test type (e.g., full, quick)",
)
parser.add_argument(
"--container-image",
Expand Down
4 changes: 2 additions & 2 deletions build_tools/github_actions/test_executable_scripts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ ______________________________________________________________________
## Overview

1. The script is invoked by the **Test component** workflow with env vars set (component name, GPU arch, test type, sharding).
1. The script expects the component under test to have a ctest based interface, with labels corresponding to test categories like quick, standard, comprehensive and full(which can be run for scenarios like smoke test, pre-commit etc)
1. The script expects the component under test to have a ctest based interface, with labels corresponding to test categories like quick, standard, comprehensive and full(which can be run for scenarios like quick test, pre-commit etc)
1. The component can opt to always exclude some tests or based on condition like OS and GPU where the test is getting run
1. The script discovers which **GPU-specific test suites** exist by running `ctest --print-labels` and parsing labels of the form `ex_gpu_{gpu_arch}`.
1. It builds and runs a **ctest** command with the right labels and options (category, parallelism, sharding, etc.).
Expand Down Expand Up @@ -43,7 +43,7 @@ ______________________________________________________________________
Run `ctest --print-labels --test-dir {THEROCK_BIN_DIR}/{TEST_COMPONENT}`. Collect every label that starts with `ex_gpu_` and whose suffix starts with `gfx` (e.g. `ex_gpu_gfx110X` → `gfx110X`). This yields the set of **available GPU architectures** for which a label exists.
These are the set of GPU's for which some test exclusions apply - i.e there are some tests which should not be run on these GPU models. The exp_gpu\_ labels with these gpu models points to the ctest entries where the tests are excluded.
1. **Choose category**
From `TEST_TYPE`: `smoke` → `quick`, else → `standard`.
From `TEST_TYPE`: `quick` → `full`, else → `standard`.
1. **Resolve GPU arch**
Parse `AMDGPU_FAMILIES` for the first `gfx...` token (e.g. `gfx1151`). If missing or generic, the script will exclude all GPU-specific tests (`-LE ex_gpu`).
1. **Match GPU to suite**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,11 @@
# -----------------------------
# Test filtering
# -----------------------------
# If smoke mode is enabled, run minimal suite (only dynamic metric tests)
# If quick mode is enabled, run minimal suite (only dynamic metric tests)
test_type = os.getenv("TEST_TYPE", "full")

if test_type == "smoke":
logging.info("Running smoke tests only for amdsmitst")
if test_type == "quick":
logging.info("Running quick tests only for amdsmitst")
test_filter = ["--gtest_filter=AmdSmiDynamicMetricTest.*"]
else:
# Full test mode: run whitelist and explicitly exclude known failing tests
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@

# Determine test filter based on TEST_TYPE environment variable
test_type = os.getenv("TEST_TYPE", "full")
if test_type == "smoke":
# Exclude tests that start with "Full" during smoke tests
if test_type == "quick":
# Exclude tests that start with "Full" during quick tests
environ_vars["GTEST_FILTER"] = "-Full*"

# As a sanity check, verify libIREECompiler.so is available in the build artifacts.
Expand All @@ -49,8 +49,8 @@

# Run the tests
logging.info(f"++ Exec [{THEROCK_DIR}]$ {shlex.join(cmd)}")
if test_type == "smoke":
logging.info(" TEST_TYPE=smoke: Excluding Full* tests via GTEST_FILTER")
if test_type == "quick":
logging.info(" TEST_TYPE=quick: Excluding Full* tests via GTEST_FILTER")
subprocess.run(
cmd,
cwd=THEROCK_DIR,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,10 @@
f"{THEROCK_BIN_DIR}/hipblas-test",
]

# If smoke tests are enabled, we run smoke tests only.
# If quick tests are enabled, we run quick tests only.
# Otherwise, we run the normal test suite
test_type = os.getenv("TEST_TYPE", "full")
if test_type == "smoke":
if test_type == "quick":
cmd += [
"--yaml",
f"{THEROCK_BIN_DIR}/hipblas_smoke.yaml",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
environ_vars["HSA_XNACK"] = "1"
environ_vars["OMP_NUM_THREADS"] = "1"

# If smoke tests are enabled, we run smoke tests only.
# If quick tests are enabled, we run quick tests only.
# Otherwise, we run the normal test suite
test_type = os.getenv("TEST_TYPE", "full")

Expand All @@ -41,7 +41,7 @@
test_type = "quick"

test_filter = []
if test_type == "smoke":
if test_type == "quick":
test_filter.append("--gtest_filter=*smoke*")
elif test_type == "quick":
test_filter.append("--gtest_filter=*quick*")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
environ_vars = os.environ.copy()
test_type = os.getenv("TEST_TYPE", "full")

if test_type == "smoke":
# Exclude tests that start with "Full" during smoke tests
if test_type == "quick":
# Exclude tests that start with "Full" during quick tests
environ_vars["GTEST_FILTER"] = "-Full*"

logging.info(f"++ Exec [{THEROCK_DIR}]$ {shlex.join(cmd)}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

logging.basicConfig(level=logging.INFO)

SMOKE_TESTS = [
QUICK_TESTS = [
"*ShuffleTests/*.*",
"*WarpStoreTest/*.*",
"AdjacentDifference/*.*",
Expand Down Expand Up @@ -107,12 +107,12 @@
"300",
]

# If smoke tests are enabled, we run smoke tests only.
# If quick tests are enabled, we run quick tests only.
# Otherwise, we run the normal test suite
environ_vars = os.environ.copy()
test_type = os.getenv("TEST_TYPE", "full")
if test_type == "smoke":
environ_vars["GTEST_FILTER"] = ":".join(SMOKE_TESTS)
if test_type == "quick":
environ_vars["GTEST_FILTER"] = ":".join(QUICK_TESTS)

logging.info(f"++ Exec [{THEROCK_DIR}]$ {shlex.join(cmd)}")
subprocess.run(cmd, cwd=THEROCK_DIR, check=True, env=environ_vars)
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@
environ_vars["GTEST_SHARD_INDEX"] = str(int(SHARD_INDEX) - 1)
environ_vars["GTEST_TOTAL_SHARDS"] = str(TOTAL_SHARDS)

# If smoke tests are enabled, we run smoke tests only.
# If quick tests are enabled, we run quick tests only.
# Otherwise, we run the normal test suite
test_type = os.getenv("TEST_TYPE", "full")
if test_type == "smoke":
if test_type == "quick":
test_filter = ["--smoketest"]
else:
# "--test_prob" is the probability that a given test will run.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
gtest_filter = "--gtest_filter="

test_type = os.getenv("TEST_TYPE", "full")
if test_type == "smoke":
if test_type == "quick":
gtest_filter += "*spmv*:*spsv*:*spsm*:*spmm*:*csric0*:*csrilu0*:-known_bug*"
else:
gtest_filter += "--gtest_filter=*quick*:-known_bug*"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@
environ_vars["GTEST_SHARD_INDEX"] = str(int(SHARD_INDEX) - 1)
environ_vars["GTEST_TOTAL_SHARDS"] = str(TOTAL_SHARDS)

# If smoke tests are enabled, we run smoke tests only.
# If quick tests are enabled, we run quick tests only.
# Otherwise, we run the normal test suite
test_type = os.getenv("TEST_TYPE", "full")

test_filter = []
if test_type == "smoke":
if test_type == "quick":
test_filter.append("--gtest_filter=*smoke*")
elif test_type == "full":
test_filter.append("--gtest_filter=*quick*")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -251,8 +251,8 @@

####################################################

# Creating a smoke test filter
smoke_filter = [
# Creating a quick test filter
quick_filter = [
# Batch norm FWD smoke tests
"Smoke/GPU_BNCKFWDTrainLarge2D_FP16*",
"Smoke/GPU_BNOCLFWDTrainLarge2D_FP16*",
Expand All @@ -267,16 +267,16 @@

# TODO(rocm-libraries#2266): re-enable test for gfx950-dcgpu
if AMDGPU_FAMILIES != "gfx950-dcgpu":
smoke_filter.append("*DBSync*")
quick_filter.append("*DBSync*")
positive_filter.append("*DBSync*")

####################################################

# If smoke tests are enabled, we run smoke tests only.
# If quick tests are enabled, we run quick tests only.
# Otherwise, we run the normal test suite
test_type = os.getenv("TEST_TYPE", "full")
if test_type == "smoke":
test_filter = "--gtest_filter=" + ":".join(smoke_filter)
if test_type == "quick":
test_filter = "--gtest_filter=" + ":".join(quick_filter)
else:
test_filter = (
"--gtest_filter=" + ":".join(positive_filter) + "-" + ":".join(negative_filter)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@
environ_vars = os.environ.copy()
test_type = os.getenv("TEST_TYPE", "full")

if test_type == "smoke":
# Exclude tests that start with "Full" during smoke tests
if test_type == "quick":
# Exclude tests that start with "Full" during quick tests
environ_vars["GTEST_FILTER"] = "-Full*"

logging.info(f"++ Exec [{THEROCK_DIR}]$ {shlex.join(cmd)}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,13 @@

logging.basicConfig(level=logging.INFO)

# If smoke tests are enabled, we run smoke tests only.
# If quick tests are enabled, we run quick tests only.
# Otherwise, we run the normal test suite
test_type = os.getenv("TEST_TYPE", "full")
if test_type == "smoke":
if test_type == "quick":
test_filter = ["--yaml", f"{THEROCK_BIN_DIR}/rocblas_smoke.yaml"]
else:
# only running smoke tests due to openBLAS issue: https://github.com/ROCm/TheRock/issues/1605
# only running quick tests due to openBLAS issue: https://github.com/ROCm/TheRock/issues/1605
test_filter = ["--yaml", f"{THEROCK_BIN_DIR}/rocblas_smoke.yaml"]

cmd = [f"{THEROCK_BIN_DIR}/rocblas-test"] + test_filter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@
environ_vars["GTEST_SHARD_INDEX"] = str(int(SHARD_INDEX) - 1)
environ_vars["GTEST_TOTAL_SHARDS"] = str(TOTAL_SHARDS)

# If smoke tests are enabled, we run smoke tests only.
# If quick tests are enabled, we run quick tests only.
# Otherwise, we run the normal test suite
test_type = os.getenv("TEST_TYPE", "full")
if test_type == "smoke":
if test_type == "quick":
test_filter = ["--smoketest"]
else:
# "--test_prob" is the probability that a given test will run.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
},
}

SMOKE_TESTS = [
QUICK_TESTS = [
"*ArgIndexIterator",
"*BasicTests.GetVersion",
"*BatchMemcpyTests/*",
Expand Down Expand Up @@ -122,12 +122,12 @@
ignored_tests = TEST_TO_IGNORE[AMDGPU_FAMILIES][os_type]
cmd.extend(["--exclude-regex", "|".join(ignored_tests)])

# If smoke tests are enabled, we run smoke tests only.
# If quick tests are enabled, we run quick tests only.
# Otherwise, we run the normal test suite
environ_vars = os.environ.copy()
test_type = os.getenv("TEST_TYPE", "full")
if test_type == "smoke":
environ_vars["GTEST_FILTER"] = ":".join(SMOKE_TESTS)
if test_type == "quick":
environ_vars["GTEST_FILTER"] = ":".join(QUICK_TESTS)

logging.info(f"++ Exec [{THEROCK_DIR}]$ {shlex.join(cmd)}")

Expand Down
Loading
Loading