1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package derive
import (
"context"
"io"
"testing"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
"github.com/stretchr/testify/require"
"github.com/ethereum-optimism/optimism/op-node/rollup"
"github.com/ethereum-optimism/optimism/op-service/eth"
"github.com/ethereum-optimism/optimism/op-service/testlog"
)
func TestBatchMux_LaterHolocene(t *testing.T) {
log := testlog.Logger(t, log.LevelTrace)
ctx := context.Background()
l1A := eth.L1BlockRef{Time: 0, Hash: common.Hash{0xaa}}
l1B := eth.L1BlockRef{Time: 12, Hash: common.Hash{0xbb}}
cfg := &rollup.Config{
HoloceneTime: &l1B.Time,
}
b := NewBatchMux(log, cfg, nil, nil)
require.Nil(t, b.SingularBatchProvider)
err := b.Reset(ctx, l1A, eth.SystemConfig{})
require.Equal(t, io.EOF, err)
require.IsType(t, new(BatchQueue), b.SingularBatchProvider)
require.Equal(t, l1A, b.SingularBatchProvider.(*BatchQueue).origin)
b.Transform(rollup.Holocene)
require.IsType(t, new(BatchStage), b.SingularBatchProvider)
require.Equal(t, l1A, b.SingularBatchProvider.(*BatchStage).origin)
err = b.Reset(ctx, l1B, eth.SystemConfig{})
require.Equal(t, io.EOF, err)
require.IsType(t, new(BatchStage), b.SingularBatchProvider)
require.Equal(t, l1B, b.SingularBatchProvider.(*BatchStage).origin)
err = b.Reset(ctx, l1A, eth.SystemConfig{})
require.Equal(t, io.EOF, err)
require.IsType(t, new(BatchQueue), b.SingularBatchProvider)
require.Equal(t, l1A, b.SingularBatchProvider.(*BatchQueue).origin)
}
func TestBatchMux_ActiveHolocene(t *testing.T) {
log := testlog.Logger(t, log.LevelTrace)
ctx := context.Background()
l1A := eth.L1BlockRef{Time: 42, Hash: common.Hash{0xaa}}
cfg := &rollup.Config{
HoloceneTime: &l1A.Time,
}
// without the fake input, the panic check later would panic because of the Origin() call
prev := &fakeBatchQueueInput{origin: l1A}
b := NewBatchMux(log, cfg, prev, nil)
require.Nil(t, b.SingularBatchProvider)
err := b.Reset(ctx, l1A, eth.SystemConfig{})
require.Equal(t, io.EOF, err)
require.IsType(t, new(BatchStage), b.SingularBatchProvider)
require.Equal(t, l1A, b.SingularBatchProvider.(*BatchStage).origin)
require.Panics(t, func() { b.Transform(rollup.Holocene) })
}