github.com/kubeflow/training-operator@v1.7.0/pkg/common/util/reconciler_test.go (about)

     1  package util
     2  
     3  import (
     4  	"testing"
     5  
     6  	corev1 "k8s.io/api/core/v1"
     7  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     8  	"sigs.k8s.io/controller-runtime/pkg/client"
     9  	"sigs.k8s.io/controller-runtime/pkg/event"
    10  
    11  	kubeflowv1 "github.com/kubeflow/training-operator/pkg/apis/kubeflow.org/v1"
    12  	"github.com/kubeflow/training-operator/pkg/controller.v1/expectation"
    13  )
    14  
    15  func TestOnDependentXXXFunc(t *testing.T) {
    16  	createfunc := OnDependentCreateFunc(expectation.NewControllerExpectations())
    17  	deletefunc := OnDependentDeleteFunc(expectation.NewControllerExpectations())
    18  
    19  	for _, testCase := range []struct {
    20  		object client.Object
    21  		expect bool
    22  	}{
    23  		{
    24  			// pod object with label is allowed
    25  			object: &corev1.Pod{
    26  				ObjectMeta: metav1.ObjectMeta{
    27  					Labels: map[string]string{
    28  						kubeflowv1.ReplicaTypeLabel: "Worker",
    29  					},
    30  				},
    31  			},
    32  			expect: true,
    33  		},
    34  		{
    35  			// service object without label is not allowed
    36  			object: &corev1.Service{},
    37  			expect: false,
    38  		},
    39  		{
    40  			// objects other than pod/service are not allowed
    41  			object: &corev1.ConfigMap{},
    42  			expect: false,
    43  		},
    44  	} {
    45  		ret := createfunc(event.CreateEvent{
    46  			Object: testCase.object,
    47  		})
    48  		if ret != testCase.expect {
    49  			t.Errorf("expect %t, but get %t", testCase.expect, ret)
    50  		}
    51  		ret = deletefunc(event.DeleteEvent{
    52  			Object: testCase.object,
    53  		})
    54  		if ret != testCase.expect {
    55  			t.Errorf("expect %t, but get %t", testCase.expect, ret)
    56  		}
    57  
    58  	}
    59  }