Skip to content

Commit

Permalink
feat: tests and stm annotations for view module
Browse files Browse the repository at this point in the history
  • Loading branch information
zl03jsj committed Nov 9, 2022
1 parent 946bb83 commit a6e70b3
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 1 deletion.
1 change: 0 additions & 1 deletion pkg/state/power_table_view_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,6 @@ func TestTotalPowerUnaffectedBySlash(t *testing.T) {
// nolint
func requireMinerWithNumCommittedSectors(ctx context.Context, t *testing.T, numCommittedSectors uint64, ownerKeys []crypto.KeyInfo) (cbor.IpldStore, []address.Address, cid.Cid) {
// todo think a way to mock power directly
t.Skipf("skip it due to cant mock power directly ")
r := repo.NewInMemoryRepo()
bs := r.Datastore()
cst := cbor.NewCborStore(bs)
Expand Down
84 changes: 84 additions & 0 deletions pkg/state/view_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
// stm: #unit
package state_test

import (
"context"
"testing"

"github.com/filecoin-project/go-address"

"github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/go-state-types/network"
"github.com/filecoin-project/venus/pkg/state"
"github.com/filecoin-project/venus/pkg/testhelpers"
tf "github.com/filecoin-project/venus/pkg/testhelpers/testflags"
"github.com/filecoin-project/venus/venus-shared/types"

"github.com/filecoin-project/venus/pkg/crypto"
"github.com/stretchr/testify/assert"
)

func setupTestMinerView(t *testing.T, numMiners int) (*state.View, map[address.Address]*crypto.KeyInfo) {
tf.UnitTest(t)
ctx := context.Background()
numCommittedSectors := uint64(19)
kis := testhelpers.MustGenerateBLSKeyInfo(numMiners, 0)

kiMap := make(map[address.Address]*crypto.KeyInfo)
for _, k := range kis {
addr, err := k.Address()
assert.NoError(t, err)
kiMap[addr] = &k
}

store, _, root := requireMinerWithNumCommittedSectors(ctx, t, numCommittedSectors, kis)
return state.NewView(store, root), kiMap
}

func TestView(t *testing.T) {
numMiners := 2
view, keyMap := setupTestMinerView(t, numMiners)
ctx := context.Background()

miners, err := view.StateListMiners(ctx, types.EmptyTSK)
assert.NoError(t, err)
assert.Equal(t, len(miners), numMiners)

for _, m := range miners {
// stm: @STATE_VIEW_MINER_EXISTS_001
exist, err := view.MinerExists(ctx, m)
assert.NoError(t, err)
assert.True(t, exist)

// stm: @STATE_VIEW_GET_MINER_INFO_001
minerInfo, err := view.MinerInfo(ctx, m, network.Version17)
assert.NoError(t, err)

ownerPkAddress, err := view.ResolveToKeyAddr(ctx, minerInfo.Owner)
assert.NoError(t, err)
_, find := keyMap[ownerPkAddress]
assert.True(t, find)

// stm: @STATE_VIEW_GET_MINER_SECTOR_INFO_001
sectorInfo, err := view.MinerSectorInfo(ctx, m, 0)
assert.NoError(t, err)
assert.Equal(t, sectorInfo.SectorNumber, abi.SectorNumber(0))

// stm: @STATE_VIEW_SECTOR_PRE_COMMIT_INFO_001
_, err = view.SectorPreCommitInfo(ctx, m, 0)
assert.NoError(t, err)

// stm: @STATE_VIEW_MINER_GET_PRECOMMITED_SECTOR
_, find, err = view.MinerGetPrecommittedSector(ctx, m, abi.SectorNumber(0))
assert.NoError(t, err)
assert.True(t, find)

// stm: @STATE_VIEW_STATE_SECTOR_PARTITION_001
_, err = view.StateSectorPartition(ctx, m, 0)
assert.NoError(t, err)

// stm: @STATE_VIEW_DEADLINE_INFO_001
_, _, _, _, err = view.MinerDeadlineInfo(ctx, m, abi.ChainEpoch(1))
assert.NoError(t, err)
}
}

0 comments on commit a6e70b3

Please sign in to comment.