mirror of https://github.com/poanetwork/quorum.git
Add check at startup to ensure transaction manager mode is specified. (#868)
Update error message and name to be generic for all PTMs.
This commit is contained in:
parent
356cf0da8f
commit
bdbeacdf47
|
@ -155,7 +155,24 @@ Passphrase: {{.InputLine "foobar"}}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGethDoesntStartWithoutPrivateTransactionManagerVariableSet(t *testing.T) {
|
||||||
|
defer SetResetPrivateConfig("")()
|
||||||
|
|
||||||
|
datadir := tmpDatadirWithKeystore(t)
|
||||||
|
geth := runGeth(t,
|
||||||
|
"--datadir", datadir, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
|
||||||
|
"--unlock", "f466859ead1932d743d622cb74fc058882e8648a")
|
||||||
|
geth.ExpectExit()
|
||||||
|
|
||||||
|
expectedText := "the PRIVATE_CONFIG environment variable must be specified for Quorum"
|
||||||
|
result := strings.TrimSpace(geth.StderrText())
|
||||||
|
if result != expectedText {
|
||||||
|
geth.Fatalf("bad stderr text. want '%s', got '%s'", expectedText, result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestUnlockFlagWrongPassword(t *testing.T) {
|
func TestUnlockFlagWrongPassword(t *testing.T) {
|
||||||
|
defer SetResetPrivateConfig("ignore")()
|
||||||
datadir := tmpDatadirWithKeystore(t)
|
datadir := tmpDatadirWithKeystore(t)
|
||||||
geth := runGeth(t,
|
geth := runGeth(t,
|
||||||
"--datadir", datadir, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
|
"--datadir", datadir, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
|
||||||
|
@ -222,6 +239,7 @@ func TestUnlockFlagPasswordFile(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUnlockFlagPasswordFileWrongPassword(t *testing.T) {
|
func TestUnlockFlagPasswordFileWrongPassword(t *testing.T) {
|
||||||
|
defer SetResetPrivateConfig("ignore")()
|
||||||
datadir := tmpDatadirWithKeystore(t)
|
datadir := tmpDatadirWithKeystore(t)
|
||||||
geth := runGeth(t,
|
geth := runGeth(t,
|
||||||
"--datadir", datadir, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
|
"--datadir", datadir, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
|
||||||
|
@ -271,6 +289,7 @@ In order to avoid this warning, you need to remove the following duplicate key f
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUnlockFlagAmbiguousWrongPassword(t *testing.T) {
|
func TestUnlockFlagAmbiguousWrongPassword(t *testing.T) {
|
||||||
|
defer SetResetPrivateConfig("ignore")()
|
||||||
store := filepath.Join("..", "..", "accounts", "keystore", "testdata", "dupes")
|
store := filepath.Join("..", "..", "accounts", "keystore", "testdata", "dupes")
|
||||||
geth := runGeth(t,
|
geth := runGeth(t,
|
||||||
"--keystore", store, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
|
"--keystore", store, "--nat", "none", "--nodiscover", "--maxpeers", "0", "--port", "0",
|
||||||
|
|
|
@ -275,3 +275,9 @@ func quorumValidateConsensus(stack *node.Node, isRaft bool) {
|
||||||
utils.Fatalf("Consensus not specified. Exiting!!")
|
utils.Fatalf("Consensus not specified. Exiting!!")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// quorumValidatePrivateTransactionManager returns whether the "PRIVATE_CONFIG"
|
||||||
|
// environment variable is set
|
||||||
|
func quorumValidatePrivateTransactionManager() bool {
|
||||||
|
return os.Getenv("PRIVATE_CONFIG") != ""
|
||||||
|
}
|
||||||
|
|
|
@ -70,6 +70,7 @@ var genesis = `{
|
||||||
// Tests that a node embedded within a console can be started up properly and
|
// Tests that a node embedded within a console can be started up properly and
|
||||||
// then terminated by closing the input stream.
|
// then terminated by closing the input stream.
|
||||||
func TestConsoleWelcome(t *testing.T) {
|
func TestConsoleWelcome(t *testing.T) {
|
||||||
|
defer SetResetPrivateConfig("ignore")()
|
||||||
coinbase := "0x491937757d1b26e29c507b8d4c0b233c2747e68d"
|
coinbase := "0x491937757d1b26e29c507b8d4c0b233c2747e68d"
|
||||||
|
|
||||||
datadir := setupIstanbul(t)
|
datadir := setupIstanbul(t)
|
||||||
|
@ -107,6 +108,7 @@ at block: 0 ({{niltime}})
|
||||||
|
|
||||||
// Tests that a console can be attached to a running node via various means.
|
// Tests that a console can be attached to a running node via various means.
|
||||||
func TestIPCAttachWelcome(t *testing.T) {
|
func TestIPCAttachWelcome(t *testing.T) {
|
||||||
|
defer SetResetPrivateConfig("ignore")()
|
||||||
// Configure the instance for IPC attachement
|
// Configure the instance for IPC attachement
|
||||||
coinbase := "0x491937757d1b26e29c507b8d4c0b233c2747e68d"
|
coinbase := "0x491937757d1b26e29c507b8d4c0b233c2747e68d"
|
||||||
var ipc string
|
var ipc string
|
||||||
|
@ -134,6 +136,7 @@ func TestIPCAttachWelcome(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestHTTPAttachWelcome(t *testing.T) {
|
func TestHTTPAttachWelcome(t *testing.T) {
|
||||||
|
defer SetResetPrivateConfig("ignore")()
|
||||||
coinbase := "0x491937757d1b26e29c507b8d4c0b233c2747e68d"
|
coinbase := "0x491937757d1b26e29c507b8d4c0b233c2747e68d"
|
||||||
port := strconv.Itoa(trulyRandInt(1024, 65536)) // Yeah, sometimes this will fail, sorry :P
|
port := strconv.Itoa(trulyRandInt(1024, 65536)) // Yeah, sometimes this will fail, sorry :P
|
||||||
|
|
||||||
|
@ -152,6 +155,7 @@ func TestHTTPAttachWelcome(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestWSAttachWelcome(t *testing.T) {
|
func TestWSAttachWelcome(t *testing.T) {
|
||||||
|
defer SetResetPrivateConfig("ignore")()
|
||||||
coinbase := "0x491937757d1b26e29c507b8d4c0b233c2747e68d"
|
coinbase := "0x491937757d1b26e29c507b8d4c0b233c2747e68d"
|
||||||
port := strconv.Itoa(trulyRandInt(1024, 65536)) // Yeah, sometimes this will fail, sorry :P
|
port := strconv.Itoa(trulyRandInt(1024, 65536)) // Yeah, sometimes this will fail, sorry :P
|
||||||
|
|
||||||
|
@ -231,3 +235,11 @@ func setupIstanbul(t *testing.T) string {
|
||||||
|
|
||||||
return datadir
|
return datadir
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SetResetPrivateConfig(value string) func() {
|
||||||
|
existingValue := os.Getenv("PRIVATE_CONFIG")
|
||||||
|
os.Setenv("PRIVATE_CONFIG", value)
|
||||||
|
return func() {
|
||||||
|
os.Setenv("PRIVATE_CONFIG", existingValue)
|
||||||
|
}
|
||||||
|
}
|
|
@ -18,6 +18,7 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
"math"
|
||||||
"os"
|
"os"
|
||||||
|
@ -271,6 +272,11 @@ func geth(ctx *cli.Context) error {
|
||||||
if args := ctx.Args(); len(args) > 0 {
|
if args := ctx.Args(); len(args) > 0 {
|
||||||
return fmt.Errorf("invalid command: %q", args[0])
|
return fmt.Errorf("invalid command: %q", args[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !quorumValidatePrivateTransactionManager() {
|
||||||
|
return errors.New("the PRIVATE_CONFIG environment variable must be specified for Quorum")
|
||||||
|
}
|
||||||
|
|
||||||
node := makeFullNode(ctx)
|
node := makeFullNode(ctx)
|
||||||
startNode(ctx, node)
|
startNode(ctx, node)
|
||||||
|
|
||||||
|
|
|
@ -18,12 +18,12 @@ type Constellation struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
ErrConstellationIsntInit = errors.New("Constellation not in use")
|
errPrivateTransactionManagerNotUsed = errors.New("private transaction manager not in use")
|
||||||
)
|
)
|
||||||
|
|
||||||
func (g *Constellation) Send(data []byte, from string, to []string) (out []byte, err error) {
|
func (g *Constellation) Send(data []byte, from string, to []string) (out []byte, err error) {
|
||||||
if g.isConstellationNotInUse {
|
if g.isConstellationNotInUse {
|
||||||
return nil, ErrConstellationIsntInit
|
return nil, errPrivateTransactionManagerNotUsed
|
||||||
}
|
}
|
||||||
out, err = g.node.SendPayload(data, from, to)
|
out, err = g.node.SendPayload(data, from, to)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -35,7 +35,7 @@ func (g *Constellation) Send(data []byte, from string, to []string) (out []byte,
|
||||||
|
|
||||||
func (g *Constellation) SendSignedTx(data []byte, to []string) (out []byte, err error) {
|
func (g *Constellation) SendSignedTx(data []byte, to []string) (out []byte, err error) {
|
||||||
if g.isConstellationNotInUse {
|
if g.isConstellationNotInUse {
|
||||||
return nil, ErrConstellationIsntInit
|
return nil, errPrivateTransactionManagerNotUsed
|
||||||
}
|
}
|
||||||
out, err = g.node.SendSignedPayload(data, to)
|
out, err = g.node.SendSignedPayload(data, to)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -109,10 +109,3 @@ func MustNew(path string) *Constellation {
|
||||||
}
|
}
|
||||||
return g
|
return g
|
||||||
}
|
}
|
||||||
|
|
||||||
func MaybeNew(path string) *Constellation {
|
|
||||||
if path == "" {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return MustNew(path)
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue