Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
6a6fcc8c
Commit
6a6fcc8c
authored
Mar 04, 2016
by
k8s-merge-robot
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #22432 from piosz/hpa-e2e
Auto commit by PR queue bot
parents
b45bf881
60430ca1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
85 additions
and
45 deletions
+85
-45
horizontal_pod_autoscaling.go
test/e2e/horizontal_pod_autoscaling.go
+85
-45
No files found.
test/e2e/horizontal_pod_autoscaling.go
View file @
6a6fcc8c
...
@@ -33,16 +33,17 @@ const (
...
@@ -33,16 +33,17 @@ const (
// These tests don't seem to be running properly in parallel: issue: #20338.
// These tests don't seem to be running properly in parallel: issue: #20338.
//
//
// These tests take ~20 minutes each.
var
_
=
Describe
(
"Horizontal pod autoscaling (scale resource: CPU)
[Serial] [Slow]
"
,
func
()
{
var
_
=
Describe
(
"Horizontal pod autoscaling (scale resource: CPU)"
,
func
()
{
var
rc
*
ResourceConsumer
var
rc
*
ResourceConsumer
f
:=
NewDefaultFramework
(
"horizontal-pod-autoscaling"
)
f
:=
NewDefaultFramework
(
"horizontal-pod-autoscaling"
)
titleUp
:=
"Should scale from 1 pod to 3 pods and from 3 to 5"
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"
titleDown
:=
"Should scale from 5 pods to 3 pods and from 3 to 1
and verify decision stability
"
// TODO(madhusudancs): Fix this when Scale group issues are resolved (see issue #18528).
// TODO(madhusudancs): Fix this when Scale group issues are resolved (see issue #18528).
// Describe("Deployment", func() {
// These tests take ~20 minutes each.
// Describe("[Serial] [Slow] Deployment", func() {
// // CPU tests via deployments
// // CPU tests via deployments
// It(titleUp, func() {
// It(titleUp, func() {
// scaleUp("deployment", kindDeployment, rc, f)
// scaleUp("deployment", kindDeployment, rc, f)
...
@@ -52,7 +53,8 @@ var _ = Describe("Horizontal pod autoscaling (scale resource: CPU) [Serial] [Slo
...
@@ -52,7 +53,8 @@ var _ = Describe("Horizontal pod autoscaling (scale resource: CPU) [Serial] [Slo
// })
// })
// })
// })
Describe
(
"ReplicationController"
,
func
()
{
// These tests take ~20 minutes each.
Describe
(
"[Serial] [Slow] ReplicationController"
,
func
()
{
// CPU tests via replication controllers
// CPU tests via replication controllers
It
(
titleUp
,
func
()
{
It
(
titleUp
,
func
()
{
scaleUp
(
"rc"
,
kindRC
,
rc
,
f
)
scaleUp
(
"rc"
,
kindRC
,
rc
,
f
)
...
@@ -61,71 +63,104 @@ var _ = Describe("Horizontal pod autoscaling (scale resource: CPU) [Serial] [Slo
...
@@ -61,71 +63,104 @@ var _ = Describe("Horizontal pod autoscaling (scale resource: CPU) [Serial] [Slo
scaleDown
(
"rc"
,
kindRC
,
rc
,
f
)
scaleDown
(
"rc"
,
kindRC
,
rc
,
f
)
})
})
})
})
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
)
})
})
})
})
// HPAScaleTest struct is used by the scale(...) function.
// HPAScaleTest struct is used by the scale(...) function.
type
HPAScaleTest
struct
{
type
HPAScaleTest
struct
{
initPods
int
initPods
int
cpuStart
int
totalInitialCPUUsage
int
maxCPU
int64
perPodCPURequest
int64
idealCPU
int
targetCPUUtilizationPercent
int
minPods
int
minPods
int
maxPods
int
maxPods
int
firstScale
int
firstScale
int
firstScaleStasis
time
.
Duration
firstScaleStasis
time
.
Duration
cpuBurst
int
cpuBurst
int
secondScale
int
secondScale
int
secondScaleStasis
time
.
Duration
secondScaleStasis
time
.
Duration
useV1
bool
}
}
// run is a method which runs an HPA lifecycle, from a starting state, to an expected
// 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 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.
// The first state change is due to the CPU being consumed initially, which HPA responds to by changing pod counts.
// The second state change is due to the CPU burst parameter, which HPA again responds to.
// The second state change
(optional)
is due to the CPU burst parameter, which HPA again responds to.
// TODO The use of 3 states is arbitrary, we could eventually make this test handle "n" states once this test stabilizes.
// 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
)
{
func
(
scaleTest
*
HPAScaleTest
)
run
(
name
,
kind
string
,
rc
*
ResourceConsumer
,
f
*
Framework
)
{
rc
=
NewDynamicResourceConsumer
(
name
,
kind
,
scaleTest
.
initPods
,
scaleTest
.
cpuStart
,
0
,
scaleTest
.
maxCPU
,
100
,
f
)
rc
=
NewDynamicResourceConsumer
(
name
,
kind
,
scaleTest
.
initPods
,
scaleTest
.
totalInitialCPUUsage
,
0
,
scaleTest
.
perPodCPURequest
,
100
,
f
)
defer
rc
.
CleanUp
()
defer
rc
.
CleanUp
()
createCPUHorizontalPodAutoscaler
(
rc
,
scaleTest
.
idealCPU
,
scaleTest
.
minPods
,
scaleTest
.
maxPods
)
createCPUHorizontalPodAutoscaler
(
rc
,
scaleTest
.
targetCPUUtilizationPercent
,
scaleTest
.
minPods
,
scaleTest
.
maxPods
,
scaleTest
.
useV1
)
rc
.
WaitForReplicas
(
scaleTest
.
firstScale
)
rc
.
WaitForReplicas
(
scaleTest
.
firstScale
)
rc
.
EnsureDesiredReplicas
(
scaleTest
.
firstScale
,
scaleTest
.
firstScaleStasis
)
if
scaleTest
.
firstScaleStasis
>
0
{
rc
.
ConsumeCPU
(
scaleTest
.
cpuBurst
)
rc
.
EnsureDesiredReplicas
(
scaleTest
.
firstScale
,
scaleTest
.
firstScaleStasis
)
rc
.
WaitForReplicas
(
scaleTest
.
secondScale
)
}
if
scaleTest
.
cpuBurst
>
0
&&
scaleTest
.
secondScale
>
0
{
rc
.
ConsumeCPU
(
scaleTest
.
cpuBurst
)
rc
.
WaitForReplicas
(
scaleTest
.
secondScale
)
}
}
}
func
scaleUp
(
name
,
kind
string
,
rc
*
ResourceConsumer
,
f
*
Framework
)
{
func
scaleUp
(
name
,
kind
string
,
rc
*
ResourceConsumer
,
f
*
Framework
)
{
scaleTest
:=
&
HPAScaleTest
{
scaleTest
:=
&
HPAScaleTest
{
initPods
:
1
,
initPods
:
1
,
cpuStart
:
250
,
totalInitialCPUUsage
:
250
,
maxCPU
:
500
,
perPodCPURequest
:
500
,
idealCPU
:
.2
*
10
0
,
targetCPUUtilizationPercent
:
2
0
,
minPods
:
1
,
minPods
:
1
,
maxPods
:
5
,
maxPods
:
5
,
firstScale
:
3
,
firstScale
:
3
,
firstScaleStasis
:
10
*
time
.
Minute
,
firstScaleStasis
:
10
*
time
.
Minute
,
cpuBurst
:
700
,
cpuBurst
:
700
,
secondScale
:
5
,
secondScale
:
5
,
}
}
scaleTest
.
run
(
name
,
kind
,
rc
,
f
)
scaleTest
.
run
(
name
,
kind
,
rc
,
f
)
}
}
func
scaleDown
(
name
,
kind
string
,
rc
*
ResourceConsumer
,
f
*
Framework
)
{
func
scaleDown
(
name
,
kind
string
,
rc
*
ResourceConsumer
,
f
*
Framework
)
{
scaleTest
:=
&
HPAScaleTest
{
scaleTest
:=
&
HPAScaleTest
{
initPods
:
5
,
initPods
:
5
,
cpuStart
:
400
,
totalInitialCPUUsage
:
400
,
maxCPU
:
500
,
perPodCPURequest
:
500
,
idealCPU
:
.3
*
10
0
,
targetCPUUtilizationPercent
:
3
0
,
minPods
:
1
,
minPods
:
1
,
maxPods
:
5
,
maxPods
:
5
,
firstScale
:
3
,
firstScale
:
3
,
firstScaleStasis
:
10
*
time
.
Minute
,
firstScaleStasis
:
10
*
time
.
Minute
,
cpuBurst
:
100
,
cpuBurst
:
100
,
secondScale
:
1
,
secondScale
:
1
,
}
}
scaleTest
.
run
(
name
,
kind
,
rc
,
f
)
scaleTest
.
run
(
name
,
kind
,
rc
,
f
)
}
}
func
createCPUHorizontalPodAutoscaler
(
rc
*
ResourceConsumer
,
cpu
,
minReplicas
,
maxRepl
int
)
{
func
createCPUHorizontalPodAutoscaler
(
rc
*
ResourceConsumer
,
cpu
,
minReplicas
,
maxRepl
int
,
useV1
bool
)
{
hpa
:=
&
extensions
.
HorizontalPodAutoscaler
{
hpa
:=
&
extensions
.
HorizontalPodAutoscaler
{
ObjectMeta
:
api
.
ObjectMeta
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
rc
.
name
,
Name
:
rc
.
name
,
...
@@ -142,6 +177,11 @@ func createCPUHorizontalPodAutoscaler(rc *ResourceConsumer, cpu, minReplicas, ma
...
@@ -142,6 +177,11 @@ func createCPUHorizontalPodAutoscaler(rc *ResourceConsumer, cpu, minReplicas, ma
CPUUtilization
:
&
extensions
.
CPUTargetUtilization
{
TargetPercentage
:
cpu
},
CPUUtilization
:
&
extensions
.
CPUTargetUtilization
{
TargetPercentage
:
cpu
},
},
},
}
}
_
,
errHPA
:=
rc
.
framework
.
Client
.
Extensions
()
.
HorizontalPodAutoscalers
(
rc
.
framework
.
Namespace
.
Name
)
.
Create
(
hpa
)
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
)
}
expectNoError
(
errHPA
)
expectNoError
(
errHPA
)
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment