go-ceph/cephfs/admin/pin_test.go

60 lines
1.4 KiB
Go

//go:build !nautilus
// +build !nautilus
package admin
import (
"errors"
"testing"
"github.com/stretchr/testify/assert"
)
func TestPinSubVolume(t *testing.T) {
fsa := getFSAdmin(t)
volume := "cephfs"
subvolname := "cephfs_subvol"
err := fsa.CreateSubVolume(volume, NoGroup, subvolname, nil)
assert.NoError(t, err)
defer func() {
err := fsa.RemoveSubVolume(volume, NoGroup, subvolname)
assert.NoError(t, err)
}()
var ec errorCode
_, err = fsa.PinSubVolume(volume, subvolname, "distributed", "2")
assert.True(t, errors.As(err, &ec))
assert.Equal(t, -22, ec.ErrorCode())
_, err = fsa.PinSubVolume(volume, subvolname, "distributed", "1")
assert.NoError(t, err)
}
func TestPinSubVolumeGroup(t *testing.T) {
fsa := getFSAdmin(t)
volume := "cephfs"
subvolumegroup := "cephfs_subvol_group"
err := fsa.CreateSubVolumeGroup(volume, subvolumegroup, nil)
assert.NoError(t, err)
defer func() {
err := fsa.RemoveSubVolumeGroup(volume, subvolumegroup)
assert.NoError(t, err)
}()
// mds_export_ephemeral_random_max has a default value of 0.01. EINVAL
// is returned for an attempt to set a value beyond this config.
var ec errorCode
_, err = fsa.PinSubVolumeGroup(volume, subvolumegroup, "random", "0.5")
assert.True(t, errors.As(err, &ec))
assert.Equal(t, -22, ec.ErrorCode())
_, err = fsa.PinSubVolumeGroup(volume, subvolumegroup, "random", "0.01")
assert.NoError(t, err)
}
type errorCode interface {
ErrorCode() int
}