m/test/launch/cluster: add pcap dump
Dump all network traffic by default to help debug failed tests.
Change-Id: I5466639fa00501373690bd95452b85b61fb5b172
Reviewed-on: https://review.monogon.dev/c/monogon/+/1076
Reviewed-by: Leopold Schabel <leo@monogon.tech>
Tested-by: Leopold Schabel <leo@monogon.tech>
diff --git a/metropolis/test/launch/launch.go b/metropolis/test/launch/launch.go
index daf2f4b..e8df009 100644
--- a/metropolis/test/launch/launch.go
+++ b/metropolis/test/launch/launch.go
@@ -170,6 +170,10 @@
// that is normally the first network interface. If this is set PortMap is ignored.
// Mostly useful for speeding up QEMU's startup time for tests.
DisableHostNetworkInterface bool
+
+ // PcapDump can be used to dump all network traffic to a pcap file.
+ // If unset, no dump is created.
+ PcapDump string
}
// RunMicroVM launches a tiny VM mostly intended for testing. Very quick to boot
@@ -257,6 +261,15 @@
"-device", "virtio-net-device,netdev=usernet0,mac="+HostInterfaceMAC.String())
}
+ if !opts.DisableHostNetworkInterface && opts.PcapDump != "" {
+ qemuNetDump := QemuValue{
+ "id": {"usernet0"},
+ "netdev": {"usernet0"},
+ "file": {opts.PcapDump},
+ }
+ extraArgs = append(extraArgs, "-object", qemuNetDump.ToOption("filter-dump"))
+ }
+
var stdErrBuf bytes.Buffer
cmd := exec.CommandContext(ctx, "qemu-system-x86_64", append(baseArgs, extraArgs...)...)
cmd.Stdout = opts.SerialPort