mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
tests: Pass logger to backend
This commit is contained in:
parent
8d8271f6d1
commit
73fc864247
@ -308,7 +308,7 @@ func saveDB(lg *zap.Logger, destDB, srcDB string, idx uint64, term uint64, desir
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
be := backend.NewDefaultBackend(destDB)
|
be := backend.NewDefaultBackend(lg, destDB)
|
||||||
defer be.Close()
|
defer be.Close()
|
||||||
ms := schema.NewMembershipBackend(lg, be)
|
ms := schema.NewMembershipBackend(lg, be)
|
||||||
if err := ms.TrimClusterFromBackend(); err != nil {
|
if err := ms.TrimClusterFromBackend(); err != nil {
|
||||||
|
@ -57,7 +57,7 @@ func DefragData(dataDir string) error {
|
|||||||
dbDir := datadir.ToBackendFileName(dataDir)
|
dbDir := datadir.ToBackendFileName(dataDir)
|
||||||
go func() {
|
go func() {
|
||||||
defer close(bch)
|
defer close(bch)
|
||||||
cfg := backend.DefaultBackendConfig()
|
cfg := backend.DefaultBackendConfig(lg)
|
||||||
cfg.Logger = lg
|
cfg.Logger = lg
|
||||||
cfg.Path = dbDir
|
cfg.Path = dbDir
|
||||||
be = backend.New(cfg)
|
be = backend.New(cfg)
|
||||||
|
@ -75,6 +75,7 @@ func (o *migrateOptions) AddFlags(cmd *cobra.Command) {
|
|||||||
func (o *migrateOptions) Config() (*migrateConfig, error) {
|
func (o *migrateOptions) Config() (*migrateConfig, error) {
|
||||||
c := &migrateConfig{
|
c := &migrateConfig{
|
||||||
force: o.force,
|
force: o.force,
|
||||||
|
lg: GetLogger(),
|
||||||
}
|
}
|
||||||
var err error
|
var err error
|
||||||
dotCount := strings.Count(o.targetVersion, ".")
|
dotCount := strings.Count(o.targetVersion, ".")
|
||||||
@ -90,10 +91,10 @@ func (o *migrateOptions) Config() (*migrateConfig, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dbPath := datadir.ToBackendFileName(o.dataDir)
|
dbPath := datadir.ToBackendFileName(o.dataDir)
|
||||||
c.be = backend.NewDefaultBackend(dbPath)
|
c.be = backend.NewDefaultBackend(GetLogger(), dbPath)
|
||||||
|
|
||||||
walPath := datadir.ToWalDir(o.dataDir)
|
walPath := datadir.ToWalDir(o.dataDir)
|
||||||
w, err := wal.OpenForRead(GetLogger(), walPath, walpb.Snapshot{})
|
w, err := wal.OpenForRead(c.lg, walPath, walpb.Snapshot{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf(`failed to open wal: %v`, err)
|
return nil, fmt.Errorf(`failed to open wal: %v`, err)
|
||||||
}
|
}
|
||||||
@ -107,6 +108,7 @@ func (o *migrateOptions) Config() (*migrateConfig, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type migrateConfig struct {
|
type migrateConfig struct {
|
||||||
|
lg *zap.Logger
|
||||||
be backend.Backend
|
be backend.Backend
|
||||||
targetVersion *semver.Version
|
targetVersion *semver.Version
|
||||||
walVersion schema.WALVersion
|
walVersion schema.WALVersion
|
||||||
@ -115,24 +117,23 @@ type migrateConfig struct {
|
|||||||
|
|
||||||
func migrateCommandFunc(c *migrateConfig) error {
|
func migrateCommandFunc(c *migrateConfig) error {
|
||||||
defer c.be.Close()
|
defer c.be.Close()
|
||||||
lg := GetLogger()
|
|
||||||
tx := c.be.BatchTx()
|
tx := c.be.BatchTx()
|
||||||
current, err := schema.DetectSchemaVersion(lg, tx)
|
current, err := schema.DetectSchemaVersion(c.lg, tx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
lg.Error("failed to detect storage version. Please make sure you are using data dir from etcd v3.5 and older")
|
c.lg.Error("failed to detect storage version. Please make sure you are using data dir from etcd v3.5 and older")
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if current == *c.targetVersion {
|
if current == *c.targetVersion {
|
||||||
lg.Info("storage version up-to-date", zap.String("storage-version", storageVersionToString(¤t)))
|
c.lg.Info("storage version up-to-date", zap.String("storage-version", storageVersionToString(¤t)))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
err = schema.Migrate(lg, tx, c.walVersion, *c.targetVersion)
|
err = schema.Migrate(c.lg, tx, c.walVersion, *c.targetVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if !c.force {
|
if !c.force {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
lg.Info("normal migrate failed, trying with force", zap.Error(err))
|
c.lg.Info("normal migrate failed, trying with force", zap.Error(err))
|
||||||
migrateForce(lg, tx, c.targetVersion)
|
migrateForce(c.lg, tx, c.targetVersion)
|
||||||
}
|
}
|
||||||
c.be.ForceCommit()
|
c.be.ForceCommit()
|
||||||
return nil
|
return nil
|
||||||
|
@ -299,7 +299,7 @@ func (s *v3Manager) saveDB() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
be := backend.NewDefaultBackend(s.outDbPath())
|
be := backend.NewDefaultBackend(s.lg, s.outDbPath())
|
||||||
defer be.Close()
|
defer be.Close()
|
||||||
|
|
||||||
err = schema.NewMembershipBackend(s.lg, be).TrimMembershipFromBackend()
|
err = schema.NewMembershipBackend(s.lg, be).TrimMembershipFromBackend()
|
||||||
@ -397,7 +397,7 @@ func (s *v3Manager) saveWALAndSnap() (*raftpb.HardState, error) {
|
|||||||
// add members again to persist them to the store we create.
|
// add members again to persist them to the store we create.
|
||||||
st := v2store.New(etcdserver.StoreClusterPrefix, etcdserver.StoreKeysPrefix)
|
st := v2store.New(etcdserver.StoreClusterPrefix, etcdserver.StoreKeysPrefix)
|
||||||
s.cl.SetStore(st)
|
s.cl.SetStore(st)
|
||||||
be := backend.NewDefaultBackend(s.outDbPath())
|
be := backend.NewDefaultBackend(s.lg, s.outDbPath())
|
||||||
defer be.Close()
|
defer be.Close()
|
||||||
s.cl.SetBackend(schema.NewMembershipBackend(s.lg, be))
|
s.cl.SetBackend(schema.NewMembershipBackend(s.lg, be))
|
||||||
for _, m := range s.cl.Members() {
|
for _, m := range s.cl.Members() {
|
||||||
@ -480,7 +480,7 @@ func (s *v3Manager) saveWALAndSnap() (*raftpb.HardState, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *v3Manager) updateCIndex(commit uint64, term uint64) error {
|
func (s *v3Manager) updateCIndex(commit uint64, term uint64) error {
|
||||||
be := backend.NewDefaultBackend(s.outDbPath())
|
be := backend.NewDefaultBackend(s.lg, s.outDbPath())
|
||||||
defer be.Close()
|
defer be.Close()
|
||||||
|
|
||||||
cindex.UpdateConsistentIndex(be.BatchTx(), commit, term, false)
|
cindex.UpdateConsistentIndex(be.BatchTx(), commit, term, false)
|
||||||
|
@ -23,6 +23,7 @@ import (
|
|||||||
"go.etcd.io/etcd/server/v3/storage/backend"
|
"go.etcd.io/etcd/server/v3/storage/backend"
|
||||||
betesting "go.etcd.io/etcd/server/v3/storage/backend/testing"
|
betesting "go.etcd.io/etcd/server/v3/storage/backend/testing"
|
||||||
"go.etcd.io/etcd/server/v3/storage/schema"
|
"go.etcd.io/etcd/server/v3/storage/schema"
|
||||||
|
"go.uber.org/zap/zaptest"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TestConsistentIndex ensures that LoadConsistentIndex/Save/ConsistentIndex and backend.BatchTx can work well together.
|
// TestConsistentIndex ensures that LoadConsistentIndex/Save/ConsistentIndex and backend.BatchTx can work well together.
|
||||||
@ -53,7 +54,7 @@ func TestConsistentIndex(t *testing.T) {
|
|||||||
be.ForceCommit()
|
be.ForceCommit()
|
||||||
be.Close()
|
be.Close()
|
||||||
|
|
||||||
b := backend.NewDefaultBackend(tmpPath)
|
b := backend.NewDefaultBackend(zaptest.NewLogger(t), tmpPath)
|
||||||
defer b.Close()
|
defer b.Close()
|
||||||
ci.SetBackend(b)
|
ci.SetBackend(b)
|
||||||
index = ci.ConsistentIndex()
|
index = ci.ConsistentIndex()
|
||||||
|
@ -31,6 +31,7 @@ import (
|
|||||||
"go.etcd.io/etcd/server/v3/storage/backend"
|
"go.etcd.io/etcd/server/v3/storage/backend"
|
||||||
"go.etcd.io/etcd/server/v3/storage/schema"
|
"go.etcd.io/etcd/server/v3/storage/schema"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
"go.uber.org/zap/zaptest"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -310,7 +311,7 @@ func TestLessorRenewExtendPileup(t *testing.T) {
|
|||||||
// simulate stop and recovery
|
// simulate stop and recovery
|
||||||
le.Stop()
|
le.Stop()
|
||||||
be.Close()
|
be.Close()
|
||||||
bcfg := backend.DefaultBackendConfig()
|
bcfg := backend.DefaultBackendConfig(lg)
|
||||||
bcfg.Path = filepath.Join(dir, "be")
|
bcfg.Path = filepath.Join(dir, "be")
|
||||||
be = backend.New(bcfg)
|
be = backend.New(bcfg)
|
||||||
defer be.Close()
|
defer be.Close()
|
||||||
@ -669,8 +670,9 @@ func (fd *fakeDeleter) DeleteRange(key, end []byte) (int64, int64) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func NewTestBackend(t *testing.T) (string, backend.Backend) {
|
func NewTestBackend(t *testing.T) (string, backend.Backend) {
|
||||||
|
lg := zaptest.NewLogger(t)
|
||||||
tmpPath := t.TempDir()
|
tmpPath := t.TempDir()
|
||||||
bcfg := backend.DefaultBackendConfig()
|
bcfg := backend.DefaultBackendConfig(lg)
|
||||||
bcfg.Path = filepath.Join(tmpPath, "be")
|
bcfg.Path = filepath.Join(tmpPath, "be")
|
||||||
return tmpPath, backend.New(bcfg)
|
return tmpPath, backend.New(bcfg)
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func newBackend(cfg config.ServerConfig, hooks backend.Hooks) backend.Backend {
|
func newBackend(cfg config.ServerConfig, hooks backend.Hooks) backend.Backend {
|
||||||
bcfg := backend.DefaultBackendConfig()
|
bcfg := backend.DefaultBackendConfig(cfg.Logger)
|
||||||
bcfg.Path = cfg.BackendPath()
|
bcfg.Path = cfg.BackendPath()
|
||||||
bcfg.UnsafeNoFsync = cfg.UnsafeNoFsync
|
bcfg.UnsafeNoFsync = cfg.UnsafeNoFsync
|
||||||
if cfg.BackendBatchLimit != 0 {
|
if cfg.BackendBatchLimit != 0 {
|
||||||
|
@ -144,11 +144,12 @@ type BackendConfig struct {
|
|||||||
Hooks Hooks
|
Hooks Hooks
|
||||||
}
|
}
|
||||||
|
|
||||||
func DefaultBackendConfig() BackendConfig {
|
func DefaultBackendConfig(lg *zap.Logger) BackendConfig {
|
||||||
return BackendConfig{
|
return BackendConfig{
|
||||||
BatchInterval: defaultBatchInterval,
|
BatchInterval: defaultBatchInterval,
|
||||||
BatchLimit: defaultBatchLimit,
|
BatchLimit: defaultBatchLimit,
|
||||||
MmapSize: initialMmapSize,
|
MmapSize: initialMmapSize,
|
||||||
|
Logger: lg,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -156,17 +157,13 @@ func New(bcfg BackendConfig) Backend {
|
|||||||
return newBackend(bcfg)
|
return newBackend(bcfg)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewDefaultBackend(path string) Backend {
|
func NewDefaultBackend(lg *zap.Logger, path string) Backend {
|
||||||
bcfg := DefaultBackendConfig()
|
bcfg := DefaultBackendConfig(lg)
|
||||||
bcfg.Path = path
|
bcfg.Path = path
|
||||||
return newBackend(bcfg)
|
return newBackend(bcfg)
|
||||||
}
|
}
|
||||||
|
|
||||||
func newBackend(bcfg BackendConfig) *backend {
|
func newBackend(bcfg BackendConfig) *backend {
|
||||||
if bcfg.Logger == nil {
|
|
||||||
bcfg.Logger = zap.NewNop()
|
|
||||||
}
|
|
||||||
|
|
||||||
bopts := &bolt.Options{}
|
bopts := &bolt.Options{}
|
||||||
if boltOpenOptions != nil {
|
if boltOpenOptions != nil {
|
||||||
*bopts = *boltOpenOptions
|
*bopts = *boltOpenOptions
|
||||||
|
@ -26,6 +26,7 @@ import (
|
|||||||
"go.etcd.io/etcd/server/v3/storage/backend"
|
"go.etcd.io/etcd/server/v3/storage/backend"
|
||||||
betesting "go.etcd.io/etcd/server/v3/storage/backend/testing"
|
betesting "go.etcd.io/etcd/server/v3/storage/backend/testing"
|
||||||
"go.etcd.io/etcd/server/v3/storage/schema"
|
"go.etcd.io/etcd/server/v3/storage/schema"
|
||||||
|
"go.uber.org/zap/zaptest"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBackendClose(t *testing.T) {
|
func TestBackendClose(t *testing.T) {
|
||||||
@ -71,7 +72,7 @@ func TestBackendSnapshot(t *testing.T) {
|
|||||||
assert.NoError(t, f.Close())
|
assert.NoError(t, f.Close())
|
||||||
|
|
||||||
// bootstrap new backend from the snapshot
|
// bootstrap new backend from the snapshot
|
||||||
bcfg := backend.DefaultBackendConfig()
|
bcfg := backend.DefaultBackendConfig(zaptest.NewLogger(t))
|
||||||
bcfg.Path, bcfg.BatchInterval, bcfg.BatchLimit = f.Name(), time.Hour, 10000
|
bcfg.Path, bcfg.BatchInterval, bcfg.BatchLimit = f.Name(), time.Hour, 10000
|
||||||
nb := backend.New(bcfg)
|
nb := backend.New(bcfg)
|
||||||
defer betesting.Close(t, nb)
|
defer betesting.Close(t, nb)
|
||||||
@ -122,7 +123,7 @@ func TestBackendBatchIntervalCommit(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestBackendDefrag(t *testing.T) {
|
func TestBackendDefrag(t *testing.T) {
|
||||||
bcfg := backend.DefaultBackendConfig()
|
bcfg := backend.DefaultBackendConfig(zaptest.NewLogger(t))
|
||||||
// Make sure we change BackendFreelistType
|
// Make sure we change BackendFreelistType
|
||||||
// The goal is to verify that we restore config option after defrag.
|
// The goal is to verify that we restore config option after defrag.
|
||||||
if bcfg.BackendFreelistType == bolt.FreelistMapType {
|
if bcfg.BackendFreelistType == bolt.FreelistMapType {
|
||||||
|
@ -23,6 +23,7 @@ import (
|
|||||||
"go.etcd.io/etcd/server/v3/storage/backend"
|
"go.etcd.io/etcd/server/v3/storage/backend"
|
||||||
betesting "go.etcd.io/etcd/server/v3/storage/backend/testing"
|
betesting "go.etcd.io/etcd/server/v3/storage/backend/testing"
|
||||||
"go.etcd.io/etcd/server/v3/storage/schema"
|
"go.etcd.io/etcd/server/v3/storage/schema"
|
||||||
|
"go.uber.org/zap/zaptest"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -31,7 +32,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestBackendPreCommitHook(t *testing.T) {
|
func TestBackendPreCommitHook(t *testing.T) {
|
||||||
be := newTestHooksBackend(t, backend.DefaultBackendConfig())
|
be := newTestHooksBackend(t, backend.DefaultBackendConfig(zaptest.NewLogger(t)))
|
||||||
|
|
||||||
tx := be.BatchTx()
|
tx := be.BatchTx()
|
||||||
prepareBuckenAndKey(tx)
|
prepareBuckenAndKey(tx)
|
||||||
@ -48,7 +49,7 @@ func TestBackendPreCommitHook(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestBackendAutoCommitLimitHook(t *testing.T) {
|
func TestBackendAutoCommitLimitHook(t *testing.T) {
|
||||||
cfg := backend.DefaultBackendConfig()
|
cfg := backend.DefaultBackendConfig(zaptest.NewLogger(t))
|
||||||
cfg.BatchLimit = 3
|
cfg.BatchLimit = 3
|
||||||
be := newTestHooksBackend(t, cfg)
|
be := newTestHooksBackend(t, cfg)
|
||||||
|
|
||||||
@ -72,7 +73,7 @@ func TestBackendAutoCommitBatchIntervalHook(t *testing.T) {
|
|||||||
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
|
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
cfg := backend.DefaultBackendConfig()
|
cfg := backend.DefaultBackendConfig(zaptest.NewLogger(t))
|
||||||
cfg.BatchInterval = 10 * time.Millisecond
|
cfg.BatchInterval = 10 * time.Millisecond
|
||||||
be := newTestHooksBackend(t, cfg)
|
be := newTestHooksBackend(t, cfg)
|
||||||
tx := be.BatchTx()
|
tx := be.BatchTx()
|
||||||
|
@ -38,13 +38,13 @@ func NewTmpBackendFromCfg(t testing.TB, bcfg backend.BackendConfig) (backend.Bac
|
|||||||
|
|
||||||
// NewTmpBackend creates a backend implementation for testing.
|
// NewTmpBackend creates a backend implementation for testing.
|
||||||
func NewTmpBackend(t testing.TB, batchInterval time.Duration, batchLimit int) (backend.Backend, string) {
|
func NewTmpBackend(t testing.TB, batchInterval time.Duration, batchLimit int) (backend.Backend, string) {
|
||||||
bcfg := backend.DefaultBackendConfig()
|
bcfg := backend.DefaultBackendConfig(zaptest.NewLogger(t))
|
||||||
bcfg.BatchInterval, bcfg.BatchLimit = batchInterval, batchLimit
|
bcfg.BatchInterval, bcfg.BatchLimit = batchInterval, batchLimit
|
||||||
return NewTmpBackendFromCfg(t, bcfg)
|
return NewTmpBackendFromCfg(t, bcfg)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewDefaultTmpBackend(t testing.TB) (backend.Backend, string) {
|
func NewDefaultTmpBackend(t testing.TB) (backend.Backend, string) {
|
||||||
return NewTmpBackendFromCfg(t, backend.DefaultBackendConfig())
|
return NewTmpBackendFromCfg(t, backend.DefaultBackendConfig(zaptest.NewLogger(t)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func Close(t testing.TB, b backend.Backend) {
|
func Close(t testing.TB, b backend.Backend) {
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
"go.uber.org/zap/zaptest"
|
||||||
|
|
||||||
"go.etcd.io/etcd/server/v3/storage/backend"
|
"go.etcd.io/etcd/server/v3/storage/backend"
|
||||||
betesting "go.etcd.io/etcd/server/v3/storage/backend/testing"
|
betesting "go.etcd.io/etcd/server/v3/storage/backend/testing"
|
||||||
@ -33,6 +34,7 @@ func TestScheduledCompact(t *testing.T) {
|
|||||||
}
|
}
|
||||||
for _, tc := range tcs {
|
for _, tc := range tcs {
|
||||||
t.Run(fmt.Sprint(tc.value), func(t *testing.T) {
|
t.Run(fmt.Sprint(tc.value), func(t *testing.T) {
|
||||||
|
lg := zaptest.NewLogger(t)
|
||||||
be, tmpPath := betesting.NewTmpBackend(t, time.Microsecond, 10)
|
be, tmpPath := betesting.NewTmpBackend(t, time.Microsecond, 10)
|
||||||
tx := be.BatchTx()
|
tx := be.BatchTx()
|
||||||
if tx == nil {
|
if tx == nil {
|
||||||
@ -45,7 +47,7 @@ func TestScheduledCompact(t *testing.T) {
|
|||||||
be.ForceCommit()
|
be.ForceCommit()
|
||||||
be.Close()
|
be.Close()
|
||||||
|
|
||||||
b := backend.NewDefaultBackend(tmpPath)
|
b := backend.NewDefaultBackend(lg, tmpPath)
|
||||||
defer b.Close()
|
defer b.Close()
|
||||||
v, found := UnsafeReadScheduledCompact(b.BatchTx())
|
v, found := UnsafeReadScheduledCompact(b.BatchTx())
|
||||||
assert.Equal(t, true, found)
|
assert.Equal(t, true, found)
|
||||||
@ -74,6 +76,7 @@ func TestFinishedCompact(t *testing.T) {
|
|||||||
}
|
}
|
||||||
for _, tc := range tcs {
|
for _, tc := range tcs {
|
||||||
t.Run(fmt.Sprint(tc.value), func(t *testing.T) {
|
t.Run(fmt.Sprint(tc.value), func(t *testing.T) {
|
||||||
|
lg := zaptest.NewLogger(t)
|
||||||
be, tmpPath := betesting.NewTmpBackend(t, time.Microsecond, 10)
|
be, tmpPath := betesting.NewTmpBackend(t, time.Microsecond, 10)
|
||||||
tx := be.BatchTx()
|
tx := be.BatchTx()
|
||||||
if tx == nil {
|
if tx == nil {
|
||||||
@ -86,7 +89,7 @@ func TestFinishedCompact(t *testing.T) {
|
|||||||
be.ForceCommit()
|
be.ForceCommit()
|
||||||
be.Close()
|
be.Close()
|
||||||
|
|
||||||
b := backend.NewDefaultBackend(tmpPath)
|
b := backend.NewDefaultBackend(lg, tmpPath)
|
||||||
defer b.Close()
|
defer b.Close()
|
||||||
v, found := UnsafeReadFinishedCompact(b.BatchTx())
|
v, found := UnsafeReadFinishedCompact(b.BatchTx())
|
||||||
assert.Equal(t, true, found)
|
assert.Equal(t, true, found)
|
||||||
|
@ -109,8 +109,9 @@ func TestGetAllRoles(t *testing.T) {
|
|||||||
}
|
}
|
||||||
for _, tc := range tcs {
|
for _, tc := range tcs {
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
|
lg := zaptest.NewLogger(t)
|
||||||
be, tmpPath := betesting.NewTmpBackend(t, time.Microsecond, 10)
|
be, tmpPath := betesting.NewTmpBackend(t, time.Microsecond, 10)
|
||||||
abe := NewAuthBackend(zaptest.NewLogger(t), be)
|
abe := NewAuthBackend(lg, be)
|
||||||
abe.CreateAuthBuckets()
|
abe.CreateAuthBuckets()
|
||||||
|
|
||||||
tx := abe.BatchTx()
|
tx := abe.BatchTx()
|
||||||
@ -121,9 +122,9 @@ func TestGetAllRoles(t *testing.T) {
|
|||||||
abe.ForceCommit()
|
abe.ForceCommit()
|
||||||
be.Close()
|
be.Close()
|
||||||
|
|
||||||
be2 := backend.NewDefaultBackend(tmpPath)
|
be2 := backend.NewDefaultBackend(lg, tmpPath)
|
||||||
defer be2.Close()
|
defer be2.Close()
|
||||||
abe2 := NewAuthBackend(zaptest.NewLogger(t), be2)
|
abe2 := NewAuthBackend(lg, be2)
|
||||||
users := abe2.GetAllRoles()
|
users := abe2.GetAllRoles()
|
||||||
|
|
||||||
assert.Equal(t, tc.want, users)
|
assert.Equal(t, tc.want, users)
|
||||||
@ -205,8 +206,9 @@ func TestGetRole(t *testing.T) {
|
|||||||
}
|
}
|
||||||
for _, tc := range tcs {
|
for _, tc := range tcs {
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
|
lg := zaptest.NewLogger(t)
|
||||||
be, tmpPath := betesting.NewTmpBackend(t, time.Microsecond, 10)
|
be, tmpPath := betesting.NewTmpBackend(t, time.Microsecond, 10)
|
||||||
abe := NewAuthBackend(zaptest.NewLogger(t), be)
|
abe := NewAuthBackend(lg, be)
|
||||||
abe.CreateAuthBuckets()
|
abe.CreateAuthBuckets()
|
||||||
|
|
||||||
tx := abe.BatchTx()
|
tx := abe.BatchTx()
|
||||||
@ -217,9 +219,9 @@ func TestGetRole(t *testing.T) {
|
|||||||
abe.ForceCommit()
|
abe.ForceCommit()
|
||||||
be.Close()
|
be.Close()
|
||||||
|
|
||||||
be2 := backend.NewDefaultBackend(tmpPath)
|
be2 := backend.NewDefaultBackend(lg, tmpPath)
|
||||||
defer be2.Close()
|
defer be2.Close()
|
||||||
abe2 := NewAuthBackend(zaptest.NewLogger(t), be2)
|
abe2 := NewAuthBackend(lg, be2)
|
||||||
users := abe2.GetRole("role1")
|
users := abe2.GetRole("role1")
|
||||||
|
|
||||||
assert.Equal(t, tc.want, users)
|
assert.Equal(t, tc.want, users)
|
||||||
|
@ -52,8 +52,9 @@ func TestAuthEnabled(t *testing.T) {
|
|||||||
}
|
}
|
||||||
for _, tc := range tcs {
|
for _, tc := range tcs {
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
|
lg := zaptest.NewLogger(t)
|
||||||
be, tmpPath := betesting.NewTmpBackend(t, time.Microsecond, 10)
|
be, tmpPath := betesting.NewTmpBackend(t, time.Microsecond, 10)
|
||||||
abe := NewAuthBackend(zaptest.NewLogger(t), be)
|
abe := NewAuthBackend(lg, be)
|
||||||
tx := abe.BatchTx()
|
tx := abe.BatchTx()
|
||||||
abe.CreateAuthBuckets()
|
abe.CreateAuthBuckets()
|
||||||
|
|
||||||
@ -65,9 +66,9 @@ func TestAuthEnabled(t *testing.T) {
|
|||||||
abe.ForceCommit()
|
abe.ForceCommit()
|
||||||
be.Close()
|
be.Close()
|
||||||
|
|
||||||
be2 := backend.NewDefaultBackend(tmpPath)
|
be2 := backend.NewDefaultBackend(lg, tmpPath)
|
||||||
defer be2.Close()
|
defer be2.Close()
|
||||||
abe2 := NewAuthBackend(zaptest.NewLogger(t), be2)
|
abe2 := NewAuthBackend(lg, be2)
|
||||||
tx = abe2.BatchTx()
|
tx = abe2.BatchTx()
|
||||||
tx.Lock()
|
tx.Lock()
|
||||||
defer tx.Unlock()
|
defer tx.Unlock()
|
||||||
@ -102,8 +103,9 @@ func TestAuthRevision(t *testing.T) {
|
|||||||
}
|
}
|
||||||
for _, tc := range tcs {
|
for _, tc := range tcs {
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
|
lg := zaptest.NewLogger(t)
|
||||||
be, tmpPath := betesting.NewTmpBackend(t, time.Microsecond, 10)
|
be, tmpPath := betesting.NewTmpBackend(t, time.Microsecond, 10)
|
||||||
abe := NewAuthBackend(zaptest.NewLogger(t), be)
|
abe := NewAuthBackend(lg, be)
|
||||||
abe.CreateAuthBuckets()
|
abe.CreateAuthBuckets()
|
||||||
|
|
||||||
if tc.setRevision != 0 {
|
if tc.setRevision != 0 {
|
||||||
@ -115,9 +117,9 @@ func TestAuthRevision(t *testing.T) {
|
|||||||
abe.ForceCommit()
|
abe.ForceCommit()
|
||||||
be.Close()
|
be.Close()
|
||||||
|
|
||||||
be2 := backend.NewDefaultBackend(tmpPath)
|
be2 := backend.NewDefaultBackend(lg, tmpPath)
|
||||||
defer be2.Close()
|
defer be2.Close()
|
||||||
abe2 := NewAuthBackend(zaptest.NewLogger(t), be2)
|
abe2 := NewAuthBackend(lg, be2)
|
||||||
tx := abe2.BatchTx()
|
tx := abe2.BatchTx()
|
||||||
tx.Lock()
|
tx.Lock()
|
||||||
defer tx.Unlock()
|
defer tx.Unlock()
|
||||||
|
@ -97,8 +97,9 @@ func TestGetAllUsers(t *testing.T) {
|
|||||||
}
|
}
|
||||||
for _, tc := range tcs {
|
for _, tc := range tcs {
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
|
lg := zaptest.NewLogger(t)
|
||||||
be, tmpPath := betesting.NewTmpBackend(t, time.Microsecond, 10)
|
be, tmpPath := betesting.NewTmpBackend(t, time.Microsecond, 10)
|
||||||
abe := NewAuthBackend(zaptest.NewLogger(t), be)
|
abe := NewAuthBackend(lg, be)
|
||||||
abe.CreateAuthBuckets()
|
abe.CreateAuthBuckets()
|
||||||
|
|
||||||
tx := abe.BatchTx()
|
tx := abe.BatchTx()
|
||||||
@ -109,9 +110,9 @@ func TestGetAllUsers(t *testing.T) {
|
|||||||
abe.ForceCommit()
|
abe.ForceCommit()
|
||||||
be.Close()
|
be.Close()
|
||||||
|
|
||||||
be2 := backend.NewDefaultBackend(tmpPath)
|
be2 := backend.NewDefaultBackend(lg, tmpPath)
|
||||||
defer be2.Close()
|
defer be2.Close()
|
||||||
abe2 := NewAuthBackend(zaptest.NewLogger(t), be2)
|
abe2 := NewAuthBackend(lg, be2)
|
||||||
users := abe2.GetAllUsers()
|
users := abe2.GetAllUsers()
|
||||||
|
|
||||||
assert.Equal(t, tc.want, users)
|
assert.Equal(t, tc.want, users)
|
||||||
@ -181,8 +182,9 @@ func TestGetUser(t *testing.T) {
|
|||||||
}
|
}
|
||||||
for _, tc := range tcs {
|
for _, tc := range tcs {
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
|
lg := zaptest.NewLogger(t)
|
||||||
be, tmpPath := betesting.NewTmpBackend(t, time.Microsecond, 10)
|
be, tmpPath := betesting.NewTmpBackend(t, time.Microsecond, 10)
|
||||||
abe := NewAuthBackend(zaptest.NewLogger(t), be)
|
abe := NewAuthBackend(lg, be)
|
||||||
abe.CreateAuthBuckets()
|
abe.CreateAuthBuckets()
|
||||||
|
|
||||||
tx := abe.BatchTx()
|
tx := abe.BatchTx()
|
||||||
@ -193,9 +195,9 @@ func TestGetUser(t *testing.T) {
|
|||||||
abe.ForceCommit()
|
abe.ForceCommit()
|
||||||
be.Close()
|
be.Close()
|
||||||
|
|
||||||
be2 := backend.NewDefaultBackend(tmpPath)
|
be2 := backend.NewDefaultBackend(lg, tmpPath)
|
||||||
defer be2.Close()
|
defer be2.Close()
|
||||||
abe2 := NewAuthBackend(zaptest.NewLogger(t), be2)
|
abe2 := NewAuthBackend(lg, be2)
|
||||||
users := abe2.GetUser("alice")
|
users := abe2.GetUser("alice")
|
||||||
|
|
||||||
assert.Equal(t, tc.want, users)
|
assert.Equal(t, tc.want, users)
|
||||||
|
@ -23,6 +23,7 @@ import (
|
|||||||
"go.etcd.io/etcd/server/v3/lease/leasepb"
|
"go.etcd.io/etcd/server/v3/lease/leasepb"
|
||||||
"go.etcd.io/etcd/server/v3/storage/backend"
|
"go.etcd.io/etcd/server/v3/storage/backend"
|
||||||
betesting "go.etcd.io/etcd/server/v3/storage/backend/testing"
|
betesting "go.etcd.io/etcd/server/v3/storage/backend/testing"
|
||||||
|
"go.uber.org/zap/zaptest"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestLeaseBackend(t *testing.T) {
|
func TestLeaseBackend(t *testing.T) {
|
||||||
@ -86,6 +87,7 @@ func TestLeaseBackend(t *testing.T) {
|
|||||||
|
|
||||||
for _, tc := range tcs {
|
for _, tc := range tcs {
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
|
lg := zaptest.NewLogger(t)
|
||||||
be, tmpPath := betesting.NewTmpBackend(t, time.Microsecond, 10)
|
be, tmpPath := betesting.NewTmpBackend(t, time.Microsecond, 10)
|
||||||
tx := be.BatchTx()
|
tx := be.BatchTx()
|
||||||
tx.Lock()
|
tx.Lock()
|
||||||
@ -96,7 +98,7 @@ func TestLeaseBackend(t *testing.T) {
|
|||||||
be.ForceCommit()
|
be.ForceCommit()
|
||||||
be.Close()
|
be.Close()
|
||||||
|
|
||||||
be2 := backend.NewDefaultBackend(tmpPath)
|
be2 := backend.NewDefaultBackend(lg, tmpPath)
|
||||||
defer be2.Close()
|
defer be2.Close()
|
||||||
leases := MustUnsafeGetAllLeases(be2.ReadTx())
|
leases := MustUnsafeGetAllLeases(be2.ReadTx())
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ func TestValidate(t *testing.T) {
|
|||||||
lg := zap.NewNop()
|
lg := zap.NewNop()
|
||||||
dataPath := setupBackendData(t, tc.version, tc.overrideKeys)
|
dataPath := setupBackendData(t, tc.version, tc.overrideKeys)
|
||||||
|
|
||||||
b := backend.NewDefaultBackend(dataPath)
|
b := backend.NewDefaultBackend(lg, dataPath)
|
||||||
defer b.Close()
|
defer b.Close()
|
||||||
err := Validate(lg, b.BatchTx())
|
err := Validate(lg, b.BatchTx())
|
||||||
if (err != nil) != tc.expectError {
|
if (err != nil) != tc.expectError {
|
||||||
@ -214,7 +214,7 @@ func TestMigrate(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
b := backend.NewDefaultBackend(dataPath)
|
b := backend.NewDefaultBackend(lg, dataPath)
|
||||||
defer b.Close()
|
defer b.Close()
|
||||||
|
|
||||||
err = Migrate(lg, b.BatchTx(), walVersion, tc.targetVersion)
|
err = Migrate(lg, b.BatchTx(), walVersion, tc.targetVersion)
|
||||||
@ -258,7 +258,7 @@ func TestMigrateIsReversible(t *testing.T) {
|
|||||||
lg := zap.NewNop()
|
lg := zap.NewNop()
|
||||||
dataPath := setupBackendData(t, tc.initialVersion, nil)
|
dataPath := setupBackendData(t, tc.initialVersion, nil)
|
||||||
|
|
||||||
be := backend.NewDefaultBackend(dataPath)
|
be := backend.NewDefaultBackend(lg, dataPath)
|
||||||
defer be.Close()
|
defer be.Close()
|
||||||
tx := be.BatchTx()
|
tx := be.BatchTx()
|
||||||
tx.Lock()
|
tx.Lock()
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
"github.com/coreos/go-semver/semver"
|
"github.com/coreos/go-semver/semver"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"go.etcd.io/bbolt"
|
"go.etcd.io/bbolt"
|
||||||
|
"go.uber.org/zap/zaptest"
|
||||||
|
|
||||||
"go.etcd.io/etcd/server/v3/storage/backend"
|
"go.etcd.io/etcd/server/v3/storage/backend"
|
||||||
"go.etcd.io/etcd/server/v3/storage/backend/testing"
|
"go.etcd.io/etcd/server/v3/storage/backend/testing"
|
||||||
@ -55,6 +56,7 @@ func TestVersion(t *testing.T) {
|
|||||||
}
|
}
|
||||||
for _, tc := range tcs {
|
for _, tc := range tcs {
|
||||||
t.Run(tc.version, func(t *testing.T) {
|
t.Run(tc.version, func(t *testing.T) {
|
||||||
|
lg := zaptest.NewLogger(t)
|
||||||
be, tmpPath := betesting.NewTmpBackend(t, time.Microsecond, 10)
|
be, tmpPath := betesting.NewTmpBackend(t, time.Microsecond, 10)
|
||||||
tx := be.BatchTx()
|
tx := be.BatchTx()
|
||||||
if tx == nil {
|
if tx == nil {
|
||||||
@ -67,7 +69,7 @@ func TestVersion(t *testing.T) {
|
|||||||
be.ForceCommit()
|
be.ForceCommit()
|
||||||
be.Close()
|
be.Close()
|
||||||
|
|
||||||
b := backend.NewDefaultBackend(tmpPath)
|
b := backend.NewDefaultBackend(lg, tmpPath)
|
||||||
defer b.Close()
|
defer b.Close()
|
||||||
v := UnsafeReadStorageVersion(b.BatchTx())
|
v := UnsafeReadStorageVersion(b.BatchTx())
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ func Verify(cfg Config) error {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
beConfig := backend.DefaultBackendConfig()
|
beConfig := backend.DefaultBackendConfig(lg)
|
||||||
beConfig.Path = datadir.ToBackendFileName(cfg.DataDir)
|
beConfig.Path = datadir.ToBackendFileName(cfg.DataDir)
|
||||||
beConfig.Logger = cfg.Logger
|
beConfig.Logger = cfg.Logger
|
||||||
|
|
||||||
|
@ -26,6 +26,7 @@ import (
|
|||||||
"go.etcd.io/etcd/server/v3/storage/backend"
|
"go.etcd.io/etcd/server/v3/storage/backend"
|
||||||
"go.etcd.io/etcd/server/v3/storage/schema"
|
"go.etcd.io/etcd/server/v3/storage/schema"
|
||||||
"go.etcd.io/etcd/tests/v3/framework/e2e"
|
"go.etcd.io/etcd/tests/v3/framework/e2e"
|
||||||
|
"go.uber.org/zap/zaptest"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestEtctlutlMigrate(t *testing.T) {
|
func TestEtctlutlMigrate(t *testing.T) {
|
||||||
@ -105,6 +106,7 @@ func TestEtctlutlMigrate(t *testing.T) {
|
|||||||
for _, tc := range tcs {
|
for _, tc := range tcs {
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
e2e.BeforeTest(t)
|
e2e.BeforeTest(t)
|
||||||
|
lg := zaptest.NewLogger(t)
|
||||||
if tc.binary != "" && !fileutil.Exist(tc.binary) {
|
if tc.binary != "" && !fileutil.Exist(tc.binary) {
|
||||||
t.Skipf("%q does not exist", lastReleaseBinary)
|
t.Skipf("%q does not exist", lastReleaseBinary)
|
||||||
}
|
}
|
||||||
@ -154,7 +156,7 @@ func TestEtctlutlMigrate(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
t.Log("etcdutl migrate...")
|
t.Log("etcdutl migrate...")
|
||||||
be := backend.NewDefaultBackend(dataDirPath + "/member/snap/db")
|
be := backend.NewDefaultBackend(lg, dataDirPath+"/member/snap/db")
|
||||||
defer be.Close()
|
defer be.Close()
|
||||||
|
|
||||||
ver := schema.ReadStorageVersion(be.ReadTx())
|
ver := schema.ReadStorageVersion(be.ReadTx())
|
||||||
|
@ -190,6 +190,7 @@ func TestMaintenanceSnapshotErrorInflight(t *testing.T) {
|
|||||||
// will fail to read with corresponding context errors on inflight context cancel timeout.
|
// will fail to read with corresponding context errors on inflight context cancel timeout.
|
||||||
func testMaintenanceSnapshotErrorInflight(t *testing.T, snapshot func(context.Context, *clientv3.Client) (io.ReadCloser, error)) {
|
func testMaintenanceSnapshotErrorInflight(t *testing.T, snapshot func(context.Context, *clientv3.Client) (io.ReadCloser, error)) {
|
||||||
integration2.BeforeTest(t)
|
integration2.BeforeTest(t)
|
||||||
|
lg := zaptest.NewLogger(t)
|
||||||
|
|
||||||
clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true})
|
clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1, UseBridge: true})
|
||||||
defer clus.Terminate(t)
|
defer clus.Terminate(t)
|
||||||
@ -197,8 +198,8 @@ func testMaintenanceSnapshotErrorInflight(t *testing.T, snapshot func(context.Co
|
|||||||
// take about 1-second to read snapshot
|
// take about 1-second to read snapshot
|
||||||
clus.Members[0].Stop(t)
|
clus.Members[0].Stop(t)
|
||||||
dpath := filepath.Join(clus.Members[0].DataDir, "member", "snap", "db")
|
dpath := filepath.Join(clus.Members[0].DataDir, "member", "snap", "db")
|
||||||
b := backend.NewDefaultBackend(dpath)
|
b := backend.NewDefaultBackend(lg, dpath)
|
||||||
s := mvcc.NewStore(zaptest.NewLogger(t), b, &lease.FakeLessor{}, mvcc.StoreConfig{CompactionBatchLimit: math.MaxInt32})
|
s := mvcc.NewStore(lg, b, &lease.FakeLessor{}, mvcc.StoreConfig{CompactionBatchLimit: math.MaxInt32})
|
||||||
rev := 100000
|
rev := 100000
|
||||||
for i := 2; i <= rev; i++ {
|
for i := 2; i <= rev; i++ {
|
||||||
s.Put([]byte(fmt.Sprintf("%10d", i)), bytes.Repeat([]byte("a"), 1024), lease.NoLease)
|
s.Put([]byte(fmt.Sprintf("%10d", i)), bytes.Repeat([]byte("a"), 1024), lease.NoLease)
|
||||||
|
@ -174,6 +174,7 @@ func TestV3AlarmDeactivate(t *testing.T) {
|
|||||||
|
|
||||||
func TestV3CorruptAlarm(t *testing.T) {
|
func TestV3CorruptAlarm(t *testing.T) {
|
||||||
integration.BeforeTest(t)
|
integration.BeforeTest(t)
|
||||||
|
lg := zaptest.NewLogger(t)
|
||||||
clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true})
|
clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3, UseBridge: true})
|
||||||
defer clus.Terminate(t)
|
defer clus.Terminate(t)
|
||||||
|
|
||||||
@ -192,8 +193,8 @@ func TestV3CorruptAlarm(t *testing.T) {
|
|||||||
// Corrupt member 0 by modifying backend offline.
|
// Corrupt member 0 by modifying backend offline.
|
||||||
clus.Members[0].Stop(t)
|
clus.Members[0].Stop(t)
|
||||||
fp := filepath.Join(clus.Members[0].DataDir, "member", "snap", "db")
|
fp := filepath.Join(clus.Members[0].DataDir, "member", "snap", "db")
|
||||||
be := backend.NewDefaultBackend(fp)
|
be := backend.NewDefaultBackend(lg, fp)
|
||||||
s := mvcc.NewStore(zaptest.NewLogger(t), be, nil, mvcc.StoreConfig{})
|
s := mvcc.NewStore(lg, be, nil, mvcc.StoreConfig{})
|
||||||
// NOTE: cluster_proxy mode with namespacing won't set 'k', but namespace/'k'.
|
// NOTE: cluster_proxy mode with namespacing won't set 'k', but namespace/'k'.
|
||||||
s.Put([]byte("abc"), []byte("def"), 0)
|
s.Put([]byte("abc"), []byte("def"), 0)
|
||||||
s.Put([]byte("xyz"), []byte("123"), 0)
|
s.Put([]byte("xyz"), []byte("123"), 0)
|
||||||
@ -258,6 +259,7 @@ func TestV3CorruptAlarm(t *testing.T) {
|
|||||||
|
|
||||||
func TestV3CorruptAlarmWithLeaseCorrupted(t *testing.T) {
|
func TestV3CorruptAlarmWithLeaseCorrupted(t *testing.T) {
|
||||||
integration.BeforeTest(t)
|
integration.BeforeTest(t)
|
||||||
|
lg := zaptest.NewLogger(t)
|
||||||
clus := integration.NewCluster(t, &integration.ClusterConfig{
|
clus := integration.NewCluster(t, &integration.ClusterConfig{
|
||||||
CorruptCheckTime: time.Second,
|
CorruptCheckTime: time.Second,
|
||||||
Size: 3,
|
Size: 3,
|
||||||
@ -299,9 +301,8 @@ func TestV3CorruptAlarmWithLeaseCorrupted(t *testing.T) {
|
|||||||
// Corrupt member 2 by modifying backend lease bucket offline.
|
// Corrupt member 2 by modifying backend lease bucket offline.
|
||||||
clus.Members[2].Stop(t)
|
clus.Members[2].Stop(t)
|
||||||
fp := filepath.Join(clus.Members[2].DataDir, "member", "snap", "db")
|
fp := filepath.Join(clus.Members[2].DataDir, "member", "snap", "db")
|
||||||
bcfg := backend.DefaultBackendConfig()
|
bcfg := backend.DefaultBackendConfig(lg)
|
||||||
bcfg.Path = fp
|
bcfg.Path = fp
|
||||||
bcfg.Logger = zaptest.NewLogger(t)
|
|
||||||
be := backend.New(bcfg)
|
be := backend.New(bcfg)
|
||||||
|
|
||||||
olpb := leasepb.Lease{ID: int64(1), TTL: 60}
|
olpb := leasepb.Lease{ID: int64(1), TTL: 60}
|
||||||
|
@ -35,7 +35,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func initMVCC() {
|
func initMVCC() {
|
||||||
bcfg := backend.DefaultBackendConfig()
|
bcfg := backend.DefaultBackendConfig(zap.NewNop())
|
||||||
bcfg.Path, bcfg.BatchInterval, bcfg.BatchLimit = "mvcc-bench", time.Duration(batchInterval)*time.Millisecond, batchLimit
|
bcfg.Path, bcfg.BatchInterval, bcfg.BatchLimit = "mvcc-bench", time.Duration(batchInterval)*time.Millisecond, batchLimit
|
||||||
be := backend.New(bcfg)
|
be := backend.New(bcfg)
|
||||||
s = mvcc.NewStore(zap.NewExample(), be, &lease.FakeLessor{}, mvcc.StoreConfig{})
|
s = mvcc.NewStore(zap.NewExample(), be, &lease.FakeLessor{}, mvcc.StoreConfig{})
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
|
|
||||||
"go.etcd.io/etcd/api/v3/authpb"
|
"go.etcd.io/etcd/api/v3/authpb"
|
||||||
"go.etcd.io/etcd/server/v3/storage/schema"
|
"go.etcd.io/etcd/server/v3/storage/schema"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
|
||||||
"go.etcd.io/etcd/api/v3/mvccpb"
|
"go.etcd.io/etcd/api/v3/mvccpb"
|
||||||
"go.etcd.io/etcd/server/v3/lease/leasepb"
|
"go.etcd.io/etcd/server/v3/lease/leasepb"
|
||||||
@ -176,7 +177,7 @@ func iterateBucket(dbPath, bucket string, limit uint64, decode bool) (err error)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getHash(dbPath string) (hash uint32, err error) {
|
func getHash(dbPath string) (hash uint32, err error) {
|
||||||
b := backend.NewDefaultBackend(dbPath)
|
b := backend.NewDefaultBackend(zap.NewNop(), dbPath)
|
||||||
return b.Hash(schema.DefaultIgnores)
|
return b.Hash(schema.DefaultIgnores)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user