Skip to content

Commit 33c056c

Browse files
committed
generate manifests fix
1 parent e08e971 commit 33c056c

File tree

3 files changed

+212
-243
lines changed

3 files changed

+212
-243
lines changed

tests/framework/generate_manifests.go

Lines changed: 34 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"errors"
66
"fmt"
77
"io"
8-
"log"
98
"text/template"
109

1110
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@@ -121,9 +120,14 @@ type route struct {
121120

122121
// ScaleObjects contains objects for scale testing.
123122
type ScaleObjects struct {
124-
// BaseObjects contains objects that are common to all scale iterations.
123+
// BaseObjects contains objects that should be created first:
124+
// secrets and other foundational resources.
125125
BaseObjects []client.Object
126-
// ScaleIterationGroups contains objects for each scale iteration.
126+
// GatewayAndServiceObjects contains backend services, deployments, and Gateway objects.
127+
// These are created after BaseObjects to ensure endpoints are ready before traffic.
128+
GatewayAndServiceObjects []client.Object
129+
// ScaleIterationGroups contains HTTPRoute objects for each scale iteration.
130+
// These are applied after GatewayAndServiceObjects to start traffic flow incrementally.
127131
ScaleIterationGroups [][]client.Object
128132
}
129133

@@ -151,17 +155,16 @@ func decodeObjects(reader io.Reader) ([]client.Object, error) {
151155
}
152156

153157
// GenerateScaleListenerObjects generates objects for a given number of listeners for the scale test.
154-
// Modified to create all services and gateways first, then scale routes.
158+
// Secrets are created first in BaseObjects, then backend services/deployments and Gateway in GatewayAndServiceObjects,
159+
// and finally HTTPRoutes in ScaleIterationGroups.
155160
func GenerateScaleListenerObjects(numListeners int, tls bool) (ScaleObjects, error) {
156-
log.Printf("GenerateScaleListenerObjects: Starting generation for %d listeners, TLS=%v", numListeners, tls)
157161
var result ScaleObjects
158162

159163
listeners := make([]listener, 0)
160164
backends := make([]string, 0)
161165
secrets := make([]string, 0)
162166
routes := make([]route, 0)
163167

164-
// Generate all listeners, backends, and routes
165168
for i := range numListeners {
166169
listenerName := fmt.Sprintf("listener-%d", i)
167170
hostnamePrefix := fmt.Sprintf("%d", i)
@@ -185,66 +188,44 @@ func GenerateScaleListenerObjects(numListeners int, tls bool) (ScaleObjects, err
185188
HostnamePrefix: hostnamePrefix,
186189
BackendName: backendName,
187190
}
188-
189191
routes = append(routes, r)
192+
190193
backends = append(backends, backendName)
191194
}
192195

193-
log.Printf("GenerateScaleListenerObjects: Generated %d listeners, %d backends, %d secrets", len(listeners), len(backends), len(secrets))
194-
195-
// Generate gateway with all listeners
196-
log.Printf("GenerateScaleListenerObjects: Generating gateway with %d listeners", len(listeners))
197-
gatewayObjects, err := generateManifests(listeners, []route{})
196+
secretObjects, err := generateSecrets(secrets)
198197
if err != nil {
199198
return ScaleObjects{}, err
200199
}
201-
log.Printf("GenerateScaleListenerObjects: Generated %d gateway objects", len(gatewayObjects))
200+
result.BaseObjects = append(result.BaseObjects, secretObjects...)
202201

203-
// Generate secrets if TLS is enabled
204-
secretObjects, err := generateSecrets(secrets)
202+
backendObjects, err := generateBackendAppObjects(backends)
205203
if err != nil {
206204
return ScaleObjects{}, err
207205
}
208-
log.Printf("GenerateScaleListenerObjects: Generated %d secret objects", len(secretObjects))
206+
result.GatewayAndServiceObjects = append(result.GatewayAndServiceObjects, backendObjects...)
209207

210-
// Generate backend app objects (services, deployments)
211-
log.Printf("GenerateScaleListenerObjects: Generating backend objects for %d backends", len(backends))
212-
backendObjects, err := generateBackendAppObjects(backends)
208+
gatewayObjects, err := generateManifests(listeners, nil)
213209
if err != nil {
214210
return ScaleObjects{}, err
215211
}
216-
log.Printf("GenerateScaleListenerObjects: Generated %d backend objects", len(backendObjects))
217-
218-
// BaseObjects includes services, secrets, and gateway with all listeners
219-
result.BaseObjects = append(result.BaseObjects, secretObjects...)
220-
result.BaseObjects = append(result.BaseObjects, backendObjects...)
221-
result.BaseObjects = append(result.BaseObjects, gatewayObjects...)
222-
log.Printf("GenerateScaleListenerObjects: BaseObjects contains %d total objects", len(result.BaseObjects))
212+
result.GatewayAndServiceObjects = append(result.GatewayAndServiceObjects, gatewayObjects...)
223213

224-
// Each iteration creates one route
225-
for i := range numListeners {
226-
log.Printf("GenerateScaleListenerObjects: Generating route %d: %s", i, routes[i].Name)
227-
objects, err := generateManifests([]listener{}, []route{routes[i]})
228-
if err != nil {
229-
return ScaleObjects{}, err
230-
}
231-
232-
result.ScaleIterationGroups = append(result.ScaleIterationGroups, objects)
233-
log.Printf("GenerateScaleListenerObjects: Route %d generated %d objects", i, len(objects))
214+
routeObjects, err := generateManifests(nil, routes)
215+
if err != nil {
216+
return ScaleObjects{}, err
234217
}
218+
result.ScaleIterationGroups = append(result.ScaleIterationGroups, routeObjects)
235219

236-
log.Printf("GenerateScaleListenerObjects: Completed. BaseObjects: %d, ScaleIterationGroups: %d", len(result.BaseObjects), len(result.ScaleIterationGroups))
237220
return result, nil
238221
}
239222

240223
func generateSecrets(secrets []string) ([]client.Object, error) {
241-
log.Printf("generateSecrets: Generating %d secrets: %v", len(secrets), secrets)
242224
objects := make([]client.Object, 0, len(secrets))
243225

244-
for i, secret := range secrets {
226+
for _, secret := range secrets {
245227
var buf bytes.Buffer
246228

247-
log.Printf("generateSecrets: Executing secret template for secret %d: %s", i, secret)
248229
if err := secretTmpl.Execute(&buf, secret); err != nil {
249230
return nil, err
250231
}
@@ -254,18 +235,14 @@ func generateSecrets(secrets []string) ([]client.Object, error) {
254235
return nil, err
255236
}
256237

257-
log.Printf("generateSecrets: Secret %s generated %d objects", secret, len(objs))
258238
objects = append(objects, objs...)
259239
}
260240

261-
log.Printf("generateSecrets: Total secret objects generated: %d", len(objects))
262241
return objects, nil
263242
}
264243

265244
// GenerateScaleHTTPRouteObjects generates objects for a given number of routes for the scale test.
266-
// Modified to create all services and gateways first, then scale routes.
267245
func GenerateScaleHTTPRouteObjects(numRoutes int) (ScaleObjects, error) {
268-
log.Printf("GenerateScaleHTTPRouteObjects: Starting generation for %d routes", numRoutes)
269246
var result ScaleObjects
270247

271248
l := listener{
@@ -275,27 +252,21 @@ func GenerateScaleHTTPRouteObjects(numRoutes int) (ScaleObjects, error) {
275252

276253
backendName := "backend"
277254

278-
// Generate the Gateway once and add it to BaseObjects
279-
log.Printf("GenerateScaleHTTPRouteObjects: Generating gateway with single listener")
280-
gatewayObjects, err := generateManifests([]listener{l}, []route{})
255+
// Generate backend objects and add to GatewayAndServiceObjects
256+
backendObjects, err := generateBackendAppObjects([]string{backendName})
281257
if err != nil {
282258
return ScaleObjects{}, err
283259
}
284-
log.Printf("GenerateScaleHTTPRouteObjects: Generated %d gateway objects", len(gatewayObjects))
260+
result.GatewayAndServiceObjects = append(result.GatewayAndServiceObjects, backendObjects...)
285261

286-
// Generate backend app objects (services, deployments)
287-
log.Printf("GenerateScaleHTTPRouteObjects: Generating backend objects for backend: %s", backendName)
288-
backendObjects, err := generateBackendAppObjects([]string{backendName})
262+
// Generate Gateway object and add to GatewayAndServiceObjects
263+
gatewayObjects, err := generateManifests([]listener{l}, nil)
289264
if err != nil {
290265
return ScaleObjects{}, err
291266
}
292-
log.Printf("GenerateScaleHTTPRouteObjects: Generated %d backend objects", len(backendObjects))
293-
294-
// BaseObjects now includes services and gateway
295-
result.BaseObjects = append(backendObjects, gatewayObjects...)
296-
log.Printf("GenerateScaleHTTPRouteObjects: BaseObjects contains %d total objects", len(result.BaseObjects))
267+
result.GatewayAndServiceObjects = append(result.GatewayAndServiceObjects, gatewayObjects...)
297268

298-
// Each iteration only creates one route
269+
// Generate HTTPRoute objects for each iteration
299270
for i := range numRoutes {
300271
r := route{
301272
Name: fmt.Sprintf("route-%d", i),
@@ -304,59 +275,46 @@ func GenerateScaleHTTPRouteObjects(numRoutes int) (ScaleObjects, error) {
304275
BackendName: backendName,
305276
}
306277

307-
log.Printf("GenerateScaleHTTPRouteObjects: Generating route %d: %s with hostname %s", i, r.Name, r.HostnamePrefix)
308-
// Generate only the route (no gateway, no listeners)
309-
objects, err := generateManifests([]listener{}, []route{r})
278+
// Generate only the HTTPRoute (no listeners/gateway)
279+
routeObjects, err := generateManifests(nil, []route{r})
310280
if err != nil {
311281
return ScaleObjects{}, err
312282
}
313283

314-
result.ScaleIterationGroups = append(result.ScaleIterationGroups, objects)
315-
log.Printf("GenerateScaleHTTPRouteObjects: Route %d generated %d objects", i, len(objects))
284+
result.ScaleIterationGroups = append(result.ScaleIterationGroups, routeObjects)
316285
}
317286

318-
log.Printf("GenerateScaleHTTPRouteObjects: Completed. BaseObjects: %d, ScaleIterationGroups: %d", len(result.BaseObjects), len(result.ScaleIterationGroups))
319287
return result, nil
320288
}
321289

322290
func generateManifests(listeners []listener, routes []route) ([]client.Object, error) {
323-
log.Printf("generateManifests: Called with %d listeners, %d routes", len(listeners), len(routes))
324291
var buf bytes.Buffer
325292

326293
if len(listeners) > 0 {
327-
log.Printf("generateManifests: Executing gateway template with %d listeners", len(listeners))
328294
if err := gwTmpl.Execute(&buf, listeners); err != nil {
329295
return nil, err
330296
}
331297
}
332298

333-
for i, r := range routes {
299+
for _, r := range routes {
334300
if buf.Len() > 0 {
335301
buf.WriteString("\n---\n")
336302
}
337303

338-
log.Printf("generateManifests: Executing route template for route %d: %s", i, r.Name)
339304
if err := hrTmpl.Execute(&buf, r); err != nil {
340305
return nil, err
341306
}
342307
}
343308

344-
objects, err := decodeObjects(&buf)
345-
if err != nil {
346-
return nil, err
347-
}
348-
log.Printf("generateManifests: Decoded %d objects from templates", len(objects))
349-
return objects, nil
309+
return decodeObjects(&buf)
350310
}
351311

352312
func generateBackendAppObjects(backends []string) ([]client.Object, error) {
353-
log.Printf("generateBackendAppObjects: Generating objects for %d backends: %v", len(backends), backends)
354313
objects := make([]client.Object, 0, 2*len(backends))
355314

356-
for i, backend := range backends {
315+
for _, backend := range backends {
357316
var buf bytes.Buffer
358317

359-
log.Printf("generateBackendAppObjects: Executing app template for backend %d: %s", i, backend)
360318
if err := appTmpl.Execute(&buf, backend); err != nil {
361319
return nil, err
362320
}
@@ -366,10 +324,8 @@ func generateBackendAppObjects(backends []string) ([]client.Object, error) {
366324
return nil, err
367325
}
368326

369-
log.Printf("generateBackendAppObjects: Backend %s generated %d objects", backend, len(objs))
370327
objects = append(objects, objs...)
371328
}
372329

373-
log.Printf("generateBackendAppObjects: Total objects generated: %d", len(objects))
374330
return objects, nil
375331
}

tests/framework/results.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@ func CreateResultsDir(testName, version string) (string, error) {
2121

2222
dirName := filepath.Join(filepath.Dir(pwd), "results", testName, version)
2323

24+
if _, err := os.Stat(dirName); err == nil {
25+
if err := os.RemoveAll(dirName); err != nil {
26+
return "", fmt.Errorf("failed to remove existing directory %s: %w", dirName, err)
27+
}
28+
}
29+
2430
return dirName, os.MkdirAll(dirName, 0o777)
2531
}
2632

0 commit comments

Comments
 (0)