mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2024-12-25 21:07:18 +00:00
588dea83b7
* test coverage and updates to config twiddlers * LoadChainConfigFile error if SetActive conflicts * lint * wip working around test issues * more fixes, mass test updates * lint * linting * thanks deepsource! * fix undeclared vars * fixing more undefined * fix a bug, make a bug, repeat * gaz * use stock mainnet in case fork schedule matters * remove unused KnownConfigs * post-merge cleanup * eliminating OverrideBeaconConfig outside tests * more cleanup of OverrideBeaconConfig outside tests * config for interop w/ genesis gen support * improve var name * API on package instead of exported value * cleanup remainders of "registry" naming * Nishant feedback * add ropstein to configset * lint * lint #2 * ✂️ * revert accidental commented line * check if active is nil (replace called on empty) * Nishant feedback * replace OverrideBeaconConfig call * update interop instructions w/ new flag * don't let interop replace config set via cli flags Co-authored-by: kasey <kasey@users.noreply.github.com>
112 lines
4.5 KiB
Go
112 lines
4.5 KiB
Go
package p2p_test
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/golang/snappy"
|
|
pubsubpb "github.com/libp2p/go-libp2p-pubsub/pb"
|
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
|
"github.com/prysmaticlabs/prysm/beacon-chain/p2p"
|
|
"github.com/prysmaticlabs/prysm/config/params"
|
|
"github.com/prysmaticlabs/prysm/crypto/hash"
|
|
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
|
|
"github.com/prysmaticlabs/prysm/network/forks"
|
|
"github.com/prysmaticlabs/prysm/testing/assert"
|
|
)
|
|
|
|
func TestMsgID_HashesCorrectly(t *testing.T) {
|
|
params.SetupTestConfigCleanup(t)
|
|
genesisValidatorsRoot := bytesutil.PadTo([]byte{'A'}, 32)
|
|
d, err := forks.CreateForkDigest(time.Now(), genesisValidatorsRoot)
|
|
assert.NoError(t, err)
|
|
tpc := fmt.Sprintf(p2p.BlockSubnetTopicFormat, d)
|
|
invalidSnappy := [32]byte{'J', 'U', 'N', 'K'}
|
|
pMsg := &pubsubpb.Message{Data: invalidSnappy[:], Topic: &tpc}
|
|
hashedData := hash.Hash(append(params.BeaconNetworkConfig().MessageDomainInvalidSnappy[:], pMsg.Data...))
|
|
msgID := string(hashedData[:20])
|
|
assert.Equal(t, msgID, p2p.MsgID(genesisValidatorsRoot, pMsg), "Got incorrect msg id")
|
|
|
|
validObj := [32]byte{'v', 'a', 'l', 'i', 'd'}
|
|
enc := snappy.Encode(nil, validObj[:])
|
|
nMsg := &pubsubpb.Message{Data: enc, Topic: &tpc}
|
|
hashedData = hash.Hash(append(params.BeaconNetworkConfig().MessageDomainValidSnappy[:], validObj[:]...))
|
|
msgID = string(hashedData[:20])
|
|
assert.Equal(t, msgID, p2p.MsgID(genesisValidatorsRoot, nMsg), "Got incorrect msg id")
|
|
}
|
|
|
|
func TestMessageIDFunction_HashesCorrectlyAltair(t *testing.T) {
|
|
params.SetupTestConfigCleanup(t)
|
|
genesisValidatorsRoot := bytesutil.PadTo([]byte{'A'}, 32)
|
|
d, err := signing.ComputeForkDigest(params.BeaconConfig().AltairForkVersion, genesisValidatorsRoot)
|
|
assert.NoError(t, err)
|
|
tpc := fmt.Sprintf(p2p.BlockSubnetTopicFormat, d)
|
|
topicLen := uint64(len(tpc))
|
|
topicLenBytes := bytesutil.Uint64ToBytesLittleEndian(topicLen)
|
|
invalidSnappy := [32]byte{'J', 'U', 'N', 'K'}
|
|
pMsg := &pubsubpb.Message{Data: invalidSnappy[:], Topic: &tpc}
|
|
// Create object to hash
|
|
combinedObj := append(params.BeaconNetworkConfig().MessageDomainInvalidSnappy[:], topicLenBytes...)
|
|
combinedObj = append(combinedObj, tpc...)
|
|
combinedObj = append(combinedObj, pMsg.Data...)
|
|
hashedData := hash.Hash(combinedObj)
|
|
msgID := string(hashedData[:20])
|
|
assert.Equal(t, msgID, p2p.MsgID(genesisValidatorsRoot, pMsg), "Got incorrect msg id")
|
|
|
|
validObj := [32]byte{'v', 'a', 'l', 'i', 'd'}
|
|
enc := snappy.Encode(nil, validObj[:])
|
|
nMsg := &pubsubpb.Message{Data: enc, Topic: &tpc}
|
|
// Create object to hash
|
|
combinedObj = append(params.BeaconNetworkConfig().MessageDomainValidSnappy[:], topicLenBytes...)
|
|
combinedObj = append(combinedObj, tpc...)
|
|
combinedObj = append(combinedObj, validObj[:]...)
|
|
hashedData = hash.Hash(combinedObj)
|
|
msgID = string(hashedData[:20])
|
|
assert.Equal(t, msgID, p2p.MsgID(genesisValidatorsRoot, nMsg), "Got incorrect msg id")
|
|
}
|
|
|
|
func TestMessageIDFunction_HashesCorrectlyBellatrix(t *testing.T) {
|
|
params.SetupTestConfigCleanup(t)
|
|
genesisValidatorsRoot := bytesutil.PadTo([]byte{'A'}, 32)
|
|
d, err := signing.ComputeForkDigest(params.BeaconConfig().BellatrixForkVersion, genesisValidatorsRoot)
|
|
assert.NoError(t, err)
|
|
tpc := fmt.Sprintf(p2p.BlockSubnetTopicFormat, d)
|
|
topicLen := uint64(len(tpc))
|
|
topicLenBytes := bytesutil.Uint64ToBytesLittleEndian(topicLen)
|
|
invalidSnappy := [32]byte{'J', 'U', 'N', 'K'}
|
|
pMsg := &pubsubpb.Message{Data: invalidSnappy[:], Topic: &tpc}
|
|
// Create object to hash
|
|
combinedObj := append(params.BeaconNetworkConfig().MessageDomainInvalidSnappy[:], topicLenBytes...)
|
|
combinedObj = append(combinedObj, tpc...)
|
|
combinedObj = append(combinedObj, pMsg.Data...)
|
|
hashedData := hash.Hash(combinedObj)
|
|
msgID := string(hashedData[:20])
|
|
assert.Equal(t, msgID, p2p.MsgID(genesisValidatorsRoot, pMsg), "Got incorrect msg id")
|
|
|
|
validObj := [32]byte{'v', 'a', 'l', 'i', 'd'}
|
|
enc := snappy.Encode(nil, validObj[:])
|
|
nMsg := &pubsubpb.Message{Data: enc, Topic: &tpc}
|
|
// Create object to hash
|
|
combinedObj = append(params.BeaconNetworkConfig().MessageDomainValidSnappy[:], topicLenBytes...)
|
|
combinedObj = append(combinedObj, tpc...)
|
|
combinedObj = append(combinedObj, validObj[:]...)
|
|
hashedData = hash.Hash(combinedObj)
|
|
msgID = string(hashedData[:20])
|
|
assert.Equal(t, msgID, p2p.MsgID(genesisValidatorsRoot, nMsg), "Got incorrect msg id")
|
|
}
|
|
|
|
func TestMsgID_WithNilTopic(t *testing.T) {
|
|
params.SetupTestConfigCleanup(t)
|
|
msg := &pubsubpb.Message{
|
|
Data: make([]byte, 32),
|
|
Topic: nil,
|
|
}
|
|
|
|
invalid := make([]byte, 20)
|
|
copy(invalid, "invalid")
|
|
|
|
res := p2p.MsgID([]byte{0x01}, msg)
|
|
assert.Equal(t, res, string(invalid))
|
|
}
|