2023-08-14 13:21:51 +00:00
|
|
|
//go:build !(nautilus || octopus)
|
|
|
|
// +build !nautilus,!octopus
|
2023-03-15 06:07:47 +00:00
|
|
|
|
|
|
|
package admin
|
|
|
|
|
|
|
|
import (
|
|
|
|
"errors"
|
|
|
|
"testing"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestFetchVolumeInfo(t *testing.T) {
|
|
|
|
fsa := getFSAdmin(t)
|
|
|
|
|
|
|
|
t.Run("SimpleVolume", func(t *testing.T) {
|
|
|
|
volume := "cephfs"
|
|
|
|
vinfo, err := fsa.FetchVolumeInfo(volume)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
assert.NotNil(t, vinfo)
|
|
|
|
assert.Contains(t, vinfo.MonAddrs[0], "6789")
|
|
|
|
assert.Equal(t, "cephfs_data", vinfo.Pools.DataPool[0].Name)
|
|
|
|
})
|
|
|
|
|
|
|
|
t.Run("InvalidVolume", func(t *testing.T) {
|
|
|
|
volume := "blah"
|
|
|
|
var ec ErrCode
|
|
|
|
_, err := fsa.FetchVolumeInfo(volume)
|
|
|
|
assert.True(t, errors.As(err, &ec))
|
|
|
|
assert.Equal(t, -2, ec.ErrorCode())
|
|
|
|
})
|
|
|
|
|
|
|
|
t.Run("WithSubvolume", func(t *testing.T) {
|
|
|
|
volume := "altfs"
|
|
|
|
subvolname := "altfs_subvol"
|
|
|
|
|
|
|
|
err := fsa.CreateSubVolume(volume, NoGroup, subvolname, nil)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
defer func() {
|
|
|
|
err := fsa.RemoveSubVolume(volume, NoGroup, subvolname)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
}()
|
|
|
|
|
|
|
|
vinfo, err := fsa.FetchVolumeInfo(volume)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
assert.NotNil(t, vinfo)
|
|
|
|
assert.EqualValues(t, 0, vinfo.PendingSubvolDels)
|
|
|
|
assert.Eventually(t,
|
|
|
|
func() bool {
|
|
|
|
vinfo, err := fsa.FetchVolumeInfo(volume)
|
|
|
|
if !assert.NoError(t, err) {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
return vinfo.Pools.DataPool[0].Used != 0
|
|
|
|
},
|
|
|
|
10*time.Second,
|
|
|
|
100*time.Millisecond,
|
|
|
|
"Data pool size not updated")
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
type ErrCode interface {
|
|
|
|
ErrorCode() int
|
|
|
|
}
|