...

Source file src/go.etcd.io/etcd/server/v3/etcdserver/api/membership/store_test.go

Documentation: go.etcd.io/etcd/server/v3/etcdserver/api/membership

     1  package membership
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/coreos/go-semver/semver"
     7  	"github.com/stretchr/testify/assert"
     8  	"go.etcd.io/etcd/client/pkg/v3/types"
     9  	betesting "go.etcd.io/etcd/server/v3/mvcc/backend/testing"
    10  
    11  	"go.etcd.io/etcd/server/v3/mvcc/backend"
    12  	"go.uber.org/zap"
    13  )
    14  
    15  func TestAddRemoveMember(t *testing.T) {
    16  	c := newTestCluster(t, nil)
    17  	be, bepath := betesting.NewDefaultTmpBackend(t)
    18  	c.SetBackend(be)
    19  	c.AddMember(newTestMember(17, nil, "node17", nil), true)
    20  	c.RemoveMember(17, true)
    21  	c.AddMember(newTestMember(18, nil, "node18", nil), true)
    22  
    23  	// Skipping removal of already removed member
    24  	c.RemoveMember(17, true)
    25  	err := be.Close()
    26  	assert.NoError(t, err)
    27  
    28  	be2 := backend.NewDefaultBackend(bepath)
    29  	defer func() {
    30  		assert.NoError(t, be2.Close())
    31  	}()
    32  
    33  	if false {
    34  		// TODO: Enable this code when Recover is reading membership from the backend.
    35  		c2 := newTestCluster(t, nil)
    36  		c2.SetBackend(be2)
    37  		c2.Recover(func(*zap.Logger, *semver.Version) {})
    38  		assert.Equal(t, []*Member{{ID: types.ID(18),
    39  			Attributes: Attributes{Name: "node18"}}}, c2.Members())
    40  		assert.Equal(t, true, c2.IsIDRemoved(17))
    41  		assert.Equal(t, false, c2.IsIDRemoved(18))
    42  	}
    43  }
    44  

View as plain text