93 lines
3.6 KiB
Bash
Executable file
93 lines
3.6 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
MODE=fast
|
|
INTERACTIVE=0
|
|
KEEP=0
|
|
for arg in "$@"; do
|
|
case "$arg" in
|
|
full) MODE=full ;;
|
|
fast) MODE=fast ;;
|
|
admin) MODE=admin ;;
|
|
firewall) MODE=firewall ;;
|
|
nat) MODE=nat ;;
|
|
multi) MODE=multi ;;
|
|
scale) MODE=scale ;;
|
|
negative) MODE=negative ;;
|
|
keys) MODE=keys ;;
|
|
restart) MODE=restart ;;
|
|
controlplane) MODE=controlplane ;;
|
|
controlplane-ha) MODE=controlplane-ha ;;
|
|
relay-failover) MODE=relay-failover ;;
|
|
server-mesh) MODE=server-mesh ;;
|
|
services) MODE=services ;;
|
|
dns) MODE=dns ;;
|
|
ipv6) MODE=ipv6 ;;
|
|
userspace) MODE=userspace ;;
|
|
router) MODE=router ;;
|
|
--interactive) INTERACTIVE=1 ;;
|
|
--keep) KEEP=1 ;;
|
|
esac
|
|
done
|
|
|
|
ROOT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
|
|
cd "$ROOT_DIR"
|
|
|
|
if [[ "$MODE" == "admin" ]]; then
|
|
exec "$ROOT_DIR/lab/test-admin-smoke.sh"
|
|
fi
|
|
|
|
# Use git+file flake URL so git submodules are included during evaluation/build.
|
|
FLAKE_REF="${LIGHTSCALE_FLAKE_REF:-git+file://$ROOT_DIR?submodules=1}"
|
|
|
|
nix build "${FLAKE_REF}#packages.x86_64-linux.lightscale-server"
|
|
nix build "${FLAKE_REF}#packages.x86_64-linux.lightscale-client"
|
|
|
|
OUT_LINK="$ROOT_DIR/lab/driver-$MODE"
|
|
if [[ "$MODE" == "full" ]]; then
|
|
nix build "${FLAKE_REF}#nixosTests.lightscale-lab-5.driver" --out-link "$OUT_LINK"
|
|
elif [[ "$MODE" == "nat" ]]; then
|
|
nix build "${FLAKE_REF}#nixosTests.lightscale-lab-nat.driver" --out-link "$OUT_LINK"
|
|
elif [[ "$MODE" == "multi" ]]; then
|
|
nix build "${FLAKE_REF}#nixosTests.lightscale-lab-multi.driver" --out-link "$OUT_LINK"
|
|
elif [[ "$MODE" == "scale" ]]; then
|
|
nix build "${FLAKE_REF}#nixosTests.lightscale-lab-scale.driver" --out-link "$OUT_LINK"
|
|
elif [[ "$MODE" == "negative" ]]; then
|
|
nix build "${FLAKE_REF}#nixosTests.lightscale-lab-negative.driver" --out-link "$OUT_LINK"
|
|
elif [[ "$MODE" == "keys" ]]; then
|
|
nix build "${FLAKE_REF}#nixosTests.lightscale-lab-keys.driver" --out-link "$OUT_LINK"
|
|
elif [[ "$MODE" == "restart" ]]; then
|
|
nix build "${FLAKE_REF}#nixosTests.lightscale-lab-restart.driver" --out-link "$OUT_LINK"
|
|
elif [[ "$MODE" == "controlplane" ]]; then
|
|
nix build "${FLAKE_REF}#nixosTests.lightscale-lab-controlplane-restart.driver" --out-link "$OUT_LINK"
|
|
elif [[ "$MODE" == "controlplane-ha" ]]; then
|
|
nix build "${FLAKE_REF}#nixosTests.lightscale-lab-controlplane-ha.driver" --out-link "$OUT_LINK"
|
|
elif [[ "$MODE" == "relay-failover" ]]; then
|
|
nix build "${FLAKE_REF}#nixosTests.lightscale-lab-relay-failover.driver" --out-link "$OUT_LINK"
|
|
elif [[ "$MODE" == "server-mesh" ]]; then
|
|
nix build "${FLAKE_REF}#nixosTests.lightscale-lab-server-mesh-relay.driver" --out-link "$OUT_LINK"
|
|
elif [[ "$MODE" == "services" ]]; then
|
|
nix build "${FLAKE_REF}#nixosTests.lightscale-lab-services.driver" --out-link "$OUT_LINK"
|
|
elif [[ "$MODE" == "dns" ]]; then
|
|
nix build "${FLAKE_REF}#nixosTests.lightscale-lab-dns.driver" --out-link "$OUT_LINK"
|
|
elif [[ "$MODE" == "ipv6" ]]; then
|
|
nix build "${FLAKE_REF}#nixosTests.lightscale-lab-ipv6.driver" --out-link "$OUT_LINK"
|
|
elif [[ "$MODE" == "userspace" ]]; then
|
|
nix build "${FLAKE_REF}#nixosTests.lightscale-lab-userspace.driver" --out-link "$OUT_LINK"
|
|
elif [[ "$MODE" == "firewall" ]]; then
|
|
nix build "${FLAKE_REF}#nixosTests.lightscale-lab-firewall.driver" --out-link "$OUT_LINK"
|
|
elif [[ "$MODE" == "router" ]]; then
|
|
nix build "${FLAKE_REF}#nixosTests.lightscale-lab-router.driver" --out-link "$OUT_LINK"
|
|
else
|
|
nix build "${FLAKE_REF}#nixosTests.lightscale-lab.driver" --out-link "$OUT_LINK"
|
|
fi
|
|
|
|
DRIVER_ARGS=()
|
|
if [[ "$INTERACTIVE" == "1" ]]; then
|
|
DRIVER_ARGS+=("--interactive")
|
|
fi
|
|
if [[ "$KEEP" == "1" ]]; then
|
|
DRIVER_ARGS+=("--keep-vm-state")
|
|
fi
|
|
|
|
exec "$OUT_LINK/bin/nixos-test-driver" "${DRIVER_ARGS[@]}"
|