@@ -40,6 +40,10 @@ var _ = Describe("Scale test", Ordered, Label("nfr", "scale"), func() {
4040 "scale/upstreams.yaml" ,
4141 }
4242
43+ httpRouteManifests = []string {
44+ "scale/httproute.yaml" ,
45+ }
46+
4347 namespace = "scale"
4448
4549 scrapeInterval = 15 * time .Second
@@ -468,6 +472,10 @@ The logs are attached only if there are errors.
468472 Expect (resourceManager .ApplyFromFiles (upstreamsManifests , namespace )).To (Succeed ())
469473 Expect (resourceManager .WaitForAppsToBeReady (namespace )).To (Succeed ())
470474
475+ // apply HTTPRoute after upstreams are ready
476+ Expect (resourceManager .ApplyFromFiles (httpRouteManifests , namespace )).To (Succeed ())
477+ Expect (resourceManager .WaitForAppsToBeReady (namespace )).To (Succeed ())
478+
471479 var nginxPodNames []string
472480 var err error
473481 Eventually (
@@ -835,7 +843,19 @@ var _ = Describe("Zero downtime scale test", Ordered, Label("nfr", "zero-downtim
835843 AfterAll (func () {
836844 _ , err := fmt .Fprint (outFile )
837845 Expect (err ).ToNot (HaveOccurred ())
838- Expect (outFile .Close ()).To (Succeed ())
846+
847+ // check if file is already closed or not
848+ if outFile != nil {
849+ err = outFile .Close ()
850+ if err != nil {
851+ // warning only
852+ if strings .Contains (err .Error (), "file already closed" ) {
853+ GinkgoWriter .Printf ("Warning: attempted to close already closed file: %v\n " , err )
854+ } else {
855+ Expect (err ).ToNot (HaveOccurred ())
856+ }
857+ }
858+ }
839859
840860 // restoring NGF shared among tests in the suite
841861 cfg := getDefaultSetupCfg ()
@@ -1012,59 +1032,32 @@ var _ = Describe("Zero downtime scale test", Ordered, Label("nfr", "zero-downtim
10121032 checkGatewayListeners := func (num int ) {
10131033 Eventually (
10141034 func () error {
1015- ctx , cancel := context .WithTimeout (context .Background (), timeoutConfig .GetTimeout )
1035+ ctx , cancel := context .WithTimeout (context .Background (), timeoutConfig .GetTimeout * 2 )
10161036 defer cancel ()
10171037
10181038 var gw v1.Gateway
10191039 key := types.NamespacedName {Namespace : ns .Name , Name : "gateway" }
10201040 if err := resourceManager .K8sClient .Get (ctx , key , & gw ); err != nil {
1021- return err
1041+ return fmt . Errorf ( "failed to get gateway: %w" , err )
10221042 }
10231043
1024- if len (gw .Status .Listeners ) != num {
1025- return fmt .Errorf ("gateway listeners not updated to %d entries" , num )
1044+ currentListeners := len (gw .Status .Listeners )
1045+ currentGen := gw .Status
1046+ specGen := gw .Generation
1047+
1048+ if currentListeners != num {
1049+ return fmt .Errorf ("gateway listeners: got %d, want %d (observedGen: %v, specGen: %v)" ,
1050+ currentListeners , num , currentGen , specGen )
10261051 }
10271052
10281053 return nil
10291054 },
10301055 ).
1031- WithTimeout (5 * time . Second ).
1032- WithPolling (100 * time .Millisecond ).
1056+ WithTimeout (timeoutConfig . RequestTimeout ).
1057+ WithPolling (1 * time .Second ).
10331058 Should (Succeed ())
10341059 }
10351060
1036- It ("scales up abruptly without downtime" , func () {
1037- _ , err := fmt .Fprint (outFile , "\n ### Scale Up Abruptly\n " )
1038- Expect (err ).ToNot (HaveOccurred ())
1039-
1040- testFileNamePrefix := formatTestFileNamePrefix ("abrupt-scale-up" , test .valuesFile )
1041-
1042- var wg sync.WaitGroup
1043- for _ , test := range trafficConfigs {
1044- wg .Add (1 )
1045- go func (cfg trafficCfg ) {
1046- defer GinkgoRecover ()
1047- defer wg .Done ()
1048-
1049- sendTraffic (cfg , testFileNamePrefix , 2 * time .Minute )
1050- }(test )
1051- }
1052-
1053- // allow traffic flow to start
1054- time .Sleep (2 * time .Second )
1055-
1056- Expect (resourceManager .ScaleNginxDeployment (ngfNamespace , releaseName , int32 (test .numReplicas ))).To (Succeed ())
1057- Expect (resourceManager .ApplyFromFiles ([]string {"scale/zero-downtime/gateway-2.yaml" }, ns .Name )).To (Succeed ())
1058- checkGatewayListeners (3 )
1059-
1060- wg .Wait ()
1061- close (metricsCh )
1062-
1063- for res := range metricsCh {
1064- writeResults (testFileNamePrefix , res )
1065- }
1066- })
1067-
10681061 It ("scales down abruptly without downtime" , func () {
10691062 _ , err := fmt .Fprint (outFile , "\n ### Scale Down Abruptly\n " )
10701063 Expect (err ).ToNot (HaveOccurred ())
0 commit comments