diff options
author | Felix Lange <fjl@twurst.com> | 2016-06-03 04:33:57 +0800 |
---|---|---|
committer | Felix Lange <fjl@twurst.com> | 2016-06-03 17:08:55 +0800 |
commit | b57b6e341e3865de3b3a5aa108e642d1a6a5b590 (patch) | |
tree | 707e465946a926364fa2f86d4f5386d41a703c85 | |
parent | ad0e6e971e7d03c07842cc236fec09c73f93f465 (diff) | |
download | dexon-b57b6e341e3865de3b3a5aa108e642d1a6a5b590.tar dexon-b57b6e341e3865de3b3a5aa108e642d1a6a5b590.tar.gz dexon-b57b6e341e3865de3b3a5aa108e642d1a6a5b590.tar.bz2 dexon-b57b6e341e3865de3b3a5aa108e642d1a6a5b590.tar.lz dexon-b57b6e341e3865de3b3a5aa108e642d1a6a5b590.tar.xz dexon-b57b6e341e3865de3b3a5aa108e642d1a6a5b590.tar.zst dexon-b57b6e341e3865de3b3a5aa108e642d1a6a5b590.zip |
cmd/geth: make console tests more robust
* use --port 0 to avoid p2p port conflicts
* use --maxpeers 0 so it doesn't connect to bootstrap nodes
* use geth.expectExit() to wait for termination
-rw-r--r-- | cmd/geth/consolecmd_test.go | 46 |
1 files changed, 28 insertions, 18 deletions
diff --git a/cmd/geth/consolecmd_test.go b/cmd/geth/consolecmd_test.go index 9cfb3e4e3..e59fe1415 100644 --- a/cmd/geth/consolecmd_test.go +++ b/cmd/geth/consolecmd_test.go @@ -27,7 +27,6 @@ import ( "testing" "time" - "github.com/ethereum/go-ethereum/console" "github.com/ethereum/go-ethereum/rpc" ) @@ -37,9 +36,10 @@ func TestConsoleWelcome(t *testing.T) { coinbase := "0x8605cdbbdb6d264aa742e77020dcbc58fcdce182" // Start a geth console, make sure it's cleaned up and terminate the console - geth := runGeth(t, "--nat", "none", "--nodiscover", "--etherbase", coinbase, "-shh", "console") - defer geth.expectExit() - geth.stdin.Close() + geth := runGeth(t, + "--port", "0", "--maxpeers", "0", "--nodiscover", "--nat", "none", + "--etherbase", coinbase, "--shh", + "console") // Gather all the infos the welcome message needs to contain geth.setTemplateFunc("goos", func() string { return runtime.GOOS }) @@ -51,7 +51,6 @@ func TestConsoleWelcome(t *testing.T) { sort.Strings(apis) return apis }) - geth.setTemplateFunc("prompt", func() string { return console.DefaultPrompt }) // Verify the actual welcome message to the required template geth.expect(` @@ -63,52 +62,63 @@ at block: 0 ({{niltime}}) datadir: {{.Datadir}} modules:{{range apis}} {{.}}:1.0{{end}} -{{prompt}} +> {{.InputLine "exit"}} `) + geth.expectExit() } // Tests that a console can be attached to a running node via various means. func TestIPCAttachWelcome(t *testing.T) { // Configure the instance for IPC attachement coinbase := "0x8605cdbbdb6d264aa742e77020dcbc58fcdce182" - var ipc string if runtime.GOOS == "windows" { ipc = `\\.\pipe\geth` + strconv.Itoa(rand.Int()) } else { ws := tmpdir(t) defer os.RemoveAll(ws) - ipc = filepath.Join(ws, "geth.ipc") } - // Run the parent geth and attach with a child console - geth := runGeth(t, "--nat", "none", "--nodiscover", "--etherbase", coinbase, "-shh", "--ipcpath", ipc) - defer geth.interrupt() + // Note: we need --shh because testAttachWelcome checks for default + // list of ipc modules and shh is included there. + geth := runGeth(t, + "--port", "0", "--maxpeers", "0", "--nodiscover", "--nat", "none", + "--etherbase", coinbase, "--shh", "--ipcpath", ipc) time.Sleep(2 * time.Second) // Simple way to wait for the RPC endpoint to open testAttachWelcome(t, geth, "ipc:"+ipc) + + geth.interrupt() + geth.expectExit() } func TestHTTPAttachWelcome(t *testing.T) { coinbase := "0x8605cdbbdb6d264aa742e77020dcbc58fcdce182" port := strconv.Itoa(rand.Intn(65535-1024) + 1024) // Yeah, sometimes this will fail, sorry :P - - geth := runGeth(t, "--nat", "none", "--nodiscover", "--etherbase", coinbase, "--rpc", "--rpcport", port) - defer geth.interrupt() + geth := runGeth(t, + "--port", "0", "--maxpeers", "0", "--nodiscover", "--nat", "none", + "--etherbase", coinbase, "--rpc", "--rpcport", port) time.Sleep(2 * time.Second) // Simple way to wait for the RPC endpoint to open testAttachWelcome(t, geth, "http://localhost:"+port) + + geth.interrupt() + geth.expectExit() } func TestWSAttachWelcome(t *testing.T) { coinbase := "0x8605cdbbdb6d264aa742e77020dcbc58fcdce182" port := strconv.Itoa(rand.Intn(65535-1024) + 1024) // Yeah, sometimes this will fail, sorry :P - geth := runGeth(t, "--nat", "none", "--nodiscover", "--etherbase", coinbase, "--ws", "--wsport", port) - defer geth.interrupt() + geth := runGeth(t, + "--port", "0", "--maxpeers", "0", "--nodiscover", "--nat", "none", + "--etherbase", coinbase, "--ws", "--wsport", port) time.Sleep(2 * time.Second) // Simple way to wait for the RPC endpoint to open testAttachWelcome(t, geth, "ws://localhost:"+port) + + geth.interrupt() + geth.expectExit() } func testAttachWelcome(t *testing.T, geth *testgeth, endpoint string) { @@ -135,7 +145,6 @@ func testAttachWelcome(t *testing.T, geth *testgeth, endpoint string) { sort.Strings(apis) return apis }) - attach.setTemplateFunc("prompt", func() string { return console.DefaultPrompt }) // Verify the actual welcome message to the required template attach.expect(` @@ -147,6 +156,7 @@ at block: 0 ({{niltime}}){{if ipc}} datadir: {{datadir}}{{end}} modules:{{range apis}} {{.}}:1.0{{end}} -{{prompt}} +> {{.InputLine "exit" }} `) + attach.expectExit() } |