// +build kvdb_etcd package kvdb import ( "context" "github.com/lightningnetwork/lnd/channeldb/kvdb/etcd" ) // TestBackend is conditionally set to etcd when the kvdb_etcd build tag is // defined, allowing testing our database code with etcd backend. const TestBackend = EtcdBackendName // GetEtcdBackend returns an etcd backend configured according to the // passed etcdConfig. func GetEtcdBackend(ctx context.Context, prefix string, etcdConfig *EtcdConfig) (Backend, error) { // Config translation is needed here in order to keep the // etcd package fully independent from the rest of the source tree. backendConfig := etcd.BackendConfig{ Ctx: ctx, Host: etcdConfig.Host, User: etcdConfig.User, Pass: etcdConfig.Pass, CertFile: etcdConfig.CertFile, KeyFile: etcdConfig.KeyFile, InsecureSkipVerify: etcdConfig.InsecureSkipVerify, Prefix: prefix, Namespace: etcdConfig.Namespace, CollectCommitStats: etcdConfig.CollectStats, } return Open(EtcdBackendName, backendConfig) } // GetEtcdTestBackend creates an embedded etcd backend for testing // storig the database at the passed path. func GetEtcdTestBackend(path string, clientPort, peerPort uint16) ( Backend, func(), error) { empty := func() {} config, cleanup, err := etcd.NewEmbeddedEtcdInstance( path, clientPort, peerPort, ) if err != nil { return nil, empty, err } backend, err := Open(EtcdBackendName, *config) if err != nil { cleanup() return nil, empty, err } return backend, cleanup, nil }