diff --git a/Makefile b/Makefile index bd016fa9..e1c45fdb 100644 --- a/Makefile +++ b/Makefile @@ -89,7 +89,9 @@ mock: mockgen .PHONY: test test: manifests generate fmt vet envtest mock ## Run tests. # adding -p 1 -v to stream logs. see https://github.com/golang/go/issues/46959 - KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_KUBERNETES_VERSION) --bin-dir $(LOCALBIN) -p path)" go test ./... -coverprofile cover.out -p 1 -v + KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_KUBERNETES_VERSION) --bin-dir $(LOCALBIN) -p path)" \ + SKIP_CEPH_CMD_TEST=1 \ + go test ./... -coverprofile cover.out -p 1 -v GOLANGCI_LINT = $(shell pwd)/bin/golangci-lint golangci-lint: diff --git a/ceph/Makefile b/ceph/Makefile index de4df5e2..214b3953 100644 --- a/ceph/Makefile +++ b/ceph/Makefile @@ -34,7 +34,6 @@ test: ceph-custom.tar $(MINIKUBE_CMD) image load ceph-custom.tar $(KUBECTL_CMD) apply -k ./manifests/ env \ - CEPH_CMD_TEST=1 \ KUBECTL=$(KUBECTL_CMD) \ go test -v -count=1 -timeout 1h ./test/ diff --git a/ceph/test/cluster/block.go b/ceph/test/cluster/block.go index 1e01b2a4..41098a35 100644 --- a/ceph/test/cluster/block.go +++ b/ceph/test/cluster/block.go @@ -62,8 +62,8 @@ func CompareBlockWithFile(namespace, deployName, filename string) error { } args := []string{path.Join(workDir, filename), path.Join(workDir, workFilename)} - log.Printf("📂 diff %s", strings.Join(args, " ")) - _, err := exec.Command("diff", args...).CombinedOutput() + log.Printf("📂 cmp %s", strings.Join(args, " ")) + _, err := exec.Command("cmp", args...).CombinedOutput() if err != nil { showMD5Sum(path.Join(workDir, filename)) showMD5Sum(path.Join(workDir, workFilename)) diff --git a/ceph/test/cluster/kubectl.go b/ceph/test/cluster/kubectl.go index f9727a2b..cad1658c 100644 --- a/ceph/test/cluster/kubectl.go +++ b/ceph/test/cluster/kubectl.go @@ -10,6 +10,7 @@ import ( "os/exec" "regexp" "strings" + "time" storagev1 "k8s.io/api/storage/v1" ) @@ -36,22 +37,7 @@ var kubectlCmd = os.Getenv("KUBECTL") var cephMatcher = regexp.MustCompile(` (ceph|rbd) `) func Kubectl(args ...string) ([]byte, error) { - if len(kubectlCmd) == 0 { - return nil, fmt.Errorf("KUBECTL environment variable should be set") - } - - icon := "⚓" - if cephMatcher.MatchString(strings.Join(args, " ")) { - icon = "🐙" - } - log.Printf("%s kubectl %s", icon, strings.Join(args, " ")) - var stdout bytes.Buffer - command := exec.Command(kubectlCmd, args...) - command.Stdout = &stdout - command.Stderr = os.Stderr - - err := command.Run() - return stdout.Bytes(), err + return KubectlWithInput(nil, args...) } func KubectlWithInput(stdin []byte, args ...string) ([]byte, error) { @@ -66,7 +52,9 @@ func KubectlWithInput(stdin []byte, args ...string) ([]byte, error) { log.Printf("%s kubectl %s", icon, strings.Join(args, " ")) var stdout bytes.Buffer command := exec.Command(kubectlCmd, args...) - command.Stdin = bytes.NewReader(stdin) + if stdin != nil { + command.Stdin = bytes.NewReader(stdin) + } command.Stdout = &stdout command.Stderr = os.Stderr @@ -185,6 +173,7 @@ func ResizePVC(namespace, pvcName, size string) error { if string(after) != string(before) { return nil } + time.Sleep(500 * time.Millisecond) } return fmt.Errorf("PVC size is not changed") } @@ -217,11 +206,11 @@ func CleanupNamespace(namespace string) error { } func CleanupGlobal() error { - SCs, err := GetObjectList[storagev1.StorageClassList]("sc", "") + scs, err := GetObjectList[storagev1.StorageClassList]("sc", "") if err != nil { return err } - for _, sc := range SCs.Items { + for _, sc := range scs.Items { if sc.Provisioner == RBD_PROVISIONER { _, err = Kubectl("delete", "sc", sc.Name) if err != nil { diff --git a/ceph/test/content_test.go b/ceph/test/content_test.go index aacffe52..39b626a9 100644 --- a/ceph/test/content_test.go +++ b/ceph/test/content_test.go @@ -42,6 +42,7 @@ func testContent() { util.GetUniqueName("snap-"), util.GetUniqueName("snap-"), util.GetUniqueName("snap-"), + util.GetUniqueName("snap-"), }, } @@ -82,7 +83,7 @@ func (t *contentTest) setupEnv() { func (t *contentTest) createSnapshot() { It("create snapshot", func() { - // snapshot0 has 0.5MB data + // snapshot0 has 0.5MiB data err := cluster.WriteRandomBlock(t.namespace, t.srcDeployName, 0, Quantity2Int("512Ki")) Expect(err).NotTo(HaveOccurred()) err = cluster.SnapCreate(t.poolName, t.srcImageName, t.snapshots[0]) @@ -94,7 +95,7 @@ func (t *contentTest) createSnapshot() { err = cluster.SnapCreate(t.poolName, t.srcImageName, t.snapshots[1]) Expect(err).NotTo(HaveOccurred()) - // snapshot2 has additional 1.0MB data + // snapshot2 has additional 1.0MiB data err = cluster.WriteRandomBlock(t.namespace, t.srcDeployName, Quantity2Int("512Ki"), Quantity2Int("1Mi")) Expect(err).NotTo(HaveOccurred()) err = cluster.SnapCreate(t.poolName, t.srcImageName, t.snapshots[2]) @@ -102,13 +103,21 @@ func (t *contentTest) createSnapshot() { err = cluster.GetBlockAsFile(t.namespace, t.srcDeployName, t.snapshots[2]) Expect(err).NotTo(HaveOccurred()) - // snapshot3 has discard volume - err = cluster.DiscardBlock(t.namespace, t.srcDeployName) + // snapshot3 has different data from snapshot2 + err = cluster.WriteRandomBlock(t.namespace, t.srcDeployName, 0, Quantity2Int("512Ki")+Quantity2Int("1Mi")) Expect(err).NotTo(HaveOccurred()) err = cluster.SnapCreate(t.poolName, t.srcImageName, t.snapshots[3]) Expect(err).NotTo(HaveOccurred()) err = cluster.GetBlockAsFile(t.namespace, t.srcDeployName, t.snapshots[3]) Expect(err).NotTo(HaveOccurred()) + + // snapshot4 has discard volume + err = cluster.DiscardBlock(t.namespace, t.srcDeployName) + Expect(err).NotTo(HaveOccurred()) + err = cluster.SnapCreate(t.poolName, t.srcImageName, t.snapshots[4]) + Expect(err).NotTo(HaveOccurred()) + err = cluster.GetBlockAsFile(t.namespace, t.srcDeployName, t.snapshots[4]) + Expect(err).NotTo(HaveOccurred()) }) } @@ -132,8 +141,7 @@ func (t *contentTest) test() { "--read-offset", "0", "--read-length", Quantity2Str("1Ki"), "--mid-snap-prefix", "snapshot0", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), ) Expect(err).NotTo(HaveOccurred()) @@ -141,14 +149,12 @@ func (t *contentTest) test() { "--read-offset", "0", "--read-length", Quantity2Str("1Mi"), "--mid-snap-prefix", "snapshot0", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), ) Expect(err).NotTo(HaveOccurred()) err = cluster.ExportDiff("/tmp/snapshot0.bin", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), ) Expect(err).NotTo(HaveOccurred()) @@ -157,8 +163,7 @@ func (t *contentTest) test() { "--read-length", Quantity2Str("1Ki"), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), ) Expect(err).NotTo(HaveOccurred()) @@ -167,24 +172,12 @@ func (t *contentTest) test() { "--read-length", Quantity2Str("1Mi"), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), ) Expect(err).NotTo(HaveOccurred()) err = cluster.ExportDiff("/tmp/snapshot1.bin", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), - ) - Expect(err).NotTo(HaveOccurred()) - - err = cluster.ExportDiff("/tmp/snapshot2-offset-1Ki.bin", - "--read-offset", "0", - "--read-length", Quantity2Str("1Ki"), - "--mid-snap-prefix", "snapshot2", - "--from-snap", t.snapshots[1], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[2]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), ) Expect(err).NotTo(HaveOccurred()) @@ -193,24 +186,35 @@ func (t *contentTest) test() { "--read-length", Quantity2Str("1Mi"), "--mid-snap-prefix", "snapshot2", "--from-snap", t.snapshots[1], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[2]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[2]), ) Expect(err).NotTo(HaveOccurred()) err = cluster.ExportDiff("/tmp/snapshot2.bin", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[2]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[2]), ) Expect(err).NotTo(HaveOccurred()) - err = cluster.ExportDiff("/tmp/snapshot3-offset-1Mi.bin", + err = cluster.ExportDiff("/tmp/snapshot3-offset-1Ki.bin", "--read-offset", "0", - "--read-length", Quantity2Str("1Mi"), + "--read-length", Quantity2Str("1Ki"), "--mid-snap-prefix", "snapshot3", "--from-snap", t.snapshots[2], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[3]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[3]), + ) + Expect(err).NotTo(HaveOccurred()) + + err = cluster.ExportDiff("/tmp/snapshot3.bin", + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[3]), + ) + Expect(err).NotTo(HaveOccurred()) + + err = cluster.ExportDiff("/tmp/snapshot4-offset-1Mi.bin", + "--read-offset", "0", + "--read-length", Quantity2Str("1Mi"), + "--mid-snap-prefix", "snapshot4", + "--from-snap", t.snapshots[3], + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[4]), ) Expect(err).NotTo(HaveOccurred()) @@ -221,10 +225,11 @@ func (t *contentTest) test() { "/tmp/snapshot1-offset-1Ki.bin": t.snapshots[0], "/tmp/snapshot1-offset-1Mi.bin": t.snapshots[0], "/tmp/snapshot1.bin": "", - "/tmp/snapshot2-offset-1Ki.bin": t.snapshots[1], "/tmp/snapshot2-offset-1Mi.bin": t.snapshots[1], "/tmp/snapshot2.bin": "", - "/tmp/snapshot3-offset-1Mi.bin": t.snapshots[2], + "/tmp/snapshot3-offset-1Ki.bin": t.snapshots[2], + "/tmp/snapshot3.bin": "", + "/tmp/snapshot4-offset-1Mi.bin": t.snapshots[3], } tests := []struct { @@ -243,8 +248,7 @@ func (t *contentTest) test() { "--read-offset", Quantity2Str("1Ki"), "--read-length", fmt.Sprintf("%d", Quantity2Int("3Mi")-1024), "--mid-snap-prefix", "snapshot0", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), }, rollbackTo: "snapshot0-offset-1024", }, @@ -257,8 +261,7 @@ func (t *contentTest) test() { "--read-offset", Quantity2Str("1Ki"), "--read-length", Quantity2Str("5Mi"), "--mid-snap-prefix", "snapshot0", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), }, rollbackTo: "snapshot0-offset-1024", }, @@ -270,8 +273,7 @@ func (t *contentTest) test() { "--read-offset", Quantity2Str("1Mi"), "--read-length", Quantity2Str("2Mi"), "--mid-snap-prefix", "snapshot0", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), }, rollbackTo: "snapshot0-offset-1048576", }, @@ -283,8 +285,7 @@ func (t *contentTest) test() { "--read-offset", Quantity2Str("1Mi"), "--read-length", Quantity2Str("5Mi"), "--mid-snap-prefix", "snapshot0", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), }, rollbackTo: "snapshot0-offset-1048576", }, @@ -297,8 +298,7 @@ func (t *contentTest) test() { "--read-length", fmt.Sprintf("%d", Quantity2Int("3Mi")-1024), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, rollbackTo: "snapshot1-offset-1024", }, @@ -311,8 +311,7 @@ func (t *contentTest) test() { "--read-length", Quantity2Str("5Mi"), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, rollbackTo: "snapshot1-offset-1024", }, @@ -325,8 +324,7 @@ func (t *contentTest) test() { "--read-length", Quantity2Str("2Mi"), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, rollbackTo: "snapshot1-offset-1048576", }, @@ -339,8 +337,7 @@ func (t *contentTest) test() { "--read-length", Quantity2Str("5Mi"), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, rollbackTo: "snapshot1-offset-1048576", }, @@ -353,8 +350,7 @@ func (t *contentTest) test() { "--read-length", Quantity2Str("2Mi"), "--mid-snap-prefix", "snapshot2", "--from-snap", t.snapshots[1], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[2]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[2]), }, rollbackTo: "snapshot2-offset-1048576", }, @@ -367,66 +363,61 @@ func (t *contentTest) test() { "--read-length", Quantity2Str("5Mi"), "--mid-snap-prefix", "snapshot2", "--from-snap", t.snapshots[1], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[2]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[2]), }, rollbackTo: "snapshot2-offset-1048576", }, { description: "(226) expand data area between snapshots, offset + length == rbd volume size", - expectedDataName: t.snapshots[2], - importsBefore: []string{"/tmp/snapshot1.bin", "/tmp/snapshot2-offset-1Ki.bin"}, + expectedDataName: t.snapshots[3], + importsBefore: []string{"/tmp/snapshot2.bin", "/tmp/snapshot3-offset-1Ki.bin"}, exportArgs: []string{ "--read-offset", Quantity2Str("1Ki"), "--read-length", fmt.Sprintf("%d", Quantity2Int("3Mi")-1024), - "--mid-snap-prefix", "snapshot2", - "--from-snap", t.snapshots[1], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[2]), + "--mid-snap-prefix", "snapshot3", + "--from-snap", t.snapshots[2], + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[3]), }, - rollbackTo: "snapshot2-offset-1024", + rollbackTo: "snapshot3-offset-1024", }, { description: "(227) expand data area between snapshots, offset + length > rbd volume size", - expectedDataName: t.snapshots[2], - importsBefore: []string{"/tmp/snapshot1.bin", "/tmp/snapshot2-offset-1Ki.bin"}, + expectedDataName: t.snapshots[3], + importsBefore: []string{"/tmp/snapshot2.bin", "/tmp/snapshot3-offset-1Ki.bin"}, exportArgs: []string{ "--read-offset", Quantity2Str("1Ki"), "--read-length", Quantity2Str("5Mi"), - "--mid-snap-prefix", "snapshot2", - "--from-snap", t.snapshots[1], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[2]), + "--mid-snap-prefix", "snapshot3", + "--from-snap", t.snapshots[2], + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[3]), }, - rollbackTo: "snapshot2-offset-1024", + rollbackTo: "snapshot3-offset-1024", }, { description: "(228) discard data area between snapshots, offset + length == rbd volume size", - expectedDataName: t.snapshots[3], - importsBefore: []string{"/tmp/snapshot2.bin", "/tmp/snapshot3-offset-1Mi.bin"}, + expectedDataName: t.snapshots[4], + importsBefore: []string{"/tmp/snapshot3.bin", "/tmp/snapshot4-offset-1Mi.bin"}, exportArgs: []string{ "--read-offset", Quantity2Str("1Mi"), "--read-length", Quantity2Str("2Mi"), - "--mid-snap-prefix", "snapshot3", - "--from-snap", t.snapshots[2], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[3]), + "--mid-snap-prefix", "snapshot4", + "--from-snap", t.snapshots[3], + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[4]), }, - rollbackTo: "snapshot3-offset-1048576", + rollbackTo: "snapshot4-offset-1048576", }, { description: "(229) discard data area between snapshots, offset + length > rbd volume size", - expectedDataName: t.snapshots[3], - importsBefore: []string{"/tmp/snapshot2.bin", "/tmp/snapshot3-offset-1Mi.bin"}, + expectedDataName: t.snapshots[4], + importsBefore: []string{"/tmp/snapshot3.bin", "/tmp/snapshot4-offset-1Mi.bin"}, exportArgs: []string{ "--read-offset", Quantity2Str("1Mi"), "--read-length", Quantity2Str("5Mi"), - "--mid-snap-prefix", "snapshot3", - "--from-snap", t.snapshots[2], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[3]), + "--mid-snap-prefix", "snapshot4", + "--from-snap", t.snapshots[3], + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[4]), }, - rollbackTo: "snapshot3-offset-1048576", + rollbackTo: "snapshot4-offset-1048576", }, } diff --git a/ceph/test/extend.test.go b/ceph/test/extend_test.go similarity index 79% rename from ceph/test/extend.test.go rename to ceph/test/extend_test.go index c3ca8154..49c3055a 100644 --- a/ceph/test/extend.test.go +++ b/ceph/test/extend_test.go @@ -82,7 +82,7 @@ func (t *extendTest) setupEnv() { func (t *extendTest) createSnapshot() { It("create snapshot", func() { - // snapshot0 has 0.5MB data + // snapshot0 has 0.5MiB data err := cluster.WriteRandomBlock(t.namespace, t.srcDeployName, 0, Quantity2Int("512Ki")) Expect(err).NotTo(HaveOccurred()) err = cluster.SnapCreate(t.poolName, t.srcImageName, t.snapshots[0]) @@ -90,7 +90,7 @@ func (t *extendTest) createSnapshot() { err = cluster.GetBlockAsFile(t.namespace, t.srcDeployName, t.snapshots[0]) Expect(err).NotTo(HaveOccurred()) - // extend volume to 2.0MB and make snapshot1 + // extend volume to 2.0MiB and make snapshot1 err = cluster.ResizePVC(t.namespace, t.srcPVCName, "2Mi") Expect(err).NotTo(HaveOccurred()) err = cluster.SnapCreate(t.poolName, t.srcImageName, t.snapshots[1]) @@ -98,7 +98,7 @@ func (t *extendTest) createSnapshot() { err = cluster.GetBlockAsFile(t.namespace, t.srcDeployName, t.snapshots[1]) Expect(err).NotTo(HaveOccurred()) - // snapshot2 has additional 1.0MB data + // snapshot2 has additional 1.0MiB data err = cluster.WriteRandomBlock(t.namespace, t.srcDeployName, Quantity2Int("512Ki"), Quantity2Int("1Mi")) Expect(err).NotTo(HaveOccurred()) err = cluster.SnapCreate(t.poolName, t.srcImageName, t.snapshots[2]) @@ -124,8 +124,7 @@ func (t *extendTest) teardownEnv() { func (t *extendTest) test() { It("checks the consistency of export/import data when volume size (PV/PVC) is expanded", func() { err := cluster.ExportDiff("/tmp/snapshot0.bin", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), ) Expect(err).NotTo(HaveOccurred()) @@ -134,18 +133,16 @@ func (t *extendTest) test() { "--read-length", Quantity2Str("1Ki"), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), ) Expect(err).NotTo(HaveOccurred()) - err = cluster.ExportDiff("/tmp/snapshot1-offset-1Mi.bin", + err = cluster.ExportDiff("/tmp/snapshot1-offset-1Mi+1Ki.bin", "--read-offset", "0", - "--read-length", Quantity2Str("1Mi"), + "--read-length", fmt.Sprintf("%d", Quantity2Int("1Mi")+1024), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), ) Expect(err).NotTo(HaveOccurred()) @@ -154,27 +151,25 @@ func (t *extendTest) test() { "--read-length", Quantity2Str("1Ki"), "--mid-snap-prefix", "snapshot2", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[2]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[2]), ) Expect(err).NotTo(HaveOccurred()) - err = cluster.ExportDiff("/tmp/snapshot2-offset-1Mi.bin", + err = cluster.ExportDiff("/tmp/snapshot2-offset-1Mi+1Ki.bin", "--read-offset", "0", - "--read-length", Quantity2Str("1Mi"), + "--read-length", fmt.Sprintf("%d", Quantity2Int("1Mi")+1024), "--mid-snap-prefix", "snapshot2", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[2]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[2]), ) Expect(err).NotTo(HaveOccurred()) rollbackMap := map[string]string{ - "/tmp/snapshot0.bin": "", - "/tmp/snapshot1-offset-1Ki.bin": t.snapshots[0], - "/tmp/snapshot1-offset-1Mi.bin": t.snapshots[0], - "/tmp/snapshot2-offset-1Ki.bin": t.snapshots[0], - "/tmp/snapshot2-offset-1Mi.bin": t.snapshots[0], + "/tmp/snapshot0.bin": "", + "/tmp/snapshot1-offset-1Ki.bin": t.snapshots[0], + "/tmp/snapshot1-offset-1Mi+1Ki.bin": t.snapshots[0], + "/tmp/snapshot2-offset-1Ki.bin": t.snapshots[0], + "/tmp/snapshot2-offset-1Mi+1Ki.bin": t.snapshots[0], } tests := []struct { @@ -196,8 +191,7 @@ func (t *extendTest) test() { "--read-length", fmt.Sprintf("%d", Quantity2Int("1Mi")-1024), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, rollbackTo1: "snapshot1-offset-1024", exportArgs2: []string{ @@ -205,8 +199,7 @@ func (t *extendTest) test() { "--read-length", Quantity2Str("1Mi"), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, rollbackTo2: "snapshot1-offset-1048576", }, @@ -220,8 +213,7 @@ func (t *extendTest) test() { "--read-length", fmt.Sprintf("%d", Quantity2Int("2Mi")-1024), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, rollbackTo1: "snapshot1-offset-1024", }, @@ -235,8 +227,7 @@ func (t *extendTest) test() { "--read-length", Quantity2Str("5Mi"), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, rollbackTo1: "snapshot1-offset-1024", }, @@ -245,55 +236,51 @@ func (t *extendTest) test() { description: "(233) expand volume but data is not written, " + "the snapshot area does not contain data, offset + length < rbd volume size", expectedDataName: t.snapshots[1], - importsBefore: []string{"/tmp/snapshot0.bin", "/tmp/snapshot1-offset-1Mi.bin"}, + importsBefore: []string{"/tmp/snapshot0.bin", "/tmp/snapshot1-offset-1Mi+1Ki.bin"}, exportArgs1: []string{ - "--read-offset", Quantity2Str("1Mi"), - "--read-length", Quantity2Str("1Ki"), // 1024 + "--read-offset", fmt.Sprintf("%d", Quantity2Int("1Mi")+1024), + "--read-length", Quantity2Str("1Ki"), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, - rollbackTo1: "snapshot1-offset-1048576", + rollbackTo1: "snapshot1-offset-1049600", exportArgs2: []string{ - "--read-offset", fmt.Sprintf("%d", Quantity2Int("1Mi")+1024), - "--read-length", fmt.Sprintf("%d", Quantity2Int("1Mi")-1024), + "--read-offset", fmt.Sprintf("%d", Quantity2Int("1Mi")+2048), + "--read-length", fmt.Sprintf("%d", Quantity2Int("1Mi")-2048), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, - rollbackTo2: "snapshot1-offset-1049600", + rollbackTo2: "snapshot1-offset-1050624", }, { description: "(234) expand volume but data is not written, " + "the snapshot area does not contain data, offset + length == rbd volume size", expectedDataName: t.snapshots[1], - importsBefore: []string{"/tmp/snapshot0.bin", "/tmp/snapshot1-offset-1Mi.bin"}, + importsBefore: []string{"/tmp/snapshot0.bin", "/tmp/snapshot1-offset-1Mi+1Ki.bin"}, exportArgs1: []string{ - "--read-offset", Quantity2Str("1Mi"), - "--read-length", Quantity2Str("1Mi"), + "--read-offset", fmt.Sprintf("%d", Quantity2Int("1Mi")+1024), + "--read-length", fmt.Sprintf("%d", Quantity2Int("1Mi")-1024), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, - rollbackTo1: "snapshot1-offset-1048576", + rollbackTo1: "snapshot1-offset-1049600", }, { description: "(235) expand volume but data is not written, " + "the snapshot area does not contain data, offset + length > rbd volume size", expectedDataName: t.snapshots[1], - importsBefore: []string{"/tmp/snapshot0.bin", "/tmp/snapshot1-offset-1Mi.bin"}, + importsBefore: []string{"/tmp/snapshot0.bin", "/tmp/snapshot1-offset-1Mi+1Ki.bin"}, exportArgs1: []string{ - "--read-offset", Quantity2Str("1Mi"), + "--read-offset", fmt.Sprintf("%d", Quantity2Int("1Mi")+1024), "--read-length", Quantity2Str("5Mi"), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, - rollbackTo1: "snapshot1-offset-1048576", + rollbackTo1: "snapshot1-offset-1049600", }, { @@ -306,8 +293,7 @@ func (t *extendTest) test() { "--read-length", fmt.Sprintf("%d", Quantity2Int("1Mi")-1024), "--mid-snap-prefix", "snapshot2", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[2]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[2]), }, rollbackTo1: "snapshot2-offset-1024", exportArgs2: []string{ @@ -315,8 +301,7 @@ func (t *extendTest) test() { "--read-length", Quantity2Str("1Mi"), "--mid-snap-prefix", "snapshot2", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[2]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[2]), }, rollbackTo2: "snapshot2-offset-1048576", }, @@ -330,8 +315,7 @@ func (t *extendTest) test() { "--read-length", fmt.Sprintf("%d", Quantity2Int("2Mi")-1024), "--mid-snap-prefix", "snapshot2", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[2]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[2]), }, rollbackTo1: "snapshot2-offset-1024", }, @@ -345,8 +329,7 @@ func (t *extendTest) test() { "--read-length", Quantity2Str("5Mi"), "--mid-snap-prefix", "snapshot2", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[2]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[2]), }, rollbackTo1: "snapshot2-offset-1024", }, @@ -355,55 +338,51 @@ func (t *extendTest) test() { description: "(239) expand volume and data is written, " + "the snapshot area does not contain data before expand, offset + length < rbd volume size", expectedDataName: t.snapshots[2], - importsBefore: []string{"/tmp/snapshot0.bin", "/tmp/snapshot2-offset-1Mi.bin"}, + importsBefore: []string{"/tmp/snapshot0.bin", "/tmp/snapshot2-offset-1Mi+1Ki.bin"}, exportArgs1: []string{ - "--read-offset", Quantity2Str("1Mi"), + "--read-offset", fmt.Sprintf("%d", Quantity2Int("1Mi")+1024), "--read-length", Quantity2Str("1Ki"), "--mid-snap-prefix", "snapshot2", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[2]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[2]), }, - rollbackTo1: "snapshot2-offset-1048576", + rollbackTo1: "snapshot2-offset-1049600", exportArgs2: []string{ - "--read-offset", fmt.Sprintf("%d", Quantity2Int("1Mi")+1024), - "--read-length", fmt.Sprintf("%d", Quantity2Int("1Mi")-1024), + "--read-offset", fmt.Sprintf("%d", Quantity2Int("1Mi")+2048), + "--read-length", fmt.Sprintf("%d", Quantity2Int("1Mi")-2048), "--mid-snap-prefix", "snapshot2", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[2]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[2]), }, - rollbackTo2: "snapshot2-offset-1049600", + rollbackTo2: "snapshot2-offset-1050624", }, { description: "(240) expand volume and data is written, " + "the snapshot area does not contain data before expand, offset + length == rbd volume size", expectedDataName: t.snapshots[2], - importsBefore: []string{"/tmp/snapshot0.bin", "/tmp/snapshot2-offset-1Mi.bin"}, + importsBefore: []string{"/tmp/snapshot0.bin", "/tmp/snapshot2-offset-1Mi+1Ki.bin"}, exportArgs1: []string{ - "--read-offset", Quantity2Str("1Mi"), - "--read-length", Quantity2Str("1Mi"), + "--read-offset", fmt.Sprintf("%d", Quantity2Int("1Mi")+1024), + "--read-length", fmt.Sprintf("%d", Quantity2Int("1Mi")-1024), "--mid-snap-prefix", "snapshot2", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[2]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[2]), }, - rollbackTo1: "snapshot2-offset-1048576", + rollbackTo1: "snapshot2-offset-1049600", }, { - description: "(235) expand volume and data is written, " + + description: "(241) expand volume and data is written, " + "the snapshot area does not contain data before expand, offset + length > rbd volume size", expectedDataName: t.snapshots[2], - importsBefore: []string{"/tmp/snapshot0.bin", "/tmp/snapshot2-offset-1Mi.bin"}, + importsBefore: []string{"/tmp/snapshot0.bin", "/tmp/snapshot2-offset-1Mi+1Ki.bin"}, exportArgs1: []string{ - "--read-offset", Quantity2Str("1Mi"), + "--read-offset", fmt.Sprintf("%d", Quantity2Int("1Mi")+1024), "--read-length", Quantity2Str("5Mi"), "--mid-snap-prefix", "snapshot2", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[2]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[2]), }, - rollbackTo1: "snapshot2-offset-1048576", + rollbackTo1: "snapshot2-offset-1049600", }, } diff --git a/ceph/test/options_test.go b/ceph/test/options_test.go index f8680220..c78fbfd9 100644 --- a/ceph/test/options_test.go +++ b/ceph/test/options_test.go @@ -32,7 +32,7 @@ func testOptions() { } Describe("setup environment", test.setupEnv) - Describe("test main", test.test1) + Describe("test main", test.test) Describe("teardown environment", test.teardownEnv) } @@ -71,7 +71,7 @@ func (t *optionsTest) teardownEnv() { }) } -func (t *optionsTest) test1() { +func (t *optionsTest) test() { It("test export-diff command will be fail", func() { tests := []struct { description string @@ -81,16 +81,14 @@ func (t *optionsTest) test1() { description: "(179) specify --read-offset without --read-length", exportArgs: []string{ "--read-offset", "0", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.imageName, t.snapName), + fmt.Sprintf("%s/%s@%s", t.poolName, t.imageName, t.snapName), }, }, { description: "(180) specify --read-length without --read-offset", exportArgs: []string{ "--read-length", Quantity2Str("1Ki"), - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.imageName, t.snapName), + fmt.Sprintf("%s/%s@%s", t.poolName, t.imageName, t.snapName), }, }, { @@ -107,8 +105,7 @@ func (t *optionsTest) test1() { exportArgs: []string{ "--read-offset", "-1", "--read-length", Quantity2Str("1Ki"), - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.imageName, t.snapName), + fmt.Sprintf("%s/%s@%s", t.poolName, t.imageName, t.snapName), }, }, { @@ -116,8 +113,7 @@ func (t *optionsTest) test1() { exportArgs: []string{ "--read-offset", "a", "--read-length", Quantity2Str("1Ki"), - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.imageName, t.snapName), + fmt.Sprintf("%s/%s@%s", t.poolName, t.imageName, t.snapName), }, }, { @@ -125,8 +121,7 @@ func (t *optionsTest) test1() { exportArgs: []string{ "--read-offset", "0", "--read-length", "-1", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.imageName, t.snapName), + fmt.Sprintf("%s/%s@%s", t.poolName, t.imageName, t.snapName), }, }, { @@ -134,8 +129,7 @@ func (t *optionsTest) test1() { exportArgs: []string{ "--read-offset", "0", "--read-length", "a", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.imageName, t.snapName), + fmt.Sprintf("%s/%s@%s", t.poolName, t.imageName, t.snapName), }, }, { @@ -143,9 +137,8 @@ func (t *optionsTest) test1() { exportArgs: []string{ "--read-offset", "0", "--read-length", Quantity2Str("1Ki"), - "-p", t.poolName, "--mid-snap-prefix", "@invalid", - fmt.Sprintf("%s@%s", t.imageName, t.snapName), + fmt.Sprintf("%s/%s@%s", t.poolName, t.imageName, t.snapName), }, }, } diff --git a/ceph/test/regression_test.go b/ceph/test/regression_test.go index 5e05c7a7..d68083ca 100644 --- a/ceph/test/regression_test.go +++ b/ceph/test/regression_test.go @@ -46,9 +46,9 @@ func testRegression() { } Describe("setup environment", test.setupEnv) - Describe("test export-diff for snapshot without from-snap option", test.test1) - Describe("test export-diff for snapshot with from-snap option", test.test2) - Describe("test export-diff for RBD image", test.test3) + Describe("test export-diff for snapshot without from-snap option", test.testWithoutFromSnap) + Describe("test export-diff for snapshot with from-snap option", test.testWithFromSnap) + Describe("test export-diff for RBD image", test.testForRBDImage) Describe("teardown environment", test.teardownEnv) } @@ -72,7 +72,7 @@ func (t *regressionTest) setupEnv() { // creating snapshots // snapshots[0] and snapshots[1] have diff with the image - // snapshots[2] and snapshots[2] has no diff with the image + // snapshots[2] and snapshots[3] has no diff with the image for i := 0; i < 3; i++ { err := cluster.MakeRandomFile(t.snapshots[i], int(Quantity2Int("5Mi"))) Expect(err).NotTo(HaveOccurred()) @@ -82,7 +82,7 @@ func (t *regressionTest) setupEnv() { Expect(err).NotTo(HaveOccurred()) } // crate snapshot[3] with the same data as snapshot[2] - // random file snapshot[3] is not exist + // random file named snapshot[3] does not exist err = cluster.SnapCreate(t.poolName, t.srcImageName, t.snapshots[3]) Expect(err).NotTo(HaveOccurred()) @@ -109,7 +109,7 @@ func (t *regressionTest) teardownEnv() { }) } -func (t *regressionTest) test1() { +func (t *regressionTest) testWithoutFromSnap() { It("export-diff for snapshot without from-snap option", func() { tests := []struct { description string @@ -117,7 +117,14 @@ func (t *regressionTest) test1() { exportArgs []string }{ { - description: "(182) specify snapshot name with @ format", + description: "(182) specify snapshot name with /@ format", + expectedDataName: t.snapshots[0], + exportArgs: []string{ + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), + }, + }, + { + description: "specify snapshot name with @ format", expectedDataName: t.snapshots[0], exportArgs: []string{ "-p", t.poolName, @@ -137,8 +144,9 @@ func (t *regressionTest) test1() { description: "(185) specify snapshot which don't have diff with RBD image", expectedDataName: t.snapshots[2], exportArgs: []string{ - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[2]), + "--read-offset", "0", + "--read-length", "0", + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[2]), }, }, } @@ -170,11 +178,11 @@ func (t *regressionTest) test1() { }) } -func (t *regressionTest) test2() { +func (t *regressionTest) testWithFromSnap() { It("export-diff for snapshot with from-snap option", func() { // export snapshot[0] and import it to the destination image before running the tests err := cluster.ExportDiff("/tmp/exported.bin", - "-p", t.poolName, fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0])) + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0])) Expect(err).NotTo(HaveOccurred()) err = cluster.ImportDiff("/tmp/exported.bin", t.poolName, t.dstImageName, "", t.namespace, t.dstDeployName, t.dstPVCName) @@ -187,11 +195,20 @@ func (t *regressionTest) test2() { rollbackTo string }{ { - description: "(186) specify snapshot name with @ format", + description: "(186) specify snapshot name with /@ format", expectedDataName: t.snapshots[1], exportArgs: []string{ - "-p", t.poolName, "--from-snap", t.snapshots[0], + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), + }, + rollbackTo: t.snapshots[0], + }, + { + description: "specify snapshot name with @ format", + expectedDataName: t.snapshots[1], + exportArgs: []string{ + "--from-snap", t.snapshots[0], + "-p", t.poolName, fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), }, rollbackTo: t.snapshots[0], @@ -233,14 +250,13 @@ func (t *regressionTest) test2() { Expect(err).NotTo(HaveOccurred()) } By("(189) specify snapshot which don't have diff with RBD image") - for i := 1; i < 4; i++ { + for snapIndex := 1; snapIndex <= 3; snapIndex++ { err := cluster.ExportDiff("/tmp/exported.bin", - "-p", t.poolName, - "--from-snap", t.snapshots[i-1], - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[i])) + "--from-snap", t.snapshots[snapIndex-1], + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[snapIndex])) Expect(err).NotTo(HaveOccurred()) err = cluster.ImportDiff("/tmp/exported.bin", t.poolName, t.dstImageName, - t.snapshots[i-1], t.namespace, t.dstDeployName, "") + t.snapshots[snapIndex-1], t.namespace, t.dstDeployName, "") Expect(err).NotTo(HaveOccurred()) } // apply snapshot to the destination image @@ -251,21 +267,17 @@ func (t *regressionTest) test2() { // expect no difference Expect(err).NotTo(HaveOccurred()) - for i := 0; i < 4; i++ { - err := cluster.SnapRemove(t.poolName, t.dstImageName, []string{t.snapshots[i]}) - Expect(err).NotTo(HaveOccurred()) - } + // cleanup + err = cluster.SnapRemoveAll(t.poolName, t.dstImageName) + Expect(err).NotTo(HaveOccurred()) }) } -func (t *regressionTest) test3() { +func (t *regressionTest) testForRBDImage() { It("(184) export-diff for RBD image without --from-snapshot", func() { err := cluster.ExportDiff("/tmp/exported.bin", "-p", t.poolName, t.srcImageName) Expect(err).NotTo(HaveOccurred()) - err = cluster.RemoveFileByPod(t.namespace, t.dstDeployName, "/mnt/data") - Expect(err).NotTo(HaveOccurred()) - err = cluster.ImportDiff("/tmp/exported.bin", t.poolName, t.dstImageName, "", t.namespace, t.dstDeployName, t.dstPVCName) Expect(err).NotTo(HaveOccurred()) @@ -275,7 +287,7 @@ func (t *regressionTest) test3() { }) It("(188) export-diff for RBD image with --from-snapshot", func() { - // skip t.snapshots[0] + // export and import snapshots[1] to the destination image as preparation err := cluster.ExportDiff("/tmp/exported.bin", "-p", t.poolName, "--image", t.srcImageName, "--snap", t.snapshots[1]) Expect(err).NotTo(HaveOccurred()) @@ -284,11 +296,20 @@ func (t *regressionTest) test3() { "", t.namespace, t.dstDeployName, t.dstPVCName) Expect(err).NotTo(HaveOccurred()) - err = cluster.CompareFilesInPod(t.snapshots[1], t.namespace, t.dstDeployName, "/mnt/data") + // test main: export-diff for RBD image with --from-snapshot + err = cluster.ExportDiff("/tmp/exported.bin", + "-p", t.poolName, "--image", t.srcImageName, "--from-snap", t.snapshots[1]) + Expect(err).NotTo(HaveOccurred()) + + err = cluster.ImportDiff("/tmp/exported.bin", t.poolName, t.dstImageName, + t.snapshots[1], t.namespace, t.dstDeployName, t.dstPVCName) + Expect(err).NotTo(HaveOccurred()) + + err = cluster.CompareFilesInPod(t.snapshots[2], t.namespace, t.dstDeployName, "/mnt/data") Expect(err).NotTo(HaveOccurred()) // cleanup - err = cluster.SnapRemove(t.poolName, t.dstImageName, []string{t.snapshots[1]}) + err = cluster.SnapRemoveAll(t.poolName, t.dstImageName) Expect(err).NotTo(HaveOccurred()) }) } diff --git a/ceph/test/rollback_test.go b/ceph/test/rollback_test.go index 23833857..46305ab3 100644 --- a/ceph/test/rollback_test.go +++ b/ceph/test/rollback_test.go @@ -105,8 +105,7 @@ func (t *rollbackTest) test() { "--read-offset", "0", "--read-length", Quantity2Str("1Ki"), "--mid-snap-prefix", "snapshot0", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), ) Expect(err).NotTo(HaveOccurred()) @@ -115,14 +114,12 @@ func (t *rollbackTest) test() { "--read-length", Quantity2Str("1Ki"), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), ) Expect(err).NotTo(HaveOccurred()) err = cluster.ExportDiff("/tmp/snapshot0.bin", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), ) Expect(err).NotTo(HaveOccurred()) @@ -190,8 +187,7 @@ func (t *rollbackTest) test() { "--read-length", "0", "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, rollbackTo: "snapshot1-offset-1024", }, @@ -203,8 +199,7 @@ func (t *rollbackTest) test() { "--read-offset", Quantity2Str("1Ki"), "--read-length", "0", "--mid-snap-prefix", "snapshot0", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), }, rollbackTo: "snapshot0-offset-1024", }, @@ -226,9 +221,9 @@ func (t *rollbackTest) test() { Expect(err).NotTo(HaveOccurred()) // overwrite data in pod before rollback - err = cluster.MakeRandomFile("dummy", int(Quantity2Int("2Mi"))) + err = cluster.MakeRandomFile("overwrite-data", int(Quantity2Int("2Mi"))) Expect(err).NotTo(HaveOccurred()) - err = cluster.PushFileToPod("dummy", t.namespace, t.dstDeployName, "/mnt/data") + err = cluster.PushFileToPod("overwrite-data", t.namespace, t.dstDeployName, "/mnt/data") Expect(err).NotTo(HaveOccurred()) // rollback & import process diff --git a/ceph/test/snapshot_name_test.go b/ceph/test/snapshot_name_test.go index 052606ca..fa2d6d19 100644 --- a/ceph/test/snapshot_name_test.go +++ b/ceph/test/snapshot_name_test.go @@ -93,14 +93,12 @@ func (t *snapshotNameTest) test1() { "--read-offset", "0", "--read-length", Quantity2Str("1Ki"), "--mid-snap-prefix", "snapshot0", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), ) Expect(err).NotTo(HaveOccurred()) err = cluster.ExportDiff("/tmp/snapshot0.bin", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), ) Expect(err).NotTo(HaveOccurred()) @@ -109,8 +107,7 @@ func (t *snapshotNameTest) test1() { "--read-length", Quantity2Str("1Ki"), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), ) Expect(err).NotTo(HaveOccurred()) @@ -131,8 +128,7 @@ func (t *snapshotNameTest) test1() { description: "(190) not specify offset or length, without from-snap", expectedSnapshotName: t.snapshots[0], exportArgs: []string{ - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), }, }, { @@ -141,8 +137,7 @@ func (t *snapshotNameTest) test1() { exportArgs: []string{ "--read-offset", "0", "--read-length", "0", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), }, }, { @@ -152,8 +147,7 @@ func (t *snapshotNameTest) test1() { "--read-offset", "0", "--read-length", Quantity2Str("1Ki"), "--mid-snap-prefix", "mid-snap", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), }, }, { @@ -163,8 +157,7 @@ func (t *snapshotNameTest) test1() { "--read-offset", "0", "--read-length", Quantity2Str("10Mi"), "--mid-snap-prefix", "mid-snap", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), }, }, { @@ -174,8 +167,7 @@ func (t *snapshotNameTest) test1() { "--read-offset", "0", "--read-length", Quantity2Str("11Mi"), "--mid-snap-prefix", "mid-snap", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), }, }, { @@ -186,8 +178,7 @@ func (t *snapshotNameTest) test1() { "--read-offset", Quantity2Str("1Ki"), "--read-length", "0", "--mid-snap-prefix", "snapshot0", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), }, rollbackTo: "snapshot0-offset-1024", }, @@ -199,8 +190,7 @@ func (t *snapshotNameTest) test1() { "--read-offset", Quantity2Str("1Ki"), "--read-length", Quantity2Str("1Ki"), "--mid-snap-prefix", "snapshot0", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), }, rollbackTo: "snapshot0-offset-1024", }, @@ -212,8 +202,7 @@ func (t *snapshotNameTest) test1() { "--read-offset", Quantity2Str("1Ki"), "--read-length", fmt.Sprintf("%d", Quantity2Int("10Mi")-1024), "--mid-snap-prefix", "snapshot0", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), }, rollbackTo: "snapshot0-offset-1024", }, @@ -225,8 +214,7 @@ func (t *snapshotNameTest) test1() { "--read-offset", Quantity2Str("1Ki"), "--read-length", Quantity2Str("11Mi"), "--mid-snap-prefix", "snapshot0", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), }, rollbackTo: "snapshot0-offset-1024", }, @@ -236,8 +224,7 @@ func (t *snapshotNameTest) test1() { importsBefore: []string{"/tmp/snapshot0.bin"}, exportArgs: []string{ "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, rollbackTo: t.snapshots[0], }, @@ -249,8 +236,7 @@ func (t *snapshotNameTest) test1() { "--read-offset", "0", "--read-length", "0", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, rollbackTo: t.snapshots[0], }, @@ -263,8 +249,7 @@ func (t *snapshotNameTest) test1() { "--read-length", Quantity2Str("1Ki"), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, rollbackTo: t.snapshots[0], }, @@ -277,8 +262,7 @@ func (t *snapshotNameTest) test1() { "--read-length", Quantity2Str("10Mi"), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, rollbackTo: t.snapshots[0], }, @@ -291,8 +275,7 @@ func (t *snapshotNameTest) test1() { "--read-length", Quantity2Str("11Mi"), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, rollbackTo: t.snapshots[0], }, @@ -305,8 +288,7 @@ func (t *snapshotNameTest) test1() { "--read-length", "0", "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, rollbackTo: "snapshot1-offset-1024", }, @@ -319,8 +301,7 @@ func (t *snapshotNameTest) test1() { "--read-length", Quantity2Str("1Ki"), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, rollbackTo: "snapshot1-offset-1024", }, @@ -333,8 +314,7 @@ func (t *snapshotNameTest) test1() { "--read-length", fmt.Sprintf("%d", Quantity2Int("10Mi")-1024), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, rollbackTo: "snapshot1-offset-1024", }, @@ -347,8 +327,7 @@ func (t *snapshotNameTest) test1() { "--read-length", Quantity2Str("11Mi"), "--mid-snap-prefix", "snapshot1", "--from-snap", t.snapshots[0], - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[1]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[1]), }, rollbackTo: "snapshot1-offset-1024", }, @@ -408,8 +387,7 @@ func (t *snapshotNameTest) test2() { "--read-offset", Quantity2Str("10Mi"), "--read-length", "0", "--mid-snap-prefix", "mid-snap", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), }, }, { @@ -418,8 +396,7 @@ func (t *snapshotNameTest) test2() { "--read-offset", Quantity2Str("11Mi"), "--read-length", "0", "--mid-snap-prefix", "mid-snap", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), }, }, { @@ -428,8 +405,7 @@ func (t *snapshotNameTest) test2() { "--read-offset", Quantity2Str("10Mi"), "--read-length", Quantity2Str("1Mi"), "--mid-snap-prefix", "mid-snap", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), }, }, { @@ -438,8 +414,7 @@ func (t *snapshotNameTest) test2() { "--read-offset", Quantity2Str("11Mi"), "--read-length", Quantity2Str("1Mi"), "--mid-snap-prefix", "mid-snap", - "-p", t.poolName, - fmt.Sprintf("%s@%s", t.srcImageName, t.snapshots[0]), + fmt.Sprintf("%s/%s@%s", t.poolName, t.srcImageName, t.snapshots[0]), }, }, } diff --git a/ceph/test/suite_test.go b/ceph/test/suite_test.go index 0ea69e49..a81bdf94 100644 --- a/ceph/test/suite_test.go +++ b/ceph/test/suite_test.go @@ -10,9 +10,13 @@ import ( . "github.com/onsi/gomega" ) +const ( + envSkipCephCmdTest = "SKIP_CEPH_CMD_TEST" +) + func TestMTest(t *testing.T) { - if os.Getenv("CEPH_CMD_TEST") == "" { - t.Skip("Run under ceph/") + if os.Getenv(envSkipCephCmdTest) == "1" { + t.Skipf("tests for custom rbd export-diff command are skipped by %s is set to 1", envSkipCephCmdTest) } defer cluster.RemoveWorkDir()