Add tenant-scoped PrismNET routing, security-group, port, and service-IP APIs plus a deployer reconciler and Nix module that apply declarative tenant network state. Teach PlasmaVMC to realize PrismNET NICs as a concrete local worker dataplane with Linux bridges, dnsmasq-backed DHCP, tap devices, richer network metadata, stable managed-volume IDs, and file:// image imports. Expand the VM cluster validation around the new path, including the guest webapp demo, restart and cross-node migration checks, IAM listener reservation hardening, and a flake workspace-source-root audit so Nix builds keep path dependencies complete.
59 lines
2.4 KiB
Markdown
59 lines
2.4 KiB
Markdown
# Testing
|
|
|
|
PhotonCloud treats VM-first validation as the canonical local proof path.
|
|
|
|
## Canonical Validation
|
|
|
|
```bash
|
|
nix run ./nix/test-cluster#cluster -- fresh-smoke
|
|
```
|
|
|
|
This flow:
|
|
|
|
- builds all six VM images on the host
|
|
- boots the cluster in dependency order
|
|
- validates control-plane, worker, gateway, storage, and fault-injection behavior
|
|
- proves that `deployer` seeds scheduler-managed native services directly from declarative Nix cluster state
|
|
|
|
## Publishable Checks
|
|
|
|
```bash
|
|
nix run ./nix/test-cluster#cluster -- fresh-smoke
|
|
nix run ./nix/test-cluster#cluster -- fresh-demo-vm-webapp
|
|
nix run ./nix/test-cluster#cluster -- fresh-matrix
|
|
nix run ./nix/test-cluster#cluster -- fresh-bench-storage
|
|
nix build .#checks.x86_64-linux.deployer-vm-smoke
|
|
```
|
|
|
|
Use these commands as the release-facing local proof set:
|
|
|
|
- `fresh-smoke`: whole-cluster readiness, core behavior, and fault injection
|
|
- `fresh-demo-vm-webapp`: focused VM demo showing a web app inside the guest with SQLite state persisted on the attached PhotonCloud volume across restart and migration
|
|
- `fresh-matrix`: composed service scenarios such as `prismnet + flashdns + fiberlb` and PrismNet-backed VM hosting bundles with `plasmavmc + coronafs + lightningstor`
|
|
- `fresh-bench-storage`: CoronaFS local-vs-shared-volume throughput, cross-worker volume visibility, and LightningStor large/small-object throughput capture
|
|
- `deployer-vm-smoke`: prebuilt NixOS system closure handoff into `nix-agent`, proving host rollout can activate a host-built target without guest-side compilation
|
|
|
|
## Operational Commands
|
|
|
|
```bash
|
|
nix run ./nix/test-cluster#cluster -- status
|
|
nix run ./nix/test-cluster#cluster -- logs node01
|
|
nix run ./nix/test-cluster#cluster -- ssh node04
|
|
nix run ./nix/test-cluster#cluster -- demo-vm-webapp
|
|
nix run ./nix/test-cluster#cluster -- matrix
|
|
nix run ./nix/test-cluster#cluster -- bench-storage
|
|
nix run ./nix/test-cluster#cluster -- fresh-matrix
|
|
nix run ./nix/test-cluster#cluster -- fresh-bench-storage
|
|
nix run ./nix/test-cluster#cluster -- stop
|
|
nix run ./nix/test-cluster#cluster -- clean
|
|
```
|
|
|
|
## Validation Philosophy
|
|
|
|
- package unit tests are useful but not sufficient
|
|
- host-built VM clusters are the main integration signal
|
|
- distributed storage and virtualization paths must be checked under failure, not only at steady state
|
|
|
|
## Legacy Note
|
|
|
|
Older manual launch scripts under `baremetal/vm-cluster` are archived only for historical reference. They are not the release-validation path.
|