You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
2.1 KiB
50 lines
2.1 KiB
package shardingconfig
|
|
|
|
import (
|
|
"math/big"
|
|
"testing"
|
|
|
|
"github.com/harmony-one/harmony/internal/params"
|
|
)
|
|
|
|
func TestLocalnetEpochCalculation(t *testing.T) {
|
|
check := func(epoch, expected uint64) {
|
|
if got := LocalnetSchedule.EpochLastBlock(epoch); got != expected {
|
|
t.Fatalf("wrong EpochLastBlock at epoch %d. TwoSecondsEpoch: %s. expected: %d got: %d.", epoch, params.LocalnetChainConfig.TwoSecondsEpoch.String(), expected, got)
|
|
}
|
|
if !LocalnetSchedule.IsLastBlock(expected) {
|
|
t.Fatalf("%d is not LastBlock. TwoSecondsEpoch: %s", expected, params.LocalnetChainConfig.TwoSecondsEpoch.String())
|
|
}
|
|
epochStart := uint64(0)
|
|
if epoch > 0 {
|
|
epochStart = LocalnetSchedule.EpochLastBlock(epoch-1) + 1
|
|
}
|
|
for blockNo := epochStart; blockNo <= expected; blockNo++ {
|
|
if isLastBlock := LocalnetSchedule.IsLastBlock(blockNo); isLastBlock != (blockNo == expected) {
|
|
t.Fatalf("IsLastBlock for %d is wrong. TwoSecondsEpoch: %s. expected %v got %v", blockNo, params.LocalnetChainConfig.TwoSecondsEpoch.String(), blockNo == expected, isLastBlock)
|
|
}
|
|
got := LocalnetSchedule.CalcEpochNumber(blockNo).Uint64()
|
|
if got != epoch {
|
|
t.Fatalf("CalcEpochNumber for %d is wrong. TwoSecondsEpoch: %s. expected %d got %d", blockNo, params.LocalnetChainConfig.TwoSecondsEpoch.String(), epoch, got)
|
|
}
|
|
}
|
|
}
|
|
backup := params.LocalnetChainConfig.TwoSecondsEpoch
|
|
params.LocalnetChainConfig.TwoSecondsEpoch = big.NewInt(0)
|
|
check(0, localnetEpochBlock1-1)
|
|
check(1, localnetEpochBlock1+localnetBlocksPerEpochV2-1)
|
|
check(2, localnetEpochBlock1+localnetBlocksPerEpochV2*2-1)
|
|
|
|
params.LocalnetChainConfig.TwoSecondsEpoch = big.NewInt(1)
|
|
check(0, localnetEpochBlock1-1)
|
|
check(1, localnetEpochBlock1+localnetBlocksPerEpochV2-1)
|
|
check(2, localnetEpochBlock1+localnetBlocksPerEpochV2*2-1)
|
|
|
|
params.LocalnetChainConfig.TwoSecondsEpoch = big.NewInt(2)
|
|
check(0, localnetEpochBlock1-1)
|
|
check(1, localnetEpochBlock1+localnetBlocksPerEpoch-1)
|
|
check(2, localnetEpochBlock1+localnetBlocksPerEpoch+localnetBlocksPerEpochV2-1)
|
|
check(3, localnetEpochBlock1+localnetBlocksPerEpoch+localnetBlocksPerEpochV2*2-1)
|
|
|
|
params.LocalnetChainConfig.TwoSecondsEpoch = backup
|
|
}
|
|
|