Skip to content

Commit

Permalink
Refactor test
Browse files Browse the repository at this point in the history
Signed-off-by: rickbrouwer <[email protected]>
  • Loading branch information
rickbrouwer committed Oct 10, 2024
1 parent 5c8cb81 commit f237d00
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 39 deletions.
62 changes: 31 additions & 31 deletions pkg/scalers/cpu_memory_scaler.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ type cpuMemoryScaler struct {
}

type cpuMemoryMetadata struct {
MetricType string `keda:"name=type,order=triggerMetadata,enum=Utilization;AverageValue"`
Value string `keda:"name=value,order=triggerMetadata"`
ContainerName string `keda:"name=containerName,order=triggerMetadata,optional"`
AverageValue *resource.Quantity
MetricType string `keda:"name=type,order=triggerMetadata,enum=Utilization;AverageValue"`
Value string `keda:"name=value,order=triggerMetadata"`
ContainerName string `keda:"name=containerName,order=triggerMetadata,optional"`
AverageValue *resource.Quantity
AverageUtilization *int32
}

Expand All @@ -49,32 +49,32 @@ func NewCPUMemoryScaler(resourceName v1.ResourceName, config *scalersconfig.Scal
}

func parseResourceMetadata(config *scalersconfig.ScalerConfig) (cpuMemoryMetadata, error) {
meta := cpuMemoryMetadata{}
err := config.TypedConfig(&meta)
if err != nil {
return meta, err
}

if config.MetricType != "" {
if meta.MetricType != "" {
return meta, fmt.Errorf("only one of trigger.metadata.type or trigger.metricType should be defined")
}
meta.MetricType = string(config.MetricType)
}

switch v2.MetricTargetType(meta.MetricType) {
case v2.AverageValueMetricType:
averageValueQuantity := resource.MustParse(meta.Value)
meta.AverageValue = &averageValueQuantity
case v2.UtilizationMetricType:
utilizationNum, err := parseUtilization(meta.Value)
if err != nil {
return meta, err
}
meta.AverageUtilization = utilizationNum
}

return meta, nil
meta := cpuMemoryMetadata{}
err := config.TypedConfig(&meta)
if err != nil {
return meta, err
}

if config.MetricType != "" {
if meta.MetricType != "" {
return meta, fmt.Errorf("only one of trigger.metadata.type or trigger.metricType should be defined")
}
meta.MetricType = string(config.MetricType)
}

switch v2.MetricTargetType(meta.MetricType) {
case v2.AverageValueMetricType:
averageValueQuantity := resource.MustParse(meta.Value)
meta.AverageValue = &averageValueQuantity
case v2.UtilizationMetricType:
utilizationNum, err := parseUtilization(meta.Value)
if err != nil {
return meta, err
}
meta.AverageUtilization = utilizationNum
}

return meta, nil
}

func parseUtilization(value string) (*int32, error) {
Expand All @@ -94,7 +94,7 @@ func (s *cpuMemoryScaler) Close(context.Context) error {
// GetMetricSpecForScaling returns the metric spec for the HPA
func (s *cpuMemoryScaler) GetMetricSpecForScaling(context.Context) []v2.MetricSpec {
metricType := v2.MetricTargetType(s.metadata.MetricType)

var metricSpec v2.MetricSpec
if s.metadata.ContainerName != "" {
containerCPUMemoryMetric := &v2.ContainerResourceMetricSource{
Expand Down
14 changes: 6 additions & 8 deletions pkg/scalers/cpu_memory_scaler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"context"
"testing"

"github.com/go-logr/logr"
"github.com/stretchr/testify/assert"
v2 "k8s.io/api/autoscaling/v2"
v1 "k8s.io/api/core/v1"
Expand All @@ -13,12 +12,11 @@ import (
)

type parseCPUMemoryMetadataTestData struct {
metricType v2.MetricTargetType
metricType string
metadata map[string]string
isError bool
}

// A complete valid metadata example for reference
var validCPUMemoryMetadata = map[string]string{
"type": "Utilization",
"value": "50",
Expand All @@ -34,11 +32,11 @@ var testCPUMemoryMetadata = []parseCPUMemoryMetadataTestData{
{"", validCPUMemoryMetadata, false},
{"", validContainerCPUMemoryMetadata, false},
{"", map[string]string{"type": "Utilization", "value": "50"}, false},
{v2.UtilizationMetricType, map[string]string{"value": "50"}, false},
{"Utilization", map[string]string{"value": "50"}, false},
{"", map[string]string{"type": "AverageValue", "value": "50"}, false},
{v2.AverageValueMetricType, map[string]string{"value": "50"}, false},
{"AverageValue", map[string]string{"value": "50"}, false},
{"", map[string]string{"type": "Value", "value": "50"}, true},
{v2.ValueMetricType, map[string]string{"value": "50"}, true},
{"Value", map[string]string{"value": "50"}, true},
{"", map[string]string{"type": "AverageValue"}, true},
{"", map[string]string{"type": "xxx", "value": "50"}, true},
}
Expand All @@ -47,9 +45,9 @@ func TestCPUMemoryParseMetadata(t *testing.T) {
for _, testData := range testCPUMemoryMetadata {
config := &scalersconfig.ScalerConfig{
TriggerMetadata: testData.metadata,
MetricType: testData.metricType,
MetricType: v2.MetricTargetType(testData.metricType),
}
_, err := parseResourceMetadata(config, logr.Discard())
_, err := parseResourceMetadata(config)
if err != nil && !testData.isError {
t.Error("Expected success but got error", err)
}
Expand Down

0 comments on commit f237d00

Please sign in to comment.