Change:
lightweight test which can be run in gce suite test which verifies that version v1 works

Discussion:
// These tests don't seem to be running properly in parallel: issue: #20338. // <del> // These tests take ~20 minutes each. var _ = Describe("Horizontal pod autoscaling (scale resource: CPU) [Serial] [Slow]", func() { </del> <ins> var _ = Describe("Horizontal pod autoscaling (scale resource: CPU)", func() { </ins> var rc *ResourceConsumer f := NewDefaultFramework("horizontal-pod-autoscaling") <del> titleUp := "Should scale from 1 pod to 3 pods and from 3 to 5" titleDown := "Should scale from 5 pods to 3 pods and from 3 to 1" </del> <ins> titleUp := "Should scale from 1 pod to 3 pods and from 3 to 5 and verify decision stability" titleDown := "Should scale from 5 pods to 3 pods and from 3 to 1 and verify decision stability" </ins> // TODO(madhusudancs): Fix this when Scale group issues are resolved (see issue #18528). <del> // Describe("Deployment", func() { </del> <ins> // These tests take ~20 minutes each. // Describe("[Serial] [Slow] Deployment", func() { </ins> // 	// CPU tests via deployments // 	It(titleUp, func() { // 		scaleUp("deployment", kindDeployment, rc, f)

// 	}) // }) <del> Describe("ReplicationController", func() { </del> <ins> // These tests take ~20 minutes each. Describe("[Serial] [Slow] ReplicationController", func() { </ins> // CPU tests via replication controllers It(titleUp, func() { scaleUp("rc", kindRC, rc, f)

scaleDown("rc", kindRC, rc, f) }) }) <ins> Describe("ReplicationController light", func() { It("Should scale from 1 pod to 2 pods", func() { scaleTest := &HPAScaleTest{ initPods:                    1, totalInitialCPUUsage:        150, perPodCPURequest:            200, targetCPUUtilizationPercent: 50, minPods:                     1, maxPods:                     2, firstScale:                  2, } scaleTest.run("rc-light", kindRC, rc, f) }) It("Should scale from 2 pods to 1 pod using HPA version v1", func() { scaleTest := &HPAScaleTest{ initPods:                    2, totalInitialCPUUsage:        50, perPodCPURequest:            200, targetCPUUtilizationPercent: 50, minPods:                     1, maxPods:                     2, firstScale:                  1, useV1:                       true, } scaleTest.run("rc-light", kindRC, rc, f) }) }) </ins> }) // HPAScaleTest struct is used by the scale(...) function. type HPAScaleTest struct { <del> initPods          int cpuStart          int maxCPU            int64 idealCPU          int minPods           int maxPods           int firstScale        int firstScaleStasis  time.Duration cpuBurst          int secondScale       int secondScaleStasis time.Duration </del> <ins> initPods                    int totalInitialCPUUsage        int perPodCPURequest            int64 targetCPUUtilizationPercent int minPods                     int maxPods                     int firstScale                  int firstScaleStasis            time.Duration cpuBurst                    int secondScale                 int secondScaleStasis           time.Duration useV1                       bool </ins> } // run is a method which runs an HPA lifecycle, from a starting state, to an expected // The initial state is defined by the initPods parameter. // The first state change is due to the CPU being consumed initially, which HPA responds to by changing pod counts. <del> // The second state change is due to the CPU burst parameter, which HPA again responds to. </del> <ins> // The second state change (optional) is due to the CPU burst parameter, which HPA again responds to. </ins> // TODO The use of 3 states is arbitrary, we could eventually make this test handle "n" states once this test stabilizes. func (scaleTest *HPAScaleTest) run(name, kind string, rc *ResourceConsumer, f *Framework) { <del> rc = NewDynamicResourceConsumer(name, kind, scaleTest.initPods, scaleTest.cpuStart, 0, scaleTest.maxCPU, 100, f) </del> <ins> rc = NewDynamicResourceConsumer(name, kind, scaleTest.initPods, scaleTest.totalInitialCPUUsage, 0, scaleTest.perPodCPURequest, 100, f) </ins> defer rc.CleanUp() <del> createCPUHorizontalPodAutoscaler(rc, scaleTest.idealCPU, scaleTest.minPods, scaleTest.maxPods) </del> <ins> createCPUHorizontalPodAutoscaler(rc, scaleTest.targetCPUUtilizationPercent, scaleTest.minPods, scaleTest.maxPods, scaleTest.useV1) </ins> rc.WaitForReplicas(scaleTest.firstScale) <del> rc.EnsureDesiredReplicas(scaleTest.firstScale, scaleTest.firstScaleStasis) rc.ConsumeCPU(scaleTest.cpuBurst) rc.WaitForReplicas(scaleTest.secondScale) </del> <ins> if scaleTest.firstScaleStasis > 0 { rc.EnsureDesiredReplicas(scaleTest.firstScale, scaleTest.firstScaleStasis) } if scaleTest.cpuBurst > 0 && scaleTest.secondScale > 0 { rc.ConsumeCPU(scaleTest.cpuBurst) rc.WaitForReplicas(scaleTest.secondScale) } </ins> } func scaleUp(name, kind string, rc *ResourceConsumer, f *Framework) { scaleTest := &HPAScaleTest{ <del> initPods:         1, cpuStart:         250, maxCPU:           500, idealCPU:         .2 * 100, minPods:          1, maxPods:          5, firstScale:       3, firstScaleStasis: 10 * time.Minute, cpuBurst:         700, secondScale:      5, </del> <ins> initPods:                    1, totalInitialCPUUsage:        250, perPodCPURequest:            500, targetCPUUtilizationPercent: 20, minPods:                     1, maxPods:                     5, firstScale:                  3, firstScaleStasis:            10 * time.Minute, cpuBurst:                    700, secondScale:                 5, </ins> } scaleTest.run(name, kind, rc, f) } func scaleDown(name, kind string, rc *ResourceConsumer, f *Framework) { scaleTest := &HPAScaleTest{ <del> initPods:         5, cpuStart:         400, maxCPU:           500, idealCPU:         .3 * 100, minPods:          1, maxPods:          5, firstScale:       3, firstScaleStasis: 10 * time.Minute, cpuBurst:         100, secondScale:      1, </del> <ins> initPods:                    5, totalInitialCPUUsage:        400, perPodCPURequest:            500, targetCPUUtilizationPercent: 30, minPods:                     1, maxPods:                     5, firstScale:                  3, firstScaleStasis:            10 * time.Minute, cpuBurst:                    100, secondScale:                 1, </ins> } scaleTest.run(name, kind, rc, f) } <del> func createCPUHorizontalPodAutoscaler(rc *ResourceConsumer, cpu, minReplicas, maxRepl int) { </del> <ins> func createCPUHorizontalPodAutoscaler(rc *ResourceConsumer, cpu, minReplicas, maxRepl int, useV1 bool) { </ins> hpa := &extensions.HorizontalPodAutoscaler{ ObjectMeta: api.ObjectMeta{ Name:      rc.name,

CPUUtilization: &extensions.CPUTargetUtilization{TargetPercentage: cpu}, }, } <del> _, errHPA := rc.framework.Client.Extensions().HorizontalPodAutoscalers(rc.framework.Namespace.Name).Create(hpa) </del> <ins> var errHPA error if useV1 { _, errHPA = rc.framework.Client.Autoscaling().HorizontalPodAutoscalers(rc.framework.Namespace.Name).Create(hpa) } else { _, errHPA = rc.framework.Client.Extensions().HorizontalPodAutoscalers(rc.framework.Namespace.Name).Create(hpa) } </ins> expectNoError(errHPA) }