#!/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 ;; 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 ;; dns) MODE=dns ;; ipv6) MODE=ipv6 ;; userspace) MODE=userspace ;; --interactive) INTERACTIVE=1 ;; --keep) KEEP=1 ;; esac done ROOT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) cd "$ROOT_DIR" nix build .#packages.x86_64-linux.lightscale-server nix build .#packages.x86_64-linux.lightscale-client OUT_LINK="$ROOT_DIR/lab/driver-$MODE" if [[ "$MODE" == "full" ]]; then nix build .#nixosTests.lightscale-lab-5.driver --out-link "$OUT_LINK" elif [[ "$MODE" == "nat" ]]; then nix build .#nixosTests.lightscale-lab-nat.driver --out-link "$OUT_LINK" elif [[ "$MODE" == "multi" ]]; then nix build .#nixosTests.lightscale-lab-multi.driver --out-link "$OUT_LINK" elif [[ "$MODE" == "scale" ]]; then nix build .#nixosTests.lightscale-lab-scale.driver --out-link "$OUT_LINK" elif [[ "$MODE" == "negative" ]]; then nix build .#nixosTests.lightscale-lab-negative.driver --out-link "$OUT_LINK" elif [[ "$MODE" == "keys" ]]; then nix build .#nixosTests.lightscale-lab-keys.driver --out-link "$OUT_LINK" elif [[ "$MODE" == "restart" ]]; then nix build .#nixosTests.lightscale-lab-restart.driver --out-link "$OUT_LINK" elif [[ "$MODE" == "controlplane" ]]; then nix build .#nixosTests.lightscale-lab-controlplane-restart.driver --out-link "$OUT_LINK" elif [[ "$MODE" == "controlplane-ha" ]]; then nix build .#nixosTests.lightscale-lab-controlplane-ha.driver --out-link "$OUT_LINK" elif [[ "$MODE" == "relay-failover" ]]; then nix build .#nixosTests.lightscale-lab-relay-failover.driver --out-link "$OUT_LINK" elif [[ "$MODE" == "dns" ]]; then nix build .#nixosTests.lightscale-lab-dns.driver --out-link "$OUT_LINK" elif [[ "$MODE" == "ipv6" ]]; then nix build .#nixosTests.lightscale-lab-ipv6.driver --out-link "$OUT_LINK" elif [[ "$MODE" == "userspace" ]]; then nix build .#nixosTests.lightscale-lab-userspace.driver --out-link "$OUT_LINK" elif [[ "$MODE" == "firewall" ]]; then nix build .#nixosTests.lightscale-lab-firewall.driver --out-link "$OUT_LINK" else nix build .#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[@]}"