2020-05-15 17:59:37 +03:00
|
|
|
// +build kvdb_etcd
|
|
|
|
|
|
|
|
package kvdb
|
|
|
|
|
|
|
|
import (
|
2020-05-25 19:08:58 +03:00
|
|
|
"context"
|
|
|
|
|
2020-05-15 17:59:37 +03:00
|
|
|
"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.
|
2021-02-09 22:19:31 +03:00
|
|
|
func GetEtcdBackend(ctx context.Context, etcdConfig *etcd.Config) (
|
2021-02-09 19:56:42 +03:00
|
|
|
Backend, error) {
|
2020-05-25 19:08:58 +03:00
|
|
|
|
2021-02-09 22:19:31 +03:00
|
|
|
return Open(EtcdBackendName, etcdConfig)
|
2020-05-15 17:59:37 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
// GetEtcdTestBackend creates an embedded etcd backend for testing
|
|
|
|
// storig the database at the passed path.
|
2021-01-06 21:40:30 +03:00
|
|
|
func GetEtcdTestBackend(path string, clientPort, peerPort uint16) (
|
|
|
|
Backend, func(), error) {
|
|
|
|
|
2020-05-15 17:59:37 +03:00
|
|
|
empty := func() {}
|
|
|
|
|
2021-01-06 21:40:30 +03:00
|
|
|
config, cleanup, err := etcd.NewEmbeddedEtcdInstance(
|
|
|
|
path, clientPort, peerPort,
|
|
|
|
)
|
2020-05-15 17:59:37 +03:00
|
|
|
if err != nil {
|
|
|
|
return nil, empty, err
|
|
|
|
}
|
|
|
|
|
2021-02-09 22:19:31 +03:00
|
|
|
backend, err := Open(EtcdBackendName, context.Background(), config)
|
2020-05-15 17:59:37 +03:00
|
|
|
if err != nil {
|
|
|
|
cleanup()
|
|
|
|
return nil, empty, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return backend, cleanup, nil
|
|
|
|
}
|