mirror of https://github.com/certusone/vouch.git
Break out tests
This commit is contained in:
parent
b5a868274e
commit
dfc76bce9e
|
@ -19,9 +19,11 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/attestantio/vouch/mock"
|
"github.com/attestantio/vouch/mock"
|
||||||
|
"github.com/attestantio/vouch/services/chaintime"
|
||||||
"github.com/attestantio/vouch/services/chaintime/standard"
|
"github.com/attestantio/vouch/services/chaintime/standard"
|
||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
"gotest.tools/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestService(t *testing.T) {
|
func TestService(t *testing.T) {
|
||||||
|
@ -86,10 +88,7 @@ func TestService(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGenesisTime(t *testing.T) {
|
func createMockService(slotDuration time.Duration, slotsPerEpoch uint64, genesisTime time.Time) (chaintime.Service, error) {
|
||||||
genesisTime := time.Now()
|
|
||||||
slotDuration := 12 * time.Second
|
|
||||||
slotsPerEpoch := uint64(32)
|
|
||||||
mockGenesisTimeProvider := mock.NewGenesisTimeProvider(genesisTime)
|
mockGenesisTimeProvider := mock.NewGenesisTimeProvider(genesisTime)
|
||||||
mockSlotDurationProvider := mock.NewSlotDurationProvider(slotDuration)
|
mockSlotDurationProvider := mock.NewSlotDurationProvider(slotDuration)
|
||||||
mockSlotsPerEpochProvider := mock.NewSlotsPerEpochProvider(slotsPerEpoch)
|
mockSlotsPerEpochProvider := mock.NewSlotsPerEpochProvider(slotsPerEpoch)
|
||||||
|
@ -98,23 +97,26 @@ func TestGenesisTime(t *testing.T) {
|
||||||
standard.WithSlotDurationProvider(mockSlotDurationProvider),
|
standard.WithSlotDurationProvider(mockSlotDurationProvider),
|
||||||
standard.WithSlotsPerEpochProvider(mockSlotsPerEpochProvider),
|
standard.WithSlotsPerEpochProvider(mockSlotsPerEpochProvider),
|
||||||
)
|
)
|
||||||
|
return s, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGenesisTime(t *testing.T) {
|
||||||
|
slotDuration := 12 * time.Second
|
||||||
|
slotsPerEpoch := uint64(32)
|
||||||
|
genesisTime := time.Now()
|
||||||
|
|
||||||
|
s, err := createMockService(slotDuration, slotsPerEpoch, genesisTime)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
require.Equal(t, genesisTime, s.GenesisTime())
|
require.Equal(t, genesisTime, s.GenesisTime())
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestStartOfSlot(t *testing.T) {
|
func TestStartOfSlot(t *testing.T) {
|
||||||
genesisTime := time.Now()
|
|
||||||
slotDuration := 12 * time.Second
|
slotDuration := 12 * time.Second
|
||||||
slotsPerEpoch := uint64(32)
|
slotsPerEpoch := uint64(32)
|
||||||
mockGenesisTimeProvider := mock.NewGenesisTimeProvider(genesisTime)
|
genesisTime := time.Now()
|
||||||
mockSlotDurationProvider := mock.NewSlotDurationProvider(slotDuration)
|
|
||||||
mockSlotsPerEpochProvider := mock.NewSlotsPerEpochProvider(slotsPerEpoch)
|
s, err := createMockService(slotDuration, slotsPerEpoch, genesisTime)
|
||||||
s, err := standard.New(context.Background(),
|
|
||||||
standard.WithGenesisTimeProvider(mockGenesisTimeProvider),
|
|
||||||
standard.WithSlotDurationProvider(mockSlotDurationProvider),
|
|
||||||
standard.WithSlotsPerEpochProvider(mockSlotsPerEpochProvider),
|
|
||||||
)
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
require.Equal(t, genesisTime, s.StartOfSlot(0))
|
require.Equal(t, genesisTime, s.StartOfSlot(0))
|
||||||
|
@ -122,17 +124,11 @@ func TestStartOfSlot(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestStartOfEpoch(t *testing.T) {
|
func TestStartOfEpoch(t *testing.T) {
|
||||||
genesisTime := time.Now()
|
|
||||||
slotDuration := 12 * time.Second
|
slotDuration := 12 * time.Second
|
||||||
slotsPerEpoch := uint64(32)
|
slotsPerEpoch := uint64(32)
|
||||||
mockGenesisTimeProvider := mock.NewGenesisTimeProvider(genesisTime)
|
genesisTime := time.Now()
|
||||||
mockSlotDurationProvider := mock.NewSlotDurationProvider(slotDuration)
|
|
||||||
mockSlotsPerEpochProvider := mock.NewSlotsPerEpochProvider(slotsPerEpoch)
|
s, err := createMockService(slotDuration, slotsPerEpoch, genesisTime)
|
||||||
s, err := standard.New(context.Background(),
|
|
||||||
standard.WithGenesisTimeProvider(mockGenesisTimeProvider),
|
|
||||||
standard.WithSlotDurationProvider(mockSlotDurationProvider),
|
|
||||||
standard.WithSlotsPerEpochProvider(mockSlotsPerEpochProvider),
|
|
||||||
)
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
require.Equal(t, genesisTime, s.StartOfEpoch(0))
|
require.Equal(t, genesisTime, s.StartOfEpoch(0))
|
||||||
|
@ -143,32 +139,118 @@ func TestCurrentSlot(t *testing.T) {
|
||||||
slotDuration := 12 * time.Second
|
slotDuration := 12 * time.Second
|
||||||
slotsPerEpoch := uint64(32)
|
slotsPerEpoch := uint64(32)
|
||||||
genesisTime := time.Now().Add(-5 * slotDuration)
|
genesisTime := time.Now().Add(-5 * slotDuration)
|
||||||
mockGenesisTimeProvider := mock.NewGenesisTimeProvider(genesisTime)
|
|
||||||
mockSlotDurationProvider := mock.NewSlotDurationProvider(slotDuration)
|
s, err := createMockService(slotDuration, slotsPerEpoch, genesisTime)
|
||||||
mockSlotsPerEpochProvider := mock.NewSlotsPerEpochProvider(slotsPerEpoch)
|
|
||||||
s, err := standard.New(context.Background(),
|
|
||||||
standard.WithGenesisTimeProvider(mockGenesisTimeProvider),
|
|
||||||
standard.WithSlotDurationProvider(mockSlotDurationProvider),
|
|
||||||
standard.WithSlotsPerEpochProvider(mockSlotsPerEpochProvider),
|
|
||||||
)
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
require.Equal(t, uint64(5), s.CurrentSlot())
|
require.Equal(t, uint64(5), s.CurrentSlot())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCurrentSlotPreGenesis(t *testing.T) {
|
||||||
|
slotDuration := 12 * time.Second
|
||||||
|
slotsPerEpoch := uint64(32)
|
||||||
|
genesisTime := time.Now().Add(3 * time.Hour)
|
||||||
|
|
||||||
|
s, err := createMockService(slotDuration, slotsPerEpoch, genesisTime)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.Equal(t, uint64(0), s.CurrentSlot())
|
||||||
|
}
|
||||||
|
|
||||||
func TestCurrentEpoch(t *testing.T) {
|
func TestCurrentEpoch(t *testing.T) {
|
||||||
slotDuration := 12 * time.Second
|
slotDuration := 12 * time.Second
|
||||||
slotsPerEpoch := uint64(32)
|
slotsPerEpoch := uint64(32)
|
||||||
genesisTime := time.Now().Add(time.Duration(int64(-2)*int64(slotsPerEpoch)) * slotDuration)
|
genesisTime := time.Now().Add(time.Duration(int64(-2)*int64(slotsPerEpoch)) * slotDuration)
|
||||||
mockGenesisTimeProvider := mock.NewGenesisTimeProvider(genesisTime)
|
|
||||||
mockSlotDurationProvider := mock.NewSlotDurationProvider(slotDuration)
|
s, err := createMockService(slotDuration, slotsPerEpoch, genesisTime)
|
||||||
mockSlotsPerEpochProvider := mock.NewSlotsPerEpochProvider(slotsPerEpoch)
|
|
||||||
s, err := standard.New(context.Background(),
|
|
||||||
standard.WithGenesisTimeProvider(mockGenesisTimeProvider),
|
|
||||||
standard.WithSlotDurationProvider(mockSlotDurationProvider),
|
|
||||||
standard.WithSlotsPerEpochProvider(mockSlotsPerEpochProvider),
|
|
||||||
)
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
require.Equal(t, uint64(2), s.CurrentEpoch())
|
require.Equal(t, uint64(2), s.CurrentEpoch())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCurrentEpochPreGenesis(t *testing.T) {
|
||||||
|
slotDuration := 12 * time.Second
|
||||||
|
slotsPerEpoch := uint64(32)
|
||||||
|
genesisTime := time.Now().Add(3 * time.Hour)
|
||||||
|
|
||||||
|
s, err := createMockService(slotDuration, slotsPerEpoch, genesisTime)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.Equal(t, uint64(0), s.CurrentEpoch())
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSlotToEpoch(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
slot uint64
|
||||||
|
epoch uint64
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "ZeroFirstSlot",
|
||||||
|
slot: 0,
|
||||||
|
epoch: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "ZeroLastSlot",
|
||||||
|
slot: 31,
|
||||||
|
epoch: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "OneFirstSlot",
|
||||||
|
slot: 32,
|
||||||
|
epoch: 1,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
slotDuration := 12 * time.Second
|
||||||
|
slotsPerEpoch := uint64(32)
|
||||||
|
genesisTime := time.Now()
|
||||||
|
|
||||||
|
s, err := createMockService(slotDuration, slotsPerEpoch, genesisTime)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
t.Run(test.name, func(t *testing.T) {
|
||||||
|
epoch := s.SlotToEpoch(test.slot)
|
||||||
|
assert.Equal(t, test.epoch, epoch)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFirstSlotOfEpoch(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
epoch uint64
|
||||||
|
slot uint64
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "Zero",
|
||||||
|
epoch: 0,
|
||||||
|
slot: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "One",
|
||||||
|
epoch: 1,
|
||||||
|
slot: 32,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "OneThousand",
|
||||||
|
epoch: 1000,
|
||||||
|
slot: 32000,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
slotDuration := 12 * time.Second
|
||||||
|
slotsPerEpoch := uint64(32)
|
||||||
|
genesisTime := time.Now()
|
||||||
|
|
||||||
|
s, err := createMockService(slotDuration, slotsPerEpoch, genesisTime)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
t.Run(test.name, func(t *testing.T) {
|
||||||
|
slot := s.FirstSlotOfEpoch(test.epoch)
|
||||||
|
assert.Equal(t, test.slot, slot)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue