mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-03-30 15:08:33 +00:00
51 lines
1.5 KiB
Go
51 lines
1.5 KiB
Go
package testing
|
|
|
|
import (
|
|
"github.com/kaspanet/kaspad/app/appmessage"
|
|
"github.com/kaspanet/kaspad/app/protocol/flows/addressexchange"
|
|
peerpkg "github.com/kaspanet/kaspad/app/protocol/peer"
|
|
"github.com/kaspanet/kaspad/domain/consensus/utils/testutils"
|
|
"github.com/kaspanet/kaspad/domain/dagconfig"
|
|
"github.com/kaspanet/kaspad/infrastructure/network/addressmanager"
|
|
"github.com/kaspanet/kaspad/infrastructure/network/netadapter/router"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
type fakeReceiveAddressesContext struct{}
|
|
|
|
func (f fakeReceiveAddressesContext) AddressManager() *addressmanager.AddressManager {
|
|
return nil
|
|
}
|
|
|
|
func TestReceiveAddressesErrors(t *testing.T) {
|
|
testutils.ForAllNets(t, true, func(t *testing.T, params *dagconfig.Params) {
|
|
incomingRoute := router.NewRoute()
|
|
outgoingRoute := router.NewRoute()
|
|
peer := peerpkg.New(nil)
|
|
errChan := make(chan error)
|
|
go func() {
|
|
errChan <- addressexchange.ReceiveAddresses(fakeReceiveAddressesContext{}, incomingRoute, outgoingRoute, peer)
|
|
}()
|
|
|
|
_, err := outgoingRoute.DequeueWithTimeout(time.Second)
|
|
if err != nil {
|
|
t.Fatalf("DequeueWithTimeout: %+v", err)
|
|
}
|
|
|
|
// Sending addressmanager.GetAddressesMax+1 addresses should trigger a ban
|
|
err = incomingRoute.Enqueue(appmessage.NewMsgAddresses(make([]*appmessage.NetAddress,
|
|
addressmanager.GetAddressesMax+1)))
|
|
if err != nil {
|
|
t.Fatalf("Enqueue: %+v", err)
|
|
}
|
|
|
|
select {
|
|
case err := <-errChan:
|
|
checkFlowError(t, err, true, true, "address count exceeded")
|
|
case <-time.After(time.Second):
|
|
t.Fatalf("timed out after %s", time.Second)
|
|
}
|
|
})
|
|
}
|