Skip to content

Commit 6947e4c

Browse files
feat(load): add trie stress test (#4137)
1 parent 45df9e6 commit 6947e4c

File tree

3 files changed

+281
-11
lines changed

3 files changed

+281
-11
lines changed

tests/load/contracts/TrieStressTest.bindings.go

Lines changed: 224 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.0;
3+
4+
contract TrieStressTest {
5+
bytes32[] private data;
6+
7+
function writeValues(uint value) public {
8+
bytes32 dataToPush = bytes32(uint256(uint160(msg.sender)) << 96);
9+
for (uint i = 0; i < value; i++) {
10+
data.push(dataToPush);
11+
}
12+
}
13+
}

tests/load/tests.go

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,18 @@ func NewRandomTest(
4242
return nil, err
4343
}
4444

45-
_, tx, contract, err := contracts.DeployEVMLoadSimulator(txOpts, worker.Client)
45+
_, tx, simulatorContract, err := contracts.DeployEVMLoadSimulator(txOpts, worker.Client)
46+
if err != nil {
47+
return nil, err
48+
}
49+
50+
if _, err := bind.WaitDeployed(ctx, worker.Client, tx); err != nil {
51+
return nil, err
52+
}
53+
54+
worker.Nonce++
55+
56+
_, tx, trieContract, err := contracts.DeployTrieStressTest(txOpts, worker.Client)
4657
if err != nil {
4758
return nil, err
4859
}
@@ -74,66 +85,73 @@ func NewRandomTest(
7485
},
7586
{
7687
Test: ReadTest{
77-
Contract: contract,
88+
Contract: simulatorContract,
7889
Count: count,
7990
},
8091
Weight: weight,
8192
},
8293
{
8394
Test: WriteTest{
84-
Contract: contract,
95+
Contract: simulatorContract,
8596
Count: count,
8697
},
8798
Weight: weight,
8899
},
89100
{
90101
Test: StateModificationTest{
91-
Contract: contract,
102+
Contract: simulatorContract,
92103
Count: count,
93104
},
94105
Weight: weight,
95106
},
96107
{
97108
Test: HashingTest{
98-
Contract: contract,
109+
Contract: simulatorContract,
99110
Count: count,
100111
},
101112
Weight: weight,
102113
},
103114
{
104115
Test: MemoryTest{
105-
Contract: contract,
116+
Contract: simulatorContract,
106117
Count: count,
107118
},
108119
Weight: weight,
109120
},
110121
{
111122
Test: CallDepthTest{
112-
Contract: contract,
123+
Contract: simulatorContract,
113124
Count: count,
114125
},
115126
Weight: weight,
116127
},
117128
{
118-
Test: ContractCreationTest{Contract: contract},
129+
Test: ContractCreationTest{Contract: simulatorContract},
119130
Weight: weight,
120131
},
121132
{
122133
Test: PureComputeTest{
123-
Contract: contract,
134+
Contract: simulatorContract,
124135
NumIterations: count,
125136
},
126137
Weight: weight,
127138
},
128139
{
129140
Test: LargeEventTest{
130-
Contract: contract,
141+
Contract: simulatorContract,
131142
NumEvents: count,
132143
},
133144
Weight: weight,
134145
},
135146
{
136-
Test: ExternalCallTest{Contract: contract},
147+
Test: ExternalCallTest{Contract: simulatorContract},
148+
Weight: weight,
149+
},
150+
{
151+
Test: TrieStressTest{
152+
Contract: trieContract,
153+
NumValues: count,
154+
},
137155
Weight: weight,
138156
},
139157
}
@@ -383,6 +401,21 @@ func (e ExternalCallTest) Run(
383401
executeContractTx(tc, ctx, wallet, e.Contract.SimulateExternalCall)
384402
}
385403

404+
type TrieStressTest struct {
405+
Contract *contracts.TrieStressTest
406+
NumValues *big.Int
407+
}
408+
409+
func (t TrieStressTest) Run(
410+
tc tests.TestContext,
411+
ctx context.Context,
412+
wallet *Wallet,
413+
) {
414+
executeContractTx(tc, ctx, wallet, func(txOpts *bind.TransactOpts) (*types.Transaction, error) {
415+
return t.Contract.WriteValues(txOpts, t.NumValues)
416+
})
417+
}
418+
386419
func executeContractTx(
387420
tc tests.TestContext,
388421
ctx context.Context,

0 commit comments

Comments
 (0)