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