package node import ( "testing" "time" . "github.com/tendermint/go-common" "github.com/tendermint/go-p2p" _ "github.com/tendermint/tendermint/config/tendermint_test" "github.com/tendermint/tmsp/example" "github.com/tendermint/tmsp/server" ) func TestNodeStartStop(t *testing.T) { // Start a dummy app go func() { _, err := server.StartListener(config.GetString("proxy_app"), example.NewDummyApplication()) if err != nil { Exit(err.Error()) } }() // wait for the server time.Sleep(time.Second * 2) // Create & start node n := NewNode() l := p2p.NewDefaultListener("tcp", config.GetString("node_laddr"), config.GetBool("skip_upnp")) n.AddListener(l) n.Start() log.Notice("Started node", "nodeInfo", n.sw.NodeInfo()) time.Sleep(time.Second * 2) ch := make(chan struct{}, 1) go func() { n.Stop() ch <- struct{}{} }() ticker := time.NewTicker(time.Second * 5) select { case <-ch: case <-ticker.C: t.Fatal("timed out waiting for shutdown") } }