diff --git a/x/mock/simulation/random_simulate_blocks.go b/x/mock/simulation/random_simulate_blocks.go index d2680bc0f4..8181bb23a5 100644 --- a/x/mock/simulation/random_simulate_blocks.go +++ b/x/mock/simulation/random_simulate_blocks.go @@ -129,24 +129,38 @@ func SimulateFromSeed(tb testing.TB, app *baseapp.BaseApp, pastTimes = append(pastTimes, header.Time) pastVoteInfos = append(pastVoteInfos, request.LastCommitInfo.Votes) + // Construct log writer + logWriter := addLogMessage(testingMode, blockLogBuilders, i) + // Run the BeginBlock handler + logWriter("BeginBlock") app.BeginBlock(request) if testingMode { // Make sure invariants hold at beginning of block - assertAllInvariants(t, app, invariants, displayLogs) + assertAllInvariants(t, app, invariants, "BeginBlock", displayLogs) } - logWriter := addLogMessage(testingMode, blockLogBuilders, i) ctx := app.NewContext(false, header) thisBlockSize := getBlockSize(r, blockSize) // Run queued operations. Ignores blocksize if blocksize is too small + logWriter("Queued operations") numQueuedOpsRan := runQueuedOperations(operationQueue, int(header.Height), tb, r, app, ctx, accs, logWriter, displayLogs, event) numQueuedTimeOpsRan := runQueuedTimeOperations(timeOperationQueue, header.Time, tb, r, app, ctx, accs, logWriter, displayLogs, event) + if testingMode && onOperation { + // Make sure invariants hold at end of queued operations + assertAllInvariants(t, app, invariants, "QueuedOperations", displayLogs) + } + thisBlockSize = thisBlockSize - numQueuedOpsRan - numQueuedTimeOpsRan + logWriter("Standard operations") operations := blockSimulator(thisBlockSize, r, app, ctx, accs, header, logWriter) opCount += operations + numQueuedOpsRan + numQueuedTimeOpsRan + if testingMode { + // Make sure invariants hold at end of block + assertAllInvariants(t, app, invariants, "StandardOperations", displayLogs) + } res := app.EndBlock(abci.RequestEndBlock{}) header.Height++ @@ -156,7 +170,7 @@ func SimulateFromSeed(tb testing.TB, app *baseapp.BaseApp, if testingMode { // Make sure invariants hold at end of block - assertAllInvariants(t, app, invariants, displayLogs) + assertAllInvariants(t, app, invariants, "EndBlock", displayLogs) } if commit { app.Commit() @@ -210,7 +224,7 @@ func createBlockSimulator(testingMode bool, tb testing.TB, t *testing.T, event f queueOperations(operationQueue, timeOperationQueue, futureOps) if testingMode { if onOperation { - assertAllInvariants(t, app, invariants, displayLogs) + assertAllInvariants(t, app, invariants, fmt.Sprintf("operation: %v", logUpdate), displayLogs) } if opCount%50 == 0 { fmt.Printf("\rSimulating... block %d/%d, operation %d/%d. ", header.Height, totalNumBlocks, opCount, blocksize) diff --git a/x/mock/simulation/util.go b/x/mock/simulation/util.go index 54bfabc73f..93c0a5be09 100644 --- a/x/mock/simulation/util.go +++ b/x/mock/simulation/util.go @@ -102,10 +102,11 @@ func addLogMessage(testingmode bool, blockLogBuilders []*strings.Builder, height } // assertAllInvariants asserts a list of provided invariants against application state -func assertAllInvariants(t *testing.T, app *baseapp.BaseApp, invariants []Invariant, displayLogs func()) { +func assertAllInvariants(t *testing.T, app *baseapp.BaseApp, invariants []Invariant, where string, displayLogs func()) { for i := 0; i < len(invariants); i++ { err := invariants[i](app) if err != nil { + fmt.Printf("Invariants broken after %s\n", where) fmt.Println(err.Error()) displayLogs() t.Fatal() diff --git a/x/stake/simulation/invariants.go b/x/stake/simulation/invariants.go index d906cdbcca..e249bac9f4 100644 --- a/x/stake/simulation/invariants.go +++ b/x/stake/simulation/invariants.go @@ -87,7 +87,6 @@ func SupplyInvariants(ck bank.Keeper, k stake.Keeper, f auth.FeeCollectionKeeper return fmt.Errorf("expected bonded tokens to equal total steak held by bonded validators - pool.BondedTokens: %v, sum of bonded validator tokens: %v", pool.BondedTokens, bonded) } - // TODO Inflation check on total supply return nil } } diff --git a/x/stake/types/pool.go b/x/stake/types/pool.go index c7cb697486..95ba0e3545 100644 --- a/x/stake/types/pool.go +++ b/x/stake/types/pool.go @@ -92,7 +92,7 @@ func (p Pool) ProcessProvisions(params Params) Pool { Mul(p.TokenSupply()). Quo(hrsPerYrDec) - // TODO add to the fees provisions + // TODO add to the fees provisions p.LooseTokens = p.LooseTokens.Add(provisions) return p }