treewide: use Fatal in tests instead of Error

Error doesn't return the goroutine, but these cases are final and should end the test case.

Change-Id: I9d87e268b56acd7d1ff5883bb82bf3d74c309176
Reviewed-on: https://review.monogon.dev/c/monogon/+/4044
Reviewed-by: Jan Schär <jan@monogon.tech>
Tested-by: Jenkins CI
diff --git a/metropolis/node/core/clusternet/clusternet_test.go b/metropolis/node/core/clusternet/clusternet_test.go
index 317c409..9747e63 100644
--- a/metropolis/node/core/clusternet/clusternet_test.go
+++ b/metropolis/node/core/clusternet/clusternet_test.go
@@ -157,8 +157,7 @@
 				break
 			}
 			if time.Now().After(deadline) {
-				t.Error(err)
-				return
+				t.Fatal(err)
 			}
 		}
 
diff --git a/metropolis/node/core/curator/impl_leader_test.go b/metropolis/node/core/curator/impl_leader_test.go
index e593bbd..cd61e54 100644
--- a/metropolis/node/core/curator/impl_leader_test.go
+++ b/metropolis/node/core/curator/impl_leader_test.go
@@ -1682,11 +1682,11 @@
 		},
 	})
 	if err != nil {
-		t.Error(err)
+		t.Fatal(err)
 	}
 	ev, err := w.Recv()
 	if err != nil {
-		t.Error(err)
+		t.Fatal(err)
 	}
 	cn := ev.Nodes[0].Clusternet
 	if want, got := "GaNXuc/yl8IaXduX6PQ+ZxIG4HtBACubHrRI7rqfA20=", cn.WireguardPubkey; want != got {
diff --git a/metropolis/node/core/network/dhcp4c/dhcpc_test.go b/metropolis/node/core/network/dhcp4c/dhcpc_test.go
index 45be1a4..57361fe 100644
--- a/metropolis/node/core/network/dhcp4c/dhcpc_test.go
+++ b/metropolis/node/core/network/dhcp4c/dhcpc_test.go
@@ -232,7 +232,7 @@
 	p.bmt.sendPackets(terribleOffer, offer)
 
 	if err := p.c.runState(context.Background()); err != nil {
-		t.Error(err)
+		t.Fatal(err)
 	}
 	assert.Equal(t, stateRequesting, p.c.state, "DHCP client didn't process offer")
 	assert.Equal(t, testIP, p.c.offer.YourIPAddr, "DHCP client requested invalid offer")
@@ -257,7 +257,7 @@
 	}
 
 	if err := p.c.runState(context.Background()); err != nil {
-		t.Error(err)
+		t.Fatal(err)
 	}
 	assert.Equal(t, stateBound, p.c.state, "DHCP client didn't process offer")
 	assert.Equal(t, testIP, p.c.lease.YourIPAddr, "DHCP client requested invalid offer")
@@ -278,7 +278,7 @@
 	for i := 0; i < 10; i++ {
 		p.bmt.sendPackets()
 		if err := p.c.runState(context.Background()); err != nil {
-			t.Error(err)
+			t.Fatal(err)
 		}
 		assert.Equal(t, dhcpv4.MessageTypeRequest, p.bmt.sentPacket.MessageType(), "Invalid message type for requesting")
 		if p.c.state == stateDiscovering {
@@ -312,7 +312,7 @@
 	}
 	p.bmt.sendPackets(offer)
 	if err := p.c.runState(context.Background()); err != nil {
-		t.Error(err)
+		t.Fatal(err)
 	}
 	assert.Equal(t, stateBound, p.c.state, "DHCP client didn't process offer")
 	assert.Equal(t, testIP, p.c.lease.YourIPAddr, "DHCP client requested invalid offer")
@@ -350,7 +350,7 @@
 
 	p.ft.Advance(5*time.Second - 5*time.Millisecond)
 	if err := p.c.runState(context.Background()); err != nil {
-		t.Error(err)
+		t.Fatal(err)
 	}
 	// We cannot intercept time.After so we just advance the clock by the time slept
 	p.ft.Advance(5 * time.Millisecond)
@@ -364,7 +364,7 @@
 		return nil
 	}
 	if err := p.c.runState(context.Background()); err != nil {
-		t.Error(err)
+		t.Fatal(err)
 	}
 	assert.Equal(t, stateBound, p.c.state, "DHCP client didn't renew")
 	assert.Equal(t, p.ft.Now().Add(leaseTime), p.c.leaseDeadline, "lease deadline not updated")
