github.com/vipernet-xyz/tm@v0.34.24/test/fuzz/p2p/addrbook/fuzz.go (about)

     1  package addr
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"math/rand"
     7  
     8  	"github.com/vipernet-xyz/tm/p2p"
     9  	"github.com/vipernet-xyz/tm/p2p/pex"
    10  )
    11  
    12  var addrBook = pex.NewAddrBook("./testdata/addrbook.json", true)
    13  
    14  func Fuzz(data []byte) int {
    15  	addr := new(p2p.NetAddress)
    16  	if err := json.Unmarshal(data, addr); err != nil {
    17  		return -1
    18  	}
    19  
    20  	// Fuzz AddAddress.
    21  	err := addrBook.AddAddress(addr, addr)
    22  	if err != nil {
    23  		return 0
    24  	}
    25  
    26  	// Also, make sure PickAddress always returns a non-nil address.
    27  	//nolint:gosec // G404: Use of weak random number generator (math/rand instead of crypto/rand)
    28  	bias := rand.Intn(100)
    29  	if p := addrBook.PickAddress(bias); p == nil {
    30  		panic(fmt.Sprintf("picked a nil address (bias: %d, addrBook size: %v)",
    31  			bias, addrBook.Size()))
    32  	}
    33  
    34  	return 1
    35  }