Skip to content

Commit 70a2bd4

Browse files
committed
fix: prevent E2E test artifact leaks on TrueNAS
Adoption tests were silently ignoring cleanup errors (using `_ =`), causing NVMe-oF subsystems, iSCSI targets/extents, and NFS shares to accumulate on TrueNAS across CI runs. - NVMe-oF/iSCSI adoption test 1: remove manual TrueNAS cleanup and let framework PVC cleanup trigger CSI DeleteVolume for proper cleanup - All "markAdoptable" tests: replace `_ =` with Expect error checking - iSCSI retain test: add missing target/extent cleanup before ZVOL deletion (NVMe-oF and NFS retain tests already did this)
1 parent 589fb98 commit 70a2bd4

File tree

4 files changed

+23
-26
lines changed

4 files changed

+23
-26
lines changed

tests/e2e/iscsi/adoption_test.go

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -214,17 +214,9 @@ var _ = Describe("iSCSI Volume Adoption", func() {
214214
err = f.K8s.WaitForPodDeleted(ctx, adoptedPodName, deleteTimeout)
215215
Expect(err).NotTo(HaveOccurred())
216216

217-
By("Cleaning up the orphaned ZVOL from TrueNAS")
218-
// Delete the iSCSI resources first if they were recreated
219-
_ = f.TrueNAS.DeleteISCSITarget(ctx, newVolumeHandle)
220-
_ = f.TrueNAS.DeleteISCSIExtent(ctx, newVolumeHandle)
221-
_ = f.TrueNAS.DeleteISCSITarget(ctx, volumeHandle)
222-
_ = f.TrueNAS.DeleteISCSIExtent(ctx, volumeHandle)
223-
err = f.TrueNAS.DeleteDataset(ctx, zvolPath)
224-
Expect(err).NotTo(HaveOccurred())
225-
if f.Verbose() {
226-
GinkgoWriter.Printf("Cleaned up orphaned ZVOL: %s\n", zvolPath)
227-
}
217+
// TrueNAS resources (iSCSI target, extent, ZVOL) are cleaned up
218+
// by the framework's PVC cleanup, which triggers CSI DeleteVolume.
219+
// The adopting StorageClass has no deleteStrategy=retain, so CSI performs full cleanup.
228220
})
229221

