7589733017
And include some node-specific configurations there with backwards compatibility. Note that in the future we'll remove Ledger's fields from the ProtocolConfiguration and it'll be possible to access them in Blockchain directly (not via .Ledger). The other option tried was using two configuration types separately, but that incurs more changes to the codebase, single structure that behaves almost like the old one is better for backwards compatibility. Fixes #2676.
61 lines
1.7 KiB
Go
61 lines
1.7 KiB
Go
package core_test
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/nspcc-dev/neo-go/internal/basicchain"
|
|
"github.com/nspcc-dev/neo-go/pkg/config"
|
|
"github.com/nspcc-dev/neo-go/pkg/core/chaindump"
|
|
"github.com/nspcc-dev/neo-go/pkg/io"
|
|
"github.com/nspcc-dev/neo-go/pkg/neotest"
|
|
"github.com/nspcc-dev/neo-go/pkg/neotest/chain"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
const (
|
|
// basicChainPrefix is a prefix used to store Basic chain .acc file for tests.
|
|
// It is also used to retrieve smart contracts that should be deployed to
|
|
// Basic chain.
|
|
basicChainPrefix = "../services/rpcsrv/testdata/"
|
|
// bcPersistInterval is the time period Blockchain persists changes to the
|
|
// underlying storage.
|
|
bcPersistInterval = time.Second
|
|
)
|
|
|
|
var (
|
|
pathToInternalContracts = filepath.Join("..", "..", "internal", "contracts")
|
|
)
|
|
|
|
// TestCreateBasicChain generates "../rpc/testdata/testblocks.acc" file which
|
|
// contains data for RPC unit tests. It also is a nice integration test.
|
|
// To generate new "../rpc/testdata/testblocks.acc", follow the steps:
|
|
// 1. Set saveChain down below to true
|
|
// 2. Run tests with `$ make test`
|
|
func TestCreateBasicChain(t *testing.T) {
|
|
const saveChain = false
|
|
|
|
bc, validators, committee := chain.NewMultiWithCustomConfig(t, func(cfg *config.Blockchain) {
|
|
cfg.P2PSigExtensions = true
|
|
})
|
|
e := neotest.NewExecutor(t, bc, validators, committee)
|
|
|
|
basicchain.Init(t, "../../", e)
|
|
|
|
if saveChain {
|
|
outStream, err := os.Create(basicChainPrefix + "testblocks.acc")
|
|
require.NoError(t, err)
|
|
t.Cleanup(func() {
|
|
outStream.Close()
|
|
})
|
|
|
|
writer := io.NewBinWriterFromIO(outStream)
|
|
writer.WriteU32LE(bc.BlockHeight())
|
|
err = chaindump.Dump(bc, writer, 1, bc.BlockHeight())
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
require.False(t, saveChain)
|
|
}
|