Skip to content

Commit d20102a

Browse files
committed
[GR-71342] Test tier run through
PullRequest: graalpython/4227
2 parents d6e7410 + a0a9c96 commit d20102a

1 file changed

Lines changed: 34 additions & 25 deletions

File tree

docs/user/Test-Tiers.md

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,62 @@
11
# Detailed Test Tier Breakdown
22

3-
GraalPy test tiers are similar to [CPython Platform Support Tiers](https://peps.python.org/pep-0011/), but do not constitute or imply any commitment to support.
3+
GraalPy organizes platform testing into tiers that indicate the level of testing rigor and support you can expect for different platform configurations. This tiering system helps you understand:
44

5-
Generally, running pure Python code on GraalPy without JIT is compatible with any recent JDK.
6-
However, support for native extensions, platform-specific APIs, and just-in-time compilation is more limited.
5+
- How thoroughly your platform is tested
6+
- What level of stability to expect
7+
- Which features are fully supported vs. experimental
78

8-
Platform testing is organized into Tiers, each with specific goals.
9-
Tiers are identified by a "target tuple": `[CPU architecture]-[Operating System]-[libc]-[JDK]-[Java version]`.
10-
JDK names correspond to those used by [SDKMAN!](https://sdkman.io/).
11-
The term "graal" is used to refer to testing on both Oracle GraalVM and GraalVM Community Edition, including GraalVM Native Image.
12-
The following tables list tested platforms by tier.
13-
Platforms not listed are untested.
9+
Platforms are identified using the target tuple format: `[CPU architecture]-[Operating System]-[libc]-[JDK]-[Java version]`. JDK names follow [SDKMAN!](https://sdkman.io/) conventions, and "graal" refers to both Oracle GraalVM and GraalVM Community Edition (including Native Image).
1410

15-
**Tier 1**
11+
> **Important:** GraalPy test tiers are similar to [CPython Platform Support Tiers](https://peps.python.org/pep-0011/), but do not constitute or imply any commitment to support.
1612
17-
- CI failures block releases.
18-
- Changes which would break the main or release branches are not allowed to be merged; any breakage should be fixed or reverted immediately.
19-
- All core developers are responsible to keep main, and thus these platforms, working.
20-
- Platform-specific Python APIs and Python C extensions are fully tested.
13+
Pure Python code runs reliably on GraalPy with recent JDKs when JIT compilation is disabled. However, advanced features like native extensions, platform-specific APIs, and JIT compilation have varying support depending on your platform tier.
14+
15+
## Tier 1
16+
17+
- **Stability:** CI failures block releases. Changes which would break the main or release branches are not allowed to be merged; any breakage should be fixed or reverted immediately.
18+
- **Responsibility:** All core developers are responsible to keep main, and thus these platforms, working.
19+
- **Coverage:** Platform-specific Python APIs and Python C extensions are fully tested.
2120

2221
| Platform | Notes |
2322
|----------------------------------|----------------------------|
2423
| amd64-linux-glibc-graal-latest | Oracle Linux 8 or similar. |
2524
| aarch64-linux-glibc-graal-latest | Oracle Linux 8 or similar. |
2625

27-
**Tier 2**
26+
## Tier 2
2827

29-
- CI failures block releases.
30-
- Changes which would break the main or release branches are not allowed to be merged; any breakage should be fixed or tests marked as skipped.
31-
- Circa 10% of tests running on Tier 1 platforms may be skipped on Tier 2 platforms.
32-
- Platform-specific Python APIs are fully tested; Python C extensions may have more issues than on Tier 1 platforms.
28+
- **Stability:** CI failures block releases. Changes which would break the main or release branches are not allowed to be merged; any breakage should be fixed or tests marked as skipped.
29+
- **Test Coverage:** Circa 10% of tests running on Tier 1 platforms may be skipped on Tier 2 platforms.
30+
- **Feature Support:** Platform-specific Python APIs are fully tested; Python C extensions may have more issues than on Tier 1 platforms.
3331

3432
| Platform | Notes |
3533
|-----------------------------------|-------------------------|
3634
| aarch64-macos-darwin-graal-latest | macOS on M-series CPUs. |
3735

38-
**Tier 3**
36+
## Tier 3
3937

40-
- CI failures block releases.
41-
- Changes which would break the main or release branches are not allowed to be merged; any breakage should be fixed or tests marked as skipped.
42-
- Circa 25% of tests running on Tier 1 platforms may be skipped on Tier 3.
43-
- Tests for platform-specific Python APIs and Python C extension are run, but not prioritized.
38+
- **Stability:** CI failures block releases. Changes which would break the main or release branches are not allowed to be merged; any breakage should be fixed or tests marked as skipped.
39+
- **Test Coverage:** Circa 25% of tests running on Tier 1 platforms may be skipped on Tier 3.
40+
- **Feature Support:** Tests for platform-specific Python APIs and Python C extension are run, but not prioritized.
4441

4542
| Platform | Notes |
4643
|---------------------------------|----------------------------------------------|
47-
| amd64-macos-darwin-graal-latest | macOS on Intel CPUs running BigSur or newer. |
44+
| amd64-macos-darwin-graal-latest | macOS on Intel CPUs running Big Sur or newer. |
4845
| amd64-windows-msvc-graal-latest | Windows 11, Windows Server 2025, or newer. |
4946
| amd64-linux-glibc-oracle-21 | JDK 21 is tested without JIT compilation. |
5047
| aarch64-linux-glibc-oracle-21 | JDK 21 is tested without JIT compilation. |
5148
| aarch64-macos-darwin-oracle-21 | JDK 21 is tested without JIT compilation. |
5249
| amd64-macos-darwin-oracle-21 | JDK 21 is tested without JIT compilation. |
5350
| amd64-windows-msvc-oracle-21 | JDK 21 is tested without JIT compilation. |
51+
52+
## Tier 4
53+
54+
- **Stability:** CI failures do not block releases. Tests may be broken on the main and release branches.
55+
- **Test Coverage:** Smoke tests with platform-agnostic pure Python workloads are run on a regular schedule.
56+
- **Feature Support:** Only basic pure Python functionality is tested; platform-specific features and extensions are not prioritized.
57+
58+
| Platform | Notes |
59+
| ------------------------------- | ----------------------------------------------|
60+
| amd64-linux-musl-graal-latest | Ensures GraalPy can be built for and used on musl libc platforms such as Alpine Linux. |
61+
| amd64-linux-glibc-j9-17 | Ensures that non-Oracle JVMs work for pure Python code without JIT. |
62+
| ppc64le-linux-glibc-oracle-17 | Ensures that other architectures (ppc64le, s390x, risc-v) work for pure Python code without JIT. |

0 commit comments

Comments
 (0)