230222
It("should mark a volume as adoptable when markAdoptable=true", func() {
@@ -296,8 +288,10 @@ var _ = Describe("iSCSI Volume Adoption", func() {
296288
Expect(exists).To(BeTrue(), "Dataset should be retained with deleteStrategy=retain")
297289

298290
By("Cleaning up retained resources from TrueNAS")
299-
_ = f.TrueNAS.DeleteISCSITarget(ctx, volumeHandle)
300-
_ = f.TrueNAS.DeleteISCSIExtent(ctx, volumeHandle)
291+
err = f.TrueNAS.DeleteISCSITarget(ctx, volumeHandle)
292+
Expect(err).NotTo(HaveOccurred(), "Failed to delete retained iSCSI target from TrueNAS")
293+
err = f.TrueNAS.DeleteISCSIExtent(ctx, volumeHandle)
294+
Expect(err).NotTo(HaveOccurred(), "Failed to delete retained iSCSI extent from TrueNAS")
301295
err = f.TrueNAS.DeleteDataset(ctx, zvolPath)
302296
Expect(err).NotTo(HaveOccurred())
303297
if f.Verbose() {

tests/e2e/iscsi/delete_strategy_retain_test.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,14 @@ var _ = Describe("iSCSI Delete Strategy Retain", func() {
130130
By("ZVOL confirmed to still exist on TrueNAS - retain strategy working correctly")
131131
GinkgoWriter.Printf("Successfully verified ZVOL %s was retained on TrueNAS\n", zvolPath)
132132

133+
By("Cleaning up retained iSCSI target from TrueNAS")
134+
err = f.TrueNAS.DeleteISCSITarget(ctx, volumeHandle)
135+
Expect(err).NotTo(HaveOccurred(), "Failed to delete retained iSCSI target from TrueNAS")
136+
137+
By("Cleaning up retained iSCSI extent from TrueNAS")
138+
err = f.TrueNAS.DeleteISCSIExtent(ctx, volumeHandle)
139+
Expect(err).NotTo(HaveOccurred(), "Failed to delete retained iSCSI extent from TrueNAS")
140+
133141
By("Cleaning up retained ZVOL from TrueNAS")
134142
err = f.TrueNAS.DeleteDataset(ctx, zvolPath)
135143
Expect(err).NotTo(HaveOccurred(), "Failed to delete retained ZVOL from TrueNAS")
@@ -139,7 +147,7 @@ var _ = Describe("iSCSI Delete Strategy Retain", func() {
139147
Expect(err).NotTo(HaveOccurred())
140148
Expect(exists).To(BeFalse(), "ZVOL should no longer exist on TrueNAS after cleanup")
141149

142-
By("Cleanup verified - ZVOL successfully removed from TrueNAS")
150+
By("Cleanup verified - ZVOL and iSCSI resources successfully removed from TrueNAS")
143151
GinkgoWriter.Printf("Successfully cleaned up ZVOL %s from TrueNAS\n", zvolPath)
144152
})
145153
})

tests/e2e/nfs/adoption_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,8 @@ var _ = Describe("NFS Volume Adoption", func() {
379379

380380
By("Cleaning up retained resources from TrueNAS")
381381
nfsSharePath := "/mnt/" + volumeHandle
382-
_ = f.TrueNAS.DeleteNFSShare(ctx, nfsSharePath) // May fail if already deleted
382+
err = f.TrueNAS.DeleteNFSShare(ctx, nfsSharePath)
383+
Expect(err).NotTo(HaveOccurred(), "Failed to delete retained NFS share from TrueNAS")
383384
err = f.TrueNAS.DeleteDataset(ctx, datasetPath)
384385
Expect(err).NotTo(HaveOccurred())
385386
if f.Verbose() {

tests/e2e/nvmeof/adoption_test.go

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -215,16 +215,9 @@ var _ = Describe("NVMe-oF Volume Adoption", func() {
215215
err = f.K8s.WaitForPodDeleted(ctx, adoptedPodName, deleteTimeout)
216216
Expect(err).NotTo(HaveOccurred())
217217

218-
By("Cleaning up the orphaned ZVOL from TrueNAS")
219-
// Delete the subsystem first if it was recreated
220-
newSubsystemNQN := "nqn.2137.csi.tns:" + newVolumeHandle
221-
_ = f.TrueNAS.DeleteNVMeOFSubsystem(ctx, newSubsystemNQN)
222-
_ = f.TrueNAS.DeleteNVMeOFSubsystem(ctx, subsystemNQN)
223-
err = f.TrueNAS.DeleteDataset(ctx, zvolPath)
224-
Expect(err).NotTo(HaveOccurred())
225-
if f.Verbose() {
226-
GinkgoWriter.Printf("Cleaned up orphaned ZVOL: %s\n", zvolPath)
227-
}
218+
// TrueNAS resources (NVMe-oF subsystem, port bindings, ZVOL) are cleaned up
219+
// by the framework's PVC cleanup, which triggers CSI DeleteVolume.
220+
// The adopting StorageClass has no deleteStrategy=retain, so CSI performs full cleanup.
228221
})
229222

230223
It("should mark a volume as adoptable when markAdoptable=true", func() {
@@ -298,7 +291,8 @@ var _ = Describe("NVMe-oF Volume Adoption", func() {
298291
Expect(exists).To(BeTrue(), "Dataset should be retained with deleteStrategy=retain")
299292

300293
By("Cleaning up retained resources from TrueNAS")
301-
_ = f.TrueNAS.DeleteNVMeOFSubsystem(ctx, subsystemNQN)
294+
err = f.TrueNAS.DeleteNVMeOFSubsystem(ctx, subsystemNQN)
295+
Expect(err).NotTo(HaveOccurred(), "Failed to delete retained NVMe-oF subsystem from TrueNAS")
302296
err = f.TrueNAS.DeleteDataset(ctx, zvolPath)
303297
Expect(err).NotTo(HaveOccurred())
304298
if f.Verbose() {

0 commit comments

Comments
 (0)