mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
e2e: test watch exec in v3 etcdctl
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com>
This commit is contained in:
parent
e89fc20542
commit
25222c22d9
@ -780,32 +780,32 @@ func authTestWatch(cx ctlCtx) {
|
||||
puts []kv
|
||||
args []string
|
||||
|
||||
wkv []kv
|
||||
wkv []kvExec
|
||||
want bool
|
||||
}{
|
||||
{ // watch 1 key, should be successful
|
||||
[]kv{{"key", "value"}},
|
||||
[]string{"key", "--rev", "1"},
|
||||
[]kv{{"key", "value"}},
|
||||
[]kvExec{{key: "key", val: "value"}},
|
||||
true,
|
||||
},
|
||||
{ // watch 3 keys by range, should be successful
|
||||
[]kv{{"key1", "val1"}, {"key3", "val3"}, {"key2", "val2"}},
|
||||
[]string{"key", "key3", "--rev", "1"},
|
||||
[]kv{{"key1", "val1"}, {"key2", "val2"}},
|
||||
[]kvExec{{key: "key1", val: "val1"}, {key: "key2", val: "val2"}},
|
||||
true,
|
||||
},
|
||||
|
||||
{ // watch 1 key, should not be successful
|
||||
[]kv{},
|
||||
[]string{"key5", "--rev", "1"},
|
||||
[]kv{},
|
||||
[]kvExec{},
|
||||
false,
|
||||
},
|
||||
{ // watch 3 keys by range, should not be successful
|
||||
[]kv{},
|
||||
[]string{"key", "key6", "--rev", "1"},
|
||||
[]kv{},
|
||||
[]kvExec{},
|
||||
false,
|
||||
},
|
||||
}
|
||||
|
@ -28,16 +28,17 @@ func makeMirrorTest(cx ctlCtx) {
|
||||
var (
|
||||
flags = []string{}
|
||||
kvs = []kv{{"key1", "val1"}, {"key2", "val2"}, {"key3", "val3"}}
|
||||
kvs2 = []kvExec{{key: "key1", val: "val1"}, {key: "key2", val: "val2"}, {key: "key3", val: "val3"}}
|
||||
prefix = "key"
|
||||
)
|
||||
testMirrorCommand(cx, flags, kvs, kvs, prefix, prefix)
|
||||
testMirrorCommand(cx, flags, kvs, kvs2, prefix, prefix)
|
||||
}
|
||||
|
||||
func makeMirrorModifyDestPrefixTest(cx ctlCtx) {
|
||||
var (
|
||||
flags = []string{"--prefix", "o_", "--dest-prefix", "d_"}
|
||||
kvs = []kv{{"o_key1", "val1"}, {"o_key2", "val2"}, {"o_key3", "val3"}}
|
||||
kvs2 = []kv{{"d_key1", "val1"}, {"d_key2", "val2"}, {"d_key3", "val3"}}
|
||||
kvs2 = []kvExec{{key: "d_key1", val: "val1"}, {key: "d_key2", val: "val2"}, {key: "d_key3", val: "val3"}}
|
||||
srcprefix = "o_"
|
||||
destprefix = "d_"
|
||||
)
|
||||
@ -48,7 +49,7 @@ func makeMirrorNoDestPrefixTest(cx ctlCtx) {
|
||||
var (
|
||||
flags = []string{"--prefix", "o_", "--no-dest-prefix"}
|
||||
kvs = []kv{{"o_key1", "val1"}, {"o_key2", "val2"}, {"o_key3", "val3"}}
|
||||
kvs2 = []kv{{"key1", "val1"}, {"key2", "val2"}, {"key3", "val3"}}
|
||||
kvs2 = []kvExec{{key: "key1", val: "val1"}, {key: "key2", val: "val2"}, {key: "key3", val: "val3"}}
|
||||
srcprefix = "o_"
|
||||
destprefix = "key"
|
||||
)
|
||||
@ -56,7 +57,7 @@ func makeMirrorNoDestPrefixTest(cx ctlCtx) {
|
||||
testMirrorCommand(cx, flags, kvs, kvs2, srcprefix, destprefix)
|
||||
}
|
||||
|
||||
func testMirrorCommand(cx ctlCtx, flags []string, sourcekvs, destkvs []kv, srcprefix, destprefix string) {
|
||||
func testMirrorCommand(cx ctlCtx, flags []string, sourcekvs []kv, destkvs []kvExec, srcprefix, destprefix string) {
|
||||
// set up another cluster to mirror with
|
||||
mirrorcfg := configAutoTLS
|
||||
mirrorcfg.clusterSize = 1
|
||||
|
@ -38,32 +38,62 @@ func TestCtlV3WatchInteractivePeerTLS(t *testing.T) {
|
||||
testCtl(t, watchTest, withInteractive(), withCfg(configPeerTLS))
|
||||
}
|
||||
|
||||
type kvExec struct {
|
||||
key, val string
|
||||
execOutput string
|
||||
}
|
||||
|
||||
func watchTest(cx ctlCtx) {
|
||||
tests := []struct {
|
||||
puts []kv
|
||||
args []string
|
||||
|
||||
wkv []kv
|
||||
wkv []kvExec
|
||||
}{
|
||||
{ // watch 1 key
|
||||
[]kv{{"sample", "value"}},
|
||||
[]string{"sample", "--rev", "1"},
|
||||
[]kvExec{{key: "sample", val: "value"}},
|
||||
},
|
||||
{ // watch 1 key with "echo watch event received"
|
||||
[]kv{{"sample", "value"}},
|
||||
[]string{"sample", "--rev", "1", "--", "echo", "watch event received"},
|
||||
[]kvExec{{key: "sample", val: "value", execOutput: "watch event received"}},
|
||||
},
|
||||
{ // watch 1 key with "echo watch event received"
|
||||
[]kv{{"sample", "value"}},
|
||||
[]string{"--rev", "1", "sample", "--", "echo", "watch event received"},
|
||||
[]kvExec{{key: "sample", val: "value", execOutput: "watch event received"}},
|
||||
},
|
||||
{ // watch 1 key with "echo \"Hello World!\""
|
||||
[]kv{{"sample", "value"}},
|
||||
[]string{"--rev", "1", "sample", "--", "echo", "\"Hello World!\""},
|
||||
[]kvExec{{key: "sample", val: "value", execOutput: "Hello World!"}},
|
||||
},
|
||||
{ // watch 1 key with "echo watch event received"
|
||||
[]kv{{"sample", "value"}},
|
||||
[]string{"sample", "samplx", "--rev", "1", "--", "echo", "watch event received"},
|
||||
[]kvExec{{key: "sample", val: "value", execOutput: "watch event received"}},
|
||||
},
|
||||
{ // watch 1 key with "echo watch event received"
|
||||
[]kv{{"sample", "value"}},
|
||||
[]string{"sample", "--rev", "1", "samplx", "--", "echo", "watch event received"},
|
||||
[]kvExec{{key: "sample", val: "value", execOutput: "watch event received"}},
|
||||
},
|
||||
{ // watch 3 keys by prefix
|
||||
[]kv{{"key1", "val1"}, {"key2", "val2"}, {"key3", "val3"}},
|
||||
[]string{"key", "--rev", "1", "--prefix"},
|
||||
[]kv{{"key1", "val1"}, {"key2", "val2"}, {"key3", "val3"}},
|
||||
[]kvExec{{key: "key1", val: "val1"}, {key: "key2", val: "val2"}, {key: "key3", val: "val3"}},
|
||||
},
|
||||
{ // watch by revision
|
||||
[]kv{{"etcd", "revision_1"}, {"etcd", "revision_2"}, {"etcd", "revision_3"}},
|
||||
[]string{"etcd", "--rev", "2"},
|
||||
[]kv{{"etcd", "revision_2"}, {"etcd", "revision_3"}},
|
||||
[]kvExec{{key: "etcd", val: "revision_2"}, {key: "etcd", val: "revision_3"}},
|
||||
},
|
||||
{ // watch 3 keys by range
|
||||
[]kv{{"key1", "val1"}, {"key3", "val3"}, {"key2", "val2"}},
|
||||
[]string{"key", "key3", "--rev", "1"},
|
||||
[]kv{{"key1", "val1"}, {"key2", "val2"}},
|
||||
[]kvExec{{key: "key1", val: "val1"}, {key: "key2", val: "val2"}},
|
||||
},
|
||||
}
|
||||
|
||||
@ -97,7 +127,7 @@ func setupWatchArgs(cx ctlCtx, args []string) []string {
|
||||
return cmdArgs
|
||||
}
|
||||
|
||||
func ctlV3Watch(cx ctlCtx, args []string, kvs ...kv) error {
|
||||
func ctlV3Watch(cx ctlCtx, args []string, kvs ...kvExec) error {
|
||||
cmdArgs := setupWatchArgs(cx, args)
|
||||
|
||||
proc, err := spawnCmd(cmdArgs)
|
||||
@ -119,6 +149,11 @@ func ctlV3Watch(cx ctlCtx, args []string, kvs ...kv) error {
|
||||
if _, err = proc.Expect(elem.val); err != nil {
|
||||
return err
|
||||
}
|
||||
if elem.execOutput != "" {
|
||||
if _, err = proc.Expect(elem.execOutput); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
return proc.Stop()
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user