From ee08e56d4ce6ca0dfa23f75b6a10800b15c35ea4 Mon Sep 17 00:00:00 2001 From: Bhasker Hariharan Date: Tue, 25 Jan 2022 23:14:16 -0800 Subject: [PATCH] Add leak checking to transport internal network tests. PiperOrigin-RevId: 424267559 --- pkg/tcpip/transport/internal/network/BUILD | 2 ++ .../transport/internal/network/endpoint_test.go | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/pkg/tcpip/transport/internal/network/BUILD b/pkg/tcpip/transport/internal/network/BUILD index 3818cb04e..b6dc07b8b 100644 --- a/pkg/tcpip/transport/internal/network/BUILD +++ b/pkg/tcpip/transport/internal/network/BUILD @@ -28,6 +28,8 @@ go_test( srcs = ["endpoint_test.go"], deps = [ ":network", + "//pkg/refs", + "//pkg/refsvfs2", "//pkg/tcpip", "//pkg/tcpip/buffer", "//pkg/tcpip/checker", diff --git a/pkg/tcpip/transport/internal/network/endpoint_test.go b/pkg/tcpip/transport/internal/network/endpoint_test.go index 86bad52d4..d50ea0dca 100644 --- a/pkg/tcpip/transport/internal/network/endpoint_test.go +++ b/pkg/tcpip/transport/internal/network/endpoint_test.go @@ -16,9 +16,12 @@ package network_test import ( "fmt" + "os" "testing" "github.com/google/go-cmp/cmp" + "gvisor.dev/gvisor/pkg/refs" + "gvisor.dev/gvisor/pkg/refsvfs2" "gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip/buffer" "gvisor.dev/gvisor/pkg/tcpip/checker" @@ -198,10 +201,12 @@ func TestEndpointStateTransitions(t *testing.T) { }, info); diff != "" { t.Errorf("write packet info mismatch (-want +got):\n%s", diff) } - if err := ctx.WritePacket(stack.NewPacketBuffer(stack.PacketBufferOptions{ + injectPkt := stack.NewPacketBuffer(stack.PacketBufferOptions{ ReserveHeaderBytes: int(info.MaxHeaderLength), Data: data.ToVectorisedView(), - }), false /* headerIncluded */); err != nil { + }) + defer injectPkt.DecRef() + if err := ctx.WritePacket(injectPkt, false /* headerIncluded */); err != nil { t.Fatalf("ctx.WritePacket(_, false): %s", err) } if pkt := e.Read(); pkt == nil { @@ -316,3 +321,10 @@ func TestBindNICID(t *testing.T) { }) } } + +func TestMain(m *testing.M) { + refs.SetLeakMode(refs.LeaksPanic) + code := m.Run() + refsvfs2.DoLeakCheck() + os.Exit(code) +}