Addressed pr comments

This commit is contained in:
Ethan Frey 2018-02-21 18:56:04 +01:00 committed by rigelrozanski
parent 34772f8b6e
commit 7848ee23db
5 changed files with 40 additions and 33 deletions

View File

@ -7,6 +7,7 @@ import (
"github.com/spf13/cobra"
abci "github.com/tendermint/abci/types"
"github.com/tendermint/tmlibs/cli"
dbm "github.com/tendermint/tmlibs/db"
"github.com/tendermint/tmlibs/log"
@ -16,9 +17,9 @@ import (
"github.com/cosmos/cosmos-sdk/version"
)
// gaiadCmd is the entry point for this binary
// basecoindCmd is the entry point for this binary
var (
gaiadCmd = &cobra.Command{
basecoindCmd = &cobra.Command{
Use: "gaiad",
Short: "Gaia Daemon (server)",
}
@ -48,27 +49,28 @@ func defaultOptions(args []string) (json.RawMessage, error) {
return json.RawMessage(opts), nil
}
func main() {
// TODO: this should somehow be updated on cli flags?
// But we need to create the app first... hmmm.....
rootDir := os.ExpandEnv("$HOME/.basecoind")
logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)).With("module", "main")
func generateApp(rootDir string, logger log.Logger) abci.Application {
db, err := dbm.NewGoLevelDB("basecoin", rootDir)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
bapp := app.NewBasecoinApp(logger, db)
return bapp
}
gaiadCmd.AddCommand(
server.InitCmd(defaultOptions, bapp.Logger),
server.StartCmd(bapp, bapp.Logger),
server.UnsafeResetAllCmd(bapp.Logger),
func main() {
logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)).With("module", "main")
basecoindCmd.AddCommand(
server.InitCmd(defaultOptions, logger),
server.StartCmd(generateApp, logger),
server.UnsafeResetAllCmd(logger),
version.VersionCmd,
)
// prepare and add flags
executor := cli.PrepareBaseCmd(gaiadCmd, "BC", rootDir)
rootDir := os.ExpandEnv("$HOME/.basecoind")
executor := cli.PrepareBaseCmd(basecoindCmd, "BC", rootDir)
executor.Execute()
}

View File

@ -16,7 +16,7 @@ import (
// It should work similar to a real app.
// Make sure rootDir is empty before running the test,
// in order to guarantee consistent results
func NewApp(logger log.Logger, rootDir string) (abci.Application, error) {
func NewApp(rootDir string, logger log.Logger) (abci.Application, error) {
db, err := dbm.NewGoLevelDB("mock", rootDir)
if err != nil {
return nil, err

View File

@ -22,6 +22,6 @@ func SetupApp() (abci.Application, func(), error) {
os.RemoveAll(rootDir)
}
app, err := NewApp(logger, rootDir)
app, err := NewApp(rootDir, logger)
return app, cleanup, err
}

View File

@ -21,9 +21,13 @@ const (
flagAddress = "address"
)
// appGenerator lets us lazily initialize app, using home dir
// and other flags (?) to start
type appGenerator func(string, log.Logger) (abci.Application, error)
// StartCmd runs the service passed in, either
// stand-alone, or in-process with tendermint
func StartCmd(app abci.Application, logger log.Logger) *cobra.Command {
func StartCmd(app appGenerator, logger log.Logger) *cobra.Command {
start := startCmd{
app: app,
logger: logger,
@ -44,10 +48,7 @@ func StartCmd(app abci.Application, logger log.Logger) *cobra.Command {
}
type startCmd struct {
// do this in main:
// rootDir := viper.GetString(cli.HomeFlag)
// node.Logger = ....
app abci.Application
app appGenerator
logger log.Logger
}
@ -61,9 +62,15 @@ func (s startCmd) run(cmd *cobra.Command, args []string) error {
}
func (s startCmd) startStandAlone() error {
// Start the ABCI listener
// Generate the app in the proper dir
addr := viper.GetString(flagAddress)
svr, err := server.NewServer(addr, "socket", s.app)
home := viper.GetString("home")
app, err := s.app(home, s.logger)
if err != nil {
return err
}
svr, err := server.NewServer(addr, "socket", app)
if err != nil {
return errors.Errorf("Error creating listener: %v\n", err)
}
@ -84,10 +91,16 @@ func (s startCmd) startInProcess() error {
return err
}
home := cfg.RootDir
app, err := s.app(home, s.logger)
if err != nil {
return err
}
// Create & start tendermint node
n, err := node.NewNode(cfg,
types.LoadOrGenPrivValidatorFS(cfg.PrivValidatorFile()),
proxy.NewLocalClientCreator(s.app),
proxy.NewLocalClientCreator(app),
node.DefaultGenesisDocProviderFunc(cfg),
node.DefaultDBProvider,
s.logger.With("module", "node"))

View File

@ -22,14 +22,10 @@ func TestStartStandAlone(t *testing.T) {
err := initCmd.RunE(nil, nil)
require.NoError(t, err)
rootDir := viper.GetString("home")
app, err := mock.NewApp(logger, rootDir)
require.NoError(t, err)
// set up app and start up
viper.Set(flagWithTendermint, false)
viper.Set(flagAddress, "localhost:11122")
startCmd := StartCmd(app, logger)
startCmd := StartCmd(mock.NewApp, logger)
timeout := time.Duration(3) * time.Second
err = runOrTimeout(startCmd, timeout)
@ -46,13 +42,9 @@ func TestStartWithTendermint(t *testing.T) {
err := initCmd.RunE(nil, nil)
require.NoError(t, err)
rootDir := viper.GetString("home")
app, err := mock.NewApp(logger, rootDir)
require.NoError(t, err)
// set up app and start up
viper.Set(flagWithTendermint, true)
startCmd := StartCmd(app, logger)
startCmd := StartCmd(mock.NewApp, logger)
timeout := time.Duration(3) * time.Second
err = runOrTimeout(startCmd, timeout)