From 49aff6eca7aa895aba8f5576c4bf96eb01dc7754 Mon Sep 17 00:00:00 2001 From: Jaynti Kanani <jdkanani@gmail.com> Date: Wed, 15 Jul 2020 13:56:30 +0530 Subject: [PATCH] new: add without-heimdall flag for testing purpose --- cmd/bor/chaincmd.go | 1 + cmd/bor/config.go | 7 ++++++- cmd/bor/main.go | 1 + cmd/utils/flags.go | 16 +++++++++++++++- consensus/bor/bor.go | 7 +++++-- eth/backend.go | 2 +- eth/config.go | 3 +++ 7 files changed, 32 insertions(+), 5 deletions(-) diff --git a/cmd/bor/chaincmd.go b/cmd/bor/chaincmd.go index 9747ac0ec..78bbc56df 100644 --- a/cmd/bor/chaincmd.go +++ b/cmd/bor/chaincmd.go @@ -78,6 +78,7 @@ The dumpgenesis command dumps the genesis block configuration in JSON format to Flags: []cli.Flag{ utils.DataDirFlag, utils.HeimdallURLFlag, + utils.WithoutHeimdallFlag, utils.CacheFlag, utils.SyncModeFlag, utils.GCModeFlag, diff --git a/cmd/bor/config.go b/cmd/bor/config.go index 7bedfcdd2..a59664e92 100644 --- a/cmd/bor/config.go +++ b/cmd/bor/config.go @@ -148,7 +148,12 @@ func enableWhisper(ctx *cli.Context) bool { func makeFullNode(ctx *cli.Context) *node.Node { stack, cfg := makeConfigNode(ctx) cfg.Eth.HeimdallURL = ctx.GlobalString(utils.HeimdallURLFlag.Name) - log.Info("Connecting to heimdall service on...", "heimdallURL", cfg.Eth.HeimdallURL) + cfg.Eth.WithoutHeimdall = ctx.GlobalBool(utils.WithoutHeimdallFlag.Name) + if cfg.Eth.WithoutHeimdall { + log.Info("Running without Heimdall node") + } else { + log.Info("Connecting to Heimdall node", "heimdallURL", cfg.Eth.HeimdallURL) + } utils.RegisterEthService(stack, &cfg.Eth) // Whisper must be explicitly enabled by specifying at least 1 whisper flag or in dev mode diff --git a/cmd/bor/main.go b/cmd/bor/main.go index 4d9149429..e1eb386ac 100644 --- a/cmd/bor/main.go +++ b/cmd/bor/main.go @@ -211,6 +211,7 @@ var ( borFlags = []cli.Flag{ utils.HeimdallURLFlag, + utils.WithoutHeimdallFlag, } ) diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index d0b39a773..75cdc5131 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -751,12 +751,22 @@ var ( Value: "", } + // // Bor Specific flags + // + + // HeimdallURLFlag flag for heimdall url HeimdallURLFlag = cli.StringFlag{ Name: "heimdall", Usage: "URL of Heimdall service", Value: "http://localhost:1317", } + + // WithoutHeimdallFlag no heimdall (for testing purpose) + WithoutHeimdallFlag = cli.BoolFlag{ + Name: "without-heimdall", + Usage: "Run without Heimdall service (for testing purpose)", + } ) // MakeDataDir retrieves the currently requested data directory, terminating @@ -1872,7 +1882,11 @@ func MakeChain(ctx *cli.Context, stack *node.Node, readOnly bool) (chain *core.B if config.Clique != nil { engine = clique.New(config.Clique, chainDb) } else if config.Bor != nil { - cfg := ð.Config{Genesis: genesis, HeimdallURL: ctx.GlobalString(HeimdallURLFlag.Name)} + cfg := ð.Config{ + Genesis: genesis, + HeimdallURL: ctx.GlobalString(HeimdallURLFlag.Name), + WithoutHeimdall: ctx.GlobalBool(WithoutHeimdallFlag.Name), + } workspace, err := ioutil.TempDir("", "console-tester-") if err != nil { Fatalf("failed to create temporary keystore: %v", err) diff --git a/consensus/bor/bor.go b/consensus/bor/bor.go index ee0a66cad..ae693906d 100644 --- a/consensus/bor/bor.go +++ b/consensus/bor/bor.go @@ -224,6 +224,7 @@ type Bor struct { validatorSetABI abi.ABI stateReceiverABI abi.ABI HeimdallClient IHeimdallClient + WithoutHeimdall bool stateSyncFeed event.Feed scope event.SubscriptionScope @@ -237,6 +238,7 @@ func New( db ethdb.Database, ethAPI *ethapi.PublicBlockChainAPI, heimdallURL string, + withoutHeimdall bool, ) *Bor { // get bor config borConfig := chainConfig.Bor @@ -264,6 +266,7 @@ func New( stateReceiverABI: sABI, GenesisContractsClient: genesisContractsClient, HeimdallClient: heimdallClient, + WithoutHeimdall: withoutHeimdall, } return c @@ -653,7 +656,7 @@ func (c *Bor) Prepare(chain consensus.ChainReader, header *types.Header) error { // rewards given. func (c *Bor) Finalize(chain consensus.ChainReader, header *types.Header, state *state.StateDB, txs []*types.Transaction, uncles []*types.Header) { headerNumber := header.Number.Uint64() - if headerNumber%c.config.Sprint == 0 { + if !c.WithoutHeimdall && headerNumber%c.config.Sprint == 0 { cx := chainContext{Chain: chain, Bor: c} // check and commit span if err := c.checkAndCommitSpan(state, header, cx); err != nil { @@ -677,7 +680,7 @@ func (c *Bor) Finalize(chain consensus.ChainReader, header *types.Header, state // nor block rewards given, and returns the final block. func (c *Bor) FinalizeAndAssemble(chain consensus.ChainReader, header *types.Header, state *state.StateDB, txs []*types.Transaction, uncles []*types.Header, receipts []*types.Receipt) (*types.Block, error) { headerNumber := header.Number.Uint64() - if headerNumber%c.config.Sprint == 0 { + if !c.WithoutHeimdall && headerNumber%c.config.Sprint == 0 { cx := chainContext{Chain: chain, Bor: c} // check and commit span diff --git a/eth/backend.go b/eth/backend.go index 3ae11fa0a..efffc64da 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -273,7 +273,7 @@ func CreateConsensusEngine(ctx *node.ServiceContext, chainConfig *params.ChainCo // If Matic Bor is requested, set it up if chainConfig.Bor != nil { - return bor.New(chainConfig, db, ee, ethConfig.HeimdallURL) + return bor.New(chainConfig, db, ee, ethConfig.HeimdallURL, ethConfig.WithoutHeimdall) } // Otherwise assume proof-of-work diff --git a/eth/config.go b/eth/config.go index ba8f73735..46ebcf831 100644 --- a/eth/config.go +++ b/eth/config.go @@ -182,4 +182,7 @@ type Config struct { // URL to connect to Heimdall node HeimdallURL string + + // No heimdall service + WithoutHeimdall bool } -- GitLab