fix(sims): OOM at sim-multi-seed-long run (#21503)
This commit is contained in:
parent
50b2254249
commit
62bf23a5ae
2
.github/workflows/sims-nightly.yml
vendored
2
.github/workflows/sims-nightly.yml
vendored
@ -24,6 +24,8 @@ jobs:
|
||||
go-version: "1.23"
|
||||
check-latest: true
|
||||
- name: test-sim-multi-seed-long
|
||||
env:
|
||||
GOMEMLIMIT: 14GiB # reserve 2 GiB as buffer for GC to avoid OOM
|
||||
run: |
|
||||
make test-sim-multi-seed-long
|
||||
|
||||
|
||||
@ -44,7 +44,7 @@ test-sim-custom-genesis-multi-seed:
|
||||
|
||||
test-sim-multi-seed-long:
|
||||
@echo "Running long multi-seed application simulation. This may take awhile!"
|
||||
@cd ${CURRENT_DIR}/simapp && go test -mod=readonly -timeout=1h -tags='sims' -run TestFullAppSimulation \
|
||||
@cd ${CURRENT_DIR}/simapp && go test -mod=readonly -timeout=2h -tags='sims' -run TestFullAppSimulation \
|
||||
-NumBlocks=150 -Period=50
|
||||
|
||||
test-sim-multi-seed-short:
|
||||
|
||||
@ -3,6 +3,7 @@ package sims
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
@ -50,6 +51,7 @@ type SimulationApp interface {
|
||||
SetNotSigverifyTx()
|
||||
GetBaseApp() *baseapp.BaseApp
|
||||
TxConfig() client.TxConfig
|
||||
Close() error
|
||||
}
|
||||
|
||||
// Run is a helper function that runs a simulation test with the given parameters.
|
||||
@ -114,7 +116,6 @@ func RunWithSeeds[T SimulationApp](
|
||||
runLogger = log.NewTestLoggerInfo(t)
|
||||
}
|
||||
runLogger = runLogger.With("seed", tCfg.Seed)
|
||||
|
||||
app := testInstance.App
|
||||
stateFactory := setupStateFactory(app)
|
||||
simParams, err := simulation.SimulateFromSeedX(
|
||||
@ -124,7 +125,7 @@ func RunWithSeeds[T SimulationApp](
|
||||
app.GetBaseApp(),
|
||||
stateFactory.AppStateFn,
|
||||
simtypes.RandomAccounts, // Replace with own random account function if using keys other than secp256k1
|
||||
simtestutil.SimulationOperations(app, stateFactory.Codec, tCfg, testInstance.App.TxConfig()),
|
||||
simtestutil.SimulationOperations(app, stateFactory.Codec, tCfg, app.TxConfig()),
|
||||
stateFactory.BlockedAddr,
|
||||
tCfg,
|
||||
stateFactory.Codec,
|
||||
@ -134,12 +135,13 @@ func RunWithSeeds[T SimulationApp](
|
||||
require.NoError(t, err)
|
||||
err = simtestutil.CheckExportSimulation(app, tCfg, simParams)
|
||||
require.NoError(t, err)
|
||||
if tCfg.Commit {
|
||||
if tCfg.Commit && tCfg.DBBackend == "goleveldb" {
|
||||
simtestutil.PrintStats(testInstance.DB.(*dbm.GoLevelDB))
|
||||
}
|
||||
for _, step := range postRunActions {
|
||||
step(t, testInstance)
|
||||
}
|
||||
require.NoError(t, app.Close())
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -173,6 +175,8 @@ func NewSimulationAppInstance[T SimulationApp](
|
||||
) TestInstance[T] {
|
||||
t.Helper()
|
||||
workDir := t.TempDir()
|
||||
require.NoError(t, os.Mkdir(filepath.Join(workDir, "data"), 0o755))
|
||||
|
||||
dbDir := filepath.Join(workDir, "leveldb-app-sim")
|
||||
var logger log.Logger
|
||||
if cli.FlagVerboseValue {
|
||||
@ -185,7 +189,7 @@ func NewSimulationAppInstance[T SimulationApp](
|
||||
db, err := dbm.NewDB("Simulation", dbm.BackendType(tCfg.DBBackend), dbDir)
|
||||
require.NoError(t, err)
|
||||
t.Cleanup(func() {
|
||||
require.NoError(t, db.Close())
|
||||
_ = db.Close() // ensure db is closed
|
||||
})
|
||||
appOptions := make(simtestutil.AppOptionsMap)
|
||||
appOptions[flags.FlagHome] = workDir
|
||||
|
||||
@ -46,7 +46,7 @@ func GetSimulatorFlags() {
|
||||
flag.IntVar(&FlagBlockSizeValue, "BlockSize", 200, "operations per block")
|
||||
flag.BoolVar(&FlagLeanValue, "Lean", false, "lean simulation log output")
|
||||
flag.BoolVar(&FlagCommitValue, "Commit", true, "have the simulation commit")
|
||||
flag.StringVar(&FlagDBBackendValue, "DBBackend", "goleveldb", "custom db backend type")
|
||||
flag.StringVar(&FlagDBBackendValue, "DBBackend", "goleveldb", "custom db backend type: goleveldb, memdb")
|
||||
|
||||
// simulation flags
|
||||
flag.BoolVar(&FlagEnabledValue, "Enabled", false, "enable the simulation")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user