49 lines
1.4 KiB
Go
49 lines
1.4 KiB
Go
|
// +build kvdb_etcd
|
||
|
|
||
|
package kvdb
|
||
|
|
||
|
import (
|
||
|
"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(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{
|
||
|
Host: etcdConfig.Host,
|
||
|
User: etcdConfig.User,
|
||
|
Pass: etcdConfig.Pass,
|
||
|
CertFile: etcdConfig.CertFile,
|
||
|
KeyFile: etcdConfig.KeyFile,
|
||
|
InsecureSkipVerify: etcdConfig.InsecureSkipVerify,
|
||
|
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, name string) (Backend, func(), error) {
|
||
|
empty := func() {}
|
||
|
|
||
|
config, cleanup, err := etcd.NewEmbeddedEtcdInstance(path)
|
||
|
if err != nil {
|
||
|
return nil, empty, err
|
||
|
}
|
||
|
|
||
|
backend, err := Open(EtcdBackendName, *config)
|
||
|
if err != nil {
|
||
|
cleanup()
|
||
|
return nil, empty, err
|
||
|
}
|
||
|
|
||
|
return backend, cleanup, nil
|
||
|
}
|