postgres-operator/pkg/controller/node_test.go

66 lines
1.4 KiB
Go

package controller
import (
"testing"
"github.com/zalando/postgres-operator/pkg/spec"
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
const (
readyLabel = "lifecycle-status"
readyValue = "ready"
)
func initializeController() *Controller {
var c = NewController(&spec.ControllerConfig{})
c.opConfig.NodeReadinessLabel = map[string]string{readyLabel: readyValue}
return c
}
func makeNode(labels map[string]string, isSchedulable bool) *v1.Node {
return &v1.Node{
ObjectMeta: metav1.ObjectMeta{
Namespace: v1.NamespaceDefault,
Labels: labels,
},
Spec: v1.NodeSpec{
Unschedulable: !isSchedulable,
},
}
}
var c = initializeController()
func TestNodeIsReady(t *testing.T) {
testName := "TestNodeIsReady"
var testTable = []struct {
in *v1.Node
out bool
}{
{
in: makeNode(map[string]string{"foo": "bar"}, true),
out: true,
},
{
in: makeNode(map[string]string{"foo": "bar"}, false),
out: false,
},
{
in: makeNode(map[string]string{readyLabel: readyValue}, false),
out: true,
},
{
in: makeNode(map[string]string{"foo": "bar", "master": "true"}, false),
out: true,
},
}
for _, tt := range testTable {
if isReady := c.nodeIsReady(tt.in); isReady != tt.out {
t.Errorf("%s: expected response %t doesn't match the actual %t for the node %#v",
testName, tt.out, isReady, tt.in)
}
}
}