Skip to content

Commit 716d051

Browse files
committed
Add helper functions to gernated unique resource names
1 parent 339e6b8 commit 716d051

File tree

3 files changed

+43
-7
lines changed

3 files changed

+43
-7
lines changed

internal/framework/helpers/helpers.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package helpers
33

44
import (
55
"bytes"
6+
"crypto/rand"
67
"fmt"
78
"text/template"
89

@@ -87,3 +88,18 @@ func MustExecuteTemplate(templ *template.Template, data interface{}) []byte {
8788

8889
return buf.Bytes()
8990
}
91+
92+
// RandomPrimeNumber generates a random prime number of 64 bits.
93+
// It panics if it fails to generate a random prime number.
94+
func RandomPrimeNumber() int64 {
95+
primeNum, err := rand.Prime(rand.Reader, 64)
96+
if err != nil {
97+
panic(fmt.Errorf("failed to generate random prime number: %w", err))
98+
}
99+
return primeNum.Int64()
100+
}
101+
102+
// UniqueResourceName generates a unique resource name by appending a random prime number to the given name.
103+
func UniqueResourceName(name string) string {
104+
return fmt.Sprintf("%s-%d", name, RandomPrimeNumber())
105+
}

internal/framework/helpers/helpers_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,3 +109,25 @@ func TestMustExecuteTemplatePanics(t *testing.T) {
109109

110110
g.Expect(execute).To(Panic())
111111
}
112+
113+
func TestMustGenerateRandomPrimeNumer(t *testing.T) {
114+
t.Parallel()
115+
g := NewWithT(t)
116+
117+
// This test is expected to panic if it fails to generate a random prime number.
118+
g.Expect(func() {
119+
_ = helpers.RandomPrimeNumber()
120+
}).ToNot(Panic())
121+
}
122+
123+
func TestMustReturnUniqueResourceName(t *testing.T) {
124+
t.Parallel()
125+
g := NewWithT(t)
126+
127+
name := "test-resource"
128+
uniqueName := helpers.UniqueResourceName(name)
129+
130+
g.Expect(uniqueName).To(HavePrefix(name))
131+
g.Expect(uniqueName).To(HaveSuffix("-"))
132+
g.Expect(len(uniqueName)).To(BeNumerically(">", len(name)))
133+
}

tests/cel/clientsettingspolicy_test.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ package cel
22

33
import (
44
"context"
5-
"crypto/rand"
6-
"fmt"
75
"testing"
86

97
. "github.com/onsi/gomega"
@@ -13,6 +11,7 @@ import (
1311
gatewayv1alpha2 "sigs.k8s.io/gateway-api/apis/v1alpha2"
1412

1513
ngfAPIv1alpha1 "github.com/nginx/nginx-gateway-fabric/v2/apis/v1alpha1"
14+
ngfHelpers "github.com/nginx/nginx-gateway-fabric/v2/internal/framework/helpers"
1615
)
1716

1817
const (
@@ -35,8 +34,8 @@ const (
3534
)
3635

3736
const (
38-
PolicyNameFormat = "test-policy-%d"
39-
TargetRefFormat = "targetRef-name-%d"
37+
PolicyName = "test-policy"
38+
TargetRef = "targetRef-name"
4039
)
4140

4241
func TestClientSettingsPoliciesTargetRefKind(t *testing.T) {
@@ -164,11 +163,10 @@ func validateClientSettingsPolicy(t *testing.T, tt struct {
164163

165164
g.Expect(err).ToNot(HaveOccurred())
166165

167-
primeNum, err := rand.Prime(rand.Reader, 64)
168166
g.Expect(err).ToNot(HaveOccurred())
169167
policySpec := tt.policySpec
170-
policySpec.TargetRef.Name = gatewayv1alpha2.ObjectName(fmt.Sprintf(TargetRefFormat, primeNum))
171-
policyName := fmt.Sprintf(PolicyNameFormat, primeNum)
168+
policySpec.TargetRef.Name = gatewayv1alpha2.ObjectName(ngfHelpers.UniqueResourceName(TargetRef))
169+
policyName := ngfHelpers.UniqueResourceName(PolicyName)
172170

173171
clientSettingsPolicy := &ngfAPIv1alpha1.ClientSettingsPolicy{
174172
ObjectMeta: controllerruntime.ObjectMeta{

0 commit comments

Comments
 (0)