github.com/prysmaticlabs/prysm@v1.4.4/slasher/node/node_test.go (about) 1 package node 2 3 import ( 4 "flag" 5 "fmt" 6 "io/ioutil" 7 "os" 8 "path/filepath" 9 "testing" 10 11 "github.com/prysmaticlabs/prysm/shared/cmd" 12 "github.com/prysmaticlabs/prysm/shared/testutil/require" 13 "github.com/sirupsen/logrus" 14 logTest "github.com/sirupsen/logrus/hooks/test" 15 "github.com/urfave/cli/v2" 16 ) 17 18 func TestMain(m *testing.M) { 19 logrus.SetLevel(logrus.DebugLevel) 20 logrus.SetOutput(ioutil.Discard) 21 22 m.Run() 23 } 24 25 // Test that slasher node can close. 26 func TestNodeClose_OK(t *testing.T) { 27 hook := logTest.NewGlobal() 28 29 tmp := fmt.Sprintf("%s/datadirtest2", t.TempDir()) 30 31 app := cli.App{} 32 set := flag.NewFlagSet("test", 0) 33 set.String("beacon-rpc-provider", "localhost:4232", "beacon node RPC server") 34 set.String("datadir", tmp, "node data directory") 35 36 context := cli.NewContext(&app, set, nil) 37 38 node, err := New(context) 39 require.NoError(t, err, "Failed to create slasher node") 40 41 node.Close() 42 43 require.LogsContain(t, hook, "Stopping hash slinging slasher") 44 require.NoError(t, os.RemoveAll(tmp)) 45 } 46 47 // TestClearDB tests clearing the database 48 func TestClearDB(t *testing.T) { 49 hook := logTest.NewGlobal() 50 51 tmp := filepath.Join(t.TempDir(), "datadirtest") 52 53 app := cli.App{} 54 set := flag.NewFlagSet("test", 0) 55 set.String("datadir", tmp, "node data directory") 56 set.Bool(cmd.ForceClearDB.Name, true, "force clear db") 57 58 context := cli.NewContext(&app, set, nil) 59 slasherNode, err := New(context) 60 require.NoError(t, err) 61 62 require.LogsContain(t, hook, "Removing database") 63 err = slasherNode.db.Close() 64 require.NoError(t, err) 65 require.NoError(t, os.RemoveAll(tmp)) 66 }