Skip to content

Commit d2464a2

Browse files
committed
wip: run many times test to flake
Signed-off-by: karampok <[email protected]>
1 parent bfeacb8 commit d2464a2

File tree

3 files changed

+29
-9
lines changed

3 files changed

+29
-9
lines changed

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ $(APIDOCSGEN): $(LOCALBIN)
238238

239239
.PHONY: e2etests
240240
e2etests: ginkgo kubectl
241-
$(GINKGO) -v $(GINKGO_ARGS) --timeout=3h ./e2etests -- --kubectl=$(KUBECTL) $(TEST_ARGS)
241+
$(GINKGO) -v $(GINKGO_ARGS) --repeat=50 --timeout=3h ./e2etests -- --kubectl=$(KUBECTL) $(TEST_ARGS)
242242

243243

244244
.PHONY: kind-cluster

e2etests/pkg/k8s/pods.go

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ func RestartFRRK8sPods(cs clientset.Interface) error {
7474
return false, nil
7575
}
7676
}
77+
ginkgo.By(fmt.Sprintf("\tfrrk8s pod ARE ready"))
7778
return true, nil
7879
})
7980
}

e2etests/tests/graceful_restart.go

+27-8
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
package tests
44

55
import (
6+
"errors"
67
"fmt"
78
"time"
89

@@ -26,7 +27,7 @@ import (
2627
clientset "k8s.io/client-go/kubernetes"
2728
)
2829

29-
var _ = ginkgo.Describe("Establish BGP session with EnableGracefulRestart", func() {
30+
var _ = ginkgo.FDescribe("Establish BGP session with EnableGracefulRestart", func() {
3031
var (
3132
cs clientset.Interface
3233
updater *config.Updater
@@ -103,19 +104,17 @@ var _ = ginkgo.Describe("Establish BGP session with EnableGracefulRestart", func
103104
err := updater.Update(peersConfig.Secrets, frrConfigCR)
104105
Expect(err).NotTo(HaveOccurred(), "apply the CR in k8s api failed")
105106

106-
check := func() error {
107+
Eventually(func() error {
107108
for _, p := range peersConfig.Peers() {
108109
err := routes.CheckNeighborHasPrefix(p.FRR, p.FRR.RouterConfig.VRF, prefix, nodes)
109110
if err != nil {
110111
return fmt.Errorf("Neigh %s does not have prefix %s: %w", p.FRR.Name, prefix, err)
111112
}
112113
}
113114
return nil
114-
}
115-
116-
Eventually(check, time.Minute, time.Second).ShouldNot(HaveOccurred(),
117-
"route should exist before we restart frr-k8s")
115+
}, time.Minute, time.Second).ShouldNot(HaveOccurred(), "route should exist before we restart frr-k8s")
118116

117+
time.Sleep(5 * time.Second)
119118
c := make(chan struct{})
120119
go func() { // go restart frr-k8s while Consistently check that route exists
121120
defer ginkgo.GinkgoRecover()
@@ -124,12 +123,32 @@ var _ = ginkgo.Describe("Establish BGP session with EnableGracefulRestart", func
124123
close(c)
125124
}()
126125

126+
check := func() error {
127+
var returnError error
128+
129+
for _, p := range peersConfig.Peers() {
130+
err = routes.CheckNeighborHasPrefix(p.FRR, p.FRR.RouterConfig.VRF, prefix, nodes)
131+
if err != nil {
132+
returnError = errors.Join(returnError, fmt.Errorf("Neigh %s does not have prefix %s: %w", p.FRR.Name, prefix, err))
133+
for i := 0; i < 5; i++ {
134+
if err := routes.CheckNeighborHasPrefix(p.FRR, p.FRR.RouterConfig.VRF, prefix, nodes); err != nil {
135+
ginkgo.By(fmt.Sprintf("%d Neigh %s does not have prefix %s: %s", i, p.FRR.Name, prefix, err))
136+
time.Sleep(time.Second)
137+
} else {
138+
ginkgo.By(fmt.Sprintf("%d Neigh %s does have prefix %s: %s", i, p.FRR.Name, prefix, err))
139+
}
140+
}
141+
}
142+
}
143+
return returnError
144+
}
145+
127146
// 2*time.Minute is important because that is the Graceful Restart timer.
128147
Consistently(check, 2*time.Minute, time.Second).ShouldNot(HaveOccurred())
129148
Eventually(c, time.Minute, time.Second).Should(BeClosed(), "restart FRRK8s pods are not yet ready")
130149
},
131-
ginkgo.Entry("IPV4", ipfamily.IPv4, "192.168.2.0/24"),
132-
ginkgo.Entry("IPV6", ipfamily.IPv6, "fc00:f853:ccd:e799::/64"),
150+
ginkgo.Entry("IPV4", ipfamily.IPv4, "5.5.5.5/32"),
151+
ginkgo.Entry("IPV6", ipfamily.IPv6, "2001:db8:5555::5/128"),
133152
)
134153
})
135154
})

0 commit comments

Comments
 (0)