Skip to content

Commit 82d7acf

Browse files
authored
Merge pull request kubernetes-sigs#2147 from shiftstack/dumpnode1only
🐛 e2e: Only dump resources on node 1
2 parents 5aaceac + 60ce72d commit 82d7acf

File tree

1 file changed

+27
-38
lines changed

1 file changed

+27
-38
lines changed

test/e2e/suites/e2e/e2e_suite_test.go

Lines changed: 27 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ limitations under the License.
2020
package e2e
2121

2222
import (
23+
"errors"
2324
"os"
2425
"testing"
2526

@@ -31,20 +32,14 @@ import (
3132
. "github.com/onsi/ginkgo/v2"
3233
. "github.com/onsi/gomega"
3334
"k8s.io/klog/v2"
34-
"k8s.io/utils/ptr"
3535
ctrl "sigs.k8s.io/controller-runtime"
3636

3737
"sigs.k8s.io/cluster-api-provider-openstack/test/e2e/shared"
3838
)
3939

4040
var (
41-
e2eCtx *shared.E2EContext
42-
initialServers []servers.Server
43-
initialNetworks []networks.Network
44-
initialSecurityGroups []groups.SecGroup
45-
initialLoadBalancers []loadbalancers.LoadBalancer
46-
initialVolumes []volumes.Volume
47-
err error
41+
e2eCtx *shared.E2EContext
42+
err error
4843
)
4944

5045
func init() {
@@ -66,38 +61,50 @@ func TestE2E(t *testing.T) {
6661

6762
var _ = SynchronizedBeforeSuite(func() []byte {
6863
data := shared.Node1BeforeSuite(e2eCtx)
69-
return data
70-
}, func(data []byte) {
71-
shared.AllNodesBeforeSuite(e2eCtx, data)
72-
initialServers, err = shared.DumpOpenStackServers(e2eCtx, servers.ListOpts{})
64+
65+
initialServers, err := shared.DumpOpenStackServers(e2eCtx, servers.ListOpts{})
7366
Expect(err).NotTo(HaveOccurred())
74-
initialNetworks, err = shared.DumpOpenStackNetworks(e2eCtx, networks.ListOpts{})
67+
initialNetworks, err := shared.DumpOpenStackNetworks(e2eCtx, networks.ListOpts{})
7568
Expect(err).NotTo(HaveOccurred())
76-
initialSecurityGroups, err = shared.DumpOpenStackSecurityGroups(e2eCtx, groups.ListOpts{})
69+
initialSecurityGroups, err := shared.DumpOpenStackSecurityGroups(e2eCtx, groups.ListOpts{})
7770
Expect(err).NotTo(HaveOccurred())
78-
initialLoadBalancers, err = shared.DumpOpenStackLoadBalancers(e2eCtx, loadbalancers.ListOpts{})
71+
initialLoadBalancers, err := shared.DumpOpenStackLoadBalancers(e2eCtx, loadbalancers.ListOpts{})
7972
Expect(err).NotTo(HaveOccurred())
80-
initialVolumes, err = shared.DumpOpenStackVolumes(e2eCtx, volumes.ListOpts{})
73+
initialVolumes, err := shared.DumpOpenStackVolumes(e2eCtx, volumes.ListOpts{})
8174
Expect(err).NotTo(HaveOccurred())
75+
76+
DeferCleanup(func() error {
77+
return errors.Join(
78+
CheckResourceCleanup(shared.DumpOpenStackServers, servers.ListOpts{}, initialServers),
79+
CheckResourceCleanup(shared.DumpOpenStackNetworks, networks.ListOpts{}, initialNetworks),
80+
CheckResourceCleanup(shared.DumpOpenStackSecurityGroups, groups.ListOpts{}, initialSecurityGroups),
81+
CheckResourceCleanup(shared.DumpOpenStackLoadBalancers, loadbalancers.ListOpts{}, initialLoadBalancers),
82+
CheckResourceCleanup(shared.DumpOpenStackVolumes, volumes.ListOpts{}, initialVolumes),
83+
)
84+
})
85+
86+
return data
87+
}, func(data []byte) {
88+
shared.AllNodesBeforeSuite(e2eCtx, data)
8289
})
8390

8491
// CheckResourceCleanup checks if all resources created during the test are cleaned up by comparing the resources
8592
// before and after the test.
8693
// The function f is used to list the resources of type T, whose list opts is of type L.
8794
// The list of resources is then compared to the initialResources, using the ConsistOfIDs custom matcher.
88-
func CheckResourceCleanup[T any, L any](f func(*shared.E2EContext, L) ([]T, error), l L, initialResources []T) *string {
95+
func CheckResourceCleanup[T any, L any](f func(*shared.E2EContext, L) ([]T, error), l L, initialResources []T) error {
8996
endResources, err := f(e2eCtx, l)
9097
if err != nil {
91-
return ptr.To(err.Error())
98+
return err
9299
}
93100

94101
matcher := ConsistOfIDs(initialResources)
95102
success, err := matcher.Match(endResources)
96103
if err != nil {
97-
return ptr.To(err.Error())
104+
return err
98105
}
99106
if !success {
100-
return ptr.To(matcher.FailureMessage(endResources))
107+
return errors.New(matcher.FailureMessage(endResources))
101108
}
102109

103110
return nil
@@ -106,23 +113,5 @@ func CheckResourceCleanup[T any, L any](f func(*shared.E2EContext, L) ([]T, erro
106113
var _ = SynchronizedAfterSuite(func() {
107114
shared.AllNodesAfterSuite(e2eCtx)
108115
}, func() {
109-
failed := false
110-
for _, error := range []*string{
111-
CheckResourceCleanup(shared.DumpOpenStackServers, servers.ListOpts{}, initialServers),
112-
CheckResourceCleanup(shared.DumpOpenStackNetworks, networks.ListOpts{}, initialNetworks),
113-
CheckResourceCleanup(shared.DumpOpenStackSecurityGroups, groups.ListOpts{}, initialSecurityGroups),
114-
CheckResourceCleanup(shared.DumpOpenStackLoadBalancers, loadbalancers.ListOpts{}, initialLoadBalancers),
115-
CheckResourceCleanup(shared.DumpOpenStackVolumes, volumes.ListOpts{}, initialVolumes),
116-
} {
117-
if error != nil {
118-
GinkgoWriter.Println(*error)
119-
failed = true
120-
}
121-
}
122-
123116
shared.Node1AfterSuite(e2eCtx)
124-
125-
if failed {
126-
Fail("Not all resources were cleaned up")
127-
}
128117
})

0 commit comments

Comments
 (0)