代码拉取完成,页面将自动刷新
package mocks
import (
"context"
"fmt"
"io/ioutil"
"net/url"
"os"
"testing"
"time"
"github.com/coreos/etcd/clientv3"
"github.com/coreos/etcd/embed"
"github.com/coreos/etcd/etcdserver/api/v3client"
"github.com/ligato/cn-infra/logging/logrus"
)
const etcdStartTimeout = 30
// Embedded ETCD instance with tmp directory for serialized key&vals and etcd client.
type Embedded struct {
tmpDir string
ETCD *embed.Etcd
client *clientv3.Client
}
// Start starts embedded ETCD.
func (embd *Embedded) Start(t *testing.T) {
dir, err := ioutil.TempDir("", "ETCD")
if err != nil {
t.Error(err)
t.FailNow()
}
cfg := embed.NewConfig()
cfg.Dir = dir
lpurl, _ := url.Parse("http://localhost:0")
lcurl, _ := url.Parse("http://localhost:0")
cfg.LPUrls = []url.URL{*lpurl}
cfg.LCUrls = []url.URL{*lcurl}
embd.ETCD, err = embed.StartEtcd(cfg)
if err != nil {
t.Error(err)
t.FailNow()
}
select {
case <-embd.ETCD.Server.ReadyNotify():
logrus.DefaultLogger().Debug("Server is ready!")
case <-time.After(etcdStartTimeout * time.Second):
embd.ETCD.Server.Stop() // trigger a shutdown
t.Error("Server took too long to start!")
t.FailNow()
}
embd.client = v3client.New(embd.ETCD.Server)
}
// Stop stops the embedded ETCD & cleanups the tmp dir.
func (embd *Embedded) Stop() {
embd.ETCD.Close()
os.RemoveAll(embd.tmpDir)
}
// CleanDs deletes all stored key-value pairs.
func (embd *Embedded) CleanDs() {
if embd.client != nil {
resp, err := embd.client.Delete(context.Background(), "", clientv3.WithPrefix())
if err != nil {
panic(err)
}
fmt.Printf("resp: %+v\n", resp)
}
}
// Client is a getter for embedded ETCD client.
func (embd *Embedded) Client() *clientv3.Client {
return embd.client
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。