Skip to content

feat: add experimental apptainer backend - #654

Draft
dionhaefner wants to merge 1 commit into
mainfrom
dion/apptainer
Draft

feat: add experimental apptainer backend#654
dionhaefner wants to merge 1 commit into
mainfrom
dion/apptainer

Conversation

@dionhaefner

Copy link
Copy Markdown
Contributor

Relevant issue or PR

n/a

Description of changes

Adds AppTainer as an alternative to Docker, which is more pervasive in HPC contexts.

Testing done

Some local tests (in a Linux VM on my ARM Mac) and new tests on CI, still needs verification on a real Linux machine

@codecov

codecov Bot commented Jul 23, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 68.93287% with 361 lines in your changes missing coverage. Please review.
✅ Project coverage is 76.76%. Comparing base (1216135) to head (f8bf52b).

Files with missing lines Patch % Lines
tesseract_core/sdk/container_client/apptainer.py 63.16% 125 Missing and 40 partials ⚠️
tesseract_core/sdk/container_client/docker.py 71.11% 103 Missing and 44 partials ⚠️
tesseract_core/sdk/engine.py 75.00% 13 Missing and 13 partials ⚠️
tesseract_core/sdk/cli.py 41.93% 16 Missing and 2 partials ⚠️
tesseract_core/sdk/container_client/__init__.py 89.47% 1 Missing and 1 partial ⚠️
tesseract_core/sdk/container_client/exceptions.py 88.88% 2 Missing ⚠️
tesseract_core/sdk/container_client/base.py 95.65% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #654      +/-   ##
==========================================
- Coverage   78.09%   76.76%   -1.34%     
==========================================
  Files          39       44       +5     
  Lines        4721     5336     +615     
  Branches      775      867      +92     
==========================================
+ Hits         3687     4096     +409     
- Misses        724      876     +152     
- Partials      310      364      +54     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@PasteurBot

Copy link
Copy Markdown
Contributor

Benchmark Results

Benchmarks use a no-op Tesseract to measure pure framework overhead.

🚀 1 faster, ⚠️ 1 slower, ✅ 49 unchanged

Notable changes

Benchmark Baseline Current Change Status
cli/apply_1,000-apptainer - 3618.286ms new 🆕
cli/apply_1,000-docker - 1758.073ms new 🆕
cli/apply_100,000-apptainer - 3631.594ms new 🆕
cli/apply_100,000-docker - 1764.382ms new 🆕
cli/apply_10,000,000-apptainer - 3668.416ms new 🆕
cli/apply_10,000,000-docker - 1836.404ms new 🆕
decoding/base64_1,000 0.026ms 0.029ms +12.4% ⚠️ slower
decoding/base64_100,000 0.794ms 0.683ms -13.9% 🚀 faster
http/apply_1,000-apptainer - 1.842ms new 🆕
http/apply_100,000-apptainer - 29.150ms new 🆕
http/apply_10,000,000-apptainer - 2938.966ms new 🆕
Full results
Benchmark Baseline Current Change Status
api/apply_1,000 0.505ms 0.502ms -0.6%
api/apply_100,000 0.506ms 0.502ms -0.9%
api/apply_10,000,000 0.502ms 0.501ms -0.3%
cli/apply_1,000-apptainer - 3618.286ms new 🆕
cli/apply_1,000-docker - 1758.073ms new 🆕
cli/apply_100,000-apptainer - 3631.594ms new 🆕
cli/apply_100,000-docker - 1764.382ms new 🆕
cli/apply_10,000,000-apptainer - 3668.416ms new 🆕
cli/apply_10,000,000-docker - 1836.404ms new 🆕
decoding/base64_1,000 0.026ms 0.029ms +12.4% ⚠️ slower
decoding/base64_100,000 0.794ms 0.683ms -13.9% 🚀 faster
decoding/base64_10,000,000 68.039ms 67.316ms -1.1%
decoding/base64+lz4_1,000 0.031ms 0.031ms -0.6%
decoding/base64+lz4_100,000 0.857ms 0.855ms -0.3%
decoding/base64+lz4_10,000,000 84.268ms 84.347ms +0.1%
decoding/binref_1,000 0.185ms 0.183ms -1.0%
decoding/binref_100,000 0.233ms 0.231ms -0.9%
decoding/binref_10,000,000 9.223ms 9.134ms -1.0%
decoding/binref+lz4_1,000 0.191ms 0.188ms -1.4%
decoding/binref+lz4_100,000 0.303ms 0.293ms -3.2%
decoding/binref+lz4_10,000,000 26.416ms 26.310ms -0.4%
decoding/json_1,000 0.100ms 0.100ms +0.3%
decoding/json_100,000 9.352ms 9.339ms -0.1%
decoding/json_10,000,000 1103.920ms 1101.211ms -0.2%
encoding/base64_1,000 0.028ms 0.028ms +1.1%
encoding/base64_100,000 0.146ms 0.146ms +0.1%
encoding/base64_10,000,000 23.264ms 23.626ms +1.6%
encoding/base64+lz4_1,000 0.032ms 0.032ms -0.2%
encoding/base64+lz4_100,000 0.247ms 0.248ms +0.2%
encoding/base64+lz4_10,000,000 58.210ms 58.744ms +0.9%
encoding/binref_1,000 0.279ms 0.277ms -0.7%
encoding/binref_100,000 0.454ms 0.449ms -1.2%
encoding/binref_10,000,000 17.375ms 17.554ms +1.0%
encoding/binref+lz4_1,000 0.288ms 0.285ms -1.2%
encoding/binref+lz4_100,000 0.589ms 0.581ms -1.4%
encoding/binref+lz4_10,000,000 52.629ms 54.177ms +2.9%
encoding/json_1,000 0.141ms 0.141ms -0.1%
encoding/json_100,000 14.821ms 14.766ms -0.4%
encoding/json_10,000,000 1495.990ms 1494.854ms -0.1%
http/apply_1,000-apptainer - 1.842ms new 🆕
http/apply_1,000-docker 2.975ms 2.958ms -0.6%
http/apply_100,000-apptainer - 29.150ms new 🆕
http/apply_100,000-docker 8.966ms 8.960ms -0.1%
http/apply_10,000,000-apptainer - 2938.966ms new 🆕
http/apply_10,000,000-docker 674.588ms 681.150ms +1.0%
roundtrip/base64_1,000 0.059ms 0.059ms -0.6%
roundtrip/base64_100,000 0.779ms 0.727ms -6.7%
roundtrip/base64_10,000,000 90.495ms 90.982ms +0.5%
roundtrip/base64+lz4_1,000 0.064ms 0.066ms +3.2%
roundtrip/base64+lz4_100,000 0.958ms 0.954ms -0.5%
roundtrip/base64+lz4_10,000,000 142.824ms 143.296ms +0.3%
roundtrip/binref_1,000 0.479ms 0.478ms -0.1%
roundtrip/binref_100,000 0.695ms 0.696ms +0.2%
roundtrip/binref_10,000,000 26.768ms 27.012ms +0.9%
roundtrip/binref+lz4_1,000 0.496ms 0.493ms -0.7%
roundtrip/binref+lz4_100,000 0.911ms 0.901ms -1.1%
roundtrip/binref+lz4_10,000,000 79.662ms 80.616ms +1.2%
roundtrip/json_1,000 0.249ms 0.250ms +0.7%
roundtrip/json_100,000 21.689ms 22.093ms +1.9%
roundtrip/json_10,000,000 2599.198ms 2596.182ms -0.1%
  • Runner: Linux 6.17.0-1020-azure x86_64

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants