From 19439f3958bec2cf688bf270986d94ff7fb36b51 Mon Sep 17 00:00:00 2001 From: Vicente Cheng Date: Tue, 20 Dec 2016 19:24:31 +0800 Subject: [PATCH 1/2] rbd: the length of args on create_v3 should be 3 instead of 2 Signed-off-by: Vicente Cheng --- rbd/rbd.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rbd/rbd.go b/rbd/rbd.go index 8e3fd81..d4f839a 100644 --- a/rbd/rbd.go +++ b/rbd/rbd.go @@ -152,7 +152,7 @@ func Create(ioctx *rados.IOContext, name string, size uint64, order int, defer C.free(unsafe.Pointer(c_name)) switch len(args) { - case 2: + case 3: ret = C.rbd_create3(C.rados_ioctx_t(ioctx.Pointer()), c_name, C.uint64_t(size), C.uint64_t(args[0]), &c_order, From d6ed10290567fa84023ed478be943e16222ac4c6 Mon Sep 17 00:00:00 2001 From: Vicente Cheng Date: Fri, 23 Dec 2016 00:21:55 +0800 Subject: [PATCH 2/2] rbd: add test cases about create image for rbd_create, rbd_create2, rbd_create3 Signed-off-by: Vicente Cheng --- rbd/rbd_test.go | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/rbd/rbd_test.go b/rbd/rbd_test.go index ce67b28..18f6121 100644 --- a/rbd/rbd_test.go +++ b/rbd/rbd_test.go @@ -11,6 +11,10 @@ import ( "testing" ) +//Rdb feature +var RbdFeatureLayering = uint64(1 << 0) +var RbdFeatureStripingV2 = uint64(1 << 1) + func GetUUID() string { out, _ := exec.Command("uuidgen").Output() return string(out[:36]) @@ -23,6 +27,43 @@ func TestVersion(t *testing.T) { assert.False(t, patch < 0 || patch > 1000, "invalid patch") } +func TestCreateImage(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() + image, err := rbd.Create(ioctx, name, 1<<22, 22) + assert.NoError(t, err) + err = image.Remove() + assert.NoError(t, err) + + name = GetUUID() + image, err = rbd.Create(ioctx, name, 1<<22, 22, + RbdFeatureLayering|RbdFeatureStripingV2) + assert.NoError(t, err) + err = image.Remove() + assert.NoError(t, err) + + name = GetUUID() + image, err = rbd.Create(ioctx, name, 1<<22, 22, + RbdFeatureLayering|RbdFeatureStripingV2, 4096, 2) + assert.NoError(t, err) + err = image.Remove() + assert.NoError(t, err) + + ioctx.Destroy() + conn.DeletePool(poolname) + conn.Shutdown() +} + func TestGetImageNames(t *testing.T) { conn, _ := rados.NewConn() conn.ReadDefaultConfigFile()