Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
1e60b23
Fix rootless clone port forwarding and add test isolation
ejc3 Dec 21, 2025
efb99c2
Enable parallel test execution with proper root/rootless isolation
ejc3 Dec 21, 2025
c2d052b
Fix rootless podman container export by normalizing file ownership
ejc3 Dec 21, 2025
e5df0d3
Run rootless container tests as testuser, not root
ejc3 Dec 21, 2025
8c5fcdc
Trigger CI rebuild (clear podman cache)
ejc3 Dec 21, 2025
ec6ed7e
Run bridged tests before rootless to ensure rootfs exists
ejc3 Dec 21, 2025
411e5e1
Fix rootless container tests with rootless podman
ejc3 Dec 21, 2025
8dd5c5a
Add /dev/userfaultfd device for rootless container clone tests
ejc3 Dec 21, 2025
604d12a
Add userfaultfd setup to CI for snapshot clone tests
ejc3 Dec 21, 2025
c54c4fc
Fix VM test race condition by running jobs sequentially
ejc3 Dec 21, 2025
c3cd727
Debug: investigate virt-customize hang on BuildJet
ejc3 Dec 21, 2025
37fa51e
Debug: test virt-customize INSIDE container (matching local)
ejc3 Dec 21, 2025
99d9ec6
Debug: run actual fcvm rootfs creation in container
ejc3 Dec 21, 2025
7f84a27
Fix VM test race condition by running jobs sequentially
ejc3 Dec 21, 2025
ace36b3
Consolidate CI jobs to reduce redundant compilation
ejc3 Dec 21, 2025
d3c0a35
CI: Build once, test in parallel with artifact sharing
ejc3 Dec 21, 2025
752d048
CI: Add descriptive job names with environment info
ejc3 Dec 21, 2025
f0e9f3e
Rootless Layer 2 rootfs creation via initrd-based setup
ejc3 Dec 22, 2025
56b2397
Use Kata kernel with FUSE support, embed packages in initrd
ejc3 Dec 22, 2025
6b8fa2f
Use UID in temp paths to avoid root/non-root conflicts
ejc3 Dec 22, 2025
65a7041
Fix clone port forwarding for bridged networking
ejc3 Dec 22, 2025
61c7221
Clean up snapshot directory when serve process exits
ejc3 Dec 22, 2025
0af9606
Clean up lock and temp files when deleting VM state
ejc3 Dec 22, 2025
495649a
Simplify paths - remove rootless fallback logic
ejc3 Dec 22, 2025
29a9ae6
Use .raw extension and require btrfs reflinks for disk images
ejc3 Dec 22, 2025
f651066
Add container output streaming via vsock port 4997
ejc3 Dec 22, 2025
30e994f
Add privileged-tests feature flag to tests requiring sudo
ejc3 Dec 22, 2025
539370a
Improve test isolation for parallel execution
ejc3 Dec 22, 2025
07f14e6
Update documentation and build system
ejc3 Dec 22, 2025
486c66d
Fix initrd creation race condition with file locking
ejc3 Dec 22, 2025
e5037ff
Add file locking to kernel download to prevent duplicate downloads
ejc3 Dec 22, 2025
c0834ef
Skip doctests in VM test targets
ejc3 Dec 22, 2025
7f00229
Switch to cargo-nextest for test execution
ejc3 Dec 22, 2025
c3c8597
Fix UFFD socket non-blocking mode causing clone failures
ejc3 Dec 23, 2025
5da93e8
Fix rootless test failures under sudo at full parallelism
ejc3 Dec 23, 2025
c67ad8a
Improve parallel test isolation and reliability
ejc3 Dec 23, 2025
4f447b3
Use busybox-static for initrd creation
ejc3 Dec 23, 2025
44006fa
Update documentation for Kata kernel and new data layout
ejc3 Dec 23, 2025
aff31a9
Remove obsolete Makefile targets
ejc3 Dec 23, 2025
745da54
Remove obsolete require_non_root guard function
ejc3 Dec 23, 2025
d0d623d
Clean up misleading backward compatibility comments
ejc3 Dec 23, 2025
eb9b40e
Add commit message guidelines to project documentation
ejc3 Dec 23, 2025
7fb5112
Switch to rootless podman and fix rust toolchain caching
ejc3 Dec 23, 2025
0ae8ed3
Fix container test isolation and initrd creation error handling
ejc3 Dec 23, 2025
3bddfc0
Fix fc-agent logging to appear in serial console
ejc3 Dec 24, 2025
b7dd8bd
Add musl static linking for fc-agent portability
ejc3 Dec 24, 2025
063c706
Add strace debugging support for fc-agent
ejc3 Dec 24, 2025
f4c5714
Improve fc-agent image pull error handling and logging
ejc3 Dec 24, 2025
c17b4be
Add nextest slow test warning configuration
ejc3 Dec 24, 2025
82ea9dc
Document STREAM=1 flag and container build caching
ejc3 Dec 24, 2025
808723b
Fix stale state file collision on PID reuse
ejc3 Dec 24, 2025
bd0fdd4
Add logging for stale state file cleanup
ejc3 Dec 24, 2025
e45b64d
Add ulimits and pids-limit to CONTAINER_RUN_FCVM
ejc3 Dec 24, 2025
e83713f
Add podman and skopeo to container for localhost image tests
ejc3 Dec 24, 2025
f1b2278
Use target runner for sudo instead of wrapping cargo commands
ejc3 Dec 24, 2025
0b60c38
Use explicit target runner env vars instead of global config
ejc3 Dec 24, 2025
4592bfc
Replace sequential pjdfstest with parallel matrix tests
ejc3 Dec 24, 2025
608b447
Update docs for merged test targets and matrix tests
ejc3 Dec 24, 2025
120fb75
Simplify CI to 3 jobs: container-rootless, container-sudo, vm
ejc3 Dec 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Cargo configuration for fcvm
#
# Note: NO global target runner here. Tests that need sudo explicitly
# set CARGO_TARGET_*_RUNNER in the Makefile. This is more secure
# (opt-in to privileges) and avoids needing to clear the env var
# for non-root tests.
292 changes: 219 additions & 73 deletions .claude/CLAUDE.md

