Skip to content
This repository was archived by the owner on Apr 10, 2024. It is now read-only.

Commit c580edb

Browse files
AskAlexSharovgladcow
authored andcommitted
e4: step 1 to run tests (erigontech#7209)
1 parent fd45d13 commit c580edb

File tree

10 files changed

+82
-16
lines changed

10 files changed

+82
-16
lines changed

accounts/abi/bind/backends/simulated.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
"github.com/ledgerwatch/erigon-lib/kv"
3333
state2 "github.com/ledgerwatch/erigon-lib/state"
3434
types2 "github.com/ledgerwatch/erigon-lib/types"
35+
"github.com/ledgerwatch/erigon/eth/ethconfig"
3536
"github.com/ledgerwatch/log/v3"
3637

3738
ethereum "github.com/ledgerwatch/erigon"
@@ -179,6 +180,20 @@ func (b *SimulatedBackend) emptyPendingBlock() {
179180
b.pendingReceipts = chain.Receipts[0]
180181
b.pendingHeader = chain.Headers[0]
181182
b.gasPool = new(core.GasPool).AddGas(b.pendingHeader.GasLimit)
183+
if ethconfig.EnableHistoryV4InTest {
184+
panic("implement domain state reader")
185+
/*
186+
agg := db.(*temporal.DB).GetAgg()
187+
agg.SetTx(tx)
188+
189+
rs := state.NewStateV3("", agg.BufferedDomains())
190+
stateWriter = state.NewStateWriterV3(rs)
191+
r := state.NewStateReaderV3(rs)
192+
r.SetTx(tx)
193+
stateReader = r
194+
defer agg.StartUnbufferedWrites().FinishWrites()
195+
*/
196+
}
182197
b.pendingReader = state.NewPlainStateReader(olddb.NewObjectDatabase(b.m.DB))
183198
b.pendingState = state.New(b.pendingReader)
184199
}

cmd/rpcdaemon/rpcdaemontest/test_util.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ func CreateTestSentry(t *testing.T) (*stages.MockSentry, *core.ChainPack, []*cor
8686
)
8787
m := stages.MockWithGenesis(t, gspec, key, false)
8888

89-
contractBackend := backends.NewSimulatedBackendWithConfig(gspec.Alloc, gspec.Config, gspec.GasLimit)
89+
contractBackend := backends.NewTestSimulatedBackendWithConfig(t, gspec.Alloc, gspec.Config, gspec.GasLimit)
9090
defer contractBackend.Close()
9191

9292
// Generate empty chain to have some orphaned blocks for tests

cmd/state/commands/erigon4.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -523,10 +523,6 @@ type StateWriterV4 struct {
523523
w *libstate.Aggregator
524524
}
525525

526-
func NewStateWriterV4(w *libstate.Aggregator) {
527-
528-
}
529-
530526
func (rw *StateReaderV4) ReadAccountData(address libcommon.Address) (*accounts.Account, error) {
531527
enc, err := rw.ac.ReadAccountData(address.Bytes(), rw.roTx)
532528
if err != nil {

core/chain_makers.go

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,8 @@ import (
2424
"github.com/ledgerwatch/erigon-lib/chain"
2525
libcommon "github.com/ledgerwatch/erigon-lib/common"
2626
"github.com/ledgerwatch/erigon-lib/common/length"
27-
"github.com/ledgerwatch/erigon/eth/ethconfig"
28-
2927
"github.com/ledgerwatch/erigon/core/systemcontracts"
28+
"github.com/ledgerwatch/erigon/eth/ethconfig"
3029

3130
"github.com/ledgerwatch/erigon-lib/kv"
3231

@@ -434,8 +433,19 @@ func GenerateChain(config *chain.Config, parent *types.Block, engine consensus.E
434433
for i := 0; i < n; i++ {
435434
var stateReader state.StateReader
436435
var stateWriter state.StateWriter
437-
if ethconfig.EnableHistoryV4InTest {
438436

437+
if ethconfig.EnableHistoryV4InTest {
438+
panic("implent me")
439+
/*
440+
agg := db.(*temporal.DB).GetAgg()
441+
agg.SetTx(tx)
442+
rs = state.NewStateV3("", agg.BufferedDomains())
443+
stateWriter = state.NewStateWriterV3(rs)
444+
r := state.NewStateReaderV3(rs)
445+
r.SetTx(tx)
446+
stateReader = r
447+
defer agg.StartUnbufferedWrites().FinishWrites()
448+
*/
439449
} else {
440450
stateReader = state.NewPlainStateReader(tx)
441451
stateWriter = state.NewPlainStateWriter(tx, nil, parent.NumberU64()+uint64(i)+1)
@@ -445,6 +455,19 @@ func GenerateChain(config *chain.Config, parent *types.Block, engine consensus.E
445455
if err != nil {
446456
return nil, fmt.Errorf("generating block %d: %w", i, err)
447457
}
458+
/*
459+
if ethconfig.EnableHistoryV4InTest {
460+
logEvery := time.NewTicker(20 * time.Second)
461+
defer logEvery.Stop()
462+
if err := rs.Flush(context.Background(), tx, "", logEvery); err != nil {
463+
return nil, err
464+
}
465+
466+
//if err := rs.ApplyHistory(txTask, agg); err != nil {
467+
// return resultSize, outputTxNum, conflicts, processedBlockNum, fmt.Errorf("StateV3.Apply: %w", err)
468+
//}
469+
}
470+
*/
448471
headers[i] = block.Header()
449472
blocks[i] = block
450473
receipts[i] = receipt

core/state/temporal/kv_temporal.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ func New(db kv.RwDB, agg *state.AggregatorV3, cb1 tConvertV3toV2, cb2 tRestoreCo
7171

7272
return &DB{RwDB: db, agg: agg, convertV3toV2: cb1, restoreCodeHash: cb2, parseInc: cb3, systemContractLookup: systemContractLookup}, nil
7373
}
74+
func (db *DB) GetAgg() *state.AggregatorV3 { return db.agg }
7475

7576
func (db *DB) BeginTemporalRo(ctx context.Context) (kv.TemporalTx, error) {
7677
kvTx, err := db.RwDB.BeginRo(ctx)

eth/ethconfig/erigon3_test_disable.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//go:build !erigon3 && !erigon4
1+
//go:build !erigon3 && !e3 && !erigon4 && !e4
22

33
package ethconfig
44

eth/ethconfig/erigon3_test_enable.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//go:build erigon3
1+
//go:build erigon3 || e3
22

33
package ethconfig
44

eth/ethconfig/erigon4_test_enable.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//go:build erigon4
1+
//go:build erigon4 || e4
22

33
package ethconfig
44

eth/stagedsync/default_stages.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55

66
"github.com/ledgerwatch/erigon-lib/kv"
7+
"github.com/ledgerwatch/erigon/eth/ethconfig"
78
"github.com/ledgerwatch/erigon/eth/stagedsync/stages"
89
)
910

@@ -109,6 +110,7 @@ func DefaultStages(ctx context.Context, snapshots SnapshotsCfg, headers HeadersC
109110
{
110111
ID: stages.HashState,
111112
Description: "Hash the key in the state",
113+
Disabled: bodies.historyV3 && ethconfig.EnableHistoryV4InTest,
112114
Forward: func(firstCycle bool, badBlockUnwind bool, s *StageState, u Unwinder, tx kv.RwTx, quiet bool) error {
113115
return SpawnHashStateStage(s, tx, hashState, ctx, quiet)
114116
},
@@ -122,6 +124,7 @@ func DefaultStages(ctx context.Context, snapshots SnapshotsCfg, headers HeadersC
122124
{
123125
ID: stages.IntermediateHashes,
124126
Description: "Generate intermediate hashes and computing state root",
127+
Disabled: bodies.historyV3 && ethconfig.EnableHistoryV4InTest,
125128
Forward: func(firstCycle bool, badBlockUnwind bool, s *StageState, u Unwinder, tx kv.RwTx, quiet bool) error {
126129
if exec.chainConfig.IsPrague(0) {
127130
_, err := SpawnVerkleTrie(s, u, tx, trieCfg, ctx)

eth/stagedsync/testutil.go

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,11 @@ import (
99
libcommon "github.com/ledgerwatch/erigon-lib/common"
1010
"github.com/ledgerwatch/erigon-lib/kv"
1111
state2 "github.com/ledgerwatch/erigon-lib/state"
12-
"github.com/ledgerwatch/erigon/eth/ethconfig"
13-
"github.com/stretchr/testify/assert"
14-
1512
"github.com/ledgerwatch/erigon/common"
1613
"github.com/ledgerwatch/erigon/core/state"
1714
"github.com/ledgerwatch/erigon/core/types/accounts"
15+
"github.com/ledgerwatch/erigon/eth/ethconfig"
16+
"github.com/stretchr/testify/assert"
1817
)
1918

2019
const (
@@ -51,13 +50,42 @@ func compareDomain(t *testing.T, agg *state2.AggregatorV3, db1, db2 kv.Tx, bucke
5150
ac.DeprecatedLatestAcc(db1.(kv.RwTx), func(k, v []byte) {
5251
bucket1[string(k)] = v
5352
})
54-
53+
require.True(t, len(bucket1) > 0)
5554
bucket2 := make(map[string][]byte)
5655
ac.DeprecatedLatestAcc(db2.(kv.RwTx), func(k, v []byte) {
5756
bucket2[string(k)] = v
5857
})
58+
assert.Equalf(t, bucket1, bucket2, "bucket %q", bucketName)
5959
60-
assert.Equalf(t, bucket1 , bucket2 , "bucket %q", bucketName)
60+
bucket1 = make(map[string][]byte)
61+
ac.DeprecatedLatestSt(db1.(kv.RwTx), func(k, v []byte) {
62+
bucket1[string(k)] = v
63+
})
64+
bucket2 = make(map[string][]byte)
65+
ac.DeprecatedLatestSt(db2.(kv.RwTx), func(k, v []byte) {
66+
bucket2[string(k)] = v
67+
})
68+
assert.Equalf(t, bucket1, bucket2, "bucket %q", bucketName)
69+
case kv.PlainContractCode:
70+
bucket1 := make(map[string][]byte)
71+
ac.DeprecatedLatestCode(db1.(kv.RwTx), func(k, v []byte) {
72+
bucket1[string(k)] = v
73+
})
74+
bucket2 := make(map[string][]byte)
75+
ac.DeprecatedLatestCode(db2.(kv.RwTx), func(k, v []byte) {
76+
bucket2[string(k)] = v
77+
})
78+
assert.Equalf(t, bucket1, bucket2, "bucket %q", bucketName)
79+
80+
bucket1 = make(map[string][]byte)
81+
ac.DeprecatedLatestSt(db1.(kv.RwTx), func(k, v []byte) {
82+
bucket1[string(k)] = v
83+
})
84+
bucket2 = make(map[string][]byte)
85+
ac.DeprecatedLatestSt(db2.(kv.RwTx), func(k, v []byte) {
86+
bucket2[string(k)] = v
87+
})
88+
assert.Equalf(t, bucket1, bucket2, "bucket %q", bucketName)
6189
default:
6290
panic(bucketName)
6391
}

0 commit comments

Comments
 (0)