diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go index e801ca3521..6d41261f80 100644 --- a/cmd/geth/chaincmd.go +++ b/cmd/geth/chaincmd.go @@ -191,6 +191,7 @@ func initGenesis(ctx *cli.Context) error { // Open an initialise both full and light databases stack := makeFullNode(ctx) defer stack.Close() + for _, name := range []string{"chaindata", "lightchaindata"} { chaindb, err := stack.OpenDatabase(name, 0, 0) if err != nil { @@ -211,6 +212,7 @@ func importChain(ctx *cli.Context) error { } stack := makeFullNode(ctx) defer stack.Close() + chain, chainDb := utils.MakeChain(ctx, stack) defer chainDb.Close() @@ -306,6 +308,7 @@ func exportChain(ctx *cli.Context) error { } stack := makeFullNode(ctx) defer stack.Close() + chain, _ := utils.MakeChain(ctx, stack) start := time.Now() @@ -340,9 +343,10 @@ func importPreimages(ctx *cli.Context) error { } stack := makeFullNode(ctx) defer stack.Close() - diskdb := utils.MakeChainDatabase(ctx, stack).(*ethdb.LDBDatabase) + diskdb := utils.MakeChainDatabase(ctx, stack).(*ethdb.LDBDatabase) start := time.Now() + if err := utils.ImportPreimages(diskdb, ctx.Args().First()); err != nil { utils.Fatalf("Import error: %v\n", err) } @@ -357,9 +361,10 @@ func exportPreimages(ctx *cli.Context) error { } stack := makeFullNode(ctx) defer stack.Close() - diskdb := utils.MakeChainDatabase(ctx, stack).(*ethdb.LDBDatabase) + diskdb := utils.MakeChainDatabase(ctx, stack).(*ethdb.LDBDatabase) start := time.Now() + if err := utils.ExportPreimages(diskdb, ctx.Args().First()); err != nil { utils.Fatalf("Export error: %v\n", err) } @@ -375,8 +380,8 @@ func copyDb(ctx *cli.Context) error { // Initialize a new chain for the running node to sync into stack := makeFullNode(ctx) defer stack.Close() - chain, chainDb := utils.MakeChain(ctx, stack) + chain, chainDb := utils.MakeChain(ctx, stack) syncmode := *utils.GlobalTextMarshaler(ctx, utils.SyncModeFlag.Name).(*downloader.SyncMode) dl := downloader.New(syncmode, chainDb, new(event.TypeMux), chain, nil, nil) @@ -448,6 +453,7 @@ func removeDB(ctx *cli.Context) error { func dump(ctx *cli.Context) error { stack := makeFullNode(ctx) defer stack.Close() + chain, chainDb := utils.MakeChain(ctx, stack) for _, arg := range ctx.Args() { var block *types.Block diff --git a/node/node_test.go b/node/node_test.go index 46d758186a..c464771cd8 100644 --- a/node/node_test.go +++ b/node/node_test.go @@ -47,6 +47,7 @@ func TestNodeLifeCycle(t *testing.T) { t.Fatalf("failed to create protocol stack: %v", err) } defer stack.Close() + // Ensure that a stopped node can be stopped again for i := 0; i < 3; i++ { if err := stack.Stop(); err != ErrNodeStopped { @@ -90,6 +91,7 @@ func TestNodeUsedDataDir(t *testing.T) { t.Fatalf("failed to create original protocol stack: %v", err) } defer original.Close() + if err := original.Start(); err != nil { t.Fatalf("failed to start original protocol stack: %v", err) } @@ -101,6 +103,7 @@ func TestNodeUsedDataDir(t *testing.T) { t.Fatalf("failed to create duplicate protocol stack: %v", err) } defer duplicate.Close() + if err := duplicate.Start(); err != ErrDatadirUsed { t.Fatalf("duplicate datadir failure mismatch: have %v, want %v", err, ErrDatadirUsed) } @@ -113,6 +116,7 @@ func TestServiceRegistry(t *testing.T) { t.Fatalf("failed to create protocol stack: %v", err) } defer stack.Close() + // Register a batch of unique services and ensure they start successfully services := []ServiceConstructor{NewNoopServiceA, NewNoopServiceB, NewNoopServiceC} for i, constructor := range services { @@ -146,6 +150,7 @@ func TestServiceLifeCycle(t *testing.T) { t.Fatalf("failed to create protocol stack: %v", err) } defer stack.Close() + // Register a batch of life-cycle instrumented services services := map[string]InstrumentingWrapper{ "A": InstrumentedServiceMakerA, @@ -197,6 +202,7 @@ func TestServiceRestarts(t *testing.T) { t.Fatalf("failed to create protocol stack: %v", err) } defer stack.Close() + // Define a service that does not support restarts var ( running bool @@ -246,6 +252,7 @@ func TestServiceConstructionAbortion(t *testing.T) { t.Fatalf("failed to create protocol stack: %v", err) } defer stack.Close() + // Define a batch of good services services := map[string]InstrumentingWrapper{ "A": InstrumentedServiceMakerA, @@ -294,6 +301,7 @@ func TestServiceStartupAbortion(t *testing.T) { t.Fatalf("failed to create protocol stack: %v", err) } defer stack.Close() + // Register a batch of good services services := map[string]InstrumentingWrapper{ "A": InstrumentedServiceMakerA, @@ -348,6 +356,7 @@ func TestServiceTerminationGuarantee(t *testing.T) { t.Fatalf("failed to create protocol stack: %v", err) } defer stack.Close() + // Register a batch of good services services := map[string]InstrumentingWrapper{ "A": InstrumentedServiceMakerA, @@ -424,6 +433,7 @@ func TestServiceRetrieval(t *testing.T) { t.Fatalf("failed to create protocol stack: %v", err) } defer stack.Close() + if err := stack.Register(NewNoopService); err != nil { t.Fatalf("noop service registration failed: %v", err) } @@ -460,6 +470,7 @@ func TestProtocolGather(t *testing.T) { t.Fatalf("failed to create protocol stack: %v", err) } defer stack.Close() + // Register a batch of services with some configured number of protocols services := map[string]struct { Count int @@ -517,6 +528,7 @@ func TestAPIGather(t *testing.T) { t.Fatalf("failed to create protocol stack: %v", err) } defer stack.Close() + // Register a batch of services with some configured APIs calls := make(chan string, 1) makeAPI := func(result string) *OneMethodAPI {