@@ -19,6 +19,7 @@ package computedomaincontroller_test
1919import (
2020 "context"
2121 "testing"
22+ "time"
2223
2324 "github.com/stretchr/testify/assert"
2425 "github.com/stretchr/testify/require"
@@ -44,6 +45,7 @@ func TestComputeDomainReconciler_Reconcile(t *testing.T) {
4445
4546 tests := map [string ]struct {
4647 computeDomain * computedomainv1beta1.ComputeDomain
48+ existingObjects []client.Object
4749 expectedWorkloadTemplate bool
4850 expectedFinalizer bool
4951 }{
@@ -58,12 +60,46 @@ func TestComputeDomainReconciler_Reconcile(t *testing.T) {
5860 expectedWorkloadTemplate : true ,
5961 expectedFinalizer : true ,
6062 },
63+ "deleted ComputeDomain removes templates" : {
64+ computeDomain : & computedomainv1beta1.ComputeDomain {
65+ ObjectMeta : metav1.ObjectMeta {
66+ Name : "test-domain" ,
67+ Namespace : "default" ,
68+ UID : "test-uid" ,
69+ DeletionTimestamp : & metav1.Time {Time : time .Now ()},
70+ Finalizers : []string {consts .ComputeDomainFinalizer },
71+ },
72+ },
73+ existingObjects : []client.Object {
74+ & resourceapi.ResourceClaimTemplate {
75+ ObjectMeta : metav1.ObjectMeta {
76+ Name : "test-domain" ,
77+ Namespace : "default" ,
78+ Labels : map [string ]string {
79+ "resource.nvidia.com/computeDomain" : "test-domain" ,
80+ },
81+ Finalizers : []string {consts .ComputeDomainFinalizer },
82+ OwnerReferences : []metav1.OwnerReference {
83+ {
84+ Kind : "ComputeDomain" ,
85+ Name : "test-domain" ,
86+ },
87+ },
88+ },
89+ },
90+ },
91+ expectedWorkloadTemplate : false ,
92+ expectedFinalizer : false ,
93+ },
6194 }
6295
6396 for name , test := range tests {
6497 t .Run (name , func (t * testing.T ) {
6598 // Setup
6699 objs := []client.Object {test .computeDomain }
100+ if len (test .existingObjects ) > 0 {
101+ objs = append (objs , test .existingObjects ... )
102+ }
67103
68104 fakeClient := fake .NewClientBuilder ().
69105 WithScheme (scheme ).
@@ -89,13 +125,13 @@ func TestComputeDomainReconciler_Reconcile(t *testing.T) {
89125 require .NoError (t , err )
90126 assert .Equal (t , ctrl.Result {}, result )
91127
128+ workloadTemplate := & resourceapi.ResourceClaimTemplate {}
129+ err = fakeClient .Get (context .Background (), types.NamespacedName {
130+ Name : "test-domain" ,
131+ Namespace : "default" ,
132+ }, workloadTemplate )
92133 // Check ResourceClaimTemplates
93134 if test .expectedWorkloadTemplate {
94- workloadTemplate := & resourceapi.ResourceClaimTemplate {}
95- err := fakeClient .Get (context .Background (), types.NamespacedName {
96- Name : "test-domain" ,
97- Namespace : "default" ,
98- }, workloadTemplate )
99135 assert .NoError (t , err )
100136 // Check config section
101137 assert .Len (t , workloadTemplate .Spec .Spec .Devices .Config , 1 )
@@ -112,7 +148,14 @@ func TestComputeDomainReconciler_Reconcile(t *testing.T) {
112148 // Check labels copied into generated claims
113149 assert .Equal (t , test .computeDomain .GetName (), workloadTemplate .Spec .Labels ["nvidia.com/computeDomain" ])
114150 // Check finalizers
115- assert .Contains (t , workloadTemplate .Finalizers , "resource.nvidia.com/computeDomain" )
151+ assert .Contains (t , workloadTemplate .Finalizers , consts .ComputeDomainFinalizer )
152+ } else {
153+ assert .Error (t , err )
154+ assert .NoError (t , client .IgnoreNotFound (err ))
155+ }
156+
157+ if ! test .computeDomain .DeletionTimestamp .IsZero () {
158+ return
116159 }
117160
118161 // Check finalizer
0 commit comments