2019-02-14 17:35:18 +03:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
2019-02-14 17:59:40 +03:00
|
|
|
"code.cloudfoundry.org/bytefmt"
|
|
|
|
"github.com/juju/gnuflag"
|
|
|
|
"log"
|
2019-02-14 17:35:18 +03:00
|
|
|
"strings"
|
2019-02-26 18:09:59 +03:00
|
|
|
"time"
|
2019-02-14 17:35:18 +03:00
|
|
|
)
|
|
|
|
|
2019-02-19 10:16:11 +03:00
|
|
|
func Route() Params {
|
2019-02-14 17:35:18 +03:00
|
|
|
params := Params{}
|
2019-02-26 18:09:59 +03:00
|
|
|
gnuflag.DurationVar(¶ms.duration, "duration", 30*time.Second,
|
2019-02-14 17:35:18 +03:00
|
|
|
"Time limit for each test in seconds")
|
2019-02-26 18:09:59 +03:00
|
|
|
gnuflag.DurationVar(¶ms.duration, "d", 30*time.Second,
|
2019-02-14 17:35:18 +03:00
|
|
|
"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")
|
2019-02-22 17:58:31 +03:00
|
|
|
gnuflag.StringVar(¶ms.os, "objectsize", "4M",
|
|
|
|
"Object 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.os, "o", "4M",
|
|
|
|
"Object size in format KB = K = KiB = 1024 MB = M = MiB = 1024 * K GB = G = GiB = 1024 * M TB = T = TiB = 1024 * G")
|
2019-02-14 17:35:18 +03:00
|
|
|
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.define, "define", "",
|
2019-02-19 18:25:44 +03:00
|
|
|
"Define specifically osd or host. osd.X or ceph-host-X")
|
2019-02-28 14:19:33 +03:00
|
|
|
gnuflag.Uint64Var(¶ms.threadsCount, "threads", 1,
|
2019-02-14 17:35:18 +03:00
|
|
|
"Threads count")
|
2019-02-28 14:19:33 +03:00
|
|
|
gnuflag.Uint64Var(¶ms.threadsCount, "t", 1,
|
2019-02-14 17:35:18 +03:00
|
|
|
"Threads count on each osd")
|
|
|
|
gnuflag.BoolVar(¶ms.parallel, "parallel", false,
|
|
|
|
"Do test all osd in parallel mode")
|
|
|
|
gnuflag.Parse(true)
|
2019-02-22 17:58:31 +03:00
|
|
|
|
2019-02-14 17:35:18 +03:00
|
|
|
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")
|
|
|
|
}
|
|
|
|
}
|
2019-02-22 17:58:31 +03:00
|
|
|
blocksize, err := bytefmt.ToBytes(params.bs)
|
2019-02-28 14:19:33 +03:00
|
|
|
params.blocksize = blocksize
|
2019-02-14 17:59:40 +03:00
|
|
|
if err != nil {
|
2019-02-19 18:25:44 +03:00
|
|
|
log.Println("Can't convert defined block size. 4K block size will be used")
|
2019-02-14 17:59:40 +03:00
|
|
|
params.blocksize = 4096
|
|
|
|
}
|
2019-02-27 13:46:44 +03:00
|
|
|
|
2019-02-22 17:58:31 +03:00
|
|
|
objsize, err := bytefmt.ToBytes(params.os)
|
2019-02-28 14:19:33 +03:00
|
|
|
params.objectsize = objsize
|
2019-02-22 17:58:31 +03:00
|
|
|
if err != nil {
|
|
|
|
log.Println("Can't convert defined block size. 4K block size will be used")
|
|
|
|
params.objectsize = 4194304
|
|
|
|
}
|
2019-02-28 12:23:07 +03:00
|
|
|
if params.blocksize > params.objectsize {
|
|
|
|
log.Fatalf("Current block size: %v\nCurrent object size: %v\nObject must be bigger or equal than block size", params.blocksize, params.objectsize)
|
|
|
|
}
|
|
|
|
if params.objectsize/params.blocksize < 2 {
|
|
|
|
log.Printf("Current block size: %v\nCurrent object size: %v\nOffset always will be 0", params.blocksize, params.objectsize)
|
2019-02-22 17:58:31 +03:00
|
|
|
}
|
2019-02-19 10:16:11 +03:00
|
|
|
return params
|
2019-02-14 17:59:40 +03:00
|
|
|
}
|