@@ -94,6 +94,7 @@ func TestExecute(t *testing.T) {
9494 expectedDataUpload * velerov2alpha1.DataUpload
9595 expectedPVC * corev1api.PersistentVolumeClaim
9696 resourcePolicy * corev1api.ConfigMap
97+ extraObjects []runtime.Object
9798 failVSCreate bool
9899 skipVSReadyUpdate bool // New flag to control VS readiness
99100 }{
@@ -122,12 +123,24 @@ func TestExecute(t *testing.T) {
122123 expectErr : true , // Expect an error, but the exact message can vary
123124 },
124125 {
125- name : "Test SnapshotMoveData" ,
126+ name : "Fail SnapshotMoveData when no node-agent pods " ,
126127 backup : builder .ForBackup ("velero" , "test" ).SnapshotMoveData (true ).CSISnapshotTimeout (1 * time .Minute ).Result (),
127128 pvc : builder .ForPersistentVolumeClaim ("velero" , "testPVC" ).VolumeName ("testPV" ).StorageClass ("testSC" ).Phase (corev1api .ClaimBound ).Result (),
128129 pv : builder .ForPersistentVolume ("testPV" ).CSI ("hostpath" , "testVolume" ).Result (),
129130 sc : builder .ForStorageClass ("testSC" ).Provisioner ("hostpath" ).Result (),
130131 vsClass : builder .ForVolumeSnapshotClass ("testVSClass" ).Driver ("hostpath" ).ObjectMeta (builder .WithLabels (velerov1api .VolumeSnapshotClassSelectorLabel , "" )).Result (),
132+ expectedErr : errors .New ("snapshot data movement requires a running node-agent daemonset; ensure node-agent is deployed and running: no running node-agent pods found" ),
133+ },
134+ {
135+ name : "Test SnapshotMoveData" ,
136+ backup : builder .ForBackup ("velero" , "test" ).SnapshotMoveData (true ).CSISnapshotTimeout (1 * time .Minute ).Result (),
137+ pvc : builder .ForPersistentVolumeClaim ("velero" , "testPVC" ).VolumeName ("testPV" ).StorageClass ("testSC" ).Phase (corev1api .ClaimBound ).Result (),
138+ pv : builder .ForPersistentVolume ("testPV" ).CSI ("hostpath" , "testVolume" ).Result (),
139+ sc : builder .ForStorageClass ("testSC" ).Provisioner ("hostpath" ).Result (),
140+ vsClass : builder .ForVolumeSnapshotClass ("testVSClass" ).Driver ("hostpath" ).ObjectMeta (builder .WithLabels (velerov1api .VolumeSnapshotClassSelectorLabel , "" )).Result (),
141+ extraObjects : []runtime.Object {
142+ builder .ForPod ("velero" , "node-agent-pod" ).Labels (map [string ]string {"role" : "node-agent" }).Phase (corev1api .PodRunning ).NodeName ("test-node" ).Result (),
143+ },
131144 operationID : "." ,
132145 expectedDataUpload : & velerov2alpha1.DataUpload {
133146 TypeMeta : metav1.TypeMeta {
@@ -167,12 +180,15 @@ func TestExecute(t *testing.T) {
167180 },
168181 },
169182 {
170- name : "Verify PVC is modified as expected" ,
171- backup : builder .ForBackup ("velero" , "test" ).SnapshotMoveData (true ).CSISnapshotTimeout (1 * time .Minute ).Result (),
172- pvc : builder .ForPersistentVolumeClaim ("velero" , "testPVC" ).VolumeName ("testPV" ).StorageClass ("testSC" ).Phase (corev1api .ClaimBound ).Result (),
173- pv : builder .ForPersistentVolume ("testPV" ).CSI ("hostpath" , "testVolume" ).Result (),
174- sc : builder .ForStorageClass ("testSC" ).Provisioner ("hostpath" ).Result (),
175- vsClass : builder .ForVolumeSnapshotClass ("tescVSClass" ).Driver ("hostpath" ).ObjectMeta (builder .WithLabels (velerov1api .VolumeSnapshotClassSelectorLabel , "" )).Result (),
183+ name : "Verify PVC is modified as expected" ,
184+ backup : builder .ForBackup ("velero" , "test" ).SnapshotMoveData (true ).CSISnapshotTimeout (1 * time .Minute ).Result (),
185+ pvc : builder .ForPersistentVolumeClaim ("velero" , "testPVC" ).VolumeName ("testPV" ).StorageClass ("testSC" ).Phase (corev1api .ClaimBound ).Result (),
186+ pv : builder .ForPersistentVolume ("testPV" ).CSI ("hostpath" , "testVolume" ).Result (),
187+ sc : builder .ForStorageClass ("testSC" ).Provisioner ("hostpath" ).Result (),
188+ vsClass : builder .ForVolumeSnapshotClass ("tescVSClass" ).Driver ("hostpath" ).ObjectMeta (builder .WithLabels (velerov1api .VolumeSnapshotClassSelectorLabel , "" )).Result (),
189+ extraObjects : []runtime.Object {
190+ builder .ForPod ("velero" , "node-agent-pod" ).Labels (map [string ]string {"role" : "node-agent" }).Phase (corev1api .PodRunning ).NodeName ("test-node" ).Result (),
191+ },
176192 operationID : "." ,
177193 expectedPVC : builder .ForPersistentVolumeClaim ("velero" , "testPVC" ).
178194 ObjectMeta (builder .WithAnnotations (velerov1api .MustIncludeAdditionalItemAnnotation , "true" , velerov1api .DataUploadNameAnnotation , "velero/" ),
@@ -210,6 +226,7 @@ func TestExecute(t *testing.T) {
210226 if tc .resourcePolicy != nil {
211227 objects = append (objects , tc .resourcePolicy )
212228 }
229+ objects = append (objects , tc .extraObjects ... )
213230
214231 var crClient crclient.Client
215232 if tc .failVSCreate {
0 commit comments