Large diffs are not rendered by default.

67 changes: 67 additions & 0 deletions .config/nextest.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# cargo-nextest configuration
# https://nexte.st/book/configuration.html

[store]
# Store test results for analysis
dir = "target/nextest"

# Default profile
[profile.default]
# Run tests in parallel by default
test-threads = "num-cpus"
# Timeout per test (VM tests can be slow)
slow-timeout = { period = "60s", terminate-after = 2 }
# Fail fast on first failure
fail-fast = false
# Retry flaky tests once
retries = 0
# Status level for output
status-level = "pass"
final-status-level = "flaky"
# Show output immediately (don't capture)
success-output = "immediate"
failure-output = "immediate"

# CI profile - more verbose, stricter
[profile.ci]
test-threads = "num-cpus"
slow-timeout = { period = "120s", terminate-after = 2 }
fail-fast = false
retries = 0
status-level = "all"
final-status-level = "all"

# Quick profile for development
[profile.quick]
test-threads = "num-cpus"
slow-timeout = { period = "30s", terminate-after = 1 }
fail-fast = true
retries = 0

# Stress tests need exclusive access (100 VMs at once)
[test-groups.stress-tests]
max-threads = 1

# VM tests run at full parallelism (num-cpus)
# Previously limited to 16 threads due to namespace holder process deaths,
# but root cause was rootless tests running under sudo. Now that privileged
# tests filter out rootless tests (-E '!test(/rootless/)'), full parallelism works.
[test-groups.vm-tests]
max-threads = "num-cpus"

[[profile.default.overrides]]
filter = "package(fcvm) & test(/stress_100/)"
test-group = "stress-tests"
slow-timeout = { period = "300s", terminate-after = 1 }

# VM tests run with limited parallelism to avoid resource exhaustion
[[profile.default.overrides]]
filter = "package(fcvm) & test(/test_/) & !test(/stress_100/)"
test-group = "vm-tests"
slow-timeout = { period = "300s", terminate-after = 1 }

# fuse-pipe tests can run with full parallelism
[[profile.default.overrides]]
filter = "package(fuse-pipe)"
test-group = "@global"
slow-timeout = { period = "120s", terminate-after = 1 }
Loading
Loading