learning_go/rbd_exporter/tests/RBDFactory_test.go
2025-12-23 06:49:59 +03:00

73 lines
2.0 KiB
Go

package tests
import (
"rbd_exporter/rbdfactory"
mock "rbd_exporter/mytypes/mock"
"testing"
"github.com/ceph/go-ceph/rbd"
gomock "go.uber.org/mock/gomock"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestRBDFactory(t *testing.T) {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
MockIOContexter := mock.NewMockIOContexter(mockCtrl)
MockRBDImager := mock.NewMockRBDImager(mockCtrl)
rbdName := "test-rbd"
expectedImageInfo := &rbd.ImageInfo{
Size: 1488,
}
MockIOContexter.EXPECT().GetImage(rbdName).Return(MockRBDImager)
MockRBDImager.EXPECT().Open().Return(nil)
MockRBDImager.EXPECT().Close().Return(nil)
MockRBDImager.EXPECT().Stat().Return(expectedImageInfo,nil)
result,err := rbdfactory.RBDFacroty(MockIOContexter,rbdName)
require.NoError(t, err)
assert.Equal(t, rbdName, result.Name)
assert.Equal(t, expectedImageInfo.Size, result.ImageInfo.Size)
}
func TestPoolFactory(t *testing.T) {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockCephConn := mock.NewMockCephConnector(mockCtrl)
mockIOCtx := mock.NewMockIOContexter(mockCtrl)
mockImage := mock.NewMockRBDImager(mockCtrl)
poolName := "test-pool"
imageNames := []string{"rbd1", "rbd2"}
expectedImageInfo := &rbd.ImageInfo{Size: 1024}
mockCephConn.EXPECT().OpenIOContext(poolName).Return(mockIOCtx,nil)
mockIOCtx.EXPECT().GetImageNames().Return(imageNames,nil)
mockIOCtx.EXPECT().Destroy()
for _, imageName := range imageNames {
mockIOCtx.EXPECT().GetImage(imageName).Return(mockImage)
mockImage.EXPECT().Open().Return(nil)
mockImage.EXPECT().Close().Return(nil)
mockImage.EXPECT().Stat().Return(expectedImageInfo, nil)
}
result, err := rbdfactory.PoolFactory(mockCephConn, poolName)
require.NoError(t, err)
assert.Equal(t, poolName, result.Name)
assert.True(t, result.HasRBD)
assert.Len(t, result.RBDlist, 2)
assert.Equal(t, "rbd1", result.RBDlist[0].GetName())
assert.Equal(t, "rbd2", result.RBDlist[1].GetName())
}