Skip to content

Commit e3332ff

Browse files
author
alexander-demicev
committed
Add data compression unit tests
Signed-off-by: alexander-demicev <alexandr.demicev@suse.com>
1 parent cb47c6f commit e3332ff

File tree

2 files changed

+91
-0
lines changed

2 files changed

+91
-0
lines changed

internal/controller/manifests_downloader_test.go

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ limitations under the License.
1717
package controller
1818

1919
import (
20+
"bytes"
2021
"context"
22+
"strings"
2123
"testing"
2224

2325
. "github.com/onsi/gomega"
@@ -126,3 +128,59 @@ func TestProviderDownloadWithOverrides(t *testing.T) {
126128
g.Expect(p.components.Images()).To(HaveExactElements([]string{"registry.k8s.io/cluster-api/cluster-api-controller:v1.4.3"}))
127129
g.Expect(p.components.Version()).To(Equal("v1.4.3"))
128130
}
131+
132+
func TestCompressDecompressRoundtrip(t *testing.T) {
133+
g := NewWithT(t)
134+
135+
original := []byte("apiVersion: v1\nkind: ConfigMap\nmetadata:\n name: test\n")
136+
137+
var buf bytes.Buffer
138+
err := compressData(&buf, original)
139+
g.Expect(err).ToNot(HaveOccurred())
140+
g.Expect(buf.Len()).To(BeNumerically(">", 0))
141+
142+
decompressed, err := decompressData(buf.Bytes())
143+
g.Expect(err).ToNot(HaveOccurred())
144+
g.Expect(decompressed).To(Equal(original))
145+
}
146+
147+
func TestCompressDataEmptyInput(t *testing.T) {
148+
g := NewWithT(t)
149+
150+
var buf bytes.Buffer
151+
err := compressData(&buf, []byte{})
152+
g.Expect(err).ToNot(HaveOccurred())
153+
154+
decompressed, err := decompressData(buf.Bytes())
155+
g.Expect(err).ToNot(HaveOccurred())
156+
g.Expect(decompressed).To(BeEmpty())
157+
}
158+
159+
func TestDecompressDataInvalidInput(t *testing.T) {
160+
g := NewWithT(t)
161+
162+
_, err := decompressData([]byte("not gzip data"))
163+
g.Expect(err).To(HaveOccurred())
164+
g.Expect(err.Error()).To(ContainSubstring("cannot open gzip reader"))
165+
}
166+
167+
func TestCompressDecompressLargeData(t *testing.T) {
168+
g := NewWithT(t)
169+
170+
// Create data larger than maxConfigMapSize to test needToCompress
171+
largeData := []byte(strings.Repeat("x", maxConfigMapSize+1))
172+
173+
g.Expect(needToCompress(largeData)).To(BeTrue())
174+
g.Expect(needToCompress([]byte("small"))).To(BeFalse())
175+
176+
var buf bytes.Buffer
177+
err := compressData(&buf, largeData)
178+
g.Expect(err).ToNot(HaveOccurred())
179+
180+
// Compressed size should be much smaller than original for repetitive data
181+
g.Expect(buf.Len()).To(BeNumerically("<", len(largeData)))
182+
183+
decompressed, err := decompressData(buf.Bytes())
184+
g.Expect(err).ToNot(HaveOccurred())
185+
g.Expect(decompressed).To(Equal(largeData))
186+
}

internal/controller/suite_test.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,39 @@ func TestMain(m *testing.M) {
8787
panic(fmt.Sprintf("Failed to start ControlPlaneProviderReconciler: %v", err))
8888
}
8989

90+
if err := (&GenericProviderReconciler{
91+
Provider: &operatorv1.AddonProvider{},
92+
ProviderList: &operatorv1.AddonProviderList{},
93+
Client: env,
94+
WatchConfigSecretChanges: true,
95+
WatchConfigMapChanges: true,
96+
WatchCoreProviderChanges: true,
97+
}).SetupWithManager(ctx, env.Manager, controller.Options{MaxConcurrentReconciles: 1}); err != nil {
98+
panic(fmt.Sprintf("Failed to start AddonProviderReconciler: %v", err))
99+
}
100+
101+
if err := (&GenericProviderReconciler{
102+
Provider: &operatorv1.IPAMProvider{},
103+
ProviderList: &operatorv1.IPAMProviderList{},
104+
Client: env,
105+
WatchConfigSecretChanges: true,
106+
WatchConfigMapChanges: true,
107+
WatchCoreProviderChanges: true,
108+
}).SetupWithManager(ctx, env.Manager, controller.Options{MaxConcurrentReconciles: 1}); err != nil {
109+
panic(fmt.Sprintf("Failed to start IPAMProviderReconciler: %v", err))
110+
}
111+
112+
if err := (&GenericProviderReconciler{
113+
Provider: &operatorv1.RuntimeExtensionProvider{},
114+
ProviderList: &operatorv1.RuntimeExtensionProviderList{},
115+
Client: env,
116+
WatchConfigSecretChanges: true,
117+
WatchConfigMapChanges: true,
118+
WatchCoreProviderChanges: true,
119+
}).SetupWithManager(ctx, env.Manager, controller.Options{MaxConcurrentReconciles: 1}); err != nil {
120+
panic(fmt.Sprintf("Failed to start RuntimeExtensionProviderReconciler: %v", err))
121+
}
122+
90123
go func() {
91124
if err := env.Start(ctx); err != nil {
92125
panic(fmt.Sprintf("Failed to start the envtest manager: %v", err))

0 commit comments

Comments
 (0)