go-ceph/rados_test.go

155 lines
3.9 KiB
Go
Raw Normal View History

package rados_test
import "testing"
//import "bytes"
import "github.com/noahdesu/rados"
import "github.com/stretchr/testify/assert"
import "fmt"
import "os"
func TestVersion(t *testing.T) {
var major, minor, patch = rados.Version()
assert.False(t, major < 0 || major > 1000, "invalid major")
assert.False(t, minor < 0 || minor > 1000, "invalid minor")
assert.False(t, patch < 0 || patch > 1000, "invalid patch")
}
func TestGetSetConfigOption(t *testing.T) {
conn, _ := rados.NewConn()
// rejects invalid options
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 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.ReadDefaultConfigFile()
conn.Connect()
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)
}
//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) {
// conn, _ := rados.Open("admin")
// conn.ReadConfigFile("/home/nwatkins/ceph/ceph/src/ceph.conf")
// conn.Connect()
// pool, _ := conn.OpenPool("data")
//
// data_in := []byte("blah");
// data_out := make([]byte, 10)
//
// pool.Write("xyz", data_in, 0)
// pool.Read("xyz", data_out[:4], 0)
//
// if !bytes.Equal(data_in, data_out[:4]) {
// t.Errorf("yuk")
// }
//}