Remove txGasLimit, update tests

This commit is contained in:
Christopher Goes 2018-05-16 02:31:52 +02:00
parent 03e220700e
commit 3d5b048444
No known key found for this signature in database
GPG Key ID: E828D98232D328D3
9 changed files with 39 additions and 20 deletions

View File

@ -49,7 +49,6 @@ type BaseApp struct {
// must be set // must be set
txDecoder sdk.TxDecoder // unmarshal []byte into sdk.Tx txDecoder sdk.TxDecoder // unmarshal []byte into sdk.Tx
anteHandler sdk.AnteHandler // ante handler for fee and auth anteHandler sdk.AnteHandler // ante handler for fee and auth
txGasLimit sdk.Gas // per-transaction gas limit
// may be nil // may be nil
initChainer sdk.InitChainer // initialize state with validators and state blob initChainer sdk.InitChainer // initialize state with validators and state blob
@ -74,7 +73,7 @@ var _ abci.Application = (*BaseApp)(nil)
// Create and name new BaseApp // Create and name new BaseApp
// NOTE: The db is used to store the version number for now. // NOTE: The db is used to store the version number for now.
func NewBaseApp(name string, cdc *wire.Codec, logger log.Logger, db dbm.DB, txGasLimit sdk.Gas) *BaseApp { func NewBaseApp(name string, cdc *wire.Codec, logger log.Logger, db dbm.DB) *BaseApp {
app := &BaseApp{ app := &BaseApp{
Logger: logger, Logger: logger,
name: name, name: name,
@ -84,7 +83,6 @@ func NewBaseApp(name string, cdc *wire.Codec, logger log.Logger, db dbm.DB, txGa
router: NewRouter(), router: NewRouter(),
codespacer: sdk.NewCodespacer(), codespacer: sdk.NewCodespacer(),
txDecoder: defaultTxDecoder(cdc), txDecoder: defaultTxDecoder(cdc),
txGasLimit: txGasLimit,
} }
// Register the undefined & root codespaces, which should not be used by any modules // Register the undefined & root codespaces, which should not be used by any modules
app.codespacer.RegisterOrPanic(sdk.CodespaceUndefined) app.codespacer.RegisterOrPanic(sdk.CodespaceUndefined)
@ -235,9 +233,9 @@ func (app *BaseApp) initFromStore(mainKey sdk.StoreKey) error {
// NewContext returns a new Context with the correct store, the given header, and nil txBytes. // NewContext returns a new Context with the correct store, the given header, and nil txBytes.
func (app *BaseApp) NewContext(isCheckTx bool, header abci.Header) sdk.Context { func (app *BaseApp) NewContext(isCheckTx bool, header abci.Header) sdk.Context {
if isCheckTx { if isCheckTx {
return sdk.NewContext(app.checkState.ms, header, true, nil, app.Logger, app.txGasLimit) return sdk.NewContext(app.checkState.ms, header, true, nil, app.Logger, 0)
} }
return sdk.NewContext(app.deliverState.ms, header, false, nil, app.Logger, app.txGasLimit) return sdk.NewContext(app.deliverState.ms, header, false, nil, app.Logger, 0)
} }
type state struct { type state struct {
@ -253,7 +251,7 @@ func (app *BaseApp) setCheckState(header abci.Header) {
ms := app.cms.CacheMultiStore() ms := app.cms.CacheMultiStore()
app.checkState = &state{ app.checkState = &state{
ms: ms, ms: ms,
ctx: sdk.NewContext(ms, header, true, nil, app.Logger, app.txGasLimit), ctx: sdk.NewContext(ms, header, true, nil, app.Logger, 0),
} }
} }
@ -261,7 +259,7 @@ func (app *BaseApp) setDeliverState(header abci.Header) {
ms := app.cms.CacheMultiStore() ms := app.cms.CacheMultiStore()
app.deliverState = &state{ app.deliverState = &state{
ms: ms, ms: ms,
ctx: sdk.NewContext(ms, header, false, nil, app.Logger, app.txGasLimit), ctx: sdk.NewContext(ms, header, false, nil, app.Logger, 0),
} }
} }

View File

@ -29,7 +29,7 @@ func newBaseApp(name string) *BaseApp {
db := dbm.NewMemDB() db := dbm.NewMemDB()
codec := wire.NewCodec() codec := wire.NewCodec()
wire.RegisterCrypto(codec) wire.RegisterCrypto(codec)
return NewBaseApp(name, codec, logger, db, 10000) return NewBaseApp(name, codec, logger, db)
} }
func TestMountStores(t *testing.T) { func TestMountStores(t *testing.T) {
@ -63,7 +63,7 @@ func TestLoadVersion(t *testing.T) {
logger := defaultLogger() logger := defaultLogger()
db := dbm.NewMemDB() db := dbm.NewMemDB()
name := t.Name() name := t.Name()
app := NewBaseApp(name, nil, logger, db, 10000) app := NewBaseApp(name, nil, logger, db)
// make a cap key and mount the store // make a cap key and mount the store
capKey := sdk.NewKVStoreKey("main") capKey := sdk.NewKVStoreKey("main")
@ -85,7 +85,7 @@ func TestLoadVersion(t *testing.T) {
commitID := sdk.CommitID{1, res.Data} commitID := sdk.CommitID{1, res.Data}
// reload // reload
app = NewBaseApp(name, nil, logger, db, 10000) app = NewBaseApp(name, nil, logger, db)
app.MountStoresIAVL(capKey) app.MountStoresIAVL(capKey)
err = app.LoadLatestVersion(capKey) // needed to make stores non-nil err = app.LoadLatestVersion(capKey) // needed to make stores non-nil
assert.Nil(t, err) assert.Nil(t, err)
@ -151,7 +151,7 @@ func TestInitChainer(t *testing.T) {
name := t.Name() name := t.Name()
db := dbm.NewMemDB() db := dbm.NewMemDB()
logger := defaultLogger() logger := defaultLogger()
app := NewBaseApp(name, nil, logger, db, 10000) app := NewBaseApp(name, nil, logger, db)
// make cap keys and mount the stores // make cap keys and mount the stores
// NOTE/TODO: mounting multiple stores is broken // NOTE/TODO: mounting multiple stores is broken
// see https://github.com/cosmos/cosmos-sdk/issues/532 // see https://github.com/cosmos/cosmos-sdk/issues/532
@ -188,7 +188,7 @@ func TestInitChainer(t *testing.T) {
assert.Equal(t, value, res.Value) assert.Equal(t, value, res.Value)
// reload app // reload app
app = NewBaseApp(name, nil, logger, db, 10000) app = NewBaseApp(name, nil, logger, db)
app.MountStoresIAVL(capKey, capKey2) app.MountStoresIAVL(capKey, capKey2)
err = app.LoadLatestVersion(capKey) // needed to make stores non-nil err = app.LoadLatestVersion(capKey) // needed to make stores non-nil
assert.Nil(t, err) assert.Nil(t, err)
@ -328,7 +328,7 @@ func TestSimulateTx(t *testing.T) {
func TestTxGasLimits(t *testing.T) { func TestTxGasLimits(t *testing.T) {
logger := defaultLogger() logger := defaultLogger()
db := dbm.NewMemDB() db := dbm.NewMemDB()
app := NewBaseApp(t.Name(), nil, logger, db, 0) app := NewBaseApp(t.Name(), nil, logger, db)
// make a cap key and mount the store // make a cap key and mount the store
capKey := sdk.NewKVStoreKey("main") capKey := sdk.NewKVStoreKey("main")
@ -336,7 +336,10 @@ func TestTxGasLimits(t *testing.T) {
err := app.LoadLatestVersion(capKey) // needed to make stores non-nil err := app.LoadLatestVersion(capKey) // needed to make stores non-nil
assert.Nil(t, err) assert.Nil(t, err)
app.SetAnteHandler(func(ctx sdk.Context, tx sdk.Tx) (newCtx sdk.Context, res sdk.Result, abort bool) { return }) app.SetAnteHandler(func(ctx sdk.Context, tx sdk.Tx) (newCtx sdk.Context, res sdk.Result, abort bool) {
newCtx = ctx.WithGasMeter(sdk.NewGasMeter(0))
return
})
app.Router().AddRoute(msgType, func(ctx sdk.Context, msg sdk.Msg) sdk.Result { app.Router().AddRoute(msgType, func(ctx sdk.Context, msg sdk.Msg) sdk.Result {
ctx.GasMeter().ConsumeGas(10, "counter") ctx.GasMeter().ConsumeGas(10, "counter")
return sdk.Result{} return sdk.Result{}

View File

@ -51,7 +51,7 @@ func NewGaiaApp(logger log.Logger, db dbm.DB) *GaiaApp {
// create your application object // create your application object
var app = &GaiaApp{ var app = &GaiaApp{
BaseApp: bam.NewBaseApp(appName, cdc, logger, db, 1000000), BaseApp: bam.NewBaseApp(appName, cdc, logger, db),
cdc: cdc, cdc: cdc,
keyMain: sdk.NewKVStoreKey("main"), keyMain: sdk.NewKVStoreKey("main"),
keyAccount: sdk.NewKVStoreKey("acc"), keyAccount: sdk.NewKVStoreKey("acc"),

View File

@ -48,7 +48,7 @@ func NewBasecoinApp(logger log.Logger, db dbm.DB) *BasecoinApp {
// Create your application object. // Create your application object.
var app = &BasecoinApp{ var app = &BasecoinApp{
BaseApp: bam.NewBaseApp(appName, cdc, logger, db, 1000000), BaseApp: bam.NewBaseApp(appName, cdc, logger, db),
cdc: cdc, cdc: cdc,
keyMain: sdk.NewKVStoreKey("main"), keyMain: sdk.NewKVStoreKey("main"),
keyAccount: sdk.NewKVStoreKey("acc"), keyAccount: sdk.NewKVStoreKey("acc"),

View File

@ -56,7 +56,7 @@ func NewDemocoinApp(logger log.Logger, db dbm.DB) *DemocoinApp {
// Create your application object. // Create your application object.
var app = &DemocoinApp{ var app = &DemocoinApp{
BaseApp: bam.NewBaseApp(appName, cdc, logger, db, 1000000), BaseApp: bam.NewBaseApp(appName, cdc, logger, db),
cdc: cdc, cdc: cdc,
capKeyMainStore: sdk.NewKVStoreKey("main"), capKeyMainStore: sdk.NewKVStoreKey("main"),
capKeyAccountStore: sdk.NewKVStoreKey("acc"), capKeyAccountStore: sdk.NewKVStoreKey("acc"),

View File

@ -32,7 +32,7 @@ func main() {
var capKeyMainStore = sdk.NewKVStoreKey("main") var capKeyMainStore = sdk.NewKVStoreKey("main")
// Create BaseApp. // Create BaseApp.
var baseApp = bam.NewBaseApp("kvstore", nil, logger, db, 10000) var baseApp = bam.NewBaseApp("kvstore", nil, logger, db)
// Set mounts for BaseApp's MultiStore. // Set mounts for BaseApp's MultiStore.
baseApp.MountStoresIAVL(capKeyMainStore) baseApp.MountStoresIAVL(capKeyMainStore)

View File

@ -29,7 +29,7 @@ func NewApp(rootDir string, logger log.Logger) (abci.Application, error) {
capKeyMainStore := sdk.NewKVStoreKey("main") capKeyMainStore := sdk.NewKVStoreKey("main")
// Create BaseApp. // Create BaseApp.
baseApp := bam.NewBaseApp("kvstore", nil, logger, db, 10000) baseApp := bam.NewBaseApp("kvstore", nil, logger, db)
// Set mounts for BaseApp's MultiStore. // Set mounts for BaseApp's MultiStore.
baseApp.MountStoresIAVL(capKeyMainStore) baseApp.MountStoresIAVL(capKeyMainStore)

View File

@ -43,7 +43,7 @@ func NewContext(ms MultiStore, header abci.Header, isCheckTx bool, txBytes []byt
c = c.WithIsCheckTx(isCheckTx) c = c.WithIsCheckTx(isCheckTx)
c = c.WithTxBytes(txBytes) c = c.WithTxBytes(txBytes)
c = c.WithLogger(logger) c = c.WithLogger(logger)
c = c.WithGasMeter(NewGasMeter(gasLimit)) c = c.WithGasMeter(NewInfiniteGasMeter())
return c return c
} }

View File

@ -38,3 +38,21 @@ func (g *basicGasMeter) ConsumeGas(amount Gas, descriptor string) {
panic(ErrorOutOfGas{descriptor}) panic(ErrorOutOfGas{descriptor})
} }
} }
type infiniteGasMeter struct {
consumed Gas
}
func NewInfiniteGasMeter() GasMeter {
return &infiniteGasMeter{
consumed: 0,
}
}
func (g *infiniteGasMeter) GasConsumed() Gas {
return g.consumed
}
func (g *infiniteGasMeter) ConsumeGas(amount Gas, descriptor string) {
g.consumed += amount
}