@@ -352,19 +352,33 @@ func (o *GinkgoRunSuiteOptions) Run(suite *TestSuite, clusterConfig *clusterdisc
352352 }
353353 }
354354
355- parallelism := o .Parallelism
356- if parallelism == 0 {
357- parallelism = suite .Parallelism
355+ // start with suite value
356+ parallelism := suite .Parallelism
357+ logrus .Infof ("Suite defined parallelism %d" , parallelism )
358+
359+ // adjust based on the number of workers
360+ totalNodes , workerNodes , err := getClusterNodeCounts (ctx , restConfig )
361+ if err != nil {
362+ logrus .Errorf ("Failed to get cluster node counts: %v" , err )
363+ } else {
364+ // default to 10 concurrent tests per worker but use the min of that
365+ // and the current parallelism value
366+ if workerNodes > 0 {
367+ workerParallelism := 10 * workerNodes
368+ logrus .Infof ("Parallelism based on worker node count: %d" , workerParallelism )
369+ parallelism = min (parallelism , workerParallelism )
370+ }
358371 }
359372
373+ // if 0 set our min value
360374 if parallelism == 0 {
361375 parallelism = 10
362376 }
363377
364- // adjust based on the number of workers
365- totalNodes , workerNodes , err := getClusterNodeCounts ( ctx , restConfig )
366- if err != nil {
367- logrus .Errorf ( "Failed to get cluster node counts : %v " , err )
378+ // if explicitly set then use the specified value
379+ if o . Parallelism > 0 {
380+ parallelism = o . Parallelism
381+ logrus .Infof ( "Using specified parallelism value : %d " , parallelism )
368382 }
369383
370384 logrus .Infof ("Total nodes: %d, Worker nodes: %d, Parallelism: %d" , totalNodes , workerNodes , parallelism )
0 commit comments