diff --git a/server/api/store.go b/server/api/store.go index 50d9297f376..b3caca88643 100644 --- a/server/api/store.go +++ b/server/api/store.go @@ -36,56 +36,10 @@ import ( "github.com/unrolled/render" ) -// MetaStore contains meta information about a store which needed to show. +// MetaStore contains meta information about a store. type MetaStore struct { - StoreID uint64 `json:"id,omitempty"` - Address string `json:"address,omitempty"` - Labels []*metapb.StoreLabel `json:"labels,omitempty"` - Version string `json:"version,omitempty"` - PeerAddress string `json:"peer_address,omitempty"` - StatusAddress string `json:"status_address,omitempty"` - GitHash string `json:"git_hash,omitempty"` - StartTimestamp int64 `json:"start_timestamp,omitempty"` - DeployPath string `json:"deploy_path,omitempty"` - LastHeartbeat int64 `json:"last_heartbeat,omitempty"` - PhysicallyDestroyed bool `json:"physically_destroyed,omitempty"` - StateName string `json:"state_name"` -} - -// NewMetaStore convert metapb.Store to MetaStore without State -func NewMetaStore(store *metapb.Store, stateName string) *MetaStore { - metaStore := &MetaStore{StateName: stateName} - metaStore.StoreID = store.GetId() - metaStore.Address = store.GetAddress() - metaStore.Labels = store.GetLabels() - metaStore.Version = store.GetVersion() - metaStore.PeerAddress = store.GetPeerAddress() - metaStore.StatusAddress = store.GetStatusAddress() - metaStore.GitHash = store.GetGitHash() - metaStore.StartTimestamp = store.GetStartTimestamp() - metaStore.DeployPath = store.GetDeployPath() - metaStore.LastHeartbeat = store.GetLastHeartbeat() - metaStore.PhysicallyDestroyed = store.GetPhysicallyDestroyed() - return metaStore -} - -// ConvertToMetapbStore convert to metapb.Store -// For test only. -func (m *MetaStore) ConvertToMetapbStore() *metapb.Store { - metapbStore := &metapb.Store{ - Id: m.StoreID, - Address: m.Address, - State: metapb.StoreState(metapb.StoreState_value[m.StateName]), - Labels: m.Labels, - Version: m.Version, - PeerAddress: m.PeerAddress, - StatusAddress: m.StatusAddress, - GitHash: m.GitHash, - StartTimestamp: m.StartTimestamp, - DeployPath: m.DeployPath, - LastHeartbeat: m.LastHeartbeat, - } - return metapbStore + *metapb.Store + StateName string `json:"state_name"` } // StoreStatus contains status about a store. @@ -123,7 +77,10 @@ const ( func newStoreInfo(opt *config.ScheduleConfig, store *core.StoreInfo) *StoreInfo { s := &StoreInfo{ - Store: NewMetaStore(store.GetMeta(), store.GetState().String()), + Store: &MetaStore{ + Store: store.GetMeta(), + StateName: store.GetState().String(), + }, Status: &StoreStatus{ Capacity: typeutil.ByteSize(store.GetCapacity()), Available: typeutil.ByteSize(store.GetAvailable()), diff --git a/server/api/store_test.go b/server/api/store_test.go index c59d7dbfcc6..80d741ceecf 100644 --- a/server/api/store_test.go +++ b/server/api/store_test.go @@ -32,7 +32,6 @@ import ( "github.com/tikv/pd/server" "github.com/tikv/pd/server/config" "github.com/tikv/pd/server/core" - "github.com/tikv/pd/server/versioninfo" ) var _ = Suite(&testStoreSuite{}) @@ -115,8 +114,7 @@ func checkStoresInfo(c *C, ss []*StoreInfo, want []*metapb.Store) { } } for _, s := range ss { - metapbStore := s.Store.ConvertToMetapbStore() - obtained := proto.Clone(metapbStore).(*metapb.Store) + obtained := proto.Clone(s.Store.Store).(*metapb.Store) expected := proto.Clone(mapWant[obtained.Id]).(*metapb.Store) // Ignore lastHeartbeat obtained.LastHeartbeat, expected.LastHeartbeat = 0, 0 @@ -168,51 +166,6 @@ func (s *testStoreSuite) TestStoreGet(c *C) { checkStoresInfo(c, []*StoreInfo{info}, s.stores[:1]) } -func (s *testStoreSuite) TestStoreInfoGet(c *C) { - timeStamp := time.Now().Unix() - url := fmt.Sprintf("%s/store/1112", s.urlPrefix) - _, errPut := s.grpcSvr.PutStore(context.Background(), &pdpb.PutStoreRequest{ - Header: &pdpb.RequestHeader{ClusterId: s.svr.ClusterID()}, - Store: &metapb.Store{ - Id: 1112, - Address: fmt.Sprintf("tikv%d", 1112), - State: 1, - Labels: nil, - Version: versioninfo.MinSupportedVersion(versioninfo.Version5_0).String(), - StatusAddress: fmt.Sprintf("tikv%d", 1112), - GitHash: "45ce5b9584d618bc777877bea77cb94f61b8410", - StartTimestamp: timeStamp, - DeployPath: "/home/test", - LastHeartbeat: timeStamp, - }, - }) - c.Assert(errPut, IsNil) - - info := new(StoreInfo) - - err := readJSON(testDialClient, url, info) - c.Assert(err, IsNil) - c.Assert(info.Store.StateName, Equals, metapb.StoreState_Offline.String()) - c.Assert(info.Store.StoreID, Equals, uint64(1112)) - c.Assert(info.Store.Address, Equals, "tikv1112") - c.Assert(info.Store.Version, Equals, versioninfo.MinSupportedVersion(versioninfo.Version5_0).String()) - c.Assert(info.Store.StatusAddress, Equals, fmt.Sprintf("tikv%d", 1112)) - c.Assert(info.Store.GitHash, Equals, "45ce5b9584d618bc777877bea77cb94f61b8410") - c.Assert(info.Store.StartTimestamp, Equals, timeStamp) - c.Assert(info.Store.DeployPath, Equals, "/home/test") - c.Assert(info.Store.LastHeartbeat, Equals, timeStamp) - - resp, err := testDialClient.Get(url) - c.Assert(err, IsNil) - defer resp.Body.Close() - b, err := io.ReadAll(resp.Body) - c.Assert(err, IsNil) - str := string(b) - c.Assert(strings.Contains(str, "\"state\""), Equals, false) - s.cleanup() - s.SetUpSuite(c) -} - func (s *testStoreSuite) TestStoreLabel(c *C) { url := fmt.Sprintf("%s/store/1", s.urlPrefix) var info StoreInfo @@ -309,7 +262,7 @@ func (s *testStoreSuite) TestStoreDelete(c *C) { err := readJSON(testDialClient, url, store) c.Assert(err, IsNil) c.Assert(store.Store.PhysicallyDestroyed, IsFalse) - c.Assert(store.Store.StateName, Equals, metapb.StoreState_Offline.String()) + c.Assert(store.Store.State, Equals, metapb.StoreState_Offline) // up store success because it is offline but not physically destroyed status := requestStatusBody(c, testDialClient, http.MethodPost, fmt.Sprintf("%s/state?state=Up", url)) @@ -320,7 +273,7 @@ func (s *testStoreSuite) TestStoreDelete(c *C) { store = new(StoreInfo) err = readJSON(testDialClient, url, store) c.Assert(err, IsNil) - c.Assert(store.Store.StateName, Equals, metapb.StoreState_Up.String()) + c.Assert(store.Store.State, Equals, metapb.StoreState_Up) c.Assert(store.Store.PhysicallyDestroyed, IsFalse) // offline store with physically destroyed @@ -328,7 +281,7 @@ func (s *testStoreSuite) TestStoreDelete(c *C) { c.Assert(status, Equals, http.StatusOK) err = readJSON(testDialClient, url, store) c.Assert(err, IsNil) - c.Assert(store.Store.StateName, Equals, metapb.StoreState_Offline.String()) + c.Assert(store.Store.State, Equals, metapb.StoreState_Offline) c.Assert(store.Store.PhysicallyDestroyed, IsTrue) // try to up store again failed because it is physically destroyed @@ -344,7 +297,7 @@ func (s *testStoreSuite) TestStoreSetState(c *C) { info := StoreInfo{} err := readJSON(testDialClient, url, &info) c.Assert(err, IsNil) - c.Assert(info.Store.StateName, Equals, metapb.StoreState_Up.String()) + c.Assert(info.Store.State, Equals, metapb.StoreState_Up) // Set to Offline. info = StoreInfo{} @@ -352,7 +305,7 @@ func (s *testStoreSuite) TestStoreSetState(c *C) { c.Assert(err, IsNil) err = readJSON(testDialClient, url, &info) c.Assert(err, IsNil) - c.Assert(info.Store.StateName, Equals, metapb.StoreState_Offline.String()) + c.Assert(info.Store.State, Equals, metapb.StoreState_Offline) // store not found info = StoreInfo{} @@ -367,7 +320,7 @@ func (s *testStoreSuite) TestStoreSetState(c *C) { c.Assert(err, NotNil) err = readJSON(testDialClient, url, &info) c.Assert(err, IsNil) - c.Assert(info.Store.StateName, Equals, metapb.StoreState_Offline.String()) + c.Assert(info.Store.State, Equals, metapb.StoreState_Offline) } // Set back to Up. @@ -376,7 +329,7 @@ func (s *testStoreSuite) TestStoreSetState(c *C) { c.Assert(err, IsNil) err = readJSON(testDialClient, url, &info) c.Assert(err, IsNil) - c.Assert(info.Store.StateName, Equals, metapb.StoreState_Up.String()) + c.Assert(info.Store.State, Equals, metapb.StoreState_Up) } func (s *testStoreSuite) TestUrlStoreFilter(c *C) { diff --git a/server/api/trend.go b/server/api/trend.go index 564319af163..542d2d9e966 100644 --- a/server/api/trend.go +++ b/server/api/trend.go @@ -130,8 +130,8 @@ func (h *trendHandler) getTrendStores() ([]trendStore, error) { for _, store := range stores { info := newStoreInfo(h.svr.GetScheduleConfig(), store) s := trendStore{ - ID: info.Store.StoreID, - Address: info.Store.Address, + ID: info.Store.GetId(), + Address: info.Store.GetAddress(), StateName: info.Store.StateName, Capacity: uint64(info.Status.Capacity), Available: uint64(info.Status.Available), diff --git a/tests/cluster.go b/tests/cluster.go index c0768bec9d8..4d42ee38806 100644 --- a/tests/cluster.go +++ b/tests/cluster.go @@ -361,7 +361,7 @@ func (s *TestServer) GetStoreRegions(storeID uint64) []*core.RegionInfo { func (s *TestServer) BootstrapCluster() error { bootstrapReq := &pdpb.BootstrapRequest{ Header: &pdpb.RequestHeader{ClusterId: s.GetClusterID()}, - Store: &metapb.Store{Id: 1, Address: "mock://1", LastHeartbeat: time.Now().UnixNano()}, + Store: &metapb.Store{Id: 1, Address: "mock://1"}, Region: &metapb.Region{Id: 2, Peers: []*metapb.Peer{{Id: 3, StoreId: 1, Role: metapb.PeerRole_Voter}}}, } _, err := s.grpcServer.Bootstrap(context.Background(), bootstrapReq) diff --git a/tests/pdctl/helper.go b/tests/pdctl/helper.go index 67d991871b1..66e675edb7f 100644 --- a/tests/pdctl/helper.go +++ b/tests/pdctl/helper.go @@ -51,8 +51,7 @@ func CheckStoresInfo(c *check.C, stores []*api.StoreInfo, want []*metapb.Store) } } for _, s := range stores { - metapbStore := s.Store.ConvertToMetapbStore() - obtained := proto.Clone(metapbStore).(*metapb.Store) + obtained := proto.Clone(s.Store.Store).(*metapb.Store) expected := proto.Clone(mapWant[obtained.Id]).(*metapb.Store) // Ignore lastHeartbeat obtained.LastHeartbeat, expected.LastHeartbeat = 0, 0 diff --git a/tests/pdctl/store/store_test.go b/tests/pdctl/store/store_test.go index 59b9927bb93..e89115ef2c6 100644 --- a/tests/pdctl/store/store_test.go +++ b/tests/pdctl/store/store_test.go @@ -248,7 +248,7 @@ func (s *storeTestSuite) TestStore(c *C) { c.Assert(ok, IsFalse) // store delete command - c.Assert(storeInfo.Store.StateName, Equals, metapb.StoreState_Up.String()) + c.Assert(storeInfo.Store.State, Equals, metapb.StoreState_Up) args = []string{"-u", pdAddr, "store", "delete", "1"} _, err = pdctl.ExecuteCommand(cmd, args...) c.Assert(err, IsNil) @@ -256,7 +256,7 @@ func (s *storeTestSuite) TestStore(c *C) { output, err = pdctl.ExecuteCommand(cmd, args...) c.Assert(err, IsNil) c.Assert(json.Unmarshal(output, &storeInfo), IsNil) - c.Assert(storeInfo.Store.StateName, Equals, metapb.StoreState_Offline.String()) + c.Assert(storeInfo.Store.State, Equals, metapb.StoreState_Offline) // store check status args = []string{"-u", pdAddr, "store", "check", "Offline"} @@ -285,7 +285,7 @@ func (s *storeTestSuite) TestStore(c *C) { output, err = pdctl.ExecuteCommand(cmd, args...) c.Assert(err, IsNil) c.Assert(json.Unmarshal(output, &storeInfo), IsNil) - c.Assert(storeInfo.Store.StateName, Equals, metapb.StoreState_Offline.String()) + c.Assert(storeInfo.Store.State, Equals, metapb.StoreState_Offline) // store remove-tombstone args = []string{"-u", pdAddr, "store", "remove-tombstone"}