66 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
package controller
 | 
						|
 | 
						|
import (
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"github.com/zalando-incubator/postgres-operator/pkg/spec"
 | 
						|
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						|
	"k8s.io/client-go/pkg/api/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)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |