Skip to main content

End-to-End Tests

Integration tests that exercise the full nimbus stack (API server, agent, CLI).

Naming: test-{feature}-{method}.sh where method is cli (provisioned via nimbus CLI) or manifest (provisioned via nimbus manifest apply).

Test scripts

CLI-provisioned tests

ScriptEnvironmentWhat it tests
test-docker.shLocal DockerSwarm creation, compute instance deployment, EasyHAProxy routing. Runs entirely in Docker containers — no remote machines needed.
test-swarm-cli.sh2 remote VMsSwarm lifecycle, compute instances, EasyHAProxy ingress, local DNS resolution, NFS volume creation and mount on a compute instance.
test-kubernetes-cli.sh2 remote VMsK3s cluster creation, OIDC auth, kubeconfig retrieval, EasyHAProxy ingress on K8s, NFS volume attach/detach with PV/PVC verification.
test-s3-cli.sh1 remote VMMinIO S3 instance deployment, health check, and teardown.

Manifest-provisioned tests

Same test scenarios as above but using nimbus manifest apply for provisioning:

ScriptEnvironmentWhat it tests
test-swarm-manifest.sh2 remote VMsSwarm manifest apply/remove, compute, NFS, EasyHAProxy
test-kubernetes-manifest.sh2 remote VMsK3s manifest apply/remove, kubeconfig, NFS PV/PVC
test-s3-manifest.sh1 remote VMS3 manifest apply/remove, MinIO health, object operations

Manifest YAML files are in tests_e2e/manifests/.

Shared library

test-lib.sh provides helpers used by all tests:

  • Build and install binaries
  • Start/stop the API server
  • Bootstrap admin user and configure CLI
  • SSH helpers and node registration
  • Swap management for low-memory environments

Usage

Docker test (no remote machines)

./tests_e2e/test-docker.sh

CLI-provisioned tests

Requires SSH access to remote machines:

NODE1_IP=192.168.1.10 NODE2_IP=192.168.1.11 ./tests_e2e/test-swarm-cli.sh
NODE1_IP=192.168.1.10 NODE2_IP=192.168.1.11 ./tests_e2e/test-kubernetes-cli.sh
NODE1_IP=192.168.1.10 ./tests_e2e/test-s3-cli.sh

Manifest-provisioned tests

NODE1_IP=192.168.1.10 NODE2_IP=192.168.1.11 ./tests_e2e/test-swarm-manifest.sh
NODE1_IP=192.168.1.10 NODE2_IP=192.168.1.11 ./tests_e2e/test-kubernetes-manifest.sh
NODE1_IP=192.168.1.10 ./tests_e2e/test-s3-manifest.sh

Environment variables

VariableDefaultDescription
SSH_USERrootSSH username for remote nodes
SSH_PORT22SSH port
API_PORT8443API server listen port
SWARM_NAMEdevSwarm name (swarm test)
CLUSTER_NAMEdev-k8sK3s cluster name (k8s test)