Explorar o código

Merge pull request #5094 from gyuho/watch_range_example

*: add more examples to clientv3, pkg/adt
Gyu-Ho Lee %!s(int64=9) %!d(string=hai) anos
pai
achega
376234f196

+ 17 - 0
clientv3/example_maintenence_test.go

@@ -49,3 +49,20 @@ func ExampleMaintenance_status() {
 	// endpoint: localhost:22379 / IsLeader: false
 	// endpoint: localhost:32379 / IsLeader: true
 }
+
+func ExampleMaintenance_defragment() {
+	for _, ep := range endpoints {
+		cli, err := clientv3.New(clientv3.Config{
+			Endpoints:   []string{ep},
+			DialTimeout: dialTimeout,
+		})
+		if err != nil {
+			log.Fatal(err)
+		}
+		defer cli.Close()
+
+		if _, err = cli.Defragment(context.TODO(), ep); err != nil {
+			log.Fatal(err)
+		}
+	}
+}

+ 24 - 2
clientv3/example_watch_test.go

@@ -41,7 +41,7 @@ func ExampleWatcher_watch() {
 	// PUT "foo" : "bar"
 }
 
-func ExampleWatcher_watchPrefix() {
+func ExampleWatcher_watchWithPrefix() {
 	cli, err := clientv3.New(clientv3.Config{
 		Endpoints:   endpoints,
 		DialTimeout: dialTimeout,
@@ -60,7 +60,29 @@ func ExampleWatcher_watchPrefix() {
 	// PUT "foo1" : "bar"
 }
 
-func ExampleWatcher_watchProgressNotify() {
+func ExampleWatcher_watchWithRange() {
+	cli, err := clientv3.New(clientv3.Config{
+		Endpoints:   endpoints,
+		DialTimeout: dialTimeout,
+	})
+	if err != nil {
+		log.Fatal(err)
+	}
+	defer cli.Close()
+
+	// watches within ['foo1', 'foo4'), in lexicographical order
+	rch := cli.Watch(context.Background(), "foo1", clientv3.WithRange("foo4"))
+	for wresp := range rch {
+		for _, ev := range wresp.Events {
+			fmt.Printf("%s %q : %q\n", ev.Type, ev.Kv.Key, ev.Kv.Value)
+		}
+	}
+	// PUT "foo1" : "bar"
+	// PUT "foo2" : "bar"
+	// PUT "foo3" : "bar"
+}
+
+func ExampleWatcher_watchWithProgressNotify() {
 	cli, err := clientv3.New(clientv3.Config{
 		Endpoints:   endpoints,
 		DialTimeout: dialTimeout,

+ 37 - 0
pkg/adt/example_test.go

@@ -0,0 +1,37 @@
+// Copyright 2016 CoreOS, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package adt_test
+
+import (
+	"fmt"
+
+	"github.com/coreos/etcd/pkg/adt"
+)
+
+func Example() {
+	ivt := &adt.IntervalTree{}
+
+	ivt.Insert(adt.NewInt64Interval(1, 3), 123)
+	ivt.Insert(adt.NewInt64Interval(9, 13), 456)
+	ivt.Insert(adt.NewInt64Interval(7, 20), 789)
+
+	rs := ivt.Stab(adt.NewInt64Point(10))
+	for _, v := range rs {
+		fmt.Printf("Overlapping range: %+v\n", v)
+	}
+	// output:
+	// Overlapping range: &{Ivl:{Begin:7 End:20} Val:789}
+	// Overlapping range: &{Ivl:{Begin:9 End:13} Val:456}
+}