fix missing meta in resp of getPeers (#15371)

Co-authored-by: james-prysm <90280386+james-prysm@users.noreply.github.com>
This commit is contained in:
Alleysira
2025-06-05 01:55:01 +08:00
committed by GitHub
parent 182c18a7b2
commit 79b064a6cc
4 changed files with 23 additions and 2 deletions

View File

@@ -33,8 +33,14 @@ type GetPeerResponse struct {
Data *Peer `json:"data"` Data *Peer `json:"data"`
} }
// Added Meta to align with beacon-api: https://ethereum.github.io/beacon-APIs/#/Node/getPeers
type Meta struct {
Count int `json:"count"`
}
type GetPeersResponse struct { type GetPeersResponse struct {
Data []*Peer `json:"data"` Data []*Peer `json:"data"`
Meta Meta `json:"meta"`
} }
type Peer struct { type Peer struct {

View File

@@ -112,7 +112,12 @@ func (s *Server) GetPeers(w http.ResponseWriter, r *http.Request) {
} }
allPeers = append(allPeers, p) allPeers = append(allPeers, p)
} }
resp := &structs.GetPeersResponse{Data: allPeers} resp := &structs.GetPeersResponse{
Data: allPeers,
Meta: structs.Meta{
Count: len(allPeers),
},
}
httputil.WriteJson(w, resp) httputil.WriteJson(w, resp)
return return
} }
@@ -177,7 +182,12 @@ func (s *Server) GetPeers(w http.ResponseWriter, r *http.Request) {
filteredPeers = append(filteredPeers, p) filteredPeers = append(filteredPeers, p)
} }
resp := &structs.GetPeersResponse{Data: filteredPeers} resp := &structs.GetPeersResponse{
Data: filteredPeers,
Meta: structs.Meta{
Count: len(filteredPeers),
},
}
httputil.WriteJson(w, resp) httputil.WriteJson(w, resp)
} }

View File

@@ -145,6 +145,7 @@ func TestGetPeers(t *testing.T) {
resp := &structs.GetPeersResponse{} resp := &structs.GetPeersResponse{}
require.NoError(t, json.Unmarshal(writer.Body.Bytes(), resp)) require.NoError(t, json.Unmarshal(writer.Body.Bytes(), resp))
require.Equal(t, 1, len(resp.Data)) require.Equal(t, 1, len(resp.Data))
assert.Equal(t, 1, resp.Meta.Count)
returnedPeer := resp.Data[0] returnedPeer := resp.Data[0]
assert.Equal(t, expectedId.String(), returnedPeer.PeerId) assert.Equal(t, expectedId.String(), returnedPeer.PeerId)
expectedEnr, err := peerStatus.ENR(expectedId) expectedEnr, err := peerStatus.ENR(expectedId)
@@ -229,6 +230,7 @@ func TestGetPeers(t *testing.T) {
resp := &structs.GetPeersResponse{} resp := &structs.GetPeersResponse{}
require.NoError(t, json.Unmarshal(writer.Body.Bytes(), resp)) require.NoError(t, json.Unmarshal(writer.Body.Bytes(), resp))
assert.Equal(t, len(tt.wantIds), len(resp.Data), "Wrong number of peers returned") assert.Equal(t, len(tt.wantIds), len(resp.Data), "Wrong number of peers returned")
assert.Equal(t, len(tt.wantIds), resp.Meta.Count, "meta.count does not match number of returned peers")
for _, id := range tt.wantIds { for _, id := range tt.wantIds {
expectedId := id.String() expectedId := id.String()
found := false found := false

View File

@@ -0,0 +1,3 @@
### Fixed
- Added missing `meta` field to the response of the endpoint `/eth/v1/node/peers` to align with the Beacon API spec (#15370)