blob: 3a9159d24d25bc54d787c1525d6d37949ad7bc3d [file] [log] [blame] [edit]
package testutils
import (
"strings"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/vexxhost/atmosphere/internal/openstack_helm"
)
func TestDatabaseConf(t *testing.T, config *openstack_helm.DatabaseConf) {
assert.Equal(t, 600, config.ConnectionRecycleTime)
assert.Equal(t, 5, config.MaxPoolSize)
assert.Equal(t, -1, config.MaxRetries)
}
func podNameForClass(pod string) string {
// There are a few pods which are built/created inside "helm-toolkit" so
// we cannot refer to them by their full name or the code will get real
// messy.
if strings.HasSuffix(pod, "db_init") {
return "db_init"
} else if strings.HasSuffix(pod, "db_sync") {
return "db_sync"
} else if strings.HasSuffix(pod, "_bootstrap") {
return "bootstrap"
}
return pod
}
func TestAllPodsHaveRuntimeClass(t *testing.T, vals *openstack_helm.HelmValues) {
for pod := range vals.Pod.Mounts {
podName := podNameForClass(pod)
assert.Contains(t, vals.Pod.RuntimeClass, podName)
}
}
func TestAllPodsHavePriorityClass(t *testing.T, vals *openstack_helm.HelmValues) {
for pod := range vals.Pod.Mounts {
podName := podNameForClass(pod)
assert.Contains(t, vals.Pod.PriorityClass, podName)
}
}
func TestAllPodsHaveAntiAffinityType(t *testing.T, vals *openstack_helm.HelmValues) {
for pod := range vals.Pod.AntiAffinityType {
podName := podNameForClass(pod)
expected := "requiredDuringSchedulingIgnoredDuringExecution"
defaultRaw, ok := vals.Pod.AntiAffinityType["default"]
require.True(t, ok, "default key not found in affinity.anti.type block")
actual, ok := defaultRaw.(string)
require.True(t, ok, "default anti affinity type is not a string")
assert.Equal(t, expected, actual, "anti affinity type does not match expected value")
assert.Contains(t, vals.Pod.AntiAffinityType, podName)
}
}