Commit 633f2f66 authored by Andreas Bigger's avatar Andreas Bigger

Fix repeated position construction

parent e1f8f6a0
...@@ -22,12 +22,15 @@ import ( ...@@ -22,12 +22,15 @@ import (
//go:embed test_data //go:embed test_data
var testData embed.FS var testData embed.FS
func PositionFromTraceIndex(provider *CannonTraceProvider, idx int) types.Position {
return types.NewPosition(int(provider.gameDepth), idx)
}
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
dataDir, prestate := setupTestData(t) dataDir, prestate := setupTestData(t)
t.Run("ExistingProof", func(t *testing.T) { t.Run("ExistingProof", func(t *testing.T) {
provider, generator := setupWithTestData(t, dataDir, prestate) provider, generator := setupWithTestData(t, dataDir, prestate)
pos := types.NewPosition(int(provider.gameDepth), 0) value, err := provider.Get(context.Background(), PositionFromTraceIndex(provider, 0))
value, err := provider.Get(context.Background(), pos)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, common.HexToHash("0x45fd9aa59768331c726e719e76aa343e73123af888804604785ae19506e65e87"), value) require.Equal(t, common.HexToHash("0x45fd9aa59768331c726e719e76aa343e73123af888804604785ae19506e65e87"), value)
require.Empty(t, generator.generated) require.Empty(t, generator.generated)
...@@ -40,8 +43,7 @@ func TestGet(t *testing.T) { ...@@ -40,8 +43,7 @@ func TestGet(t *testing.T) {
Step: 10, Step: 10,
Exited: true, Exited: true,
} }
pos := types.NewPosition(int(provider.gameDepth), 7000) value, err := provider.Get(context.Background(), PositionFromTraceIndex(provider, 7000))
value, err := provider.Get(context.Background(), pos)
require.NoError(t, err) require.NoError(t, err)
require.Contains(t, generator.generated, 7000, "should have tried to generate the proof") require.Contains(t, generator.generated, 7000, "should have tried to generate the proof")
stateHash, err := generator.finalState.EncodeWitness().StateHash() stateHash, err := generator.finalState.EncodeWitness().StateHash()
...@@ -51,16 +53,14 @@ func TestGet(t *testing.T) { ...@@ -51,16 +53,14 @@ func TestGet(t *testing.T) {
t.Run("MissingPostHash", func(t *testing.T) { t.Run("MissingPostHash", func(t *testing.T) {
provider, generator := setupWithTestData(t, dataDir, prestate) provider, generator := setupWithTestData(t, dataDir, prestate)
pos := types.NewPosition(int(provider.gameDepth), 1) _, err := provider.Get(context.Background(), PositionFromTraceIndex(provider, 1))
_, err := provider.Get(context.Background(), pos)
require.ErrorContains(t, err, "missing post hash") require.ErrorContains(t, err, "missing post hash")
require.Empty(t, generator.generated) require.Empty(t, generator.generated)
}) })
t.Run("IgnoreUnknownFields", func(t *testing.T) { t.Run("IgnoreUnknownFields", func(t *testing.T) {
provider, generator := setupWithTestData(t, dataDir, prestate) provider, generator := setupWithTestData(t, dataDir, prestate)
pos := types.NewPosition(int(provider.gameDepth), 2) value, err := provider.Get(context.Background(), PositionFromTraceIndex(provider, 2))
value, err := provider.Get(context.Background(), pos)
require.NoError(t, err) require.NoError(t, err)
expected := common.HexToHash("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb") expected := common.HexToHash("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb")
require.Equal(t, expected, value) require.Equal(t, expected, value)
...@@ -72,8 +72,7 @@ func TestGetStepData(t *testing.T) { ...@@ -72,8 +72,7 @@ func TestGetStepData(t *testing.T) {
t.Run("ExistingProof", func(t *testing.T) { t.Run("ExistingProof", func(t *testing.T) {
dataDir, prestate := setupTestData(t) dataDir, prestate := setupTestData(t)
provider, generator := setupWithTestData(t, dataDir, prestate) provider, generator := setupWithTestData(t, dataDir, prestate)
pos := types.NewPosition(int(provider.gameDepth), 0) value, proof, data, err := provider.GetStepData(context.Background(), PositionFromTraceIndex(provider, 0))
value, proof, data, err := provider.GetStepData(context.Background(), pos)
require.NoError(t, err) require.NoError(t, err)
expected := common.Hex2Bytes("b8f068de604c85ea0e2acd437cdb47add074a2d70b81d018390c504b71fe26f400000000000000000000000000000000000000000000000000000000000000000000000000") expected := common.Hex2Bytes("b8f068de604c85ea0e2acd437cdb47add074a2d70b81d018390c504b71fe26f400000000000000000000000000000000000000000000000000000000000000000000000000")
require.Equal(t, expected, value) require.Equal(t, expected, value)
...@@ -100,8 +99,7 @@ func TestGetStepData(t *testing.T) { ...@@ -100,8 +99,7 @@ func TestGetStepData(t *testing.T) {
OracleValue: []byte{0xdd}, OracleValue: []byte{0xdd},
OracleOffset: 10, OracleOffset: 10,
} }
pos := types.NewPosition(int(provider.gameDepth), 4) preimage, proof, data, err := provider.GetStepData(context.Background(), PositionFromTraceIndex(provider, 4))
preimage, proof, data, err := provider.GetStepData(context.Background(), pos)
require.NoError(t, err) require.NoError(t, err)
require.Contains(t, generator.generated, 4, "should have tried to generate the proof") require.Contains(t, generator.generated, 4, "should have tried to generate the proof")
...@@ -127,8 +125,7 @@ func TestGetStepData(t *testing.T) { ...@@ -127,8 +125,7 @@ func TestGetStepData(t *testing.T) {
OracleValue: []byte{0xdd}, OracleValue: []byte{0xdd},
OracleOffset: 10, OracleOffset: 10,
} }
pos := types.NewPosition(int(provider.gameDepth), 7000) preimage, proof, data, err := provider.GetStepData(context.Background(), PositionFromTraceIndex(provider, 7000))
preimage, proof, data, err := provider.GetStepData(context.Background(), pos)
require.NoError(t, err) require.NoError(t, err)
require.Contains(t, generator.generated, 7000, "should have tried to generate the proof") require.Contains(t, generator.generated, 7000, "should have tried to generate the proof")
...@@ -154,8 +151,7 @@ func TestGetStepData(t *testing.T) { ...@@ -154,8 +151,7 @@ func TestGetStepData(t *testing.T) {
OracleValue: []byte{0xdd}, OracleValue: []byte{0xdd},
OracleOffset: 10, OracleOffset: 10,
} }
pos := types.NewPosition(int(provider.gameDepth), 7000) _, _, _, err := provider.GetStepData(context.Background(), PositionFromTraceIndex(provider, 7000))
_, _, _, err := provider.GetStepData(context.Background(), pos)
require.NoError(t, err) require.NoError(t, err)
require.Contains(t, initGenerator.generated, 7000, "should have tried to generate the proof") require.Contains(t, initGenerator.generated, 7000, "should have tried to generate the proof")
...@@ -170,7 +166,7 @@ func TestGetStepData(t *testing.T) { ...@@ -170,7 +166,7 @@ func TestGetStepData(t *testing.T) {
StateData: []byte{0xbb}, StateData: []byte{0xbb},
ProofData: []byte{0xcc}, ProofData: []byte{0xcc},
} }
preimage, proof, data, err := provider.GetStepData(context.Background(), pos) preimage, proof, data, err := provider.GetStepData(context.Background(), PositionFromTraceIndex(provider, 7000))
require.NoError(t, err) require.NoError(t, err)
require.Empty(t, generator.generated, "should not have to generate the proof again") require.Empty(t, generator.generated, "should not have to generate the proof again")
...@@ -182,8 +178,7 @@ func TestGetStepData(t *testing.T) { ...@@ -182,8 +178,7 @@ func TestGetStepData(t *testing.T) {
t.Run("MissingStateData", func(t *testing.T) { t.Run("MissingStateData", func(t *testing.T) {
dataDir, prestate := setupTestData(t) dataDir, prestate := setupTestData(t)
provider, generator := setupWithTestData(t, dataDir, prestate) provider, generator := setupWithTestData(t, dataDir, prestate)
pos := types.NewPosition(int(provider.gameDepth), 1) _, _, _, err := provider.GetStepData(context.Background(), PositionFromTraceIndex(provider, 1))
_, _, _, err := provider.GetStepData(context.Background(), pos)
require.ErrorContains(t, err, "missing state data") require.ErrorContains(t, err, "missing state data")
require.Empty(t, generator.generated) require.Empty(t, generator.generated)
}) })
...@@ -191,8 +186,7 @@ func TestGetStepData(t *testing.T) { ...@@ -191,8 +186,7 @@ func TestGetStepData(t *testing.T) {
t.Run("IgnoreUnknownFields", func(t *testing.T) { t.Run("IgnoreUnknownFields", func(t *testing.T) {
dataDir, prestate := setupTestData(t) dataDir, prestate := setupTestData(t)
provider, generator := setupWithTestData(t, dataDir, prestate) provider, generator := setupWithTestData(t, dataDir, prestate)
pos := types.NewPosition(int(provider.gameDepth), 2) value, proof, data, err := provider.GetStepData(context.Background(), PositionFromTraceIndex(provider, 2))
value, proof, data, err := provider.GetStepData(context.Background(), pos)
require.NoError(t, err) require.NoError(t, err)
expected := common.Hex2Bytes("cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc") expected := common.Hex2Bytes("cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc")
require.Equal(t, expected, value) require.Equal(t, expected, value)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment