cli

package
v0.0.0-...-4a3586f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 12, 2016 License: Apache-2.0 Imports: 41 Imported by: 0

Documentation

Overview

Example (Basic)
c := newCLITest()
defer c.stop()

c.Run("kv put a 1 b 2 c 3")
c.Run("kv scan")
c.Run("kv revscan")
c.Run("kv del a c")
c.Run("kv get a")
c.Run("kv get b")
c.Run("kv inc c 1")
c.Run("kv inc c 10")
c.Run("kv inc c 100")
c.Run("kv inc c -- -60")
c.Run("kv inc c -- -9")
c.Run("kv scan")
c.Run("kv revscan")
c.Run("kv inc c b")
Output:

kv put a 1 b 2 c 3
kv scan
"a"	"1"
"b"	"2"
"c"	"3"
3 result(s)
kv revscan
"c"	"3"
"b"	"2"
"a"	"1"
3 result(s)
kv del a c
kv get a
"a" not found
kv get b
"2"
kv inc c 1
1
kv inc c 10
11
kv inc c 100
111
kv inc c -- -60
51
kv inc c -- -9
42
kv scan
"b"	"2"
"c"	42
2 result(s)
kv revscan
"c"	42
"b"	"2"
2 result(s)
kv inc c b
invalid increment: b: strconv.ParseInt: parsing "b": invalid syntax
Example (Cput)
c := newCLITest()
defer c.stop()

c.Run("kv put a 1 b 2 c 3 d 4")
c.Run("kv scan")
c.Run("kv cput e 5")
c.Run("kv cput b 3 2")
c.Run("kv scan")
Output:

kv put a 1 b 2 c 3 d 4
kv scan
"a"	"1"
"b"	"2"
"c"	"3"
"d"	"4"
4 result(s)
kv cput e 5
kv cput b 3 2
kv scan
"a"	"1"
"b"	"3"
"c"	"3"
"d"	"4"
"e"	"5"
5 result(s)
Example (Insecure)
c := cliTest{cleanupFunc: func() {}}
c.TestServer = &server.TestServer{}
c.Ctx = server.NewTestContext()
c.Ctx.Insecure = true
if err := c.Start(); err != nil {
	log.Fatalf("Could not start server: %v", err)
}
defer c.stop()

c.Run("kv --insecure put a 1 b 2")
c.Run("kv --insecure scan")
Output:

kv --insecure put a 1 b 2
kv --insecure scan
"a"	"1"
"b"	"2"
2 result(s)
Example (Logging)
c := newCLITest()
defer c.stop()

c.Run("kv --alsologtostderr=false scan")
c.Run("kv --log-backtrace-at=foo.go:1 scan")
c.Run("kv --log-dir='' scan")
c.Run("kv --logtostderr=true scan")
c.Run("kv --verbosity=0 scan")
c.Run("kv --vmodule=foo=1 scan")
Output:

kv --alsologtostderr=false scan
0 result(s)
kv --log-backtrace-at=foo.go:1 scan
0 result(s)
kv --log-dir='' scan
0 result(s)
kv --logtostderr=true scan
0 result(s)
kv --verbosity=0 scan
0 result(s)
kv --vmodule=foo=1 scan
0 result(s)
Example (Max_results)
c := newCLITest()
defer c.stop()

c.Run("kv put a 1 b 2 c 3 d 4")
c.Run("kv scan --max-results=3")
c.Run("kv revscan --max-results=2")
c.Run("range split c")
c.Run("range split d")
c.Run("range ls --max-results=2")
Output:

kv put a 1 b 2 c 3 d 4
kv scan --max-results=3
"a"	"1"
"b"	"2"
"c"	"3"
3 result(s)
kv revscan --max-results=2
"d"	"4"
"c"	"3"
2 result(s)
range split c
range split d
range ls --max-results=2
/Min-"c" [1]
	0: node-id=1 store-id=1
"c"-"d" [5]
	0: node-id=1 store-id=1
2 result(s)
Example (Node)
c := newCLITest()
defer c.stop()

// Refresh time series data, which is required to retrieve stats.
if err := c.TestServer.WriteSummaries(); err != nil {
	log.Fatalf("Couldn't write stats summaries: %s", err)
}

c.Run("node ls")
c.Run("node status 10000")
Output:

node ls
+----+
| id |
+----+
|  1 |
+----+
node status 10000
Error: node 10000 doesn't exist
Example (Quoted)
c := newCLITest()
defer c.stop()

c.Run(`kv put a\x00 日本語`)                                  // UTF-8 input text
c.Run(`kv put a\x01 \u65e5\u672c\u8a9e`)                   // explicit Unicode code points
c.Run(`kv put a\x02 \U000065e5\U0000672c\U00008a9e`)       // explicit Unicode code points
c.Run(`kv put a\x03 \xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e`) // explicit UTF-8 bytes
c.Run(`kv scan`)
c.Run(`kv get a\x00`)
c.Run(`kv del a\x00`)
c.Run(`kv inc 1\x01`)
c.Run(`kv get 1\x01`)
Output:

kv put a\x00 日本語
kv put a\x01 \u65e5\u672c\u8a9e
kv put a\x02 \U000065e5\U0000672c\U00008a9e
kv put a\x03 \xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e
kv scan
"a\x00"	"日本語"
"a\x01"	"日本語"
"a\x02"	"日本語"
"a\x03"	"日本語"
4 result(s)
kv get a\x00
"日本語"
kv del a\x00
kv inc 1\x01
1
kv get 1\x01
1
Example (Ranges)
c := newCLITest()
defer c.stop()

c.Run("kv put a 1 b 2 c 3 d 4")
c.Run("kv scan")
c.Run("kv revscan")
c.Run("range split c")
c.Run("range ls")
c.Run("kv scan")
c.Run("kv revscan")
c.Run("range merge b")
c.Run("range ls")
c.Run("kv scan")
c.Run("kv revscan")
c.Run("kv delrange a c")
c.Run("kv scan")
Output:

kv put a 1 b 2 c 3 d 4
kv scan
"a"	"1"
"b"	"2"
"c"	"3"
"d"	"4"
4 result(s)
kv revscan
"d"	"4"
"c"	"3"
"b"	"2"
"a"	"1"
4 result(s)
range split c
range ls
/Min-"c" [1]
	0: node-id=1 store-id=1
"c"-/Table/11 [5]
	0: node-id=1 store-id=1
/Table/11-/Table/12 [2]
	0: node-id=1 store-id=1
/Table/12-/Table/13 [3]
	0: node-id=1 store-id=1
/Table/13-/Max [4]
	0: node-id=1 store-id=1
5 result(s)
kv scan
"a"	"1"
"b"	"2"
"c"	"3"
"d"	"4"
4 result(s)
kv revscan
"d"	"4"
"c"	"3"
"b"	"2"
"a"	"1"
4 result(s)
range merge b
range ls
/Min-/Table/11 [1]
	0: node-id=1 store-id=1
/Table/11-/Table/12 [2]
	0: node-id=1 store-id=1
/Table/12-/Table/13 [3]
	0: node-id=1 store-id=1
/Table/13-/Max [4]
	0: node-id=1 store-id=1
4 result(s)
kv scan
"a"	"1"
"b"	"2"
"c"	"3"
"d"	"4"
4 result(s)
kv revscan
"d"	"4"
"c"	"3"
"b"	"2"
"a"	"1"
4 result(s)
kv delrange a c
kv scan
"c"	"3"
"d"	"4"
2 result(s)
Example (Sql)
c := newCLITest()
defer c.stop()

c.RunWithArgs([]string{"sql", "-e", "create database t; create table t.f (x int, y int); insert into t.f values (42, 69)"})
c.RunWithArgs([]string{"sql", "-e", "select 3", "select * from t.f"})
c.RunWithArgs([]string{"sql", "-e", "begin", "select 3", "commit"})
c.RunWithArgs([]string{"sql", "-e", "select * from t.f"})
c.RunWithArgs([]string{"sql", "-e", "show databases"})
c.RunWithArgs([]string{"sql", "-e", "explain select 3"})
Output:

sql -e create database t; create table t.f (x int, y int); insert into t.f values (42, 69)
OK
sql -e select 3 select * from t.f
1 row
3
3
1 row
x	y
42	69
sql -e begin select 3 commit
OK
1 row
3
3
OK
sql -e select * from t.f
1 row
x	y
42	69
sql -e show databases
2 rows
Database
system
t
sql -e explain select 3
1 row
Level	Type	Description
0	empty	-
Example (User)
c := newCLITest()
defer c.stop()

c.Run("user ls")
c.Run("user set foo --password=bar")
// Don't use get, since the output of hashedPassword is random.
// c.Run("user get foo")
c.Run("user ls")
c.Run("user rm foo")
c.Run("user ls")
Output:

user ls
+----------+
| username |
+----------+
+----------+
user set foo --password=bar
OK
user ls
+----------+
| username |
+----------+
| foo      |
+----------+
user rm foo
OK
user ls
+----------+
| username |
+----------+
+----------+
Example (Zone)
c := newCLITest()
defer c.stop()

zone100 := `replicas:
- attrs: [us-east-1a,ssd]
- attrs: [us-east-1b,ssd]
- attrs: [us-west-1b,ssd]
range_min_bytes: 8388608
range_max_bytes: 67108864
`
c.Run("zone ls")
// Call RunWithArgs to bypass the "split-by-whitespace" arg builder.
c.RunWithArgs([]string{"zone", "set", "100", zone100})
c.Run("zone ls")
c.Run("zone get 100")
c.Run("zone rm 100")
c.Run("zone ls")
Output:

zone ls
zone set 100 replicas:
- attrs: [us-east-1a,ssd]
- attrs: [us-east-1b,ssd]
- attrs: [us-west-1b,ssd]
range_min_bytes: 8388608
range_max_bytes: 67108864

OK
zone ls
Object 100:
replicas:
- attrs: [us-east-1a, ssd]
- attrs: [us-east-1b, ssd]
- attrs: [us-west-1b, ssd]
range_min_bytes: 8388608
range_max_bytes: 67108864
gc:
  ttlseconds: 0

zone get 100
replicas:
- attrs: [us-east-1a, ssd]
- attrs: [us-east-1b, ssd]
- attrs: [us-west-1b, ssd]
range_min_bytes: 8388608
range_max_bytes: 67108864
gc:
  ttlseconds: 0

zone rm 100
OK
zone ls

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Run

func Run(args []string) error

Run ...

Types

type Context

type Context struct {
	// Embed the server context.
	server.Context

	// OneShotSQL indicates the SQL client should run the command-line
	// statement(s) and terminate directly, without presenting a REPL to
	// the user.
	OneShotSQL bool
}

Context contains global settings for the command-line client.

func NewContext

func NewContext() *Context

NewContext returns a Context with default values.

func (*Context) InitDefaults

func (ctx *Context) InitDefaults()

InitDefaults sets up the default values for a Context.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL