lotus/tools/stats/head_buffer_test.go

44 lines
1.3 KiB
Go
Raw Normal View History

2020-07-03 14:52:40 +00:00
package stats
import (
"testing"
2020-04-23 22:53:24 +00:00
"github.com/filecoin-project/lotus/api"
"github.com/stretchr/testify/require"
)
func TestHeadBuffer(t *testing.T) {
t.Run("Straight push through", func(t *testing.T) {
hb := newHeadBuffer(5)
require.Nil(t, hb.push(&api.HeadChange{Type: "1"}))
require.Nil(t, hb.push(&api.HeadChange{Type: "2"}))
require.Nil(t, hb.push(&api.HeadChange{Type: "3"}))
require.Nil(t, hb.push(&api.HeadChange{Type: "4"}))
require.Nil(t, hb.push(&api.HeadChange{Type: "5"}))
hc := hb.push(&api.HeadChange{Type: "6"})
require.Equal(t, hc.Type, "1")
})
t.Run("Reverts", func(t *testing.T) {
hb := newHeadBuffer(5)
require.Nil(t, hb.push(&api.HeadChange{Type: "1"}))
require.Nil(t, hb.push(&api.HeadChange{Type: "2"}))
require.Nil(t, hb.push(&api.HeadChange{Type: "3"}))
hb.pop()
require.Nil(t, hb.push(&api.HeadChange{Type: "3a"}))
hb.pop()
require.Nil(t, hb.push(&api.HeadChange{Type: "3b"}))
require.Nil(t, hb.push(&api.HeadChange{Type: "4"}))
require.Nil(t, hb.push(&api.HeadChange{Type: "5"}))
hc := hb.push(&api.HeadChange{Type: "6"})
require.Equal(t, hc.Type, "1")
hc = hb.push(&api.HeadChange{Type: "7"})
require.Equal(t, hc.Type, "2")
hc = hb.push(&api.HeadChange{Type: "8"})
require.Equal(t, hc.Type, "3b")
})
}