2020-03-10 12:20:34 -07:00
|
|
|
// (c) 2019-2020, Ava Labs, Inc. All rights reserved.
|
|
|
|
// See the file LICENSE for licensing terms.
|
|
|
|
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"flag"
|
|
|
|
"fmt"
|
2020-03-21 16:31:10 -07:00
|
|
|
"os"
|
2020-03-13 14:31:23 -07:00
|
|
|
|
|
|
|
stdnet "net"
|
2020-03-10 12:20:34 -07:00
|
|
|
|
|
|
|
"github.com/ava-labs/gecko/genesis"
|
|
|
|
"github.com/ava-labs/gecko/utils"
|
2020-03-30 23:54:12 -07:00
|
|
|
"github.com/ava-labs/gecko/utils/formatting"
|
2020-03-10 12:20:34 -07:00
|
|
|
"github.com/ava-labs/gecko/utils/logging"
|
|
|
|
"github.com/ava-labs/gecko/utils/wrappers"
|
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
config Config
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
|
|
|
|
// Parse the CLI arguments
|
|
|
|
func init() {
|
|
|
|
errs := &wrappers.Errs{}
|
|
|
|
defer func() { err = errs.Err }()
|
|
|
|
|
|
|
|
loggingConfig, err := logging.DefaultConfig()
|
|
|
|
errs.Add(err)
|
|
|
|
|
2020-03-21 16:31:10 -07:00
|
|
|
fs := flag.NewFlagSet("xputtest", flag.ContinueOnError)
|
|
|
|
|
2020-03-10 12:20:34 -07:00
|
|
|
// NetworkID:
|
2020-03-21 16:31:10 -07:00
|
|
|
networkName := fs.String("network-id", genesis.LocalName, "Network ID this node will connect to")
|
2020-03-10 12:20:34 -07:00
|
|
|
|
|
|
|
// Ava fees:
|
2020-03-21 16:31:10 -07:00
|
|
|
fs.Uint64Var(&config.AvaTxFee, "ava-tx-fee", 0, "Ava transaction fee, in $nAva")
|
2020-03-10 12:20:34 -07:00
|
|
|
|
|
|
|
// Assertions:
|
2020-03-21 16:31:10 -07:00
|
|
|
fs.BoolVar(&loggingConfig.Assertions, "assertions-enabled", true, "Turn on assertion execution")
|
2020-03-10 12:20:34 -07:00
|
|
|
|
|
|
|
// Crypto:
|
2020-03-21 16:31:10 -07:00
|
|
|
fs.BoolVar(&config.EnableCrypto, "signature-verification-enabled", true, "Turn on signature verification")
|
2020-03-10 12:20:34 -07:00
|
|
|
|
|
|
|
// Remote Server:
|
2020-03-21 16:31:10 -07:00
|
|
|
ip := fs.String("ip", "127.0.0.1", "IP address of the remote server socket")
|
|
|
|
port := fs.Uint("port", 9652, "Port of the remote server socket")
|
2020-03-10 12:20:34 -07:00
|
|
|
|
|
|
|
// Logging:
|
2020-03-21 16:31:10 -07:00
|
|
|
logsDir := fs.String("log-dir", "", "Logging directory for Ava")
|
|
|
|
logLevel := fs.String("log-level", "info", "The log level. Should be one of {all, debug, info, warn, error, fatal, off}")
|
2020-03-10 12:20:34 -07:00
|
|
|
|
|
|
|
// Test Variables:
|
2020-03-21 16:31:10 -07:00
|
|
|
spchain := fs.Bool("sp-chain", false, "Execute simple payment chain transactions")
|
|
|
|
spdag := fs.Bool("sp-dag", false, "Execute simple payment dag transactions")
|
|
|
|
avm := fs.Bool("avm", false, "Execute avm transactions")
|
2020-03-30 23:54:12 -07:00
|
|
|
key := fs.String("key", "", "Funded key in the genesis key to use to issue transactions")
|
2020-03-21 16:31:10 -07:00
|
|
|
fs.IntVar(&config.NumTxs, "num-txs", 25000, "Total number of transaction to issue")
|
|
|
|
fs.IntVar(&config.MaxOutstandingTxs, "max-outstanding", 1000, "Maximum number of transactions to leave outstanding")
|
|
|
|
|
|
|
|
ferr := fs.Parse(os.Args[1:])
|
|
|
|
|
|
|
|
if ferr == flag.ErrHelp {
|
|
|
|
// display usage/help text and exit successfully
|
|
|
|
os.Exit(0)
|
|
|
|
}
|
|
|
|
|
|
|
|
if ferr != nil {
|
|
|
|
// other type of error occurred when parsing args
|
|
|
|
os.Exit(2)
|
|
|
|
}
|
2020-03-10 12:20:34 -07:00
|
|
|
|
|
|
|
networkID, err := genesis.NetworkID(*networkName)
|
|
|
|
errs.Add(err)
|
|
|
|
|
|
|
|
config.NetworkID = networkID
|
|
|
|
|
|
|
|
// Remote:
|
2020-03-13 14:31:23 -07:00
|
|
|
parsedIP := stdnet.ParseIP(*ip)
|
2020-03-10 12:20:34 -07:00
|
|
|
if parsedIP == nil {
|
|
|
|
errs.Add(fmt.Errorf("invalid IP Address %s", *ip))
|
|
|
|
}
|
|
|
|
config.RemoteIP = utils.IPDesc{
|
|
|
|
IP: parsedIP,
|
|
|
|
Port: uint16(*port),
|
|
|
|
}
|
|
|
|
|
2020-03-30 23:54:12 -07:00
|
|
|
cb58 := formatting.CB58{}
|
|
|
|
errs.Add(cb58.FromString(*key))
|
|
|
|
config.Key = cb58.Bytes
|
|
|
|
|
2020-03-10 12:20:34 -07:00
|
|
|
// Logging:
|
|
|
|
if *logsDir != "" {
|
|
|
|
loggingConfig.Directory = *logsDir
|
|
|
|
}
|
|
|
|
level, err := logging.ToLevel(*logLevel)
|
|
|
|
errs.Add(err)
|
|
|
|
loggingConfig.LogLevel = level
|
|
|
|
loggingConfig.DisplayLevel = level
|
|
|
|
config.LoggingConfig = loggingConfig
|
|
|
|
|
|
|
|
// Test Variables:
|
|
|
|
switch {
|
2020-03-13 14:31:23 -07:00
|
|
|
case *spchain:
|
|
|
|
config.Chain = spChain
|
|
|
|
case *spdag:
|
|
|
|
config.Chain = spDAG
|
|
|
|
case *avm:
|
|
|
|
config.Chain = avmDAG
|
2020-03-10 12:20:34 -07:00
|
|
|
default:
|
2020-03-13 14:31:23 -07:00
|
|
|
config.Chain = unknown
|
2020-03-10 12:20:34 -07:00
|
|
|
}
|
|
|
|
}
|