-
Notifications
You must be signed in to change notification settings - Fork 710
Expand file tree
/
Copy pathTestWorldStateFactory.cs
More file actions
81 lines (73 loc) · 3.22 KB
/
Copy pathTestWorldStateFactory.cs
File metadata and controls
81 lines (73 loc) · 3.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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
80
81
// SPDX-FileCopyrightText: 2025 Demerzel Solutions Limited
// SPDX-License-Identifier: LGPL-3.0-only
using Autofac;
using Nethermind.Config;
using Nethermind.Core.Test.Db;
using Nethermind.Core.Test.Modules;
using Nethermind.Db;
using Nethermind.Logging;
using Nethermind.Evm.State;
using Nethermind.State;
using Nethermind.Trie;
using Nethermind.Trie.Pruning;
namespace Nethermind.Core.Test;
public static class TestWorldStateFactory
{
public static IWorldState CreateForTest(IDbProvider? dbProvider = null, ILogManager? logManager = null)
{
PruningConfig pruningConfig = new();
TestFinalizedStateProvider finalizedStateProvider = new(pruningConfig.PruningBoundary);
dbProvider ??= TestMemDbProvider.Init();
logManager ??= LimboLogs.Instance;
TrieStore trieStore = new(
new NodeStorage(dbProvider.StateDb),
No.Pruning,
Persist.EveryBlock,
finalizedStateProvider,
pruningConfig,
LimboLogs.Instance);
finalizedStateProvider.TrieStore = trieStore;
return new WorldState(new TrieStoreScopeProvider(trieStore, dbProvider.CodeDb, logManager), logManager);
}
public static (IWorldState, IStateReader) CreateForTestWithStateReader(IDbProvider? dbProvider = null, ILogManager? logManager = null)
{
dbProvider ??= TestMemDbProvider.Init();
logManager ??= LimboLogs.Instance;
PruningConfig pruningConfig = new();
TestFinalizedStateProvider finalizedStateProvider = new(pruningConfig.PruningBoundary);
TrieStore trieStore = new(
new NodeStorage(dbProvider.StateDb),
No.Pruning,
Persist.EveryBlock,
finalizedStateProvider,
pruningConfig,
LimboLogs.Instance);
finalizedStateProvider.TrieStore = trieStore;
return (new WorldState(new TrieStoreScopeProvider(trieStore, dbProvider.CodeDb, logManager), logManager), new StateReader(trieStore, dbProvider.CodeDb, logManager));
}
public static (IWorldStateScopeProvider scopeProvider, IContainer container) CreateFlatScopeProvider()
{
ConfigProvider configProvider = new();
configProvider.GetConfig<IFlatDbConfig>().Enabled = true;
IContainer container = new ContainerBuilder()
.AddModule(new TestNethermindModule(configProvider))
.Build();
IWorldStateManager wsm = container.Resolve<IWorldStateManager>();
return (wsm.GlobalWorldState, container);
}
public static WorldStateManager CreateWorldStateManagerForTest(IDbProvider dbProvider, ILogManager logManager)
{
PruningConfig pruningConfig = new();
TestFinalizedStateProvider finalizedStateProvider = new(pruningConfig.PruningBoundary);
TrieStore trieStore = new(
new NodeStorage(dbProvider.StateDb),
No.Pruning,
Persist.EveryBlock,
finalizedStateProvider,
pruningConfig,
LimboLogs.Instance);
finalizedStateProvider.TrieStore = trieStore;
TrieStoreScopeProvider worldState = new(trieStore, dbProvider.CodeDb, logManager);
return new WorldStateManager(worldState, trieStore, dbProvider, logManager, pruningConfig);
}
}