Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add scaffolding for supporting additional whitebox testing #603

Merged
merged 1 commit into from
Sep 27, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions cmd/e2e-test/basic_https_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,8 +132,8 @@ func TestBasicHTTPS(t *testing.T) {
t.Fatalf("Error getting GCP resources for LB with IP = %q: %v", vip, err)
}

if err = e2e.CheckGCLB(gclb, tc.numForwardingRules, tc.numBackendServices); err != nil {
t.Error(err)
if err := e2e.PerformWhiteboxTests(s, ing, gclb); err != nil {
t.Fatalf("Error performing whitebox tests: %v", err)
}

deleteOptions := &fuzz.GCLBDeleteOptions{
Expand Down
23 changes: 4 additions & 19 deletions cmd/e2e-test/basic_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,34 +36,25 @@ func TestBasic(t *testing.T) {
for _, tc := range []struct {
desc string
ing *v1beta1.Ingress

numForwardingRules int
numBackendServices int
}{
{
desc: "http default backend",
ing: fuzz.NewIngressBuilder("", "ingress-1", "").
DefaultBackend("service-1", port80).
Build(),
numForwardingRules: 1,
numBackendServices: 1,
},
{
desc: "http one path",
ing: fuzz.NewIngressBuilder("", "ingress-1", "").
AddPath("test.com", "/", "service-1", port80).
Build(),
numForwardingRules: 1,
numBackendServices: 2,
},
{
desc: "http multiple paths",
ing: fuzz.NewIngressBuilder("", "ingress-1", "").
AddPath("test.com", "/foo", "service-1", port80).
AddPath("test.com", "/bar", "service-1", port80).
Build(),
numForwardingRules: 1,
numBackendServices: 2,
},
} {
tc := tc // Capture tc as we are running this in parallel.
Expand Down Expand Up @@ -91,7 +82,6 @@ func TestBasic(t *testing.T) {
}
t.Logf("GCLB resources createdd (%s/%s)", s.Namespace, tc.ing.Name)

// Perform whitebox testing.
if len(ing.Status.LoadBalancer.Ingress) < 1 {
t.Fatalf("Ingress does not have an IP: %+v", ing.Status)
}
Expand All @@ -103,8 +93,8 @@ func TestBasic(t *testing.T) {
t.Fatalf("Error getting GCP resources for LB with IP = %q: %v", vip, err)
}

if err = e2e.CheckGCLB(gclb, tc.numForwardingRules, tc.numBackendServices); err != nil {
t.Error(err)
if err := e2e.PerformWhiteboxTests(s, tc.ing, gclb); err != nil {
t.Fatalf("Error performing whitebox tests: %v", err)
}

deleteOptions := &fuzz.GCLBDeleteOptions{
Expand Down Expand Up @@ -176,17 +166,12 @@ func TestEdge(t *testing.T) {
for _, tc := range []struct {
desc string
ing *v1beta1.Ingress

numForwardingRules int
numBackendServices int
}{
{
desc: "long ingress name",
ing: fuzz.NewIngressBuilder("", "long-ingress-name", "").
DefaultBackend("service-1", port80).
Build(),
numForwardingRules: 1,
numBackendServices: 1,
},
} {
tc := tc // Capture tc as we are running this in parallel.
Expand Down Expand Up @@ -225,8 +210,8 @@ func TestEdge(t *testing.T) {
t.Fatalf("Error getting GCP resources for LB with IP = %q: %v", vip, err)
}

if err = e2e.CheckGCLB(gclb, tc.numForwardingRules, tc.numBackendServices); err != nil {
t.Error(err)
if err := e2e.PerformWhiteboxTests(s, tc.ing, gclb); err != nil {
t.Fatalf("Error performing whitebox tests: %v", err)
}

deleteOptions := &fuzz.GCLBDeleteOptions{
Expand Down
45 changes: 18 additions & 27 deletions cmd/e2e-test/neg_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,10 +131,11 @@ func TestNEG(t *testing.T) {
t.Fatalf("Error getting GCP resources for LB with IP = %q: %v", vip, err)
}

if err = e2e.CheckGCLB(gclb, numForwardingRules, tc.numBackendServices); err != nil {
t.Error(err)
if err := e2e.PerformWhiteboxTests(s, ing, gclb); err != nil {
t.Fatalf("Error performing whitebox tests: %v", err)
}

// TODO(mixia): The below checks should be merged into PerformWhiteboxTests().
if (len(gclb.NetworkEndpointGroup) > 0) != tc.expectNegBackend {
t.Errorf("Error: expectNegBackend = %v, %d negs found for gclb %v", tc.expectNegBackend, len(gclb.NetworkEndpointGroup), gclb)
}
Expand Down Expand Up @@ -169,37 +170,27 @@ func TestNEGTransition(t *testing.T) {
desc string
annotations *annotations.NegAnnotation
// negGC is true if a NEG should be garbage collected after applying the annotations
negGC bool
numForwardingRules int
numBackendServices int
negGC bool
}{
{
desc: "Using ingress only",
annotations: &annotations.NegAnnotation{Ingress: true},
negGC: false,
numForwardingRules: 1,
numBackendServices: 1,
desc: "Using ingress only",
annotations: &annotations.NegAnnotation{Ingress: true},
negGC: false,
},
{
desc: "Disable NEG for ingress",
annotations: &annotations.NegAnnotation{Ingress: false},
negGC: true,
numForwardingRules: 1,
numBackendServices: 1,
desc: "Disable NEG for ingress",
annotations: &annotations.NegAnnotation{Ingress: false},
negGC: true,
},
{
desc: "Re-enable NEG for ingress",
annotations: &annotations.NegAnnotation{Ingress: true},
negGC: false,
numForwardingRules: 1,
numBackendServices: 1,
desc: "Re-enable NEG for ingress",
annotations: &annotations.NegAnnotation{Ingress: true},
negGC: false,
},
{
desc: "No annotations",
annotations: nil,
negGC: true,
numForwardingRules: 1,
numBackendServices: 1,
desc: "No annotations",
annotations: nil,
negGC: true,
},
} {
t.Logf("Running test case: %s", tc.desc)
Expand Down Expand Up @@ -243,8 +234,8 @@ func TestNEGTransition(t *testing.T) {
t.Fatalf("Error getting GCP resources for LB with IP = %q: %v", vip, err)
}

if err = e2e.CheckGCLB(gclb, tc.numForwardingRules, tc.numBackendServices); err != nil {
t.Error(err)
if err := e2e.PerformWhiteboxTests(s, ing, gclb); err != nil {
t.Fatalf("Error performing whitebox tests: %v", err)
}

if tc.negGC {
Expand Down
20 changes: 5 additions & 15 deletions cmd/e2e-test/upgrade_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import (
"context"
"testing"

"github.com/kr/pretty"
"k8s.io/api/networking/v1beta1"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/ingress-gce/pkg/e2e"
Expand All @@ -36,17 +35,12 @@ func TestUpgrade(t *testing.T) {
for _, tc := range []struct {
desc string
ing *v1beta1.Ingress

numForwardingRules int
numBackendServices int
}{
{
desc: "http default backend",
ing: fuzz.NewIngressBuilder("", "ingress-1", "").
AddPath("foo.com", "/", "service-1", port80).
Build(),
numForwardingRules: 1,
numBackendServices: 2,
},
} {
tc := tc // Capture tc as we are running this in parallel.
Expand All @@ -70,7 +64,7 @@ func TestUpgrade(t *testing.T) {
ing := waitForStableIngress(true, tc.ing, s, t)
t.Logf("GCLB resources created (%s/%s)", s.Namespace, tc.ing.Name)

whiteboxTest(ing, s, tc.numForwardingRules, tc.numBackendServices, t)
whiteboxTest(ing, s, t)

for {
// While k8s master is upgrading, it will return a connection refused
Expand Down Expand Up @@ -105,7 +99,7 @@ func TestUpgrade(t *testing.T) {
// trigger an Ingress update
ing = waitForStableIngress(true, ing, s, t)
t.Logf("GCLB is stable (%s/%s)", s.Namespace, tc.ing.Name)
whiteboxTest(ing, s, tc.numForwardingRules, tc.numBackendServices, t)
whiteboxTest(ing, s, t)

// If the Master has upgraded and the Ingress is stable,
// we delete the Ingress and exit out of the loop to indicate that
Expand Down Expand Up @@ -141,7 +135,7 @@ func waitForStableIngress(expectUnreachable bool, ing *v1beta1.Ingress, s *e2e.S
return ing
}

func whiteboxTest(ing *v1beta1.Ingress, s *e2e.Sandbox, numForwardingRules, numBackendServices int, t *testing.T) {
func whiteboxTest(ing *v1beta1.Ingress, s *e2e.Sandbox, t *testing.T) {
if len(ing.Status.LoadBalancer.Ingress) < 1 {
t.Fatalf("Ingress does not have an IP: %+v", ing.Status)
}
Expand All @@ -153,11 +147,7 @@ func whiteboxTest(ing *v1beta1.Ingress, s *e2e.Sandbox, numForwardingRules, numB
t.Fatalf("Error getting GCP resources for LB with IP = %q: %v", vip, err)
}

// Do some cursory checks on the GCP objects.
if len(gclb.ForwardingRule) != numForwardingRules {
t.Errorf("got %d fowarding rules, want %d;\n%s", len(gclb.ForwardingRule), numForwardingRules, pretty.Sprint(gclb.ForwardingRule))
}
if len(gclb.BackendService) != numBackendServices {
t.Errorf("got %d backend services, want %d;\n%s", len(gclb.BackendService), numBackendServices, pretty.Sprint(gclb.BackendService))
if err := e2e.PerformWhiteboxTests(s, ing, gclb); err != nil {
t.Fatalf("Error performing whitebox tests: %v", err)
}
}
7 changes: 6 additions & 1 deletion cmd/fuzzer/app/validate.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import (
"k8s.io/ingress-gce/pkg/e2e"
"k8s.io/ingress-gce/pkg/fuzz"
"k8s.io/ingress-gce/pkg/fuzz/features"
"k8s.io/ingress-gce/pkg/fuzz/whitebox"

// Pull in the auth library for GCP.
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
Expand Down Expand Up @@ -133,7 +134,7 @@ func Validate() {

fmt.Printf("Ingress =\n%s\n\n", pretty.Sprint(*ing))

iv, err := fuzz.NewIngressValidator(env, ing, fs, nil)
iv, err := fuzz.NewIngressValidator(env, ing, fs, whitebox.AllTests, nil)
if err != nil {
panic(err)
}
Expand All @@ -151,6 +152,10 @@ func Validate() {
panic(err)
}
fmt.Printf("GCP resources = \n%s\n", pretty.Sprint(gclb))

if err := iv.PerformWhiteboxTests(gclb); err != nil {
panic(err)
}
}

func homeDir() string {
Expand Down
2 changes: 2 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@ require (
github.com/json-iterator/go v1.1.6 // indirect
github.com/kr/pretty v0.1.0
github.com/mailru/easyjson v0.0.0-20190403194419-1ea4449da983 // indirect
github.com/mdempsky/maligned v0.0.0-20180708014732-6e39bd26a8c8 // indirect
github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 // indirect
github.com/prometheus/common v0.3.0 // indirect
github.com/prometheus/procfs v0.0.0-20190416084830-8368d24ba045 // indirect
github.com/spf13/pflag v1.0.3
github.com/tsenart/deadcode v0.0.0-20160724212837-210d2dc333e9 // indirect
golang.org/x/crypto v0.0.0-20190422183909-d864b10871cd // indirect
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 // indirect
Expand Down
8 changes: 8 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX
github.com/Azure/go-autorest v11.1.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
github.com/Azure/go-autorest v11.1.2+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
github.com/BurntSushi/toml v0.3.0/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20181220005116-f8e995905100 h1:EXrpgbxknFeRM6X/OgRqcbVtl5zqUFD5eV8O8M1BLzo=
Expand Down Expand Up @@ -200,6 +201,7 @@ github.com/kardianos/osext v0.0.0-20150410034420-8fef92e41e22/go.mod h1:1NbS8ALr
github.com/karrick/godirwalk v1.7.5/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34=
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/fs v0.0.0-20131111012553-2788f0dbd169/go.mod h1:glhvuHOU9Hy7/8PwwdtnarXqLagOX0b/TbZx2zLMqEg=
Expand All @@ -221,6 +223,8 @@ github.com/marstr/guid v0.0.0-20170427235115-8bdf7d1a087c/go.mod h1:74gB1z2wpxxI
github.com/mattn/go-shellwords v0.0.0-20180605041737-f8471b0a71de/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o=
github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/mdempsky/maligned v0.0.0-20180708014732-6e39bd26a8c8 h1:zvpKif6gkrh82wAd2JIffdLyCL52N8r+ABwHxdIOvWM=
github.com/mdempsky/maligned v0.0.0-20180708014732-6e39bd26a8c8/go.mod h1:oGVD62YTpMEWw0JqJ2Vl48dzHywJBMlapkfsmhtokOU=
github.com/mesos/mesos-go v0.0.9/go.mod h1:kPYCMQ9gsOXVAle1OsoY4I1+9kPu8GHkf88aV59fDr4=
github.com/mholt/caddy v0.0.0-20180213163048-2de495001514/go.mod h1:Wb1PlT4DAYSqOEd03MsqkdkXnTxA8v9pKjdpxbqM1kY=
github.com/miekg/dns v0.0.0-20160614162101-5d001d020961/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
Expand Down Expand Up @@ -308,6 +312,8 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf
github.com/syndtr/gocapability v0.0.0-20160928074757-e7cb7fa329f4/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=
github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE=
github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
github.com/tsenart/deadcode v0.0.0-20160724212837-210d2dc333e9 h1:vY5WqiEon0ZSTGM3ayVVi+twaHKHDFUVloaQ/wug9/c=
github.com/tsenart/deadcode v0.0.0-20160724212837-210d2dc333e9/go.mod h1:q+QjxYvZ+fpjMXqs+XEriussHjSYqeXVnAdSV1tkMYk=
github.com/ugorji/go v0.0.0-20171019201919-bdcc60b419d1/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ=
github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4=
github.com/vishvananda/netlink v0.0.0-20171020171820-b2de5d10e38e/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk=
Expand Down Expand Up @@ -368,6 +374,7 @@ golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c h1:97SnQk1GYRXJgvwZ8fadnxDOWfKvkNQHH3CtZntPSrM=
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0=
gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
Expand Down Expand Up @@ -420,6 +427,7 @@ gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a h1:LJwr7TCTghdatWv40WobzlKXc9c4s8oGa7QKJUtHhWA=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
istio.io/api v0.0.0-20190809125725-591cf32c1d0e h1:96ps7g+JjoJ0Wh/VzIdfds+ZDt8pFYhX7gHyKX5Tswk=
istio.io/api v0.0.0-20190809125725-591cf32c1d0e/go.mod h1:42cBjnu/rTJcCaKi8nLdIvq0n71RcLrkgZ9IQSvDdSQ=
Expand Down
19 changes: 15 additions & 4 deletions pkg/e2e/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,12 @@ import (
"time"

"encoding/json"
"io/ioutil"
"net/http"
"strings"

"github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud"
"github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/meta"
"io/ioutil"
apps "k8s.io/api/apps/v1"
v1 "k8s.io/api/core/v1"
"k8s.io/api/networking/v1beta1"
Expand All @@ -37,10 +40,9 @@ import (
"k8s.io/ingress-gce/pkg/annotations"
"k8s.io/ingress-gce/pkg/fuzz"
"k8s.io/ingress-gce/pkg/fuzz/features"
"k8s.io/ingress-gce/pkg/fuzz/whitebox"
"k8s.io/ingress-gce/pkg/utils"
"k8s.io/klog"
"net/http"
"strings"
)

const (
Expand Down Expand Up @@ -99,7 +101,7 @@ func WaitForIngress(s *Sandbox, ing *v1beta1.Ingress, options *WaitForIngressOpt
if err != nil {
return true, err
}
validator, err := fuzz.NewIngressValidator(s.ValidatorEnv, ing, features.All, nil)
validator, err := fuzz.NewIngressValidator(s.ValidatorEnv, ing, features.All, []fuzz.WhiteboxTest{}, nil)
if err != nil {
return true, err
}
Expand Down Expand Up @@ -136,6 +138,15 @@ func WaitForFinalizer(s *Sandbox, ingName string) error {
})
}

// PerformWhiteboxTests runs the whitebox tests against the Ingress.
func PerformWhiteboxTests(s *Sandbox, ing *v1beta1.Ingress, gclb *fuzz.GCLB) error {
validator, err := fuzz.NewIngressValidator(s.ValidatorEnv, ing, []fuzz.Feature{}, whitebox.AllTests, nil)
if err != nil {
return err
}
return validator.PerformWhiteboxTests(gclb)
}

// WaitForIngressDeletion deletes the given ingress and waits for the
// resources associated with it to be deleted.
func WaitForIngressDeletion(ctx context.Context, g *fuzz.GCLB, s *Sandbox, ing *v1beta1.Ingress, options *fuzz.GCLBDeleteOptions) error {
Expand Down
Loading