Skip to content

Commit 679a10c

Browse files
committed
test: reverting extras to snapshot
1 parent 7ab3333 commit 679a10c

File tree

1 file changed

+28
-15
lines changed

1 file changed

+28
-15
lines changed

core/state/state.libevm_test.go

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func TestGetSetExtra(t *testing.T) {
4646
extra := rng.Bytes(8)
4747

4848
views := newWithSnaps(t)
49-
stateDB := views.stateDB
49+
stateDB := views.newStateDB(t, types.EmptyRootHash)
5050
assert.Nilf(t, state.GetExtra(stateDB, payloads, addr), "state.GetExtra() returns zero-value %T if before account creation", extra)
5151
stateDB.CreateAccount(addr)
5252
stateDB.SetNonce(addr, nonce)
@@ -87,24 +87,42 @@ func TestGetSetExtra(t *testing.T) {
8787
require.Falsef(t, iter.Next(), "%T.Next() after first account (i.e. only one)", iter)
8888
})
8989

90-
t.Run(fmt.Sprintf("retrieve from new %T", views.stateDB), func(t *testing.T) {
91-
stateDB, err := state.New(root, views.database, views.snaps)
92-
require.NoError(t, err, "state.New()")
90+
t.Run(fmt.Sprintf("retrieve from new %T", stateDB), func(t *testing.T) {
91+
s := views.newStateDB(t, root)
92+
assert.Equalf(t, nonce, s.GetNonce(addr), "%T.GetNonce()", s)
93+
assert.Equalf(t, balance, s.GetBalance(addr), "%T.GetBalance()", s)
94+
assert.Equal(t, extra, state.GetExtra(s, payloads, addr), "state.GetExtra()")
95+
})
96+
97+
t.Run("reverting to snapshot", func(t *testing.T) {
98+
s := views.newStateDB(t, root)
99+
snap := s.Snapshot()
100+
101+
oldExtra := extra
102+
newExtra := rng.Bytes(16)
103+
assert.NotEqual(t, oldExtra, newExtra, "new extra payload is different to old one")
93104

94-
// triggers SlimAccount RLP decoding
95-
assert.Equalf(t, nonce, stateDB.GetNonce(addr), "%T.GetNonce()", stateDB)
96-
assert.Equalf(t, balance, stateDB.GetBalance(addr), "%T.GetBalance()", stateDB)
97-
assert.Equal(t, extra, state.GetExtra(stateDB, payloads, addr), "state.GetExtra()")
105+
state.SetExtra(s, payloads, addr, newExtra)
106+
assert.Equalf(t, newExtra, state.GetExtra(s, payloads, addr), "state.GetExtra() after overwriting with new value")
107+
108+
s.RevertToSnapshot(snap)
109+
assert.Equalf(t, oldExtra, state.GetExtra(s, payloads, addr), "state.GetExtra() after reverting to snapshot")
98110
})
99111
}
100112

101113
// stateViews are different ways to access the same data.
102114
type stateViews struct {
103-
stateDB *state.StateDB
104115
snaps *snapshot.Tree
105116
database state.Database
106117
}
107118

119+
func (v stateViews) newStateDB(t *testing.T, root common.Hash) *state.StateDB {
120+
t.Helper()
121+
s, err := state.New(root, v.database, v.snaps)
122+
require.NoError(t, err, "state.New()")
123+
return s
124+
}
125+
108126
func newWithSnaps(t *testing.T) stateViews {
109127
t.Helper()
110128
empty := types.EmptyRootHash
@@ -120,13 +138,8 @@ func newWithSnaps(t *testing.T) stateViews {
120138
)
121139
require.NoError(t, err, "snapshot.New()")
122140

123-
database := state.NewDatabase(ethDB)
124-
stateDB, err := state.New(empty, database, snaps)
125-
require.NoError(t, err, "state.New()")
126-
127141
return stateViews{
128-
stateDB: stateDB,
129142
snaps: snaps,
130-
database: database,
143+
database: state.NewDatabase(ethDB),
131144
}
132145
}

0 commit comments

Comments
 (0)