From 8d8edb12c5a9e38770480b49544314886fd21b55 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Thu, 12 Mar 2020 13:41:45 +0100 Subject: [PATCH] remove gotest.tools dependency Signed-off-by: Sebastiaan van Stijn --- go.mod | 2 - go.sum | 16 ------ ipvs_test.go | 146 ++++++++++++++++++++++++++++++++++++--------------- 3 files changed, 105 insertions(+), 59 deletions(-) diff --git a/go.mod b/go.mod index a57cc9d..a3778a5 100644 --- a/go.mod +++ b/go.mod @@ -3,10 +3,8 @@ module github.com/moby/ipvs go 1.13 require ( - github.com/pkg/errors v0.9.1 // indirect github.com/sirupsen/logrus v1.4.2 github.com/vishvananda/netlink v1.1.0 github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527 - gotest.tools/v3 v3.0.2 ) diff --git a/go.sum b/go.sum index 324acf7..5ac6c96 100644 --- a/go.sum +++ b/go.sum @@ -1,18 +1,11 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -20,16 +13,7 @@ github.com/vishvananda/netlink v1.1.0 h1:1iyaYNBLmP6L0220aDnYQpo1QEV4t4hJ+xEEhhJ github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df h1:OviZH7qLw/7ZovXvuNyL3XQl8UFofeikI1NW1Gypu7k= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444 h1:/d2cWp6PSamH4jDPFLyO150psQdqvtoNX8Zjg3AQ31g= golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527 h1:uYVVQ9WP/Ds2ROhcaGPeIdVq0RIXVLwsHlnvJ+cT1So= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -gotest.tools/v3 v3.0.2 h1:kG1BFyqVHuQoVQiR1bWGnfz/fmHvvuiSPIV7rvl360E= -gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= diff --git a/ipvs_test.go b/ipvs_test.go index b0804cf..f06760e 100644 --- a/ipvs_test.go +++ b/ipvs_test.go @@ -1,9 +1,11 @@ +//go:build linux // +build linux package ipvs import ( "net" + "reflect" "runtime" "syscall" "testing" @@ -13,8 +15,6 @@ import ( "github.com/vishvananda/netlink" "github.com/vishvananda/netlink/nl" "golang.org/x/sys/unix" - "gotest.tools/v3/assert" - is "gotest.tools/v3/assert/cmp" ) var ( @@ -63,7 +63,9 @@ func checkDestination(t *testing.T, i *Handle, s *Service, d *Destination, check var dstFound bool dstArray, err := i.GetDestinations(s) - assert.NilError(t, err) + if err != nil { + t.Fatalf("Failed to get destination; %v", err) + } for _, dst := range dstArray { if dst.Address.Equal(d.Address) && dst.Port == d.Port && @@ -75,12 +77,12 @@ func checkDestination(t *testing.T, i *Handle, s *Service, d *Destination, check } switch checkPresent { - case true: //The test expects the service to be present + case true: // The test expects the service to be present if !dstFound { t.Fatalf("Did not find the service %s in ipvs output", d.Address.String()) } - case false: //The test expects that the service should not be present + case false: // The test expects that the service should not be present if dstFound { t.Fatalf("Did not find the destination %s fwdMethod %s in ipvs output", d.Address.String(), lookupFwMethod(d.ConnectionFlags)) } @@ -91,7 +93,9 @@ func checkDestination(t *testing.T, i *Handle, s *Service, d *Destination, check func checkService(t *testing.T, i *Handle, s *Service, checkPresent bool) { svcArray, err := i.GetServices() - assert.NilError(t, err) + if err != nil { + t.Fatalf("Failed to get service; %v", err) + } var svcFound bool @@ -104,12 +108,12 @@ func checkService(t *testing.T, i *Handle, s *Service, checkPresent bool) { } switch checkPresent { - case true: //The test expects the service to be present + case true: // The test expects the service to be present if !svcFound { t.Fatalf("Did not find the service %s in ipvs output", s.Address.String()) } - case false: //The test expects that the service should not be present + case false: // The test expects that the service should not be present if svcFound { t.Fatalf("Did not expect the service %s in ipvs output", s.Address.String()) } @@ -119,15 +123,21 @@ func checkService(t *testing.T, i *Handle, s *Service, checkPresent bool) { func TestGetFamily(t *testing.T) { id, err := getIPVSFamily() - assert.NilError(t, err) - assert.Check(t, 0 != id) + if err != nil { + t.Fatal("Failed to get IPVS family:", err) + } + if id == 0 { + t.Error("IPVS family was 0") + } } func TestService(t *testing.T) { defer setupTestOSContext(t)() i, err := New("") - assert.NilError(t, err) + if err != nil { + t.Fatal("Failed to create IPVS handle:", err) + } for _, protocol := range protocols { for _, schedMethod := range schedMethods { @@ -169,7 +179,9 @@ func TestService(t *testing.T) { } err := i.NewService(&s) - assert.NilError(t, err) + if err != nil { + t.Fatal("Failed to create service:", err) + } checkService(t, i, &s, true) for _, updateSchedMethod := range schedMethods { if updateSchedMethod == schedMethod { @@ -178,18 +190,30 @@ func TestService(t *testing.T) { s.SchedName = updateSchedMethod err = i.UpdateService(&s) - assert.NilError(t, err) + if err != nil { + t.Fatal("Failed to update service:", err) + } checkService(t, i, &s, true) scopy, err := i.GetService(&s) - assert.NilError(t, err) - assert.Check(t, is.Equal((*scopy).Address.String(), s.Address.String())) - assert.Check(t, is.Equal((*scopy).Port, s.Port)) - assert.Check(t, is.Equal((*scopy).Protocol, s.Protocol)) + if err != nil { + t.Fatal("Failed to get service:", err) + } + if expected := (*scopy).Address.String(); expected != s.Address.String() { + t.Errorf("expected: %v, got: %v", expected, s.Address.String()) + } + if expected := (*scopy).Port; expected != s.Port { + t.Errorf("expected: %v, got: %v", expected, s.Port) + } + if expected := (*scopy).Protocol; expected != s.Protocol { + t.Errorf("expected: %v, got: %v", expected, s.Protocol) + } } err = i.DelService(&s) - assert.NilError(t, err) + if err != nil { + t.Fatal("Failed to delete service:", err) + } checkService(t, i, &s, false) } } @@ -217,16 +241,22 @@ func TestService(t *testing.T) { for _, svc := range svcs { if !i.IsServicePresent(&svc) { err = i.NewService(&svc) - assert.NilError(t, err) + if err != nil { + t.Fatal("Failed to create service:", err) + } checkService(t, i, &svc, true) } else { t.Errorf("svc: %v exists", svc) } } err = i.Flush() - assert.NilError(t, err) + if err != nil { + t.Fatal("Failed to flush:", err) + } got, err := i.GetServices() - assert.NilError(t, err) + if err != nil { + t.Fatal("Failed to get service:", err) + } if len(got) != 0 { t.Errorf("Unexpected services after flush") } @@ -240,19 +270,27 @@ func createDummyInterface(t *testing.T) { } err := netlink.LinkAdd(dummy) - assert.NilError(t, err) + if err != nil { + t.Fatal("Failed to add link:", err) + } dummyLink, err := netlink.LinkByName("dummy") - assert.NilError(t, err) + if err != nil { + t.Fatal("Failed to get dummy link:", err) + } ip, ipNet, err := net.ParseCIDR("10.1.1.1/24") - assert.NilError(t, err) + if err != nil { + t.Fatal("Failed to parse CIDR:", err) + } ipNet.IP = ip ipAddr := &netlink.Addr{IPNet: ipNet, Label: ""} err = netlink.AddrAdd(dummyLink, ipAddr) - assert.NilError(t, err) + if err != nil { + t.Fatal("Failed to add IP address:", err) + } } func TestDestination(t *testing.T) { @@ -260,7 +298,9 @@ func TestDestination(t *testing.T) { createDummyInterface(t) i, err := New("") - assert.NilError(t, err) + if err != nil { + t.Fatal("Failed to create IPVS handle:", err) + } for _, protocol := range protocols { testDatas := []struct { @@ -304,7 +344,9 @@ func TestDestination(t *testing.T) { } err := i.NewService(&s) - assert.NilError(t, err) + if err != nil { + t.Fatal("Failed to create service:", err) + } checkService(t, i, &s, true) s.SchedName = "" @@ -320,7 +362,9 @@ func TestDestination(t *testing.T) { } destinations = append(destinations, d) err := i.NewDestination(&s, &d) - assert.NilError(t, err) + if err != nil { + t.Fatal("Failed to create destination:", err) + } checkDestination(t, i, &s, &d, true) } @@ -331,13 +375,17 @@ func TestDestination(t *testing.T) { for _, d := range destinations { d.ConnectionFlags = updateFwdMethod err = i.UpdateDestination(&s, &d) - assert.NilError(t, err) + if err != nil { + t.Fatal("Failed to update destination:", err) + } checkDestination(t, i, &s, &d, true) } } for _, d := range destinations { err = i.DelDestination(&s, &d) - assert.NilError(t, err) + if err != nil { + t.Fatal("Failed to delete destination:", err) + } checkDestination(t, i, &s, &d, false) } } @@ -350,27 +398,44 @@ func TestTimeouts(t *testing.T) { defer setupTestOSContext(t)() i, err := New("") - assert.NilError(t, err) + if err != nil { + t.Fatal("Failed to create IPVS handle:", err) + } _, err = i.GetConfig() - assert.NilError(t, err) + if err != nil { + t.Fatal("Failed to get config:", err) + } cfg := Config{66 * time.Second, 66 * time.Second, 66 * time.Second} err = i.SetConfig(&cfg) - assert.NilError(t, err) + if err != nil { + t.Fatal("Failed to set config:", err) + } c2, err := i.GetConfig() - assert.NilError(t, err) - assert.DeepEqual(t, cfg, *c2) + if err != nil { + t.Fatal("Failed to get config:", err) + } + if !reflect.DeepEqual(*c2, cfg) { + t.Fatalf("expected: %+v, got: %+v", cfg, *c2) + } // A timeout value 0 means that the current timeout value of the corresponding entry is preserved cfg = Config{77 * time.Second, 0 * time.Second, 77 * time.Second} err = i.SetConfig(&cfg) - assert.NilError(t, err) + if err != nil { + t.Fatal("Failed to set config:", err) + } c3, err := i.GetConfig() - assert.NilError(t, err) - assert.DeepEqual(t, *c3, Config{77 * time.Second, 66 * time.Second, 77 * time.Second}) + if err != nil { + t.Fatal("Failed to get config:", err) + } + expected := Config{77 * time.Second, 66 * time.Second, 77 * time.Second} + if !reflect.DeepEqual(*c3, expected) { + t.Fatalf("expected: %+v, got: %+v", expected, *c3) + } } // setupTestOSContext joins a new network namespace, and returns its associated @@ -378,8 +443,7 @@ func TestTimeouts(t *testing.T) { // // Example usage: // -// defer setupTestOSContext(t)() -// +// defer setupTestOSContext(t)() func setupTestOSContext(t *testing.T) func() { t.Helper() runtime.LockOSThread() @@ -389,7 +453,7 @@ func setupTestOSContext(t *testing.T) func() { fd, err := syscall.Open("/proc/self/ns/net", syscall.O_RDONLY, 0) if err != nil { - t.Fatal("Failed to open netns file") + t.Fatal("Failed to open netns file:", err) } // Since we are switching to a new test namespace make