Translate v2 requests into v3 ClusterMemberAttrSetRequest and ClusterVersionSetRequest

Signed-off-by: Marek Siarkowicz <siarkowicz@google.com>
This commit is contained in:
Marek Siarkowicz
2023-11-23 15:45:09 +01:00
parent 12b47c2b93
commit b7812513ce
3 changed files with 68 additions and 28 deletions

View File

@ -29,6 +29,7 @@ import (
"time"
"github.com/coreos/go-semver/semver"
"github.com/golang/protobuf/proto"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.uber.org/zap"
@ -52,6 +53,7 @@ import (
"go.etcd.io/etcd/server/v3/etcdserver/api/rafthttp"
"go.etcd.io/etcd/server/v3/etcdserver/api/snap"
"go.etcd.io/etcd/server/v3/etcdserver/api/v2store"
"go.etcd.io/etcd/server/v3/etcdserver/api/v3alarm"
apply2 "go.etcd.io/etcd/server/v3/etcdserver/apply"
"go.etcd.io/etcd/server/v3/etcdserver/cindex"
"go.etcd.io/etcd/server/v3/etcdserver/errors"
@ -156,11 +158,19 @@ func TestV2SetMemberAttributes(t *testing.T) {
defer betesting.Close(t, be)
cl := newTestClusterWithBackend(t, []*membership.Member{{ID: 1}}, be)
srv := &EtcdServer{
lgMu: new(sync.RWMutex),
lg: zaptest.NewLogger(t),
v2store: mockstore.NewRecorder(),
cluster: cl,
lgMu: new(sync.RWMutex),
lg: zaptest.NewLogger(t),
v2store: mockstore.NewRecorder(),
cluster: cl,
consistIndex: cindex.NewConsistentIndex(be),
w: wait.New(),
}
as, err := v3alarm.NewAlarmStore(srv.lg, schema.NewAlarmBackend(srv.lg, be))
if err != nil {
t.Fatal(err)
}
srv.alarmStore = as
srv.uberApply = srv.NewUberApplier()
req := pb.Request{
Method: "PUT",
@ -168,7 +178,13 @@ func TestV2SetMemberAttributes(t *testing.T) {
Path: membership.MemberAttributesStorePath(1),
Val: `{"Name":"abc","ClientURLs":["http://127.0.0.1:2379"]}`,
}
srv.applyV2Request((*RequestV2)(&req), membership.ApplyBoth)
data, err := proto.Marshal(&req)
if err != nil {
t.Fatal(err)
}
srv.applyEntryNormal(&raftpb.Entry{
Data: data,
}, membership.ApplyV2storeOnly)
w := membership.Attributes{Name: "abc", ClientURLs: []string{"http://127.0.0.1:2379"}}
if g := cl.Member(1).Attributes; !reflect.DeepEqual(g, w) {
t.Errorf("attributes = %v, want %v", g, w)
@ -183,11 +199,19 @@ func TestV2SetClusterVersion(t *testing.T) {
cl := newTestClusterWithBackend(t, []*membership.Member{}, be)
cl.SetVersion(semver.New("3.4.0"), api.UpdateCapability, membership.ApplyBoth)
srv := &EtcdServer{
lgMu: new(sync.RWMutex),
lg: zaptest.NewLogger(t),
v2store: mockstore.NewRecorder(),
cluster: cl,
lgMu: new(sync.RWMutex),
lg: zaptest.NewLogger(t),
v2store: mockstore.NewRecorder(),
cluster: cl,
consistIndex: cindex.NewConsistentIndex(be),
w: wait.New(),
}
as, err := v3alarm.NewAlarmStore(srv.lg, schema.NewAlarmBackend(srv.lg, be))
if err != nil {
t.Fatal(err)
}
srv.alarmStore = as
srv.uberApply = srv.NewUberApplier()
req := pb.Request{
Method: "PUT",
@ -195,7 +219,13 @@ func TestV2SetClusterVersion(t *testing.T) {
Path: membership.StoreClusterVersionKey(),
Val: "3.5.0",
}
srv.applyV2Request((*RequestV2)(&req), membership.ApplyBoth)
data, err := proto.Marshal(&req)
if err != nil {
t.Fatal(err)
}
srv.applyEntryNormal(&raftpb.Entry{
Data: data,
}, membership.ApplyV2storeOnly)
if g := cl.Version(); !reflect.DeepEqual(*g, version.V3_5) {
t.Errorf("attributes = %v, want %v", *g, version.V3_5)
}