Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "context"
- "fmt"
- "sync"
- "google.golang.org/grpc"
- "github.com/coreos/etcd/clientv3"
- )
- func test(c *clientv3.Client, wg *sync.WaitGroup, i int) {
- defer wg.Done()
- ctx := context.TODO()
- role := fmt.Sprintf("test-role-%d", i)
- user := fmt.Sprintf("test-user-%d", i)
- _, err := c.RoleAdd(ctx, role)
- if err != nil {
- panic(err)
- }
- _, err = c.RoleGrantPermission(ctx, role, "", clientv3.GetPrefixRangeEnd(""), clientv3.PermissionType(clientv3.PermReadWrite))
- if err != nil {
- panic(err)
- }
- _, err = c.UserAdd(ctx, user, "123")
- if err != nil {
- panic(err)
- }
- //for _ = range time.Tick(time.Second) {
- key := "test-key"
- val := "testval"
- _, err = c.Txn(ctx).If(
- clientv3.Compare(clientv3.Value(key), "=", val),
- ).Else(
- clientv3.OpPut(key, val),
- ).Commit()
- if err != nil {
- panic(err)
- }
- //}
- }
- func main() {
- c, err := clientv3.New(clientv3.Config{
- Endpoints: []string{"127.0.0.1:2379"},
- Username: "root",
- Password: "root",
- DialOptions: []grpc.DialOption{grpc.WithBlock()},
- })
- if err != nil {
- panic(err)
- }
- concurreny := 10
- wg := &sync.WaitGroup{}
- wg.Add(concurreny)
- for i := 0; i < concurreny; i++ {
- go test(c, wg, i)
- }
- wg.Wait()
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement