From 808893349c49fe91b16d3c44405f923fc7558e20 Mon Sep 17 00:00:00 2001 From: ihtefyw Date: Wed, 13 May 2026 10:45:25 +0200 Subject: [PATCH 1/2] Update carmen version + fix tests --- .../statedb/state_db_manager_test.go | 67 ------------------- state/carmen.go | 8 +-- utils/test_cases.go | 3 +- utils/test_cases_test.go | 2 +- 4 files changed, 4 insertions(+), 76 deletions(-) diff --git a/executor/extension/statedb/state_db_manager_test.go b/executor/extension/statedb/state_db_manager_test.go index e9d4be865..7fe8220a0 100644 --- a/executor/extension/statedb/state_db_manager_test.go +++ b/executor/extension/statedb/state_db_manager_test.go @@ -281,73 +281,6 @@ func TestStateDbManager_OverrideArchiveMode(t *testing.T) { } } -func TestStateDbManager_OverrideArchiveVariant(t *testing.T) { - state := executor.State[any]{ - Block: 0, - } - tmpDir := t.TempDir() - cfg := &utils.Config{} - cfg.DbTmp = tmpDir - cfg.DbImpl = "carmen" - cfg.DbVariant = "go-file" - cfg.KeepDb = true - cfg.ChainID = utils.OperaMainnetChainID - cfg.ArchiveMode = true - cfg.ArchiveVariant = "ldb" - cfg.CarmenSchema = 5 - - ext := MakeStateDbManager[any](cfg, "") - ctx := &executor.Context{} - - // First, create a live src db - if err := ext.PreRun(state, ctx); err != nil { - t.Fatalf("failed to to run pre-run: %v", err) - } - - if err := ext.PostRun(state, ctx, nil); err != nil { - t.Fatalf("failed to to run post-run: %v", err) - } - - expectedName := fmt.Sprintf("state_db_%v_%v_%v", cfg.DbImpl, cfg.DbVariant, state.Block) - dbPath := filepath.Join(cfg.DbTmp, expectedName) - - filename := filepath.Join(dbPath, utils.PathToDbInfo) - - if _, err := os.Stat(filename); err != nil { - t.Fatalf("failed to find %v of stateDbInfo; %v", utils.PathToDbInfo, err) - } - - stateDbInfo, err := utils.ReadStateDbInfo(dbPath) - if err != nil { - t.Fatal("failed to read statedb_info.json") - } - - // Second, read from the src db and run in archive mode with different archive variant - cfg = &utils.Config{} - cfg.DbTmp = tmpDir - cfg.DbImpl = "carmen" - cfg.ChainID = utils.OperaMainnetChainID - cfg.ArchiveMode = true - cfg.ArchiveVariant = "s5" - cfg.StateDbSrc = dbPath - - ext = MakeStateDbManager[any](cfg, "") - ctx = &executor.Context{} - - if err := ext.PreRun(state, ctx); err != nil { - t.Fatalf("failed to to run pre-run: %v", err) - } - - // must use the same db variant as in src db - if cfg.ArchiveVariant != stateDbInfo.ArchiveVariant { - t.Fatalf("Wrong archive variant.\ngot: %v\nwant: %v", cfg.ArchiveVariant, stateDbInfo.ArchiveVariant) - } - - if err := ext.PostRun(state, ctx, nil); err != nil { - t.Fatalf("failed to to run post-run: %v", err) - } -} - func TestStateDbManager_NonExistentStateDbSrc(t *testing.T) { cfg := &utils.Config{} diff --git a/state/carmen.go b/state/carmen.go index 4cc48c643..709100ed1 100644 --- a/state/carmen.go +++ b/state/carmen.go @@ -52,18 +52,14 @@ func MakeCarmenStateDB( switch strings.ToLower(archive) { case "none": archiveType = "" - case "": // = default option - fallthrough case "ldb": fallthrough case "leveldb": archiveType = "ldb" - case "sql": - fallthrough - case "sqlite": - archiveType = "sql" case "s4": archiveType = "s4" + case "": // = default option + fallthrough case "s5": archiveType = "s5" default: diff --git a/utils/test_cases.go b/utils/test_cases.go index ddd0d3062..5e217dfda 100644 --- a/utils/test_cases.go +++ b/utils/test_cases.go @@ -42,8 +42,7 @@ func GetStateDbTestCases() []StateDbTestCase { {"geth", "", true, "", false}, {"geth", "geth", true, "", false}, {"carmen", "geth", false, "none", false}, - {"carmen", "geth", true, "ldb", false}, - {"carmen", "geth", true, "sqlite", false}, + {"carmen", "geth", false, "s5", false}, } return testCases diff --git a/utils/test_cases_test.go b/utils/test_cases_test.go index 1b23280fd..90723428f 100644 --- a/utils/test_cases_test.go +++ b/utils/test_cases_test.go @@ -24,7 +24,7 @@ import ( func TestCases_GetStateDbTestCases(t *testing.T) { testCases := GetStateDbTestCases() - assert.Equal(t, 5, len(testCases)) + assert.Equal(t, 4, len(testCases)) } func TestCases_MakeRandomByteSlice(t *testing.T) { From ee12ec2b15f10febe5c883107e0f8ec80a309043 Mon Sep 17 00:00:00 2001 From: ihtefyw Date: Fri, 5 Jun 2026 10:02:24 +0200 Subject: [PATCH 2/2] Update Camen + Remove CreateAccount from Carmen tests --- carmen | 2 +- state/carmen_test.go | 54 ++++---------------------------------- state/proxy/shadow_test.go | 2 +- 3 files changed, 7 insertions(+), 51 deletions(-) diff --git a/carmen b/carmen index 2d892af38..0bc37278c 160000 --- a/carmen +++ b/carmen @@ -1 +1 @@ -Subproject commit 2d892af38ce4a293b0b19105a405ceffded5b903 +Subproject commit 0bc37278c0c49bbeadb3c6e7c647899fb24ca969 diff --git a/state/carmen_test.go b/state/carmen_test.go index d5e414316..3e436f861 100644 --- a/state/carmen_test.go +++ b/state/carmen_test.go @@ -94,16 +94,12 @@ func TestCarmenState_AccountLifecycle(t *testing.T) { addr := common.BytesToAddress(MakeRandomByteSlice(t, 40)) - csDB.CreateAccount(addr) + csDB.AddBalance(addr, uint256.NewInt(10), 0) if !csDB.Exist(addr) { t.Fatal("failed to create carmen state DB account") } - if !csDB.Empty(addr) { - t.Fatal("failed to create carmen state DB account; should be empty") - } - csDB.SelfDestruct(addr) if !csDB.HasSelfDestructed(addr) { t.Fatal("failed to suicide carmen state DB account;") @@ -134,8 +130,6 @@ func TestCarmenState_AccountBalanceOperations(t *testing.T) { addr := common.BytesToAddress(MakeRandomByteSlice(t, 40)) - csDB.CreateAccount(addr) - // get randomized balance additionBase := GetRandom(t, 1, 5_000_000) addition := uint256.NewInt(additionBase) @@ -181,8 +175,6 @@ func TestCarmenState_NonceOperations(t *testing.T) { addr := common.BytesToAddress(MakeRandomByteSlice(t, 40)) - csDB.CreateAccount(addr) - // get randomized nonce newNonce := GetRandom(t, 1, 5_000_000) @@ -218,8 +210,6 @@ func TestCarmenState_CodeOperations(t *testing.T) { addr := common.BytesToAddress(MakeRandomByteSlice(t, 40)) - csDB.CreateAccount(addr) - // generate new randomized code code := MakeRandomByteSlice(t, 2048) @@ -263,7 +253,7 @@ func TestCarmenState_StateOperations(t *testing.T) { addr := common.BytesToAddress(MakeRandomByteSlice(t, 40)) - csDB.CreateAccount(addr) + csDB.AddBalance(addr, uint256.NewInt(10), 0) // generate state key and value key := common.BytesToHash(MakeRandomByteSlice(t, 32)) @@ -496,7 +486,7 @@ func TestCarmenState_GetArchiveState(t *testing.T) { } addr := common.BytesToAddress(MakeRandomByteSlice(t, 40)) - csDB.CreateAccount(addr) + csDB.AddBalance(addr, uint256.NewInt(10), 0) // generate state key and value key := common.BytesToHash(MakeRandomByteSlice(t, 32)) @@ -563,8 +553,6 @@ func TestCarmenState_SetBalanceUsingBulkInsertion(t *testing.T) { addr := common.BytesToAddress(MakeRandomByteSlice(t, 40)) - cbl.CreateAccount(addr) - newBalance := uint256.NewInt(GetRandom(t, 1, 5_000_000)) cbl.SetBalance(addr, newBalance) @@ -613,8 +601,6 @@ func TestCarmenState_SetNonceUsingBulkInsertion(t *testing.T) { addr := common.BytesToAddress(MakeRandomByteSlice(t, 40)) - cbl.CreateAccount(addr) - newNonce := GetRandom(t, 1, 5_000_000) cbl.SetNonce(addr, newNonce) @@ -664,7 +650,7 @@ func TestCarmenState_SetStateUsingBulkInsertion(t *testing.T) { addr := common.BytesToAddress(MakeRandomByteSlice(t, 40)) - cbl.CreateAccount(addr) + cbl.SetBalance(addr, uint256.NewInt(10)) // generate state key and value key := common.BytesToHash(MakeRandomByteSlice(t, 32)) @@ -717,8 +703,6 @@ func TestCarmenState_SetCodeUsingBulkInsertion(t *testing.T) { addr := common.BytesToAddress(MakeRandomByteSlice(t, 40)) - cbl.CreateAccount(addr) - // generate new randomized code code := MakeRandomByteSlice(t, 2048) @@ -766,7 +750,7 @@ func TestCarmenState_BulkloadOperations(t *testing.T) { for i := 0; i < len(accounts); i++ { accounts[i] = common.BytesToAddress(MakeRandomByteSlice(t, 40)) - csDB.CreateAccount(accounts[i]) + csDB.AddBalance(accounts[i], uint256.NewInt(10), 0) } if err = csDB.EndTransaction(); err != nil { @@ -853,21 +837,6 @@ func TestCarmenState_GetShadowDB(t *testing.T) { } } -// carmenStateDB struct method tests -func TestCarmenStateDB_CreateAccount(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - mockDb := carmen.NewMockDatabase(ctrl) - mockTxCtx := carmen.NewMockTransactionContext(ctrl) - c := &carmenStateDB{ - db: mockDb, - txCtx: mockTxCtx, - } - addr := common.HexToAddress("0x1234") - mockTxCtx.EXPECT().CreateAccount(carmen.Address(addr)) - c.CreateAccount(addr) -} - func TestCarmenStateDB_CreateContract(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() @@ -1782,19 +1751,6 @@ func TestCarmenHistoricState_Release(t *testing.T) { assert.NoError(t, err) } -// carmenBulkLoad struct method tests -func TestCarmenBulkLoad_CreateAccount(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - mockBulk := carmen.NewMockBulkLoad(ctrl) - c := &carmenBulkLoad{ - load: mockBulk, - } - addr := common.HexToAddress("0x1234") - mockBulk.EXPECT().CreateAccount(carmen.Address(addr)) - c.CreateAccount(addr) -} - func TestCarmenBulkLoad_SetBalance(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() diff --git a/state/proxy/shadow_test.go b/state/proxy/shadow_test.go index 9ad0b2f31..117f8d703 100644 --- a/state/proxy/shadow_test.go +++ b/state/proxy/shadow_test.go @@ -660,7 +660,7 @@ func TestShadowState_SetStateUsingBulkInsertion(t *testing.T) { addr := common.BytesToAddress(state.MakeRandomByteSlice(t, 40)) - cbl.CreateAccount(addr) + cbl.SetBalance(addr, uint256.NewInt(10)) // generate state key and value key := common.BytesToHash(state.MakeRandomByteSlice(t, 32))