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
18d8e7b7
Commit
18d8e7b7
authored
Mar 04, 2016
by
k8s-merge-robot
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #22052 from mwielgus/hpa-average
Auto commit by PR queue bot
parents
2a8ec62e
24b12b91
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
61 additions
and
6 deletions
+61
-6
metrics_client.go
pkg/controller/podautoscaler/metrics/metrics_client.go
+23
-6
metrics_client_test.go
pkg/controller/podautoscaler/metrics/metrics_client_test.go
+38
-0
No files found.
pkg/controller/podautoscaler/metrics/metrics_client.go
View file @
18d8e7b7
...
@@ -74,7 +74,7 @@ type HeapsterMetricsClient struct {
...
@@ -74,7 +74,7 @@ type HeapsterMetricsClient struct {
}
}
var
averageFunction
=
func
(
metrics
heapster
.
MetricResultList
)
(
intAndFloat
,
int
,
time
.
Time
)
{
var
averageFunction
=
func
(
metrics
heapster
.
MetricResultList
)
(
intAndFloat
,
int
,
time
.
Time
)
{
sum
,
count
,
timestamp
:=
calculateSumFrom
LatestSample
(
metrics
)
sum
,
count
,
timestamp
:=
calculateSumFrom
TimeSample
(
metrics
,
time
.
Minute
)
result
:=
intAndFloat
{
0
,
0
}
result
:=
intAndFloat
{
0
,
0
}
if
count
>
0
{
if
count
>
0
{
result
.
intValue
=
sum
.
intValue
/
int64
(
count
)
result
.
intValue
=
sum
.
intValue
/
int64
(
count
)
...
@@ -218,7 +218,7 @@ func (h *HeapsterMetricsClient) getForPods(metricSpec metricDefinition, namespac
...
@@ -218,7 +218,7 @@ func (h *HeapsterMetricsClient) getForPods(metricSpec metricDefinition, namespac
return
&
sum
,
timestamp
,
nil
return
&
sum
,
timestamp
,
nil
}
}
func
calculateSumFrom
LatestSample
(
metrics
heapster
.
MetricResultList
)
(
sum
intAndFloat
,
count
int
,
timestamp
time
.
Time
)
{
func
calculateSumFrom
TimeSample
(
metrics
heapster
.
MetricResultList
,
duration
time
.
Duration
)
(
sum
intAndFloat
,
count
int
,
timestamp
time
.
Time
)
{
sum
=
intAndFloat
{
0
,
0
}
sum
=
intAndFloat
{
0
,
0
}
count
=
0
count
=
0
timestamp
=
time
.
Time
{}
timestamp
=
time
.
Time
{}
...
@@ -236,12 +236,29 @@ func calculateSumFromLatestSample(metrics heapster.MetricResultList) (sum intAnd
...
@@ -236,12 +236,29 @@ func calculateSumFromLatestSample(metrics heapster.MetricResultList) (sum intAnd
if
oldest
==
nil
||
newest
.
Timestamp
.
Before
(
*
oldest
)
{
if
oldest
==
nil
||
newest
.
Timestamp
.
Before
(
*
oldest
)
{
oldest
=
&
newest
.
Timestamp
oldest
=
&
newest
.
Timestamp
}
}
intervalSum
:=
intAndFloat
{
0
,
0
}
intSumCount
:=
0
floatSumCount
:=
0
for
_
,
metricPoint
:=
range
metrics
.
Metrics
{
if
metricPoint
.
Timestamp
.
Add
(
duration
)
.
After
(
newest
.
Timestamp
)
{
intervalSum
.
intValue
+=
int64
(
metricPoint
.
Value
)
intSumCount
++
if
metricPoint
.
FloatValue
!=
nil
{
intervalSum
.
floatValue
+=
*
metricPoint
.
FloatValue
floatSumCount
++
}
}
}
if
newest
.
FloatValue
==
nil
{
if
newest
.
FloatValue
==
nil
{
sum
.
intValue
+=
int64
(
newest
.
Value
)
if
intSumCount
>
0
{
sum
.
floatValue
+=
float64
(
newest
.
Value
)
sum
.
intValue
+=
int64
(
intervalSum
.
intValue
/
int64
(
intSumCount
))
sum
.
floatValue
+=
float64
(
intervalSum
.
intValue
/
int64
(
intSumCount
))
}
}
else
{
}
else
{
sum
.
intValue
+=
int64
(
*
newest
.
FloatValue
)
if
floatSumCount
>
0
{
sum
.
floatValue
+=
*
newest
.
FloatValue
sum
.
intValue
+=
int64
(
intervalSum
.
floatValue
/
float64
(
floatSumCount
))
sum
.
floatValue
+=
intervalSum
.
floatValue
/
float64
(
floatSumCount
)
}
}
}
count
++
count
++
}
}
...
...
pkg/controller/podautoscaler/metrics/metrics_client_test.go
View file @
18d8e7b7
...
@@ -413,4 +413,42 @@ func TestCPUEmptyMetricsForOnePod(t *testing.T) {
...
@@ -413,4 +413,42 @@ func TestCPUEmptyMetricsForOnePod(t *testing.T) {
tc
.
runTest
(
t
)
tc
.
runTest
(
t
)
}
}
func
TestAggregateSum
(
t
*
testing
.
T
)
{
//calculateSumFromTimeSample(metrics heapster.MetricResultList, duration time.Duration) (sum intAndFloat, count int, timestamp time.Time) {
now
:=
time
.
Now
()
result
:=
heapster
.
MetricResultList
{
Items
:
[]
heapster
.
MetricResult
{
{
Metrics
:
[]
heapster
.
MetricPoint
{
{
now
,
50
,
nil
},
{
now
.
Add
(
-
15
*
time
.
Second
),
100
,
nil
},
{
now
.
Add
(
-
60
*
time
.
Second
),
100000
,
nil
}},
LatestTimestamp
:
now
,
},
},
}
sum
,
cnt
,
_
:=
calculateSumFromTimeSample
(
result
,
time
.
Minute
)
assert
.
Equal
(
t
,
int64
(
75
),
sum
.
intValue
)
assert
.
InEpsilon
(
t
,
75.0
,
sum
.
floatValue
,
0.1
)
assert
.
Equal
(
t
,
1
,
cnt
)
}
func
TestAggregateSumSingle
(
t
*
testing
.
T
)
{
now
:=
time
.
Now
()
result
:=
heapster
.
MetricResultList
{
Items
:
[]
heapster
.
MetricResult
{
{
Metrics
:
[]
heapster
.
MetricPoint
{
{
now
,
50
,
nil
},
{
now
.
Add
(
-
65
*
time
.
Second
),
100000
,
nil
}},
LatestTimestamp
:
now
,
},
},
}
sum
,
cnt
,
_
:=
calculateSumFromTimeSample
(
result
,
time
.
Minute
)
assert
.
Equal
(
t
,
int64
(
50
),
sum
.
intValue
)
assert
.
InEpsilon
(
t
,
50.0
,
sum
.
floatValue
,
0.1
)
assert
.
Equal
(
t
,
1
,
cnt
)
}
// TODO: add proper tests for request
// TODO: add proper tests for request
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