Skip to content

Commit

Permalink
Add some tests 2
Browse files Browse the repository at this point in the history
Signed-off-by: Aleksandr Zimin <alexandr.zimin@flant.com>
  • Loading branch information
AleksZimin committed May 26, 2024
1 parent 34cba03 commit 8217c85
Showing 1 changed file with 165 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ var _ = Describe(controller.LocalStorageClassCtrlName, func() {

existingThinLVG1Template = generateLVMVolumeGroup(existingThinLVG1Name, []string{"dev-7777", "dev-8888"}, []string{"thin-pool-1", "thin-pool-2"})
existingThinLVG2Template = generateLVMVolumeGroup(existingThinLVG2Name, []string{"dev-9999", "dev-1010"}, []string{"thin-pool-1", "thin-pool-2"})
// newThinLVGTemplate = generateLVMVolumeGroup(newThinLVGName, []string{"dev-1111", "dev-1212"}, []string{"thin-pool-1", "thin-pool-2"})
newThinLVGTemplate = generateLVMVolumeGroup(newThinLVGName, []string{"dev-1111", "dev-1212"}, []string{"thin-pool-1", "thin-pool-2"})
)

It("Create_local_sc_with_existing_lvgs", func() {
Expand Down Expand Up @@ -115,7 +115,7 @@ var _ = Describe(controller.LocalStorageClassCtrlName, func() {
performStandartChecksForSC(sc, lvgSpec, nameForLocalStorageClass, controller.LocalStorageClassLvmType, controller.LVMThickType, reclaimPolicyDelete, volumeBindingModeWFFC)
})

It("Update_local_sc_add_existing_vg", func() {
It("Update_local_sc_add_existing_lvg", func() {
lvgSpec := []v1alpha1.LocalStorageClassLVG{
{Name: existingThickLVG1Name},
{Name: existingThickLVG2Name},
Expand Down Expand Up @@ -155,7 +155,7 @@ var _ = Describe(controller.LocalStorageClassCtrlName, func() {
performStandartChecksForSC(sc, lvgSpec, nameForLocalStorageClass, controller.LocalStorageClassLvmType, controller.LVMThickType, reclaimPolicyDelete, volumeBindingModeWFFC)
})

It("Update_local_sc_remove_existing_vg", func() {
It("Update_local_sc_remove_existing_lvg", func() {
lvgSpec := []v1alpha1.LocalStorageClassLVG{
{Name: existingThickLVG1Name},
{Name: existingThickLVG2Name},
Expand Down Expand Up @@ -191,7 +191,7 @@ var _ = Describe(controller.LocalStorageClassCtrlName, func() {
performStandartChecksForSC(sc, lvgSpec, nameForLocalStorageClass, controller.LocalStorageClassLvmType, controller.LVMThickType, reclaimPolicyDelete, volumeBindingModeWFFC)
})

It("Update_local_sc_add_non_existing_vg", func() {
It("Update_local_sc_add_non_existing_lvg", func() {
lvgSpecOld := []v1alpha1.LocalStorageClassLVG{
{Name: existingThickLVG1Name},
{Name: existingThickLVG2Name},
Expand Down Expand Up @@ -233,7 +233,7 @@ var _ = Describe(controller.LocalStorageClassCtrlName, func() {
performStandartChecksForSC(sc, lvgSpecOld, nameForLocalStorageClass, controller.LocalStorageClassLvmType, controller.LVMThickType, reclaimPolicyDelete, volumeBindingModeWFFC)
})

It("Remove_local_sc_with_non_existing_vg", func() {
It("Remove_local_sc_with_non_existing_lvg", func() {
lvgSpec := []v1alpha1.LocalStorageClassLVG{
{Name: existingThickLVG1Name},
{Name: existingThickLVG2Name},
Expand Down Expand Up @@ -270,7 +270,7 @@ var _ = Describe(controller.LocalStorageClassCtrlName, func() {
Expect(k8serrors.IsNotFound(err)).To(BeTrue())
})

It("Create_local_sc_with_non_existing_vgs", func() {
It("Create_local_sc_with_non_existing_lvgs", func() {
lvgSpec := []v1alpha1.LocalStorageClassLVG{
{Name: nonExistentLVG1Name},
{Name: nonExistentLVG2Name},
Expand Down Expand Up @@ -306,7 +306,7 @@ var _ = Describe(controller.LocalStorageClassCtrlName, func() {

})

It("Update_local_sc_with_all_existing_vgs", func() {
It("Update_local_sc_with_all_existing_lvgs", func() {
lvgSpec := []v1alpha1.LocalStorageClassLVG{
{Name: existingThickLVG1Name},
{Name: existingThickLVG2Name},
Expand Down Expand Up @@ -343,7 +343,7 @@ var _ = Describe(controller.LocalStorageClassCtrlName, func() {
performStandartChecksForSC(sc, lvgSpec, nameForLocalStorageClass, controller.LocalStorageClassLvmType, controller.LVMThickType, reclaimPolicyDelete, volumeBindingModeWFFC)
})

It("Remove_local_sc_with_existing_vgs", func() {
It("Remove_local_sc_with_existing_lvgs", func() {
lvgSpec := []v1alpha1.LocalStorageClassLVG{
{Name: existingThickLVG1Name},
{Name: existingThickLVG2Name},
Expand Down Expand Up @@ -516,7 +516,7 @@ var _ = Describe(controller.LocalStorageClassCtrlName, func() {
It("Create_local_thin_sc_with_existing_thin_lvgs", func() {
lvgSpec := []v1alpha1.LocalStorageClassLVG{
{Name: existingThinLVG1Name, Thin: &v1alpha1.LocalStorageClassThinPool{PoolName: "thin-pool-1"}},
{Name: existingThinLVG2Name, Thin: &v1alpha1.LocalStorageClassThinPool{PoolName: "thin-pool-1"}},
{Name: existingThinLVG2Name, Thin: &v1alpha1.LocalStorageClassThinPool{PoolName: "thin-pool-2"}},
}

err := cl.Create(ctx, existingThinLVG1Template)
Expand All @@ -525,13 +525,6 @@ var _ = Describe(controller.LocalStorageClassCtrlName, func() {
err = cl.Create(ctx, existingThinLVG2Template)
Expect(err).NotTo(HaveOccurred())

existingThinLVG1 := &v1alpha1.LvmVolumeGroup{}
err = cl.Get(ctx, client.ObjectKey{Name: existingThinLVG1Name}, existingThinLVG1)
Expect(err).NotTo(HaveOccurred())
Expect(existingThinLVG1.Spec.ThinPools).To(HaveLen(2))
Expect(existingThinLVG1.Spec.ThinPools[0].Name).To(Equal("thin-pool-1"))
Expect(existingThinLVG1.Spec.ThinPools[1].Name).To(Equal("thin-pool-2"))

lscTemplate := generateLocalStorageClass(nameForLocalStorageClass, reclaimPolicyRetain, volumeBindingModeIM, controller.LVMThinType, lvgSpec)

err = cl.Create(ctx, lscTemplate)
Expand Down Expand Up @@ -564,6 +557,162 @@ var _ = Describe(controller.LocalStorageClassCtrlName, func() {
performStandartChecksForSC(sc, lvgSpec, nameForLocalStorageClass, controller.LocalStorageClassLvmType, controller.LVMThinType, reclaimPolicyRetain, volumeBindingModeIM)
})

It("Update_local_thin_sc_add_existing_thin_lvg", func() {
lvgSpec := []v1alpha1.LocalStorageClassLVG{
{Name: existingThinLVG1Name, Thin: &v1alpha1.LocalStorageClassThinPool{PoolName: "thin-pool-1"}},
{Name: existingThinLVG2Name, Thin: &v1alpha1.LocalStorageClassThinPool{PoolName: "thin-pool-2"}},
{Name: newThinLVGName, Thin: &v1alpha1.LocalStorageClassThinPool{PoolName: "thin-pool-1"}},
}

err := cl.Create(ctx, newThinLVGTemplate)
Expect(err).NotTo(HaveOccurred())

lsc := &v1alpha1.LocalStorageClass{}
err = cl.Get(ctx, client.ObjectKey{Name: nameForLocalStorageClass}, lsc)
Expect(err).NotTo(HaveOccurred())

lsc.Spec.LVM.LVMVolumeGroups = append(lsc.Spec.LVM.LVMVolumeGroups, v1alpha1.LocalStorageClassLVG{Name: newThinLVGName, Thin: &v1alpha1.LocalStorageClassThinPool{PoolName: "thin-pool-1"}})

err = cl.Update(ctx, lsc)
Expect(err).NotTo(HaveOccurred())

scList := &v1.StorageClassList{}
err = cl.List(ctx, scList)
Expect(err).NotTo(HaveOccurred())

shouldRequeue, err := controller.RunEventReconcile(ctx, cl, log, scList, lsc)
Expect(err).NotTo(HaveOccurred())
Expect(shouldRequeue).To(BeFalse())

err = cl.Get(ctx, client.ObjectKey{Name: nameForLocalStorageClass}, lsc)
Expect(err).NotTo(HaveOccurred())
Expect(lsc.Finalizers).To(HaveLen(1))
Expect(lsc.Finalizers).To(ContainElement(controller.LocalStorageClassFinalizerName))
Expect(lsc.Spec.LVM.LVMVolumeGroups).To(Equal(lvgSpec))
Expect(lsc.Status.Phase).To(Equal(controller.CreatedStatusPhase))

sc := &v1.StorageClass{}
err = cl.Get(ctx, client.ObjectKey{Name: nameForLocalStorageClass}, sc)
Expect(err).NotTo(HaveOccurred())
performStandartChecksForSC(sc, lvgSpec, nameForLocalStorageClass, controller.LocalStorageClassLvmType, controller.LVMThinType, reclaimPolicyRetain, volumeBindingModeIM)
})

It("Update_local_thin_sc_remove_existing_thin_lvg", func() {
lvgSpec := []v1alpha1.LocalStorageClassLVG{
{Name: existingThinLVG1Name, Thin: &v1alpha1.LocalStorageClassThinPool{PoolName: "thin-pool-1"}},
{Name: existingThinLVG2Name, Thin: &v1alpha1.LocalStorageClassThinPool{PoolName: "thin-pool-2"}},
}

lsc := &v1alpha1.LocalStorageClass{}
err := cl.Get(ctx, client.ObjectKey{Name: nameForLocalStorageClass}, lsc)
Expect(err).NotTo(HaveOccurred())

lsc.Spec.LVM.LVMVolumeGroups = delFromSlice(lsc.Spec.LVM.LVMVolumeGroups, newThinLVGName)

err = cl.Update(ctx, lsc)
Expect(err).NotTo(HaveOccurred())

scList := &v1.StorageClassList{}
err = cl.List(ctx, scList)
Expect(err).NotTo(HaveOccurred())

shouldRequeue, err := controller.RunEventReconcile(ctx, cl, log, scList, lsc)
Expect(err).NotTo(HaveOccurred())
Expect(shouldRequeue).To(BeFalse())

err = cl.Get(ctx, client.ObjectKey{Name: nameForLocalStorageClass}, lsc)
Expect(err).NotTo(HaveOccurred())
Expect(lsc.Finalizers).To(HaveLen(1))
Expect(lsc.Finalizers).To(ContainElement(controller.LocalStorageClassFinalizerName))
Expect(lsc.Spec.LVM.LVMVolumeGroups).To(Equal(lvgSpec))
Expect(lsc.Status.Phase).To(Equal(controller.CreatedStatusPhase))

sc := &v1.StorageClass{}
err = cl.Get(ctx, client.ObjectKey{Name: nameForLocalStorageClass}, sc)
Expect(err).NotTo(HaveOccurred())
performStandartChecksForSC(sc, lvgSpec, nameForLocalStorageClass, controller.LocalStorageClassLvmType, controller.LVMThinType, reclaimPolicyRetain, volumeBindingModeIM)
})

It("Update_local_thin_sc_add_existing_thick_lvg", func() {
lvgSpecOld := []v1alpha1.LocalStorageClassLVG{
{Name: existingThinLVG1Name, Thin: &v1alpha1.LocalStorageClassThinPool{PoolName: "thin-pool-1"}},
{Name: existingThinLVG2Name, Thin: &v1alpha1.LocalStorageClassThinPool{PoolName: "thin-pool-2"}},
}

lvgSpec := []v1alpha1.LocalStorageClassLVG{
{Name: existingThinLVG1Name, Thin: &v1alpha1.LocalStorageClassThinPool{PoolName: "thin-pool-1"}},
{Name: existingThinLVG2Name, Thin: &v1alpha1.LocalStorageClassThinPool{PoolName: "thin-pool-2"}},
{Name: existingThickLVG1Name},
}

lsc := &v1alpha1.LocalStorageClass{}
err := cl.Get(ctx, client.ObjectKey{Name: nameForLocalStorageClass}, lsc)
Expect(err).NotTo(HaveOccurred())

lsc.Spec.LVM.LVMVolumeGroups = append(lsc.Spec.LVM.LVMVolumeGroups, v1alpha1.LocalStorageClassLVG{Name: existingThickLVG1Name})

err = cl.Update(ctx, lsc)
Expect(err).NotTo(HaveOccurred())

scList := &v1.StorageClassList{}
err = cl.List(ctx, scList)
Expect(err).NotTo(HaveOccurred())

shouldRequeue, err := controller.RunEventReconcile(ctx, cl, log, scList, lsc)
Expect(err).To(HaveOccurred())
Expect(shouldRequeue).To(BeTrue())

err = cl.Get(ctx, client.ObjectKey{Name: nameForLocalStorageClass}, lsc)
Expect(err).NotTo(HaveOccurred())
Expect(lsc.Finalizers).To(HaveLen(1))
Expect(lsc.Finalizers).To(ContainElement(controller.LocalStorageClassFinalizerName))
Expect(lsc.Spec.LVM.LVMVolumeGroups).To(Equal(lvgSpec))
Expect(lsc.Status.Phase).To(Equal(controller.FailedStatusPhase))

sc := &v1.StorageClass{}
err = cl.Get(ctx, client.ObjectKey{Name: nameForLocalStorageClass}, sc)
Expect(err).NotTo(HaveOccurred())
performStandartChecksForSC(sc, lvgSpecOld, nameForLocalStorageClass, controller.LocalStorageClassLvmType, controller.LVMThinType, reclaimPolicyRetain, volumeBindingModeIM)
})

It("Remove_local_thin_sc_with_existing_thick_lvg", func() {
lvgSpec := []v1alpha1.LocalStorageClassLVG{
{Name: existingThinLVG1Name, Thin: &v1alpha1.LocalStorageClassThinPool{PoolName: "thin-pool-1"}},
{Name: existingThinLVG2Name, Thin: &v1alpha1.LocalStorageClassThinPool{PoolName: "thin-pool-2"}},
{Name: existingThickLVG1Name},
}

lsc := &v1alpha1.LocalStorageClass{}
err := cl.Get(ctx, client.ObjectKey{Name: nameForLocalStorageClass}, lsc)
Expect(err).NotTo(HaveOccurred())

err = cl.Delete(ctx, lsc)
Expect(err).NotTo(HaveOccurred())

lsc = &v1alpha1.LocalStorageClass{}
err = cl.Get(ctx, client.ObjectKey{Name: nameForLocalStorageClass}, lsc)
Expect(err).NotTo(HaveOccurred())
Expect(lsc.Finalizers).To(HaveLen(1))
Expect(lsc.Finalizers).To(ContainElement(controller.LocalStorageClassFinalizerName))
Expect(lsc.Spec.LVM.LVMVolumeGroups).To(Equal(lvgSpec))

scList := &v1.StorageClassList{}
err = cl.List(ctx, scList)
Expect(err).NotTo(HaveOccurred())
Expect(scList.Items).To(HaveLen(1))

shouldRequeue, err := controller.RunEventReconcile(ctx, cl, log, scList, lsc)
Expect(err).NotTo(HaveOccurred())
Expect(shouldRequeue).To(BeFalse())

err = cl.Get(ctx, client.ObjectKey{Name: nameForLocalStorageClass}, lsc)
Expect(k8serrors.IsNotFound(err)).To(BeTrue())

sc := &v1.StorageClass{}
err = cl.Get(ctx, client.ObjectKey{Name: nameForLocalStorageClass}, sc)
Expect(k8serrors.IsNotFound(err)).To(BeTrue())
})

})

func generateLVMVolumeGroup(name string, devices, thinPoolNames []string) *v1alpha1.LvmVolumeGroup {
Expand Down

0 comments on commit 8217c85

Please sign in to comment.