From 9fb345af6731e75387b855d6a76d69531157b678 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Tue, 6 Apr 2021 15:38:13 +0200 Subject: [PATCH] storagefsm: Test applying global events in broken state --- extern/storage-sealing/fsm_test.go | 35 ++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/extern/storage-sealing/fsm_test.go b/extern/storage-sealing/fsm_test.go index ac71588a5..b0ffdecf3 100644 --- a/extern/storage-sealing/fsm_test.go +++ b/extern/storage-sealing/fsm_test.go @@ -175,3 +175,38 @@ func TestPlannerList(t *testing.T) { require.True(t, ok, "state %s", state) } } + +func TestBrokenState(t *testing.T) { + var notif []struct{ before, after SectorInfo } + ma, _ := address.NewIDAddress(55151) + m := test{ + s: &Sealing{ + maddr: ma, + stats: SectorStats{ + bySector: map[abi.SectorID]statSectorState{}, + }, + notifee: func(before, after SectorInfo) { + notif = append(notif, struct{ before, after SectorInfo }{before, after}) + }, + }, + t: t, + state: &SectorInfo{State: "not a state"}, + } + + _, _, err := m.s.plan([]statemachine.Event{{User: SectorPacked{}}}, m.state) + require.Error(t, err) + require.Equal(m.t, m.state.State, SectorState("not a state")) + + m.planSingle(SectorRemove{}) + require.Equal(m.t, m.state.State, Removing) + + expected := []SectorState{"not a state", "not a state", Removing} + for i, n := range notif { + if n.before.State != expected[i] { + t.Fatalf("expected before state: %s, got: %s", expected[i], n.before.State) + } + if n.after.State != expected[i+1] { + t.Fatalf("expected after state: %s, got: %s", expected[i+1], n.after.State) + } + } +}