address additional comments

This commit is contained in:
edgedlt 2024-06-07 17:08:51 +01:00
parent aa88bd24a2
commit 692af7e6b9
4 changed files with 53 additions and 2 deletions

View file

@ -242,7 +242,7 @@ burned).
#### `getpeerheights` call #### `getpeerheights` call
This method returns the block height and user agent of all connected peers. This method returns the block height and user agent of all connected peers. The block height field may be stale depending on the PingInterval node config and the time since the last ping. Ping behavior may differ between node implementations.
#### Historic calls #### Historic calls

View file

@ -1,12 +1,15 @@
package result package result
type ( type (
// GetPeerHeights is the payload for outputting peer heights in `getpeerheights` RPC call.
GetPeerHeights struct { GetPeerHeights struct {
PeerHeights PeerHeights `json:"peers"` PeerHeights PeerHeights `json:"connected"`
} }
// PeerHeights represents a slice of PeerHeight.
PeerHeights []PeerHeight PeerHeights []PeerHeight
// PeerHeight gives the user agent and last known block height of a connected peer.
PeerHeight struct { PeerHeight struct {
Address string `json:"address"` Address string `json:"address"`
UserAgent string `json:"useragent"` UserAgent string `json:"useragent"`
@ -21,6 +24,7 @@ func NewGetPeerHeights() GetPeerHeights {
} }
} }
// AddPeers adds a set of peers to the peer heights slice.
func (g *GetPeerHeights) AddPeers(ps []struct { func (g *GetPeerHeights) AddPeers(ps []struct {
Address string Address string
UserAgent string UserAgent string

View file

@ -397,6 +397,16 @@ func (c *Client) GetPeers() (*result.GetPeers, error) {
return resp, nil return resp, nil
} }
// GetPeerHeights returns the last known block height and user agent of all connected peers.
func (c *Client) GetPeerHeights() (*result.GetPeerHeights, error) {
var resp = &result.GetPeerHeights{}
if err := c.performRequest("getpeerheights", nil, resp); err != nil {
return resp, err
}
return resp, nil
}
// GetRawMemPool returns a list of unconfirmed transactions in the memory. // GetRawMemPool returns a list of unconfirmed transactions in the memory.
func (c *Client) GetRawMemPool() ([]util.Uint256, error) { func (c *Client) GetRawMemPool() ([]util.Uint256, error) {
var resp = new([]util.Uint256) var resp = new([]util.Uint256)

View file

@ -594,6 +594,37 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{
}, },
}, },
}, },
"getpeerheights": {
{
name: "positive",
invoke: func(c *Client) (any, error) {
return c.GetPeerHeights()
},
serverResponse: `{"jsonrpc":"2.0","id":1,"result":{"connected":[{"useragent":"/NEO-GO:0.106.1/","height":1337}]}}`,
result: func(c *Client) any {
return &result.GetPeerHeights{
PeerHeights: []result.PeerHeight{
{
UserAgent: "/NEO-GO:0.106.1/",
Height: 1337,
},
},
}
},
},
{
name: "empty",
invoke: func(c *Client) (any, error) {
return c.GetPeerHeights()
},
serverResponse: `{"jsonrpc":"2.0","id":1,"result":{"connected":[]}}`,
result: func(c *Client) any {
return &result.GetPeerHeights{
PeerHeights: []result.PeerHeight{},
}
},
},
},
"getrawmempool": { "getrawmempool": {
{ {
name: "positive", name: "positive",
@ -1768,6 +1799,12 @@ var rpcClientErrorCases = map[string][]rpcClientErrorCase{
return c.GetPeers() return c.GetPeers()
}, },
}, },
{
name: "getpeerheights_unmarshalling_error",
invoke: func(c *Client) (any, error) {
return c.GetPeerHeights()
},
},
{ {
name: "getrawmempool_unmarshalling_error", name: "getrawmempool_unmarshalling_error",
invoke: func(c *Client) (any, error) { invoke: func(c *Client) (any, error) {