mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-03-30 15:08:33 +00:00
[NOD-1215] Added integration test for address exchange (#839)
* [NOD-1215] Added integration test for address exchange * [NOD-1215] Fix error message
This commit is contained in:
parent
fa58623815
commit
da90755530
@ -132,6 +132,7 @@ func New(cfg *config.Config, databaseContext *dbaccess.DatabaseContext, interrup
|
||||
protocolManager: protocolManager,
|
||||
connectionManager: connectionManager,
|
||||
netAdapter: netAdapter,
|
||||
addressManager: addressManager,
|
||||
}, nil
|
||||
}
|
||||
|
||||
@ -235,6 +236,11 @@ func (a *App) P2PNodeID() *id.ID {
|
||||
return a.netAdapter.ID()
|
||||
}
|
||||
|
||||
// AddressManager returns the AddressManager associated with this App
|
||||
func (a *App) AddressManager() *addressmanager.AddressManager {
|
||||
return a.addressManager
|
||||
}
|
||||
|
||||
// WaitForShutdown blocks until the main listener and peer handlers are stopped.
|
||||
func (a *App) WaitForShutdown() {
|
||||
// TODO(libp2p)
|
||||
|
32
integration/address_exchange_test.go
Normal file
32
integration/address_exchange_test.go
Normal file
@ -0,0 +1,32 @@
|
||||
package integration
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestAddressExchange(t *testing.T) {
|
||||
appHarness1, appHarness2, appHarness3, teardown := standardSetup(t)
|
||||
defer teardown()
|
||||
|
||||
testAddress := "1.2.3.4:6789"
|
||||
err := appHarness1.app.AddressManager().AddAddressByIP(testAddress, nil)
|
||||
if err != nil {
|
||||
t.Fatalf("Error adding address to addressManager: %+v", err)
|
||||
}
|
||||
|
||||
connect(t, appHarness1, appHarness2)
|
||||
connect(t, appHarness2, appHarness3)
|
||||
|
||||
peerAddresses, err := appHarness3.rpcClient.GetPeerAddresses()
|
||||
if err != nil {
|
||||
t.Fatalf("Error getting peer addresses: %+v", err)
|
||||
}
|
||||
|
||||
for _, peerAddress := range peerAddresses.Addresses {
|
||||
if peerAddress.Addr == testAddress {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
t.Errorf("Didn't find testAddress in list of addresses of appHarness3")
|
||||
}
|
@ -43,7 +43,7 @@ func setupHarness(t *testing.T, params *harnessParams) (harness *appHarness, tea
|
||||
setRPCClient(t, harness)
|
||||
|
||||
return harness, func() {
|
||||
teardown(t, harness)
|
||||
teardownHarness(t, harness)
|
||||
}
|
||||
}
|
||||
|
||||
@ -95,7 +95,8 @@ func setRPCClient(t *testing.T, harness *appHarness) {
|
||||
t.Fatalf("Error getting RPC client %+v", err)
|
||||
}
|
||||
}
|
||||
func teardown(t *testing.T, harness *appHarness) {
|
||||
|
||||
func teardownHarness(t *testing.T, harness *appHarness) {
|
||||
err := harness.app.Stop()
|
||||
if err != nil {
|
||||
t.Errorf("Error stopping App: %+v", err)
|
||||
|
@ -149,6 +149,43 @@ func (c *Client) GetConnectedPeerInfo() ([]model.GetConnectedPeerInfoResult, err
|
||||
return c.GetConnectedPeerInfoAsync().Receive()
|
||||
}
|
||||
|
||||
// FutureGetPeerAddresses is a future promise to deliver the result of a
|
||||
// GetPeerAddresses RPC invocation (or an applicable error).
|
||||
type FutureGetPeerAddresses chan *response
|
||||
|
||||
// Receive waits for the response promised by the future and returns data about
|
||||
// peer addresses.
|
||||
func (r FutureGetPeerAddresses) Receive() (*model.GetPeerAddressesResult, error) {
|
||||
res, err := receiveFuture(r)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Unmarshal result as an array of getPeerAddresses result objects.
|
||||
peerAddresses := &model.GetPeerAddressesResult{}
|
||||
err = json.Unmarshal(res, peerAddresses)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return peerAddresses, nil
|
||||
}
|
||||
|
||||
// GetPeerAddressesAsync returns an instance of a type that can be used to get the
|
||||
// result of the RPC at some future time by invoking the Receive function on the
|
||||
// returned instance.
|
||||
//
|
||||
// See GetPeerAddresses for the blocking version and more details.
|
||||
func (c *Client) GetPeerAddressesAsync() FutureGetPeerAddresses {
|
||||
cmd := model.NewGetPeerAddressesCmd()
|
||||
return c.sendCmd(cmd)
|
||||
}
|
||||
|
||||
// GetPeerAddresses returns data about each connected network peer.
|
||||
func (c *Client) GetPeerAddresses() (*model.GetPeerAddressesResult, error) {
|
||||
return c.GetPeerAddressesAsync().Receive()
|
||||
}
|
||||
|
||||
// FutureGetNetTotalsResult is a future promise to deliver the result of a
|
||||
// GetNetTotalsAsync RPC invocation (or an applicable error).
|
||||
type FutureGetNetTotalsResult chan *response
|
||||
|
Loading…
x
Reference in New Issue
Block a user