Replacing heavy integration test fixtures with minimal purpose-built packages #1599
Replies: 3 comments 6 replies
-
|
After thinking on it further, I want to update the "single repo" option with more detail since it has two distinct variants worth separating out. On the subdirectory approach — I looked at how Hermeto handles downloaded packages in pip backend. The extraction logic in On the branch-per-fixture approach — this actually works today since a branch archive URL gives Hermeto a clean root-level package. More importantly, On scope — I checked the line counts across all So the two realistic options as I see them:
Both options work. Happy to hear other's opinion. |
Beta Was this translation helpful? Give feedback.
-
|
I experimented further with fixture
I also attempted to run the error logs: FAILED tests/integration/test_pip.py::test_e2e_pip[pip_e2e_rust_extensions] - RuntimeError: Building image failed. Output:
STEP 1/7: FROM registry.access.redhat.com/ubi9/ubi@sha256:c2bc4ee4ec4f200af9d78fd1307b7ff39f5db2c27166e52fb37650dee68a5ffd
STEP 2/7: RUN if getent hosts www.google.com; then echo "Has network access!"; exit 1; fi
--> f2e4ec01d04b
STEP 3/7: RUN dnf -y install cargo python3 python3-pip python3-setuptools python3-wheel python3-devel libffi-devel openssl-devel
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use subscription-manager to register.
Repository 'ubi-10-baseos-rpms' is missing name in configuration, using id.
Repository 'ubi-10-appstream-rpms' is missing name in configuration, using id.
ubi-10-baseos-rpms 10 MB/s | 18 kB 00:00
ubi-10-appstream-rpms 106 MB/s | 109 kB 00:00
Package python3-3.9.21-1.el9_5.x86_64 is already installed.
Package python3-setuptools-53.0.0-13.el9.noarch is already installed.
No match for argument: python3-wheel
Error: Unable to find a match: python3-wheel
Error: building at STEP "RUN dnf -y install cargo python3 python3-pip python3-setuptools python3-wheel python3-devel libffi-devel openssl-devel": while running runtime: exit status 1
Then i removed the python3-wheel. 2026-06-11 13:40:52,809 INFO Reading RPM lockfile: /tmpb8pgo1mu.hermeto-source-copy/rpms.lock.yaml
2026-06-11 13:40:52,842 INFO Downloading files for 'x86_64' architecture.
2026-06-11 13:44:54,343 ERROR Unsuccessful download: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi10/10/x86_64/appstream/os/Packages/p/python3-pip-23.3.2-11.el10_2.noarch.rpm
2026-06-11 13:44:54,348 ERROR FetchError: exception_name: ClientPayloadError, details: Response payload is not completed: <ContentLengthError: 400, message='Not enough data to satisfy content length header.'>
Error: FetchError: exception_name: ClientPayloadError, details: Response payload is not completed: <ContentLengthError: 400, message='Not enough data to satisfy content length header.'>
The error might be intermittent, please try again.
If the issue seems to be on the hermeto side, please contact the maintainers.
assert 15 == 0
+ where 0 = <ExitError.ERR_OK: 0>.value
+ where <ExitError.ERR_OK: 0> = TestParameters(branch='pip/e2e_hello_extension', packages=({'type': 'pip'}, {'type': 'rpm'}), check_output=True, expected_error=<ExitError.ERR_OK: 0>, expected_output='', global_flags=[], flags=[], repo_url='https://github.com/Harsh-2005d/integration-tests.git', hermeto_env={}, unset_hermeto_env=set(), netrc_content=None).expected_error
|
Beta Was this translation helpful? Give feedback.
-
|
To summarize:
@eskultety @slimreaper35 any concerns remaining, and how should we proceed? |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Opening this discussion as a follow-up to #1592, where the goal is to replace
cryptographyin thepip/e2e_rust_extensionsintegration test with something lighter.Problem
The current
pip/e2e_rust_extensionstest usescryptographybuilt from a GitHub archive URL. It works, but it's the slowest integration test by far and produces an SBOM of ~7,600 lines, mostly transitive Cargo crates . A real-world alternative with a Rust git dep was explored but introduced Perl as a system requirement, which adds its own overhead. (hermetoproject/integration-tests#106)Proposed approach
A purpose-built minimal fixture hosted under the
hermetoprojectorg, a small maturin/pyo3 package. This gives full control, keeps the SBOM minimal, requires no extra system dependencies, and deliberately covers the transitive Rust git dep case.I've put together a proof of concept here: https://github.com/Harsh-2005d/hello-rust-ext - a small maturin/pyo3 package with
randas a git-sourced Rust dependency.The bigger question
If this becomes the pattern for other backends too, a few options worth discussing:
main? Pointing tomainrisks silent breakage whenever the fixture changes, so tagged releases seem saferHappy to move forward once there's a consensus on direction.
Beta Was this translation helpful? Give feedback.
All reactions