func set(t *testing.T, e Etcd, k string, ttl time.Duration, m *msg.Service) { b, err := json.Marshal(m) if err != nil { t.Fatal(err) } path, _ := msg.PathWithWildcard(k, e.PathPrefix) e.Client.Set(ctxt, path, string(b), &etcdc.SetOptions{TTL: ttl}) }
// Records looks up records in etcd. If exact is true, it will lookup just // this name. This is used when find matches when completing SRV lookups // for instance. func (g Etcd) Records(name string, exact bool) ([]msg.Service, error) { path, star := msg.PathWithWildcard(name, g.PathPrefix) r, err := g.Get(path, true) if err != nil { return nil, err } segments := strings.Split(msg.Path(name, g.PathPrefix), "/") switch { case exact && r.Node.Dir: return nil, nil case r.Node.Dir: return g.loopNodes(r.Node.Nodes, segments, star, nil) default: return g.loopNodes([]*etcdc.Node{r.Node}, segments, false, nil) } }
func delete(t *testing.T, e Etcd, k string) { path, _ := msg.PathWithWildcard(k, e.PathPrefix) e.Client.Delete(ctxt, path, &etcdc.DeleteOptions{Recursive: false}) }