mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-27 07:06:42 +00:00
core/filtermaps: updated indexer test
This commit is contained in:
parent
7a057bffae
commit
8b3aa452cf
1 changed files with 31 additions and 9 deletions
|
|
@ -48,16 +48,35 @@ func TestIndexerRandomRange(t *testing.T) {
|
||||||
defer ts.close()
|
defer ts.close()
|
||||||
|
|
||||||
forks := make([][]common.Hash, 10)
|
forks := make([][]common.Hash, 10)
|
||||||
ts.chain.addBlocks(1000, 5, 2, 4, false) // 51 log values per block
|
ts.chain.addBlocks(1000, 5, 2, 4, false)
|
||||||
for i := range forks {
|
for i := range forks {
|
||||||
if i != 0 {
|
if i != 0 {
|
||||||
forkBlock := rand.Intn(1000)
|
forkBlock := rand.Intn(1000)
|
||||||
ts.chain.setHead(forkBlock)
|
ts.chain.setHead(forkBlock)
|
||||||
ts.chain.addBlocks(1000-forkBlock, 5, 2, 4, false) // 51 log values per block
|
ts.chain.addBlocks(1000-forkBlock, 5, 2, 4, false)
|
||||||
}
|
}
|
||||||
forks[i] = ts.chain.getCanonicalChain()
|
forks[i] = ts.chain.getCanonicalChain()
|
||||||
}
|
}
|
||||||
lvPerBlock := uint64(51)
|
expspos := func(block uint64) uint64 { // expected position of block start
|
||||||
|
if block == 0 {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
logCount := (block - 1) * 5 * 2
|
||||||
|
mapIndex := logCount / 3
|
||||||
|
spos := mapIndex*16 + (logCount%3)*5
|
||||||
|
if mapIndex == 0 || logCount%3 != 0 {
|
||||||
|
spos++
|
||||||
|
}
|
||||||
|
return spos
|
||||||
|
}
|
||||||
|
expdpos := func(block uint64) uint64 { // expected position of delimiter
|
||||||
|
if block == 0 {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
logCount := block * 5 * 2
|
||||||
|
mapIndex := (logCount - 1) / 3
|
||||||
|
return mapIndex*16 + (logCount-mapIndex*3)*5
|
||||||
|
}
|
||||||
ts.setHistory(0, false)
|
ts.setHistory(0, false)
|
||||||
var (
|
var (
|
||||||
history int
|
history int
|
||||||
|
|
@ -115,21 +134,24 @@ func TestIndexerRandomRange(t *testing.T) {
|
||||||
}
|
}
|
||||||
var tailEpoch uint32
|
var tailEpoch uint32
|
||||||
if tailBlock > 0 {
|
if tailBlock > 0 {
|
||||||
tailLvPtr := (tailBlock - 1) * lvPerBlock // no logs in genesis block, only delimiter
|
tailLvPtr := expspos(tailBlock) - 1
|
||||||
tailEpoch = uint32(tailLvPtr >> (testParams.logValuesPerMap + testParams.logMapsPerEpoch))
|
tailEpoch = uint32(tailLvPtr >> (testParams.logValuesPerMap + testParams.logMapsPerEpoch))
|
||||||
}
|
}
|
||||||
|
tailLvPtr := uint64(tailEpoch) << (testParams.logValuesPerMap + testParams.logMapsPerEpoch) // first available lv ptr
|
||||||
var expTailBlock uint64
|
var expTailBlock uint64
|
||||||
if tailEpoch > 0 {
|
if tailEpoch > 0 {
|
||||||
tailLvPtr := uint64(tailEpoch) << (testParams.logValuesPerMap + testParams.logMapsPerEpoch) // first available lv ptr
|
for expspos(expTailBlock) <= tailLvPtr {
|
||||||
// (expTailBlock-1)*lvPerBlock >= tailLvPtr
|
expTailBlock++
|
||||||
expTailBlock = (tailLvPtr + lvPerBlock*2 - 1) / lvPerBlock
|
}
|
||||||
}
|
}
|
||||||
if ts.fm.indexedRange.afterLastIndexedBlock != uint64(head+1) {
|
if ts.fm.indexedRange.afterLastIndexedBlock != uint64(head+1) {
|
||||||
ts.t.Fatalf("Invalid index head (expected #%d, got #%d)", head, ts.fm.indexedRange.afterLastIndexedBlock-1)
|
ts.t.Fatalf("Invalid index head (expected #%d, got #%d)", head, ts.fm.indexedRange.afterLastIndexedBlock-1)
|
||||||
}
|
}
|
||||||
if ts.fm.indexedRange.headBlockDelimiter != uint64(head)*lvPerBlock {
|
expHeadDelimiter := expdpos(uint64(head))
|
||||||
ts.t.Fatalf("Invalid index head delimiter pointer (expected %d, got %d)", uint64(head)*lvPerBlock, ts.fm.indexedRange.headBlockDelimiter)
|
if ts.fm.indexedRange.headBlockDelimiter != expHeadDelimiter {
|
||||||
|
ts.t.Fatalf("Invalid index head delimiter pointer (expected %d, got %d)", expHeadDelimiter, ts.fm.indexedRange.headBlockDelimiter)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ts.fm.indexedRange.firstIndexedBlock != expTailBlock {
|
if ts.fm.indexedRange.firstIndexedBlock != expTailBlock {
|
||||||
ts.t.Fatalf("Invalid index tail block (expected #%d, got #%d)", expTailBlock, ts.fm.indexedRange.firstIndexedBlock)
|
ts.t.Fatalf("Invalid index tail block (expected #%d, got #%d)", expTailBlock, ts.fm.indexedRange.firstIndexedBlock)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue