go-ceph/rbd/admin/common_test.go

59 lines
1.4 KiB
Go
Raw Normal View History

//go:build !nautilus
// +build !nautilus
package admin
import (
"testing"
"github.com/stretchr/testify/require"
"github.com/ceph/go-ceph/internal/admintest"
"github.com/ceph/go-ceph/rados"
"github.com/ceph/go-ceph/rbd"
)
var (
defaultPoolName = "rbd"
testImageSize = uint64(1 << 22)
testImageOrder = 22
alreadyExists = -0x11
radosConnector = admintest.NewConnector()
)
func getConn(t *testing.T) *rados.Conn {
return radosConnector.GetConn(t)
}
func getAdmin(t *testing.T) *RBDAdmin {
return NewFromConn(radosConnector.Get(t))
}
func ensureDefaultPool(t *testing.T) {
t.Helper()
conn := getConn(t)
err := conn.MakePool(defaultPoolName)
if err == nil {
t.Logf("created pool: %s", defaultPoolName)
ioctx, err := conn.OpenIOContext(defaultPoolName)
require.NoError(t, err)
defer ioctx.Destroy()
// initialize rbd for the pool. if this is not done all mirror
// schedules can not be used on the pool or images in the pool
err = rbd.PoolInit(ioctx, false)
require.NoError(t, err)
// enable per image mirroring for the new pool
err = rbd.SetMirrorMode(ioctx, rbd.MirrorModeImage)
require.NoError(t, err)
return
}
ec, ok := err.(interface{ ErrorCode() int })
if ok && ec.ErrorCode() == alreadyExists {
t.Logf("pool already exists: %s", defaultPoolName)
} else {
t.Logf("failed to create pool: %s", defaultPoolName)
t.FailNow()
}
}