| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
parent directory.. | ||||
This crate provides the Rust-native Kind e2e harness and shared primitives used by the separate real-cluster fault-test runner.
The harness is intentionally separated from the main operator crate so e2e-only dependencies stay scoped to the e2e/ manifest while still being validated by make e2e-check and the default make pre-commit path. It is driven through the reduced live entrypoints e2e-live-create, e2e-live-run, e2e-live-update, and e2e-live-delete.
The harness is split into five top-level domains:
e2e/
Cargo.toml
FAULT_TESTING.md package-local fault-test operations manual
scripts/
fault-test.sh guarded real-cluster fault-test orchestration
manifests/
kind-rustfs-e2e.yaml dedicated 1 control-plane + 3 worker Kind cluster
src/
lib.rs
bin/rustfs-e2e.rs Makefile-internal helper for live workflow steps
fault/
config.rs real-cluster fault-test configuration and safety checks
scenarios.rs fault scenario catalog
plan.rs fault plan expansion for one or more fault injections
runner.rs destructive fault-test orchestration
fixture.rs fault namespace ownership and real-cluster Tenant fixture
backends/ Chaos Mesh and host-side fault backends
workload.rs S3 workload generation and execution
history.rs workload operation recorder
checker.rs committed-object correctness checker
framework/
config.rs dedicated Kind e2e configuration
command.rs safe subprocess wrapper for kind/docker/kubectl
kind.rs Kind cluster lifecycle and host mount preparation
kubectl.rs kubectl command construction boundary
live.rs live-run guardrails and context safety
tools.rs local host tool inventory
kube_client.rs kube-rs client boundary
console_client.rs reqwest Console API boundary
wait.rs timeout/polling helpers and Tenant Ready wait
artifacts.rs failure artifact collection boundary
port_forward.rs kubectl port-forward boundary
images.rs operator/console/rustfs image set boundary
resources.rs namespace/Secret/Tenant apply boundary
storage.rs local StorageClass/PV preparation boundary
assertions.rs Kubernetes and Tenant status assertions
tenant_factory.rs Kind-local and real-cluster Tenant templates
cases/
smoke.rs install and readiness checks
operator.rs Tenant status and observed-generation checks
console.rs Console API health/readiness/OpenAPI checks
tests/
smoke.rs ignored live smoke entrypoints
operator.rs ignored live Operator assertion
console.rs ignored live Console API assertion
faults.rs real-cluster destructive fault-injection suite with scenario-selected runners; not part of e2e case inventory
Default configuration targets a dedicated Kind cluster:
cluster: rustfs-e2e
context: kind-rustfs-e2e
operator ns: rustfs-system
test namespace: rustfs-e2e-smoke
tenant name: e2e-tenant
console URL: http://127.0.0.1:19090
rustfs image: rustfs/rustfs:1.0.0
storage class: local-storage
PV count: 12
kind config: e2e/manifests/kind-rustfs-e2e.yaml
Set RUSTFS_E2E_SERVER_IMAGE to exercise a branch or custom RustFS image. The harness writes operator.rustfs.com/runtime-default-image-ack with that exact reference so the Tenant can use the Operator's RuntimeDefault seccomp default. A mutable override can drift while the annotation stays unchanged; use a digest when reproducibility matters. The built-in default does not receive the annotation, so the smoke suite continues to test the normal implicit-default path.
Live tests are #[ignore] and run through the reduced Make workflow. The Makefile injects RUSTFS_E2E_LIVE=1 internally, so the common flow does not need the environment prefix:
make e2e-live-runThe harness refuses to run live tests unless the active Kubernetes context matches the configured dedicated Kind context.
make e2e-checkThis runs e2e formatting, non-live tests, and clippy. Live tests remain #[ignore] and require the live commands below.
Image builds use Docker host network internally to avoid local bridge DNS resolution issues for npm/crates registries; the exposed user entry points remain only these four commands.
Recommended workflow:
# Initial setup
make e2e-live-create
# Run all suites once (deploys control plane and creates tenant)
make e2e-live-run
# Rebuild image and restart deployment after code changes
make e2e-live-update
# Run suites again after rollout
make e2e-live-run
# Clean up
make e2e-live-delete| Back | FazBrowse Home | New Git URL |