chain events: More logical apply order
This commit is contained in:
parent
caed73ef6c
commit
611ea02cea
@ -86,7 +86,9 @@ func (e *calledEvents) headChangeCalled(rev, app []*types.TipSet) error {
|
|||||||
e.handleReverts(ts)
|
e.handleReverts(ts)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, ts := range app {
|
tail := len(app) - 1
|
||||||
|
for i := range app {
|
||||||
|
ts := app[tail-i]
|
||||||
// called triggers
|
// called triggers
|
||||||
|
|
||||||
e.checkNewCalls(ts)
|
e.checkNewCalls(ts)
|
||||||
|
@ -47,7 +47,10 @@ func (e *heightEvents) headChangeAt(rev, app []*types.TipSet) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, ts := range app {
|
tail := len(app) - 1
|
||||||
|
for i := range app {
|
||||||
|
ts := app[tail-i]
|
||||||
|
|
||||||
if err := e.tsc.add(ts); err != nil {
|
if err := e.tsc.add(ts); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -98,7 +98,7 @@ func (fcs *fakeCS) advance(rev, app int, msgs map[int]cid.Cid) { // todo: allow
|
|||||||
require.NoError(fcs.t, fcs.tsc.revert(ts))
|
require.NoError(fcs.t, fcs.tsc.revert(ts))
|
||||||
}
|
}
|
||||||
|
|
||||||
var apps []*types.TipSet
|
apps := make([]*types.TipSet, app)
|
||||||
for i := 0; i < app; i++ {
|
for i := 0; i < app; i++ {
|
||||||
fcs.h++
|
fcs.h++
|
||||||
|
|
||||||
@ -110,7 +110,7 @@ func (fcs *fakeCS) advance(rev, app int, msgs map[int]cid.Cid) { // todo: allow
|
|||||||
ts := makeTs(fcs.t, fcs.h, mc)
|
ts := makeTs(fcs.t, fcs.h, mc)
|
||||||
require.NoError(fcs.t, fcs.tsc.add(ts))
|
require.NoError(fcs.t, fcs.tsc.add(ts))
|
||||||
|
|
||||||
apps = append(apps, ts)
|
apps[app-i-1] = ts
|
||||||
}
|
}
|
||||||
|
|
||||||
err := fcs.sub(revs, apps)
|
err := fcs.sub(revs, apps)
|
||||||
@ -446,3 +446,66 @@ func TestCalledTimeout(t *testing.T) {
|
|||||||
fcs.advance(0, 5, nil)
|
fcs.advance(0, 5, nil)
|
||||||
require.False(t, called)
|
require.False(t, called)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCalledOrder(t *testing.T) {
|
||||||
|
fcs := &fakeCS{
|
||||||
|
t: t,
|
||||||
|
h: 1,
|
||||||
|
|
||||||
|
msgs: map[cid.Cid]fakeMsg{},
|
||||||
|
tsc: newTSCache(2 * build.ForkLengthThreshold),
|
||||||
|
}
|
||||||
|
require.NoError(t, fcs.tsc.add(makeTs(t, 1, dummyCid)))
|
||||||
|
|
||||||
|
events := NewEvents(fcs)
|
||||||
|
|
||||||
|
t0123, err := address.NewFromString("t0123")
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
at := 0
|
||||||
|
|
||||||
|
err = events.Called(func(ts *types.TipSet) (d bool, m bool, e error) {
|
||||||
|
return false, true, nil
|
||||||
|
}, func(msg *types.Message, ts *types.TipSet, curH uint64) (bool, error) {
|
||||||
|
switch at {
|
||||||
|
case 0:
|
||||||
|
require.Equal(t, uint64(1), msg.Nonce)
|
||||||
|
require.Equal(t, uint64(3), ts.Height())
|
||||||
|
case 1:
|
||||||
|
require.Equal(t, uint64(2), msg.Nonce)
|
||||||
|
require.Equal(t, uint64(4), ts.Height())
|
||||||
|
default:
|
||||||
|
t.Fatal("apply should only get called twice, at: ", at)
|
||||||
|
}
|
||||||
|
at++
|
||||||
|
return true, nil
|
||||||
|
}, func(ts *types.TipSet) error {
|
||||||
|
switch at {
|
||||||
|
case 2:
|
||||||
|
require.Equal(t, uint64(4), ts.Height())
|
||||||
|
case 3:
|
||||||
|
require.Equal(t, uint64(3), ts.Height())
|
||||||
|
default:
|
||||||
|
t.Fatal("revert should only get called twice, at: ", at)
|
||||||
|
}
|
||||||
|
at++
|
||||||
|
return nil
|
||||||
|
}, 3, 20, t0123, 5)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
fcs.advance(0, 10, map[int]cid.Cid{
|
||||||
|
1: fcs.fakeMsgs(fakeMsg{
|
||||||
|
bmsgs: []*types.Message{
|
||||||
|
{To: t0123, Method: 5, Nonce: 1},
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
2: fcs.fakeMsgs(fakeMsg{
|
||||||
|
bmsgs: []*types.Message{
|
||||||
|
{To: t0123, Method: 5, Nonce: 2},
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
|
||||||
|
fcs.advance(9, 1, nil)
|
||||||
|
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user