go-ceph/rbd/snapshot_octopus_test.go
John Mulligan 5964821ec0 rbd: update build tags from "octopus" to "not nautilus"
Unless these apis are deprecated in the (far?) future it is safer to say
"not nautilus" rather than explicitly tag all current and future ceph
release codenames.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2021-04-30 15:23:40 +02:00

114 lines
2.6 KiB
Go

// +build !nautilus
package rbd
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestSnapIDFunctions(t *testing.T) {
conn := radosConnect(t)
poolName := GetUUID()
err := conn.MakePool(poolName)
assert.NoError(t, err)
ioctx, err := conn.OpenIOContext(poolName)
assert.NoError(t, err)
defer func() {
ioctx.Destroy()
assert.NoError(t, conn.DeletePool(poolName))
conn.Shutdown()
}()
t.Run("happyPath", func(t *testing.T) {
imgName := "myImage"
img, err := Create(ioctx, imgName, testImageSize, testImageOrder, 1)
assert.NoError(t, err)
defer func() {
assert.NoError(t, img.Remove())
}()
img, err = OpenImage(ioctx, imgName, NoSnapshot)
assert.NoError(t, err)
defer func() {
assert.NoError(t, img.Close())
}()
snapName := "mySnap"
snapshot, err := img.CreateSnapshot(snapName)
assert.NoError(t, err)
defer func() {
assert.NoError(t, snapshot.Remove())
}()
snapID, err := img.GetSnapID(snapshot.name)
assert.NoError(t, err)
snapNameByID, err := img.GetSnapByID(snapID)
assert.NoError(t, err)
assert.Equal(t, snapshot.name, snapNameByID)
})
t.Run("closedImage", func(t *testing.T) {
imgName := "myImage"
closedImg, err := Create(ioctx, imgName, testImageSize, testImageOrder, 1)
assert.NoError(t, err)
defer func() {
assert.NoError(t, closedImg.Remove())
}()
img, err := OpenImage(ioctx, imgName, NoSnapshot)
assert.NoError(t, err)
snapName := "mySnap"
snapshot, err := img.CreateSnapshot(snapName)
assert.NoError(t, err)
snapID, err := img.GetSnapID(snapshot.name)
assert.NoError(t, err)
// close the image
assert.NoError(t, img.Close())
// try to get the ID again
_, err = img.GetSnapID(snapshot.name)
assert.Error(t, err)
_, err = img.GetSnapByID(snapID)
assert.Error(t, err)
// Open the image for snapshot removal
img, err = OpenImage(ioctx, imgName, NoSnapshot)
assert.NoError(t, err)
snapshot = img.GetSnapshot(snapName)
assert.NoError(t, snapshot.Remove())
assert.NoError(t, img.Close())
})
t.Run("invalidOptions", func(t *testing.T) {
imgName := "someImage"
img, err := Create(ioctx, imgName, testImageSize, testImageOrder, 1)
assert.NoError(t, err)
defer func() {
assert.NoError(t, img.Remove())
}()
img, err = OpenImage(ioctx, imgName, NoSnapshot)
assert.NoError(t, err)
defer func() {
assert.NoError(t, img.Close())
}()
_, err = img.GetSnapID("")
assert.Error(t, err)
_, err = img.GetSnapID("someSnap")
assert.Error(t, err)
var snapID uint64
snapID = 22
_, err = img.GetSnapByID(snapID)
assert.Error(t, err)
})
}