depset_test.go 2.13 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
package depset

import (
	"context"
	"encoding/json"
	"os"
	"path"
	"testing"

	"github.com/stretchr/testify/require"

	"github.com/ethereum-optimism/optimism/op-supervisor/supervisor/types"
)

func TestDependencySet(t *testing.T) {
	d := path.Join(t.TempDir(), "tmp_dep_set.json")

18 19
	depSet, err := NewStaticConfigDependencySet(
		map[types.ChainID]*StaticConfigDependency{
20
			types.ChainIDFromUInt64(900): {
21
				ChainIndex:     900,
22 23 24 25
				ActivationTime: 42,
				HistoryMinTime: 100,
			},
			types.ChainIDFromUInt64(901): {
26
				ChainIndex:     901,
27 28 29
				ActivationTime: 30,
				HistoryMinTime: 20,
			},
30 31
		})
	require.NoError(t, err)
32 33 34 35 36 37 38 39 40
	data, err := json.Marshal(depSet)
	require.NoError(t, err)

	require.NoError(t, os.WriteFile(d, data, 0644))

	loader := &JsonDependencySetLoader{Path: d}
	result, err := loader.LoadDependencySet(context.Background())
	require.NoError(t, err)

41 42 43 44 45 46
	chainIDs := result.Chains()
	require.Equal(t, []types.ChainID{
		types.ChainIDFromUInt64(900),
		types.ChainIDFromUInt64(901),
	}, chainIDs)

47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
	v, err := result.CanExecuteAt(types.ChainIDFromUInt64(900), 42)
	require.NoError(t, err)
	require.True(t, v)
	v, err = result.CanExecuteAt(types.ChainIDFromUInt64(900), 41)
	require.NoError(t, err)
	require.False(t, v)
	v, err = result.CanInitiateAt(types.ChainIDFromUInt64(900), 100)
	require.NoError(t, err)
	require.True(t, v)
	v, err = result.CanInitiateAt(types.ChainIDFromUInt64(900), 99)
	require.NoError(t, err)
	require.False(t, v)

	v, err = result.CanExecuteAt(types.ChainIDFromUInt64(901), 30)
	require.NoError(t, err)
	require.True(t, v)
	v, err = result.CanExecuteAt(types.ChainIDFromUInt64(901), 29)
	require.NoError(t, err)
	require.False(t, v)
	v, err = result.CanInitiateAt(types.ChainIDFromUInt64(901), 20)
	require.NoError(t, err)
	require.True(t, v)
	v, err = result.CanInitiateAt(types.ChainIDFromUInt64(901), 19)
	require.NoError(t, err)
	require.False(t, v)

	v, err = result.CanExecuteAt(types.ChainIDFromUInt64(902), 100000)
	require.NoError(t, err)
	require.False(t, v, "902 not a dependency")
	v, err = result.CanInitiateAt(types.ChainIDFromUInt64(902), 100000)
	require.NoError(t, err)
	require.False(t, v, "902 not a dependency")
}