first import
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
package common
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/k8s-at-home/library-charts/test/helmunit"
|
||||
"github.com/stretchr/testify/suite"
|
||||
)
|
||||
|
||||
type HorizontalPodAutoscalerTestSuite struct {
|
||||
suite.Suite
|
||||
Chart helmunit.HelmChart
|
||||
}
|
||||
|
||||
func (suite *HorizontalPodAutoscalerTestSuite) SetupSuite() {
|
||||
suite.Chart = helmunit.New("common-test", "../../../../helper-charts/common-test")
|
||||
suite.Chart.UpdateDependencies()
|
||||
}
|
||||
|
||||
// We need this function to kick off the test suite, otherwise
|
||||
// "go test" won't know about our tests
|
||||
func TestHorizontalPodAutoscaler(t *testing.T) {
|
||||
suite.Run(t, new(HorizontalPodAutoscalerTestSuite))
|
||||
}
|
||||
|
||||
func (suite *HorizontalPodAutoscalerTestSuite) TestValues() {
|
||||
baseValues := []string{"autoscaling.enabled=true"}
|
||||
tests := map[string]struct {
|
||||
values []string
|
||||
expectedHorizontalPodAutoscaler bool
|
||||
expectedTarget string
|
||||
expectedMinReplicas int
|
||||
expectedMaxReplicas int
|
||||
}{
|
||||
"Default": {
|
||||
values: nil,
|
||||
expectedHorizontalPodAutoscaler: false,
|
||||
},
|
||||
"Enabled": {
|
||||
values: baseValues,
|
||||
expectedHorizontalPodAutoscaler: true, expectedTarget: "common-test", expectedMinReplicas: 1, expectedMaxReplicas: 3,
|
||||
},
|
||||
"CustomSettings": {
|
||||
values: append(baseValues, "autoscaling.target=common-custom", "autoscaling.minReplicas=4", "autoscaling.maxReplicas=8"),
|
||||
expectedHorizontalPodAutoscaler: true, expectedTarget: "common-custom", expectedMinReplicas: 4, expectedMaxReplicas: 8,
|
||||
},
|
||||
}
|
||||
for name, tc := range tests {
|
||||
suite.Suite.Run(name, func() {
|
||||
err := suite.Chart.Render(nil, tc.values, nil)
|
||||
if err != nil {
|
||||
suite.FailNow(err.Error())
|
||||
}
|
||||
|
||||
manifest := suite.Chart.Manifests.Get("HorizontalPodAutoscaler", "common-test")
|
||||
if tc.expectedHorizontalPodAutoscaler {
|
||||
suite.Assertions.NotEmpty(manifest)
|
||||
suite.Assertions.EqualValues(tc.expectedTarget, manifest.Path("spec.scaleTargetRef.name").Data())
|
||||
suite.Assertions.EqualValues(tc.expectedMinReplicas, manifest.Path("spec.minReplicas").Data())
|
||||
suite.Assertions.EqualValues(tc.expectedMaxReplicas, manifest.Path("spec.maxReplicas").Data())
|
||||
} else {
|
||||
suite.Assertions.Empty(manifest)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (suite *HorizontalPodAutoscalerTestSuite) TestMetrics() {
|
||||
baseValues := []string{"autoscaling.enabled=true"}
|
||||
tests := map[string]struct {
|
||||
values []string
|
||||
expectedResources map[string]int
|
||||
}{
|
||||
"targetCPUUtilizationPercentage": {
|
||||
values: append(baseValues, "autoscaling.targetCPUUtilizationPercentage=60"),
|
||||
expectedResources: map[string]int{"cpu": 60},
|
||||
},
|
||||
"targetMemoryUtilizationPercentage": {
|
||||
values: append(baseValues, "autoscaling.targetMemoryUtilizationPercentage=70"),
|
||||
expectedResources: map[string]int{"memory": 70},
|
||||
},
|
||||
"Combined": {
|
||||
values: append(baseValues, "autoscaling.targetCPUUtilizationPercentage=60", "autoscaling.targetMemoryUtilizationPercentage=70"),
|
||||
expectedResources: map[string]int{"cpu": 60, "memory": 70},
|
||||
},
|
||||
}
|
||||
for name, tc := range tests {
|
||||
suite.Suite.Run(name, func() {
|
||||
err := suite.Chart.Render(nil, tc.values, nil)
|
||||
if err != nil {
|
||||
suite.FailNow(err.Error())
|
||||
}
|
||||
|
||||
manifest := suite.Chart.Manifests.Get("HorizontalPodAutoscaler", "common-test")
|
||||
suite.Assertions.NotEmpty(manifest)
|
||||
|
||||
manifestMetrics := manifest.Path("spec.metrics").Children()
|
||||
|
||||
metricsMap := make(map[string]int)
|
||||
for _, manifestMetric := range manifestMetrics {
|
||||
metricsMap[manifestMetric.Path("resource.name").Data().(string)] = int(manifestMetric.Path("resource.targetAverageUtilization").Data().(float64))
|
||||
}
|
||||
|
||||
suite.Assertions.EqualValues(tc.expectedResources, metricsMap)
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user