Change:
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,

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