Skip to content

ci(unit-tests): run the LATEST tier in a job of its own under coverage (#2751) - #2754

Merged
JarryShaw merged 1 commit into
mainfrom
ci/2751-latest-leg-under-half-cap
Nov 3, 2026
Merged

JarryShaw merged 1 commit into
mainfrom
ci/2751-latest-leg-under-half-cap

Conversation

@JarryShaw

Copy link
Copy Markdown
Owner

What is the purpose of your pull request?

  • ci — workflows or build tooling

Description of your pull request and other information

Python 3.15 was the only leg that ran both test tiers, and it ran them under coverage. Its Run unit tests step took 23–31 min. The LATEST tier, minus the project pins, was 57–58% of that time.

  • Python 3.15 now skips the LATEST tier, as every other leg does, and runs only ALL, under coverage.
  • A new test-latest-tier job runs the LATEST tier minus the pins, under coverage. It is split in half at LATEST_TIER_BOUNDARY in tests/_tiers.py, the way ci(timing): the project ordering leg will hit its 20-minute step cap within about a week #2254 split project.
  • A new Coverage job merges the three cells' data. It posts a number only when all three arrive, so coverage is still never reported from incomplete data. Both new jobs join required-checks, and the ruleset contexts are unchanged.
  • Nothing is dropped or doubled: the old selection's 6979 test IDs equal the union of the three new jobs. Estimated maximum times: Python 3.15 about 14.7 min, each LATEST half about 10.8 min, against a 45-minute cap.
  • actionlint is clean, and the tests/project pins and the docs that describe the legs are updated.

Closes #2751

#2751)

`test`'s `latest` leg ran the `ALL` and `LATEST` tiers under coverage, and
its p90 reached 55% of the 45-minute cap. The `LATEST` tier, less the
project pins, was 57-58% of its test-seconds.

- `test-latest-tier` runs that tier on `latest` by `test`'s steps, a half a
  cell, from `tests._tiers.latest_tier_half()` cut at
  `LATEST_TIER_BOUNDARY`; every `test` leg, `latest`'s included, now
  ignores the whole `LATEST` tier.
- Each coverage leg checks its part (`coverage_report.py check`) and
  uploads it; the new `coverage` job combines the parts (`combine`), and
  posts no total unless every part arrived.
- `required-checks` needs both jobs; the docs-only path may skip them.
- `ci_timing.py` reads the halves' JUnit files as part of `latest`'s;
  `check_suite_report.py` counts `Coverage` as a gated leg.
- The workflows and test-coverage pages, and the pins, follow.
@JarryShaw JarryShaw added ci Pull requests that change CI or workflow configuration (ci: subject prefix) review: running A cross-review is in flight against the current head - no verdict yet labels Nov 3, 2026
@github-actions github-actions Bot added this to the PyPCAPKit v1.6 milestone Nov 3, 2026
@JarryShaw JarryShaw moved this to In review in PyPCAPKit Nov 3, 2026
@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Coverage: 94.44% (unit tier, Python 3.15, 8725a5a9f, Unit Tests run success)

Package Statements Missed Branches Partial Cover
pcapkit (top level) 104 4 20 2 95.16%
pcapkit/const 20918 175 2908 156 98.57%
pcapkit/corekit 2889 76 928 37 96.83%
pcapkit/dumpkit 286 3 102 3 98.45%
pcapkit/foundation 3505 27 1216 32 98.75%
pcapkit/interface 138 4 52 3 96.32%
pcapkit/protocols 22694 154 5898 126 99.01%
pcapkit/toolkit 961 26 342 8 96.62%
pcapkit/utilities 559 7 150 5 98.31%
pcapkit/vendor 5590 2286 1280 214 55.75%

Per-file detail: the coverage-html artifact of this run.

@JarryShaw

Copy link
Copy Markdown
Owner Author

GOOD TO GO at 8725a5a9f, from a Sonnet review plus the PR's own CI.

  • Selection: the new jobs run 3116 + 2366 + 1497 = 6979 test IDs, the old Python 3.15 set exactly, with no duplicates.
  • required-checks needs both new jobs; a skip passes only on docs-only changes. The Coverage merge fails closed when a part is missing.
  • On GitHub, Python 3.15 took 14m50s (it was 23–31 min). The LATEST halves took 8m37s and 7m07s. The merged coverage came out at 94.44%, the same as main, so all three cells' data arrived.
  • Unit Tests and every required check pass.

After merge, CI Timing needs a re-baseline dispatch for the new job shape.

@JarryShaw JarryShaw added review: good-to-go Cross-review at the current head says ready; CI state is separate and removed review: running A cross-review is in flight against the current head - no verdict yet labels Nov 3, 2026
@JarryShaw
JarryShaw merged commit 4f62f52 into main Nov 3, 2026
72 checks passed
@JarryShaw
JarryShaw deleted the ci/2751-latest-leg-under-half-cap branch November 3, 2026 23:15
@github-project-automation github-project-automation Bot moved this from In review to Done in PyPCAPKit Nov 3, 2026
@JarryShaw JarryShaw removed the review: good-to-go Cross-review at the current head says ready; CI state is separate label Nov 3, 2026
JarryShaw added a commit that referenced this pull request Nov 4, 2026
- Breaking: each protocol is a package of protocol, schema and data modules,
  the pcapkit.protocols.schema and .data trees and their aggregate exports
  removed with no alias, and a 1.5.x data model pickle fails to load (#2753),
  a new entry with the 1.5.1 imports and pickle measured.
- 1.6.0's pcapkit.protocols role targets point at the package modules; the
  aggregator export claims of unreleased entries, the NoPayload and FrameRecord
  pickle claims and the TLSKeyLogEntries alias follow the layout.
- CI: the LATEST tier's own job and the Coverage merge (#2754) and the
  ordering leg's halved rest of tests/protocols (21ec0a6, #2751), into the
  CI-legs entry; the package ruling into the conventions entry.
- No entry for the test-only #2752.
- The merge keeps #2483's class names in 1.5.0's conflicting roles under
  #2753's package paths.
- CHANGELOG.md regenerated; util/changelog_md.py --check passes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci Pull requests that change CI or workflow configuration (ci: subject prefix)

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

ci(unit-tests): the Python 3.15 job's p90 is past half its cap (CI timing HARD H1)

1 participant