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  }