github.com/palisadeinc/bor@v0.0.0-20230615125219-ab7196213d15/core/blockstm/status_test.go (about) 1 package blockstm 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestStatusBasics(t *testing.T) { 10 t.Parallel() 11 12 s := makeStatusManager(10) 13 14 x := s.takeNextPending() 15 require.Equal(t, 0, x) 16 require.True(t, s.checkInProgress(x)) 17 18 x = s.takeNextPending() 19 require.Equal(t, 1, x) 20 require.True(t, s.checkInProgress(x)) 21 22 x = s.takeNextPending() 23 require.Equal(t, 2, x) 24 require.True(t, s.checkInProgress(x)) 25 26 s.markComplete(0) 27 require.False(t, s.checkInProgress(0)) 28 s.markComplete(1) 29 s.markComplete(2) 30 require.False(t, s.checkInProgress(1)) 31 require.False(t, s.checkInProgress(2)) 32 require.Equal(t, 2, s.maxAllComplete()) 33 34 x = s.takeNextPending() 35 require.Equal(t, 3, x) 36 37 x = s.takeNextPending() 38 require.Equal(t, 4, x) 39 40 s.markComplete(x) 41 require.False(t, s.checkInProgress(4)) 42 require.Equal(t, 2, s.maxAllComplete(), "zero should still be min complete") 43 44 exp := []int{1, 2} 45 require.Equal(t, exp, s.getRevalidationRange(1)) 46 } 47 48 func TestMaxComplete(t *testing.T) { 49 t.Parallel() 50 51 s := makeStatusManager(10) 52 53 for { 54 tx := s.takeNextPending() 55 56 if tx == -1 { 57 break 58 } 59 60 if tx != 7 { 61 s.markComplete(tx) 62 } 63 } 64 65 require.Equal(t, 6, s.maxAllComplete()) 66 67 s2 := makeStatusManager(10) 68 69 for { 70 tx := s2.takeNextPending() 71 72 if tx == -1 { 73 break 74 } 75 } 76 s2.markComplete(2) 77 s2.markComplete(4) 78 require.Equal(t, -1, s2.maxAllComplete()) 79 80 s2.complete = insertInList(s2.complete, 4) 81 require.Equal(t, 2, s2.countComplete()) 82 }