mirror of
https://github.com/luxfi/node.git
synced 2026-10-30 15:24:05 +00:00
121 lines
2.4 KiB
Go
121 lines
2.4 KiB
Go
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
|
|
package network
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/luxfi/metric"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/luxfi/ids"
|
|
"github.com/luxfi/node/vms/xvm/fxs"
|
|
"github.com/luxfi/node/vms/xvm/txs"
|
|
"github.com/luxfi/node/vms/xvm/txs/mempool"
|
|
lux "github.com/luxfi/utxo"
|
|
|
|
"github.com/luxfi/utxo/secp256k1fx"
|
|
)
|
|
|
|
var _ TxVerifier = (*testVerifier)(nil)
|
|
|
|
type testVerifier struct {
|
|
err error
|
|
}
|
|
|
|
func (v testVerifier) VerifyTx(*txs.Tx) error {
|
|
return v.err
|
|
}
|
|
|
|
func TestMarshaller(t *testing.T) {
|
|
require := require.New(t)
|
|
|
|
parser, err := txs.NewParser(
|
|
[]fxs.Fx{
|
|
&secp256k1fx.Fx{},
|
|
},
|
|
)
|
|
require.NoError(err)
|
|
|
|
marhsaller := txParser{
|
|
parser: parser,
|
|
}
|
|
|
|
want := &txs.Tx{Unsigned: &txs.BaseTx{}}
|
|
require.NoError(want.Initialize())
|
|
|
|
bytes, err := marhsaller.MarshalGossip(want)
|
|
require.NoError(err)
|
|
|
|
got, err := marhsaller.UnmarshalGossip(bytes)
|
|
require.NoError(err)
|
|
require.Equal(want.GossipID(), got.GossipID())
|
|
}
|
|
|
|
func TestGossipMempoolAdd(t *testing.T) {
|
|
require := require.New(t)
|
|
|
|
metrics := metric.NewRegistry()
|
|
|
|
baseMempool, err := mempool.New("", metrics)
|
|
require.NoError(err)
|
|
|
|
mempool, err := newGossipMempool(
|
|
baseMempool,
|
|
metrics,
|
|
nil,
|
|
testVerifier{},
|
|
DefaultConfig.ExpectedBloomFilterElements,
|
|
DefaultConfig.ExpectedBloomFilterFalsePositiveProbability,
|
|
DefaultConfig.MaxBloomFilterFalsePositiveProbability,
|
|
)
|
|
require.NoError(err)
|
|
|
|
tx := &txs.Tx{
|
|
Unsigned: &txs.BaseTx{
|
|
BaseTx: lux.BaseTx{
|
|
Ins: []*lux.TransferableInput{},
|
|
},
|
|
},
|
|
TxID: ids.GenerateTestID(),
|
|
}
|
|
|
|
require.NoError(mempool.Add(tx))
|
|
require.True(mempool.bloom.Has(tx))
|
|
}
|
|
|
|
func TestGossipMempoolAddVerified(t *testing.T) {
|
|
require := require.New(t)
|
|
|
|
metrics := metric.NewRegistry()
|
|
|
|
baseMempool, err := mempool.New("", metrics)
|
|
require.NoError(err)
|
|
|
|
mempool, err := newGossipMempool(
|
|
baseMempool,
|
|
metrics,
|
|
nil,
|
|
testVerifier{
|
|
err: errTest, // We shouldn't be attempting to verify the tx in this flow
|
|
},
|
|
DefaultConfig.ExpectedBloomFilterElements,
|
|
DefaultConfig.ExpectedBloomFilterFalsePositiveProbability,
|
|
DefaultConfig.MaxBloomFilterFalsePositiveProbability,
|
|
)
|
|
require.NoError(err)
|
|
|
|
tx := &txs.Tx{
|
|
Unsigned: &txs.BaseTx{
|
|
BaseTx: lux.BaseTx{
|
|
Ins: []*lux.TransferableInput{},
|
|
},
|
|
},
|
|
TxID: ids.GenerateTestID(),
|
|
}
|
|
|
|
require.NoError(mempool.AddWithoutVerification(tx))
|
|
require.True(mempool.bloom.Has(tx))
|
|
}
|