Fix timeouts in load test

This commit is contained in:
Wojciech Tyczynski 2016-02-09 08:38:12 +01:00
parent c78f3a68fd
commit 9fce56c165

View File

@ -132,11 +132,17 @@ var _ = Describe("Load capacity", func() {
// We may want to revisit it in the future. // We may want to revisit it in the future.
creatingTime := time.Duration(totalPods/5) * time.Second creatingTime := time.Duration(totalPods/5) * time.Second
createAllRC(configs, creatingTime) createAllRC(configs, creatingTime)
By("============================================================================")
// We would like to spread scaling replication controllers over time
// to make it possible to create/schedule & delete them in the meantime.
// Currently we assume that 5 pods/second average throughput.
// The expected number of created/deleted pods is less than totalPods/3.
scalingTime := time.Duration(totalPods/15) * time.Second
scaleAllRC(configs, scalingTime)
By("============================================================================") By("============================================================================")
scaleAllRC(configs)
By("============================================================================") scaleAllRC(configs, scalingTime)
scaleAllRC(configs)
By("============================================================================") By("============================================================================")
// Cleanup all created replication controllers. // Cleanup all created replication controllers.
@ -211,23 +217,22 @@ func createRC(wg *sync.WaitGroup, config *RCConfig, creatingTime time.Duration)
expectNoError(RunRC(*config), fmt.Sprintf("creating rc %s", config.Name)) expectNoError(RunRC(*config), fmt.Sprintf("creating rc %s", config.Name))
} }
func scaleAllRC(configs []*RCConfig) { func scaleAllRC(configs []*RCConfig, scalingTime time.Duration) {
var wg sync.WaitGroup var wg sync.WaitGroup
wg.Add(len(configs)) wg.Add(len(configs))
for _, config := range configs { for _, config := range configs {
go scaleRC(&wg, config) go scaleRC(&wg, config, scalingTime)
} }
wg.Wait() wg.Wait()
} }
// Scales RC to a random size within [0.5*size, 1.5*size] and lists all the pods afterwards. // Scales RC to a random size within [0.5*size, 1.5*size] and lists all the pods afterwards.
// Scaling happens always based on original size, not the current size. // Scaling happens always based on original size, not the current size.
func scaleRC(wg *sync.WaitGroup, config *RCConfig) { func scaleRC(wg *sync.WaitGroup, config *RCConfig, scalingTime time.Duration) {
defer GinkgoRecover() defer GinkgoRecover()
defer wg.Done() defer wg.Done()
resizingTime := 3 * time.Minute
sleepUpTo(resizingTime) sleepUpTo(scalingTime)
newSize := uint(rand.Intn(config.Replicas) + config.Replicas/2) newSize := uint(rand.Intn(config.Replicas) + config.Replicas/2)
expectNoError(ScaleRC(config.Client, config.Namespace, config.Name, newSize, true), expectNoError(ScaleRC(config.Client, config.Namespace, config.Name, newSize, true),
fmt.Sprintf("scaling rc %s for the first time", config.Name)) fmt.Sprintf("scaling rc %s for the first time", config.Name))