mirror of https://github.com/ceph/go-ceph
104 lines
2.8 KiB
Go
104 lines
2.8 KiB
Go
//go:build !nautilus && ceph_preview
|
|
// +build !nautilus,ceph_preview
|
|
|
|
package rbd
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestMirrorPeerSite(t *testing.T) {
|
|
conn := radosConnect(t)
|
|
poolName := GetUUID()
|
|
err := conn.MakePool(poolName)
|
|
require.NoError(t, err)
|
|
defer func() {
|
|
assert.NoError(t, conn.DeletePool(poolName))
|
|
conn.Shutdown()
|
|
}()
|
|
|
|
ioctx, err := conn.OpenIOContext(poolName)
|
|
assert.NoError(t, err)
|
|
defer func() {
|
|
ioctx.Destroy()
|
|
}()
|
|
|
|
err = SetMirrorMode(ioctx, MirrorModePool)
|
|
assert.NoError(t, err)
|
|
|
|
t.Run("addRemovePeerSite", func(t *testing.T) {
|
|
uuid, err := AddMirrorPeerSite(ioctx, "site_a", "client_a", MirrorPeerDirectionRxTx)
|
|
assert.NoError(t, err)
|
|
defer func() {
|
|
assert.NoError(t, RemoveMirrorPeerSite(ioctx, uuid))
|
|
}()
|
|
})
|
|
|
|
t.Run("addPeerSiteInvalid", func(t *testing.T) {
|
|
_, err := AddMirrorPeerSite(ioctx, "", "client_b", MirrorPeerDirectionRx)
|
|
assert.Error(t, err)
|
|
})
|
|
|
|
t.Run("listPeerSite", func(t *testing.T) {
|
|
uuid, err := AddMirrorPeerSite(ioctx, "site_b", "client_b", MirrorPeerDirectionRxTx)
|
|
assert.NoError(t, err)
|
|
defer func() {
|
|
assert.NoError(t, RemoveMirrorPeerSite(ioctx, uuid))
|
|
}()
|
|
|
|
site, err := ListMirrorPeerSite(ioctx)
|
|
assert.NoError(t, err)
|
|
assert.Len(t, site, 1)
|
|
assert.Equal(t, site[0].UUID, uuid)
|
|
assert.Equal(t, site[0].SiteName, "site_b")
|
|
assert.Equal(t, site[0].ClientName, "client_b")
|
|
assert.Equal(t, site[0].Direction, MirrorPeerDirectionRxTx)
|
|
})
|
|
|
|
t.Run("setGetAttributesPeerSite", func(t *testing.T) {
|
|
uuid, err := AddMirrorPeerSite(ioctx, "site_c", "client_c", MirrorPeerDirectionRxTx)
|
|
assert.NoError(t, err)
|
|
defer func() {
|
|
assert.NoError(t, RemoveMirrorPeerSite(ioctx, uuid))
|
|
}()
|
|
|
|
attributes := map[string]string{
|
|
"mon_host": "test_host",
|
|
}
|
|
err = SetAttributesMirrorPeerSite(ioctx, uuid, attributes)
|
|
assert.NoError(t, err)
|
|
|
|
attributesList, err := GetAttributesMirrorPeerSite(ioctx, uuid)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, attributesList, attributes)
|
|
})
|
|
|
|
t.Run("setPeerSite", func(t *testing.T) {
|
|
uuid, err := AddMirrorPeerSite(ioctx, "site_d", "client_d", MirrorPeerDirectionRxTx)
|
|
assert.NoError(t, err)
|
|
defer func() {
|
|
assert.NoError(t, RemoveMirrorPeerSite(ioctx, uuid))
|
|
}()
|
|
|
|
err = SetMirrorPeerSiteClientName(ioctx, uuid, "client_e")
|
|
assert.NoError(t, err)
|
|
|
|
err = SetMirrorPeerSiteName(ioctx, uuid, "site_e")
|
|
assert.NoError(t, err)
|
|
|
|
err = SetMirrorPeerSiteDirection(ioctx, uuid, MirrorPeerDirectionRx)
|
|
assert.NoError(t, err)
|
|
|
|
site, err := ListMirrorPeerSite(ioctx)
|
|
assert.NoError(t, err)
|
|
assert.Len(t, site, 1)
|
|
assert.Equal(t, site[0].UUID, uuid)
|
|
assert.Equal(t, site[0].SiteName, "site_e")
|
|
assert.Equal(t, site[0].ClientName, "client_e")
|
|
assert.Equal(t, site[0].Direction, MirrorPeerDirectionRx)
|
|
})
|
|
}
|