github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/node/node_test.go (about) 1 package node 2 3 import ( 4 "flag" 5 "fmt" 6 "os" 7 "path/filepath" 8 "testing" 9 10 statefeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/state" 11 "github.com/prysmaticlabs/prysm/shared/cmd" 12 "github.com/prysmaticlabs/prysm/shared/testutil/require" 13 logTest "github.com/sirupsen/logrus/hooks/test" 14 "github.com/urfave/cli/v2" 15 ) 16 17 // Ensure BeaconNode implements interfaces. 18 var _ statefeed.Notifier = (*BeaconNode)(nil) 19 20 // Test that beacon chain node can close. 21 func TestNodeClose_OK(t *testing.T) { 22 hook := logTest.NewGlobal() 23 24 tmp := fmt.Sprintf("%s/datadirtest2", t.TempDir()) 25 26 app := cli.App{} 27 set := flag.NewFlagSet("test", 0) 28 set.Bool("test-skip-pow", true, "skip pow dial") 29 set.String("datadir", tmp, "node data directory") 30 set.String("p2p-encoding", "ssz", "p2p encoding scheme") 31 set.Bool("demo-config", true, "demo configuration") 32 set.String("deposit-contract", "0x0000000000000000000000000000000000000000", "deposit contract address") 33 34 context := cli.NewContext(&app, set, nil) 35 36 node, err := New(context) 37 require.NoError(t, err) 38 39 node.Close() 40 41 require.LogsContain(t, hook, "Stopping beacon node") 42 require.NoError(t, os.RemoveAll(tmp)) 43 } 44 45 // TestClearDB tests clearing the database 46 func TestClearDB(t *testing.T) { 47 hook := logTest.NewGlobal() 48 49 tmp := filepath.Join(t.TempDir(), "datadirtest") 50 51 app := cli.App{} 52 set := flag.NewFlagSet("test", 0) 53 set.String("datadir", tmp, "node data directory") 54 set.Bool(cmd.ForceClearDB.Name, true, "force clear db") 55 56 context := cli.NewContext(&app, set, nil) 57 _, err := New(context) 58 require.NoError(t, err) 59 60 require.LogsContain(t, hook, "Removing database") 61 require.NoError(t, os.RemoveAll(tmp)) 62 }