55 "errors"
66 "fmt"
77 "io"
8+ "log"
89 "text/template"
910
1011 "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@@ -150,13 +151,17 @@ func decodeObjects(reader io.Reader) ([]client.Object, error) {
150151}
151152
152153// 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.
153155func GenerateScaleListenerObjects (numListeners int , tls bool ) (ScaleObjects , error ) {
156+ log .Printf ("GenerateScaleListenerObjects: Starting generation for %d listeners, TLS=%v" , numListeners , tls )
154157 var result ScaleObjects
155158
156159 listeners := make ([]listener , 0 )
157160 backends := make ([]string , 0 )
158161 secrets := make ([]string , 0 )
162+ routes := make ([]route , 0 )
159163
164+ // Generate all listeners, backends, and routes
160165 for i := range numListeners {
161166 listenerName := fmt .Sprintf ("listener-%d" , i )
162167 hostnamePrefix := fmt .Sprintf ("%d" , i )
@@ -181,39 +186,65 @@ func GenerateScaleListenerObjects(numListeners int, tls bool) (ScaleObjects, err
181186 BackendName : backendName ,
182187 }
183188
189+ routes = append (routes , r )
184190 backends = append (backends , backendName )
191+ }
185192
186- objects , err := generateManifests (listeners , []route {r })
187- if err != nil {
188- return ScaleObjects {}, err
189- }
193+ log .Printf ("GenerateScaleListenerObjects: Generated %d listeners, %d backends, %d secrets" , len (listeners ), len (backends ), len (secrets ))
190194
191- result .ScaleIterationGroups = append (result .ScaleIterationGroups , objects )
195+ // Generate gateway with all listeners
196+ log .Printf ("GenerateScaleListenerObjects: Generating gateway with %d listeners" , len (listeners ))
197+ gatewayObjects , err := generateManifests (listeners , []route {})
198+ if err != nil {
199+ return ScaleObjects {}, err
192200 }
201+ log .Printf ("GenerateScaleListenerObjects: Generated %d gateway objects" , len (gatewayObjects ))
193202
203+ // Generate secrets if TLS is enabled
194204 secretObjects , err := generateSecrets (secrets )
195205 if err != nil {
196206 return ScaleObjects {}, err
197207 }
208+ log .Printf ("GenerateScaleListenerObjects: Generated %d secret objects" , len (secretObjects ))
198209
199- result . BaseObjects = append ( result . BaseObjects , secretObjects ... )
200-
210+ // Generate backend app objects (services, deployments )
211+ log . Printf ( "GenerateScaleListenerObjects: Generating backend objects for %d backends" , len ( backends ))
201212 backendObjects , err := generateBackendAppObjects (backends )
202213 if err != nil {
203214 return ScaleObjects {}, err
204215 }
216+ log .Printf ("GenerateScaleListenerObjects: Generated %d backend objects" , len (backendObjects ))
205217
218+ // BaseObjects includes services, secrets, and gateway with all listeners
219+ result .BaseObjects = append (result .BaseObjects , secretObjects ... )
206220 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 ))
207223
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 ))
234+ }
235+
236+ log .Printf ("GenerateScaleListenerObjects: Completed. BaseObjects: %d, ScaleIterationGroups: %d" , len (result .BaseObjects ), len (result .ScaleIterationGroups ))
208237 return result , nil
209238}
210239
211240func generateSecrets (secrets []string ) ([]client.Object , error ) {
241+ log .Printf ("generateSecrets: Generating %d secrets: %v" , len (secrets ), secrets )
212242 objects := make ([]client.Object , 0 , len (secrets ))
213243
214- for _ , secret := range secrets {
244+ for i , secret := range secrets {
215245 var buf bytes.Buffer
216246
247+ log .Printf ("generateSecrets: Executing secret template for secret %d: %s" , i , secret )
217248 if err := secretTmpl .Execute (& buf , secret ); err != nil {
218249 return nil , err
219250 }
@@ -223,14 +254,18 @@ func generateSecrets(secrets []string) ([]client.Object, error) {
223254 return nil , err
224255 }
225256
257+ log .Printf ("generateSecrets: Secret %s generated %d objects" , secret , len (objs ))
226258 objects = append (objects , objs ... )
227259 }
228260
261+ log .Printf ("generateSecrets: Total secret objects generated: %d" , len (objects ))
229262 return objects , nil
230263}
231264
232265// 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.
233267func GenerateScaleHTTPRouteObjects (numRoutes int ) (ScaleObjects , error ) {
268+ log .Printf ("GenerateScaleHTTPRouteObjects: Starting generation for %d routes" , numRoutes )
234269 var result ScaleObjects
235270
236271 l := listener {
@@ -240,6 +275,27 @@ func GenerateScaleHTTPRouteObjects(numRoutes int) (ScaleObjects, error) {
240275
241276 backendName := "backend"
242277
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 {})
281+ if err != nil {
282+ return ScaleObjects {}, err
283+ }
284+ log .Printf ("GenerateScaleHTTPRouteObjects: Generated %d gateway objects" , len (gatewayObjects ))
285+
286+ // Generate backend app objects (services, deployments)
287+ log .Printf ("GenerateScaleHTTPRouteObjects: Generating backend objects for backend: %s" , backendName )
288+ backendObjects , err := generateBackendAppObjects ([]string {backendName })
289+ if err != nil {
290+ return ScaleObjects {}, err
291+ }
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 ))
297+
298+ // Each iteration only creates one route
243299 for i := range numRoutes {
244300 r := route {
245301 Name : fmt .Sprintf ("route-%d" , i ),
@@ -248,58 +304,59 @@ func GenerateScaleHTTPRouteObjects(numRoutes int) (ScaleObjects, error) {
248304 BackendName : backendName ,
249305 }
250306
251- var listeners []listener
252- if i == 0 {
253- // only generate a Gateway on the first iteration
254- listeners = []listener {l }
255- }
256-
257- objects , err := generateManifests (listeners , []route {r })
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 })
258310 if err != nil {
259311 return ScaleObjects {}, err
260312 }
261313
262314 result .ScaleIterationGroups = append (result .ScaleIterationGroups , objects )
315+ log .Printf ("GenerateScaleHTTPRouteObjects: Route %d generated %d objects" , i , len (objects ))
263316 }
264317
265- backendObjects , err := generateBackendAppObjects ([]string {backendName })
266- if err != nil {
267- return ScaleObjects {}, err
268- }
269-
270- result .BaseObjects = backendObjects
271-
318+ log .Printf ("GenerateScaleHTTPRouteObjects: Completed. BaseObjects: %d, ScaleIterationGroups: %d" , len (result .BaseObjects ), len (result .ScaleIterationGroups ))
272319 return result , nil
273320}
274321
275322func generateManifests (listeners []listener , routes []route ) ([]client.Object , error ) {
323+ log .Printf ("generateManifests: Called with %d listeners, %d routes" , len (listeners ), len (routes ))
276324 var buf bytes.Buffer
277325
278326 if len (listeners ) > 0 {
327+ log .Printf ("generateManifests: Executing gateway template with %d listeners" , len (listeners ))
279328 if err := gwTmpl .Execute (& buf , listeners ); err != nil {
280329 return nil , err
281330 }
282331 }
283332
284- for _ , r := range routes {
333+ for i , r := range routes {
285334 if buf .Len () > 0 {
286335 buf .WriteString ("\n ---\n " )
287336 }
288337
338+ log .Printf ("generateManifests: Executing route template for route %d: %s" , i , r .Name )
289339 if err := hrTmpl .Execute (& buf , r ); err != nil {
290340 return nil , err
291341 }
292342 }
293343
294- return decodeObjects (& buf )
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
295350}
296351
297352func generateBackendAppObjects (backends []string ) ([]client.Object , error ) {
353+ log .Printf ("generateBackendAppObjects: Generating objects for %d backends: %v" , len (backends ), backends )
298354 objects := make ([]client.Object , 0 , 2 * len (backends ))
299355
300- for _ , backend := range backends {
356+ for i , backend := range backends {
301357 var buf bytes.Buffer
302358
359+ log .Printf ("generateBackendAppObjects: Executing app template for backend %d: %s" , i , backend )
303360 if err := appTmpl .Execute (& buf , backend ); err != nil {
304361 return nil , err
305362 }
@@ -309,8 +366,10 @@ func generateBackendAppObjects(backends []string) ([]client.Object, error) {
309366 return nil , err
310367 }
311368
369+ log .Printf ("generateBackendAppObjects: Backend %s generated %d objects" , backend , len (objs ))
312370 objects = append (objects , objs ... )
313371 }
314372
373+ log .Printf ("generateBackendAppObjects: Total objects generated: %d" , len (objects ))
315374 return objects , nil
316375}
0 commit comments