mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-06 02:34:03 +00:00
[e2e ingress-gce] Fix race condition for appending services and ingresses
This commit is contained in:
parent
44ede98e94
commit
9a5ce379fe
@ -179,25 +179,27 @@ func (f *IngressScaleFramework) RunScaleTest() []error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// currentNum keeps track of how many ingresses have been created.
|
// numIngsCreated keeps track of how many ingresses have been created.
|
||||||
currentNum := new(int)
|
numIngsCreated := 0
|
||||||
|
|
||||||
prepareIngsFunc := func(goalNum int) {
|
prepareIngsFunc := func(numIngsNeeded int) {
|
||||||
var ingWg sync.WaitGroup
|
var ingWg sync.WaitGroup
|
||||||
numToCreate := goalNum - *currentNum
|
numIngsToCreate := numIngsNeeded - numIngsCreated
|
||||||
ingWg.Add(numToCreate)
|
ingWg.Add(numIngsToCreate)
|
||||||
errQueue := make(chan error, numToCreate)
|
svcQueue := make(chan *v1.Service, numIngsToCreate)
|
||||||
latencyQueue := make(chan time.Duration, numToCreate)
|
ingQueue := make(chan *extensions.Ingress, numIngsToCreate)
|
||||||
|
errQueue := make(chan error, numIngsToCreate)
|
||||||
|
latencyQueue := make(chan time.Duration, numIngsToCreate)
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
for ; *currentNum < goalNum; *currentNum++ {
|
for ; numIngsCreated < numIngsNeeded; numIngsCreated++ {
|
||||||
suffix := fmt.Sprintf("%d", *currentNum)
|
suffix := fmt.Sprintf("%d", numIngsCreated)
|
||||||
go func() {
|
go func() {
|
||||||
defer ingWg.Done()
|
defer ingWg.Done()
|
||||||
|
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
svcCreated, ingCreated, err := f.createScaleTestServiceIngress(suffix, f.EnableTLS)
|
svcCreated, ingCreated, err := f.createScaleTestServiceIngress(suffix, f.EnableTLS)
|
||||||
f.ScaleTestSvcs = append(f.ScaleTestSvcs, svcCreated)
|
svcQueue <- svcCreated
|
||||||
f.ScaleTestIngs = append(f.ScaleTestIngs, ingCreated)
|
ingQueue <- ingCreated
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errQueue <- err
|
errQueue <- err
|
||||||
return
|
return
|
||||||
@ -214,11 +216,19 @@ func (f *IngressScaleFramework) RunScaleTest() []error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Wait until all ingress creations are complete.
|
// Wait until all ingress creations are complete.
|
||||||
f.Logger.Infof("Waiting for %d ingresses to come up...", numToCreate)
|
f.Logger.Infof("Waiting for %d ingresses to come up...", numIngsToCreate)
|
||||||
ingWg.Wait()
|
ingWg.Wait()
|
||||||
|
close(svcQueue)
|
||||||
|
close(ingQueue)
|
||||||
close(errQueue)
|
close(errQueue)
|
||||||
close(latencyQueue)
|
close(latencyQueue)
|
||||||
elapsed := time.Since(start)
|
elapsed := time.Since(start)
|
||||||
|
for svc := range svcQueue {
|
||||||
|
f.ScaleTestSvcs = append(f.ScaleTestSvcs, svc)
|
||||||
|
}
|
||||||
|
for ing := range ingQueue {
|
||||||
|
f.ScaleTestIngs = append(f.ScaleTestIngs, ing)
|
||||||
|
}
|
||||||
var createLatencies []time.Duration
|
var createLatencies []time.Duration
|
||||||
for latency := range latencyQueue {
|
for latency := range latencyQueue {
|
||||||
createLatencies = append(createLatencies, latency)
|
createLatencies = append(createLatencies, latency)
|
||||||
@ -231,15 +241,15 @@ func (f *IngressScaleFramework) RunScaleTest() []error {
|
|||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
f.Logger.Infof("Spent %s for %d ingresses to come up", elapsed, numToCreate)
|
f.Logger.Infof("Spent %s for %d ingresses to come up", elapsed, numIngsToCreate)
|
||||||
f.BatchDurations = append(f.BatchDurations, elapsed)
|
f.BatchDurations = append(f.BatchDurations, elapsed)
|
||||||
}
|
}
|
||||||
|
|
||||||
measureCreateUpdateFunc := func() {
|
measureCreateUpdateFunc := func() {
|
||||||
f.Logger.Infof("Create one more ingress and wait for it to come up")
|
f.Logger.Infof("Create one more ingress and wait for it to come up")
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
svcCreated, ingCreated, err := f.createScaleTestServiceIngress(fmt.Sprintf("%d", *currentNum), f.EnableTLS)
|
svcCreated, ingCreated, err := f.createScaleTestServiceIngress(fmt.Sprintf("%d", numIngsCreated), f.EnableTLS)
|
||||||
*currentNum = *currentNum + 1
|
numIngsCreated = numIngsCreated + 1
|
||||||
f.ScaleTestSvcs = append(f.ScaleTestSvcs, svcCreated)
|
f.ScaleTestSvcs = append(f.ScaleTestSvcs, svcCreated)
|
||||||
f.ScaleTestIngs = append(f.ScaleTestIngs, ingCreated)
|
f.ScaleTestIngs = append(f.ScaleTestIngs, ingCreated)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user