mirror of https://github.com/ceph/go-ceph
lib: more conf_* wrappers and test clean-ups
Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
This commit is contained in:
parent
c995a1c1ec
commit
130cb56e1c
26
conn.go
26
conn.go
|
@ -126,6 +126,23 @@ func (c *Conn) SetConfigOption(option, value string) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Conn) GetConfigOption(name string) (value string, err error) {
|
||||||
|
buf := make([]byte, 4096)
|
||||||
|
c_name := C.CString(name)
|
||||||
|
defer C.free(unsafe.Pointer(c_name))
|
||||||
|
ret := int(C.rados_conf_get(c.cluster, c_name,
|
||||||
|
(*C.char)(unsafe.Pointer(&buf[0])), C.size_t(len(buf))))
|
||||||
|
// FIXME: ret may be -ENAMETOOLONG if the buffer is not large enough. We
|
||||||
|
// can handle this case, but we need a reliable way to test for
|
||||||
|
// -ENAMETOOLONG constant. Will the syscall/Errno stuff in Go help?
|
||||||
|
if ret == 0 {
|
||||||
|
value = C.GoString((*C.char)(unsafe.Pointer(&buf[0])))
|
||||||
|
return value, nil
|
||||||
|
} else {
|
||||||
|
return "", RadosError(ret)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// WaitForLatestOSDMap blocks the caller until the latest OSD map has been
|
// WaitForLatestOSDMap blocks the caller until the latest OSD map has been
|
||||||
// retrieved. It returns an error, if any.
|
// retrieved. It returns an error, if any.
|
||||||
func (c *Conn) WaitForLatestOSDMap() error {
|
func (c *Conn) WaitForLatestOSDMap() error {
|
||||||
|
@ -168,3 +185,12 @@ func (c *Conn) ParseCmdLineArgs(args []string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Conn) ParseDefaultConfigEnv() error {
|
||||||
|
ret := C.rados_conf_parse_env(c.cluster, nil)
|
||||||
|
if ret == 0 {
|
||||||
|
return nil
|
||||||
|
} else {
|
||||||
|
return RadosError(int(ret))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
129
rados_test.go
129
rados_test.go
|
@ -4,6 +4,8 @@ import "testing"
|
||||||
//import "bytes"
|
//import "bytes"
|
||||||
import "github.com/noahdesu/rados"
|
import "github.com/noahdesu/rados"
|
||||||
import "github.com/stretchr/testify/assert"
|
import "github.com/stretchr/testify/assert"
|
||||||
|
import "fmt"
|
||||||
|
import "os"
|
||||||
|
|
||||||
func TestVersion(t *testing.T) {
|
func TestVersion(t *testing.T) {
|
||||||
var major, minor, patch = rados.Version()
|
var major, minor, patch = rados.Version()
|
||||||
|
@ -12,25 +14,126 @@ func TestVersion(t *testing.T) {
|
||||||
assert.False(t, patch < 0 || patch > 1000, "invalid patch")
|
assert.False(t, patch < 0 || patch > 1000, "invalid patch")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestOpen(t *testing.T) {
|
func TestGetSetConfigOption(t *testing.T) {
|
||||||
_, err := rados.NewConn()
|
|
||||||
assert.Equal(t, err, nil, "error")
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestConnect(t *testing.T) {
|
|
||||||
conn, _ := rados.NewConn()
|
conn, _ := rados.NewConn()
|
||||||
conn.ReadDefaultConfigFile()
|
|
||||||
err := conn.Connect()
|
// rejects invalid options
|
||||||
assert.Equal(t, err, nil)
|
err := conn.SetConfigOption("wefoijweojfiw", "welfkwjelkfj")
|
||||||
|
assert.Error(t, err, "Invalid option")
|
||||||
|
|
||||||
|
// verify SetConfigOption changes a values
|
||||||
|
log_file_val, err := conn.GetConfigOption("log_file")
|
||||||
|
assert.NotEqual(t, log_file_val, "/dev/null")
|
||||||
|
|
||||||
|
err = conn.SetConfigOption("log_file", "/dev/null")
|
||||||
|
assert.NoError(t, err, "Invalid option")
|
||||||
|
|
||||||
|
log_file_val, err = conn.GetConfigOption("log_file")
|
||||||
|
assert.Equal(t, log_file_val, "/dev/null")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPingMonitor(t *testing.T) {
|
func TestParseDefaultConfigEnv(t *testing.T) {
|
||||||
|
conn, _ := rados.NewConn()
|
||||||
|
|
||||||
|
log_file_val, _ := conn.GetConfigOption("log_file")
|
||||||
|
assert.NotEqual(t, log_file_val, "/dev/null")
|
||||||
|
|
||||||
|
err := os.Setenv("CEPH_ARGS", "--log-file /dev/null")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
err = conn.ParseDefaultConfigEnv()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
log_file_val, _ = conn.GetConfigOption("log_file")
|
||||||
|
assert.Equal(t, log_file_val, "/dev/null")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseCmdLineArgs(t *testing.T) {
|
||||||
|
conn, _ := rados.NewConn()
|
||||||
|
|
||||||
|
log_file_val, _ := conn.GetConfigOption("mon_host")
|
||||||
|
assert.NotEqual(t, log_file_val, "127.0.0.1")
|
||||||
|
|
||||||
|
args := []string{ "--mon-host 127.0.0.1" }
|
||||||
|
err := conn.ParseCmdLineArgs(args)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
log_file_val, _ = conn.GetConfigOption("mon_host")
|
||||||
|
assert.Equal(t, log_file_val, "127.0.0.1")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetClusterStats(t *testing.T) {
|
||||||
conn, _ := rados.NewConn()
|
conn, _ := rados.NewConn()
|
||||||
conn.ReadDefaultConfigFile()
|
conn.ReadDefaultConfigFile()
|
||||||
conn.Connect()
|
conn.Connect()
|
||||||
reply, err := conn.PingMonitor("kyoto")
|
|
||||||
assert.Equal(t, err, nil)
|
stat, err := conn.GetClusterStats()
|
||||||
assert.True(t, len(reply) > 0)
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, stat.Kb > 0)
|
||||||
|
assert.True(t, stat.Kb_used > 0)
|
||||||
|
assert.True(t, stat.Kb_avail > 0)
|
||||||
|
assert.True(t, stat.Num_objects > 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//func TestOpen(t *testing.T) {
|
||||||
|
// _, err := rados.NewConn()
|
||||||
|
// assert.Equal(t, err, nil, "error")
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//func TestConnect(t *testing.T) {
|
||||||
|
// conn, _ := rados.NewConn()
|
||||||
|
// conn.ReadDefaultConfigFile()
|
||||||
|
// err := conn.Connect()
|
||||||
|
// assert.Equal(t, err, nil)
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//func TestPingMonitor(t *testing.T) {
|
||||||
|
// conn, _ := rados.NewConn()
|
||||||
|
// conn.ReadDefaultConfigFile()
|
||||||
|
// conn.Connect()
|
||||||
|
// reply, err := conn.PingMonitor("kyoto")
|
||||||
|
// assert.Equal(t, err, nil)
|
||||||
|
// assert.True(t, len(reply) > 0)
|
||||||
|
//}
|
||||||
|
|
||||||
|
func TestListPools(t *testing.T) {
|
||||||
|
conn, _ := rados.NewConn()
|
||||||
|
conn.ReadDefaultConfigFile()
|
||||||
|
conn.Connect()
|
||||||
|
pools, _ := conn.ListPools()
|
||||||
|
fmt.Println(len(pools), pools)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSetConfigOption(t *testing.T) {
|
||||||
|
conn, _ := rados.NewConn()
|
||||||
|
conn.ReadDefaultConfigFile()
|
||||||
|
conn.Connect()
|
||||||
|
|
||||||
|
err := conn.WaitForLatestOSDMap()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
stat, err := conn.GetClusterStats()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, stat.Kb > 0)
|
||||||
|
assert.True(t, stat.Kb_used > 0)
|
||||||
|
assert.True(t, stat.Kb_avail > 0)
|
||||||
|
assert.True(t, stat.Num_objects > 0)
|
||||||
|
|
||||||
|
args := []string{ "--mon-host 127.0.0.1" }
|
||||||
|
conn2, _ := rados.NewConn()
|
||||||
|
err = conn2.ParseCmdLineArgs(args)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
args = []string{ "--mmm-host 127.0.0.1" }
|
||||||
|
err = conn2.ParseCmdLineArgs(args)
|
||||||
|
assert.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
//func TestConnect(t *testing.T) {
|
//func TestConnect(t *testing.T) {
|
||||||
|
|
Loading…
Reference in New Issue