@@ -401,7 +401,7 @@
 	for i := 0; i < 10; i++ {
 		p.umt.sendPackets()
 		if err := p.c.runState(context.Background()); err != nil {
-			t.Error(err)
+			t.Fatal(err)
 		}
 		assert.Equal(t, dhcpv4.MessageTypeRequest, p.umt.sentPacket.MessageType(), "Invalid message type for renewal")
 		p.ft.time = p.umt.setDeadline
@@ -438,7 +438,7 @@
 
 	p.ft.Advance(9 * time.Second)
 	if err := p.c.runState(context.Background()); err != nil {
-		t.Error(err)
+		t.Fatal(err)
 	}
 	assert.Equal(t, dhcpv4.MessageTypeRequest, p.bmt.sentPacket.MessageType(), "DHCP rebind sent invalid message type")
 	assert.Equal(t, stateRebinding, p.c.state, "DHCP client transferred out of rebinding state without trigger")
@@ -452,7 +452,7 @@
 		return nil
 	}
 	if err := p.c.runState(context.Background()); err != nil {
-		t.Error(err)
+		t.Fatal(err)
 	}
 	assert.Equal(t, dhcpv4.MessageTypeRequest, p.bmt.sentPacket.MessageType())
 	assert.Equal(t, stateBound, p.c.state, "DHCP client didn't go back to bound")
@@ -484,7 +484,7 @@
 		p.bmt.sendPackets()
 		p.bmt.sentPacket = nil
 		if err := p.c.runState(context.Background()); err != nil {
-			t.Error(err)
+			t.Fatal(err)
 		}
 		if p.c.state == stateDiscovering {
 			assert.Nil(t, p.bmt.sentPacket)
diff --git a/metropolis/node/kubernetes/networkpolicy/networkpolicy_test.go b/metropolis/node/kubernetes/networkpolicy/networkpolicy_test.go
index 22cf569..f32dc37 100644
--- a/metropolis/node/kubernetes/networkpolicy/networkpolicy_test.go
+++ b/metropolis/node/kubernetes/networkpolicy/networkpolicy_test.go
@@ -810,21 +810,18 @@
 			recorder := &testRecorder{t: t}
 			nft, err := nftctrl.New(recorder, podIfaceGroup)
 			if err != nil {
-				t.Errorf("Failed to create nftctrl: %v", err)
-				return
+				t.Fatalf("Failed to create nftctrl: %v", err)
 			}
 			defer nft.Close()
 			kubernetes.nft = nft
 
 			if err := kubernetes.initializeNft(); err != nil {
-				t.Errorf("nftctrl initialization failed: %v", err)
-				return
+				t.Fatalf("nftctrl initialization failed: %v", err)
 			}
 
 			result := interpreter.ExecuteTestCase(testCase)
 			if result.Err != nil {
-				t.Error(result.Err)
-				return
+				t.Fatal(result.Err)
 			}
 			if !result.Passed(ignoreLoopback) {
 				printer.PrintTestCaseResult(result)
@@ -863,8 +860,7 @@
 			recorder := &testRecorder{t: t}
 			nft, err := nftctrl.New(recorder, podIfaceGroup)
 			if err != nil {
-				t.Errorf("Failed to create nftctrl: %v", err)
-				return
+				t.Fatalf("Failed to create nftctrl: %v", err)
 			}
 			defer nft.Close()
 
@@ -874,13 +870,11 @@
 			}
 
 			if err := testCase.init(testCaseState, nft); err != nil {
-				t.Errorf("initialization failed: %v", err)
-				return
+				t.Fatalf("initialization failed: %v", err)
 			}
 
 			if err := nft.Flush(); err != nil {
-				t.Errorf("flush failed: %v", err)
-				return
+				t.Fatalf("flush failed: %v", err)
 			}
 
 			parsedPolicy := matcher.BuildNetworkPolicies(true, testCaseState.Policies)