Splitted to files
parent
13a1a33dc7
commit
660ca650cc
|
@ -2,81 +2,36 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"code.cloudfoundry.org/bytefmt"
|
"code.cloudfoundry.org/bytefmt"
|
||||||
"github.com/ceph/go-ceph/rados"
|
"fmt"
|
||||||
"github.com/juju/gnuflag"
|
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"math/rand"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
var duration int
|
params := Route()
|
||||||
var bs, cluster, user, keyring, config, pool string
|
cephconn := connectioninit(¶ms)
|
||||||
gnuflag.IntVar(&duration, "duration", 30,
|
defer cephconn.conn.Shutdown()
|
||||||
"Time limit for each test in seconds")
|
stats, _ := cephconn.ioctx.GetPoolStats()
|
||||||
gnuflag.IntVar(&duration, "d", 30,
|
|
||||||
"Time limit for each test in seconds")
|
|
||||||
gnuflag.StringVar(&bs, "blocksize", "4K",
|
|
||||||
"Block size in format KB = K = KiB = 1024 MB = M = MiB = 1024 * K GB = G = GiB = 1024 * M TB = T = TiB = 1024 * G")
|
|
||||||
gnuflag.StringVar(&bs, "s", "4K",
|
|
||||||
"Block size in format KB = K = KiB = 1024 MB = M = MiB = 1024 * K GB = G = GiB = 1024 * M TB = T = TiB = 1024 * G")
|
|
||||||
gnuflag.StringVar(&user, "user", "admin",
|
|
||||||
"Ceph user (cephx)")
|
|
||||||
gnuflag.StringVar(&user, "u", "client.admin",
|
|
||||||
"Ceph user (cephx)")
|
|
||||||
gnuflag.StringVar(&cluster, "cluster", "ceph",
|
|
||||||
"Ceph cluster name")
|
|
||||||
gnuflag.StringVar(&cluster, "n", "ceph",
|
|
||||||
"Ceph cluster name")
|
|
||||||
gnuflag.StringVar(&keyring, "keyring", "/etc/ceph/ceph.client.admin.keyring",
|
|
||||||
"Ceph user keyring")
|
|
||||||
gnuflag.StringVar(&keyring, "k", "/etc/ceph/ceph.client.admin.keyring",
|
|
||||||
"Ceph user keyring")
|
|
||||||
gnuflag.StringVar(&config, "config", "/etc/ceph/ceph.conf",
|
|
||||||
"Ceph config")
|
|
||||||
gnuflag.StringVar(&config, "c", "/etc/ceph/ceph.conf",
|
|
||||||
"Ceph config")
|
|
||||||
gnuflag.StringVar(&pool, "pool", "bench",
|
|
||||||
"Ceph pool")
|
|
||||||
gnuflag.StringVar(&pool, "p", "bench",
|
|
||||||
"Ceph pool")
|
|
||||||
gnuflag.Parse(true)
|
|
||||||
|
|
||||||
if _, err := os.Stat(config); os.IsNotExist(err) {
|
|
||||||
log.Fatalf("Congif file not exists. Error: %v\n", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, err := os.Stat(keyring); os.IsNotExist(err) {
|
|
||||||
log.Fatalf("Keyring file not exists. Error: %v\n", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
conn, err := rados.NewConnWithClusterAndUser(cluster, user)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalf("Can't create connection with cluster:%v and user:%v. Error: %v\n", cluster, user, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := conn.ReadConfigFile(config); err != nil {
|
|
||||||
log.Fatalf("Can't read config file. Error: err\n", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := conn.SetConfigOption("keyring", keyring); err != nil {
|
|
||||||
log.Fatalf("Can't set config option. Error: err\n", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := conn.Connect(); err != nil {
|
|
||||||
log.Fatalf("Failed to connect cluster. Error: %v\n", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
ioctx, err := conn.OpenIOContext(pool)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalf("Can't open pool %v. Error: %v\n", pool, err)
|
|
||||||
}
|
|
||||||
stats, _ := ioctx.GetPoolStats()
|
|
||||||
conn.Shutdown()
|
|
||||||
log.Println(stats)
|
log.Println(stats)
|
||||||
blocksize, err := bytefmt.ToBytes(bs)
|
blocksize, err := bytefmt.ToBytes(params.bs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("Can't convert defined block size. 4K block size will be used\n")
|
log.Println("Can't convert defined block size. 4K block size will be used\n")
|
||||||
blocksize = 4096
|
blocksize = 4096
|
||||||
}
|
}
|
||||||
log.Printf("%v\n", blocksize)
|
log.Printf("%v\n", blocksize)
|
||||||
|
var buffs [][]byte
|
||||||
|
for i :=0; i < 2 * params.threads_count; i++ {
|
||||||
|
buffs = append(buffs, make([]byte, blocksize))
|
||||||
|
}
|
||||||
|
for num := range buffs {
|
||||||
|
_, err := rand.Read(buffs[num])
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmt.Printf("%+v\n", buffs)
|
||||||
|
fmt.Println(len(buffs))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/ceph/go-ceph/rados"
|
||||||
|
"os"
|
||||||
|
"log"
|
||||||
|
)
|
||||||
|
|
||||||
|
type cephconnection struct {
|
||||||
|
conn *rados.Conn
|
||||||
|
ioctx *rados.IOContext
|
||||||
|
}
|
||||||
|
|
||||||
|
func connectioninit(params *Params) *cephconnection {
|
||||||
|
cephconn := &cephconnection{}
|
||||||
|
var err error
|
||||||
|
if _, err := os.Stat(params.config); os.IsNotExist(err) {
|
||||||
|
log.Fatalf("Congif file not exists. Error: %v\n", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := os.Stat(params.keyring); os.IsNotExist(err) {
|
||||||
|
log.Fatalf("Keyring file not exists. Error: %v\n", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
cephconn.conn, err = rados.NewConnWithClusterAndUser(params.cluster, params.user)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Can't create connection with cluster:%v and user:%v. Error: %v\n", params.cluster, params.user, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = cephconn.conn.ReadConfigFile(params.config); err != nil {
|
||||||
|
log.Fatalf("Can't read config file. Error: err\n", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = cephconn.conn.SetConfigOption("keyring", params.keyring); err != nil {
|
||||||
|
log.Fatalf("Can't set config option. Error: err\n", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = cephconn.conn.Connect(); err != nil {
|
||||||
|
log.Fatalf("Failed to connect cluster. Error: %v\n", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
cephconn.ioctx, err = cephconn.conn.OpenIOContext(params.pool)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Can't open pool %v. Error: %v\n", params.pool, err)
|
||||||
|
}
|
||||||
|
return cephconn
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
"log"
|
||||||
|
"github.com/juju/gnuflag"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Params struct {
|
||||||
|
duration time.Duration
|
||||||
|
threads_count int
|
||||||
|
parallel bool
|
||||||
|
bs, cluster, user, keyring, config, pool, mode, define string
|
||||||
|
}
|
||||||
|
|
||||||
|
func Route () Params {
|
||||||
|
params := Params{}
|
||||||
|
gnuflag.DurationVar(¶ms.duration, "duration", 30,
|
||||||
|
"Time limit for each test in seconds")
|
||||||
|
gnuflag.DurationVar(¶ms.duration, "d", 30,
|
||||||
|
"Time limit for each test in seconds")
|
||||||
|
gnuflag.StringVar(¶ms.bs, "blocksize", "4K",
|
||||||
|
"Block size in format KB = K = KiB = 1024 MB = M = MiB = 1024 * K GB = G = GiB = 1024 * M TB = T = TiB = 1024 * G")
|
||||||
|
gnuflag.StringVar(¶ms.bs, "s", "4K",
|
||||||
|
"Block size in format KB = K = KiB = 1024 MB = M = MiB = 1024 * K GB = G = GiB = 1024 * M TB = T = TiB = 1024 * G")
|
||||||
|
gnuflag.StringVar(¶ms.user, "user", "admin",
|
||||||
|
"Ceph user (cephx)")
|
||||||
|
gnuflag.StringVar(¶ms.user, "u", "client.admin",
|
||||||
|
"Ceph user (cephx)")
|
||||||
|
gnuflag.StringVar(¶ms.cluster, "cluster", "ceph",
|
||||||
|
"Ceph cluster name")
|
||||||
|
gnuflag.StringVar(¶ms.cluster, "n", "ceph",
|
||||||
|
"Ceph cluster name")
|
||||||
|
gnuflag.StringVar(¶ms.keyring, "keyring", "/etc/ceph/ceph.client.admin.keyring",
|
||||||
|
"Ceph user keyring")
|
||||||
|
gnuflag.StringVar(¶ms.keyring, "k", "/etc/ceph/ceph.client.admin.keyring",
|
||||||
|
"Ceph user keyring")
|
||||||
|
gnuflag.StringVar(¶ms.config, "config", "/etc/ceph/ceph.conf",
|
||||||
|
"Ceph config")
|
||||||
|
gnuflag.StringVar(¶ms.config, "c", "/etc/ceph/ceph.conf",
|
||||||
|
"Ceph config")
|
||||||
|
gnuflag.StringVar(¶ms.pool, "pool", "bench",
|
||||||
|
"Ceph pool")
|
||||||
|
gnuflag.StringVar(¶ms.pool, "p", "bench",
|
||||||
|
"Ceph pool")
|
||||||
|
gnuflag.StringVar(¶ms.mode, "mode", "osd",
|
||||||
|
"Mode osd or host")
|
||||||
|
gnuflag.StringVar(¶ms.mode, "m", "osd",
|
||||||
|
"Mode osd or host")
|
||||||
|
gnuflag.StringVar(¶ms.define, "define", "",
|
||||||
|
"Define specifically osd or host. osd.X or ceph-host-X")
|
||||||
|
gnuflag.IntVar(¶ms.threads_count, "threads", 1,
|
||||||
|
"Threads count")
|
||||||
|
gnuflag.IntVar(¶ms.threads_count, "t", 1,
|
||||||
|
"Threads count on each osd")
|
||||||
|
gnuflag.BoolVar(¶ms.parallel, "parallel", false,
|
||||||
|
"Do test all osd in parallel mode")
|
||||||
|
gnuflag.Parse(true)
|
||||||
|
if params.mode == "osd" && len(params.define) != 0 {
|
||||||
|
if i := strings.HasPrefix(params.define, "osd."); i != true {
|
||||||
|
log.Fatalln("Define correct osd in format osd.X")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return params
|
||||||
|
}
|
Loading…
Reference in New Issue