1package physical 2 3import ( 4 "fmt" 5 "log" 6 "os" 7 "testing" 8 "time" 9 10 "github.com/samuel/go-zookeeper/zk" 11) 12 13func TestZookeeperBackend(t *testing.T) { 14 addr := os.Getenv("ZOOKEEPER_ADDR") 15 if addr == "" { 16 t.SkipNow() 17 } 18 19 client, _, err := zk.Connect([]string{addr}, time.Second) 20 21 if err != nil { 22 t.Fatalf("err: %v", err) 23 } 24 25 randPath := fmt.Sprintf("/vault-%d", time.Now().Unix()) 26 acl := zk.WorldACL(zk.PermAll) 27 _, err = client.Create(randPath, []byte("hi"), int32(0), acl) 28 29 if err != nil { 30 t.Fatalf("err: %v", err) 31 } 32 33 defer func() { 34 client.Delete(randPath+"/foo/bar/baz", -1) 35 client.Delete(randPath+"/foo/bar", -1) 36 client.Delete(randPath+"/foo", -1) 37 client.Delete(randPath, -1) 38 client.Close() 39 }() 40 41 logger := log.New(os.Stderr, "", log.LstdFlags) 42 b, err := NewBackend("zookeeper", logger, map[string]string{ 43 "address": addr + "," + addr, 44 "path": randPath, 45 }) 46 if err != nil { 47 t.Fatalf("err: %s", err) 48 } 49 50 testBackend(t, b) 51 testBackend_ListPrefix(t, b) 52} 53 54func TestZookeeperHABackend(t *testing.T) { 55 addr := os.Getenv("ZOOKEEPER_ADDR") 56 if addr == "" { 57 t.SkipNow() 58 } 59 60 client, _, err := zk.Connect([]string{addr}, time.Second) 61 62 if err != nil { 63 t.Fatalf("err: %v", err) 64 } 65 66 randPath := fmt.Sprintf("/vault-ha-%d", time.Now().Unix()) 67 acl := zk.WorldACL(zk.PermAll) 68 _, err = client.Create(randPath, []byte("hi"), int32(0), acl) 69 70 if err != nil { 71 t.Fatalf("err: %v", err) 72 } 73 74 defer func() { 75 client.Delete(randPath+"/foo", -1) 76 client.Delete(randPath, -1) 77 client.Close() 78 }() 79 80 logger := log.New(os.Stderr, "", log.LstdFlags) 81 b, err := NewBackend("zookeeper", logger, map[string]string{ 82 "address": addr + "," + addr, 83 "path": randPath, 84 }) 85 if err != nil { 86 t.Fatalf("err: %s", err) 87 } 88 89 ha, ok := b.(HABackend) 90 if !ok { 91 t.Fatalf("zookeeper does not implement HABackend") 92 } 93 testHABackend(t, ha, ha) 94} 95