mirror of https://github.com/ceph/go-ceph
rbd: add tests for read/write and snapshots
This commit is contained in:
parent
5671536b12
commit
edd909006b
103
rbd/rbd_test.go
103
rbd/rbd_test.go
|
@ -7,6 +7,7 @@ import (
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"sort"
|
"sort"
|
||||||
|
"encoding/json"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetUUID() string {
|
func GetUUID() string {
|
||||||
|
@ -58,3 +59,105 @@ func TestGetImageNames(t *testing.T) {
|
||||||
conn.DeletePool(poolname)
|
conn.DeletePool(poolname)
|
||||||
conn.Shutdown()
|
conn.Shutdown()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestIOReaderWriter(t *testing.T) {
|
||||||
|
conn, _ := rados.NewConn()
|
||||||
|
conn.ReadDefaultConfigFile()
|
||||||
|
conn.Connect()
|
||||||
|
|
||||||
|
poolname := GetUUID()
|
||||||
|
err := conn.MakePool(poolname)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
ioctx, err := conn.OpenIOContext(poolname)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
name := GetUUID()
|
||||||
|
img, err := rbd.Create(ioctx, name, 1<<22)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
err = img.Open()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
stats, err := img.Stat()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
encoder := json.NewEncoder(img)
|
||||||
|
encoder.Encode(stats)
|
||||||
|
|
||||||
|
err = img.Flush()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
_, err = img.Seek(0, 0)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
var stats2 *rbd.ImageInfo
|
||||||
|
decoder := json.NewDecoder(img)
|
||||||
|
decoder.Decode(&stats2)
|
||||||
|
|
||||||
|
assert.Equal(t, &stats, &stats2)
|
||||||
|
|
||||||
|
_, err = img.Seek(0, 0)
|
||||||
|
bytes_in := []byte("input data")
|
||||||
|
_, err = img.Write(bytes_in)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
_, err = img.Seek(0, 0)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
bytes_out := make([]byte, len(bytes_in))
|
||||||
|
n_out, err := img.Read(bytes_out)
|
||||||
|
|
||||||
|
assert.Equal(t, n_out, len(bytes_in))
|
||||||
|
assert.Equal(t, bytes_in, bytes_out)
|
||||||
|
|
||||||
|
err = img.Close()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
img.Remove()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
ioctx.Destroy()
|
||||||
|
conn.DeletePool(poolname)
|
||||||
|
conn.Shutdown()
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreateSnapshot(t *testing.T) {
|
||||||
|
conn, _ := rados.NewConn()
|
||||||
|
conn.ReadDefaultConfigFile()
|
||||||
|
conn.Connect()
|
||||||
|
|
||||||
|
poolname := GetUUID()
|
||||||
|
err := conn.MakePool(poolname)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
ioctx, err := conn.OpenIOContext(poolname)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
name := GetUUID()
|
||||||
|
img, err := rbd.Create(ioctx, name, 1<<22)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
err = img.Open()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
snapshot, err := img.CreateSnapshot("mysnap")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
err = img.Close()
|
||||||
|
err = img.Open("mysnap")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
snapshot.Remove()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
err = img.Close()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
img.Remove()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
ioctx.Destroy()
|
||||||
|
conn.DeletePool(poolname)
|
||||||
|
conn.Shutdown()
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue