Skip to content

Commit 30f9419

Browse files
committed
Add to value set inside the unit test
1 parent 288337e commit 30f9419

File tree

3 files changed

+26
-43
lines changed

3 files changed

+26
-43
lines changed

fuzzing/fuzzer_test.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,11 @@ func TestExperimentalValueGeneration_EventsReturnValues(t *testing.T) {
8787
f.fuzzer.Events.WorkerCreated.Subscribe(func(event FuzzerWorkerCreatedEvent) error {
8888
event.Worker.Events.FuzzerWorkerChainSetup.Subscribe(func(event FuzzerWorkerChainSetupEvent) error {
8989
event.Worker.chain.Events.PendingBlockAddedTx.Subscribe(func(event chain.PendingBlockAddedTxEvent) error {
90-
valueGenerationResults := event.Block.MessageResults[event.TransactionIndex-1].AdditionalResults["ValueGenerationTracerResults"]
91-
res := experimentalValuesAddedToBaseValueSet(f, valueGenerationResults)
92-
assert.True(t, res)
90+
if valueGenerationResults, ok := event.Block.MessageResults[event.TransactionIndex-1].AdditionalResults["ValueGenerationTracerResults"].([]any); ok {
91+
f.fuzzer.workers[0].valueSet.Add(valueGenerationResults)
92+
res := experimentalValuesAddedToBaseValueSet(f, valueGenerationResults)
93+
assert.True(t, res)
94+
}
9395
// just check if these values are added to value set
9496
//msgResult[event.TransactionIndex].AdditionalResults
9597
// make sure to use CallSequenceTested event to see if the base value set

fuzzing/fuzzer_worker.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -289,8 +289,10 @@ func (fw *FuzzerWorker) testNextCallSequence() (calls.CallSequence, []ShrinkCall
289289

290290
// Add event values to copied ValueSet
291291
lastExecutedSequenceElement := currentlyExecutedSequence[len(currentlyExecutedSequence)-1]
292-
messageResults := lastExecutedSequenceElement.ChainReference.MessageResults()
293-
fw.ValueSet().Add(messageResults)
292+
293+
if messageResults, ok := lastExecutedSequenceElement.ChainReference.MessageResults().AdditionalResults["ValueGenerationTracerResults"].([]any); ok {
294+
fw.ValueSet().Add(messageResults)
295+
}
294296

295297
// Loop through each test function, signal our worker tested a call, and collect any requests to shrink
296298
// this call sequence.

fuzzing/valuegeneration/value_set.go

Lines changed: 17 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package valuegeneration
22

33
import (
44
"encoding/hex"
5-
"github.com/crytic/medusa/chain/types"
65
"hash"
76
"math/big"
87

@@ -174,44 +173,24 @@ func (vs *ValueSet) RemoveBytes(b []byte) {
174173
delete(vs.bytes, hashStr)
175174
}
176175

177-
func (vs *ValueSet) Add(results *types.MessageResults) {
178-
valueGenerationTracerResults := results.AdditionalResults["ValueGenerationTracerResults"]
179-
180-
if transactionOutputValues, ok := valueGenerationTracerResults.([]any); ok {
181-
182-
for _, eventOrReturnValues := range transactionOutputValues {
183-
//if eventOrReturnSlice, ok := eventOrReturnValues.(TransactionOutputValues); ok {
184-
// for _, eventOrReturnValue := range eventOrReturnSlice {
185-
// switch v := eventOrReturnValue.(type) {
186-
// case *big.Int:
187-
// valueSet.AddInteger(v)
188-
// case common.Address:
189-
// valueSet.AddAddress(v)
190-
// case string:
191-
// valueSet.AddString(v)
192-
// case []byte:
193-
// valueSet.AddBytes(v)
194-
// default:
195-
// continue
196-
// }
197-
//
198-
// }
199-
if eventOrReturnSlice, ok := eventOrReturnValues.([]any); ok {
200-
for _, eventOrReturnValue := range eventOrReturnSlice {
201-
switch v := eventOrReturnValue.(type) {
202-
case *big.Int:
203-
vs.AddInteger(v)
204-
case common.Address:
205-
vs.AddAddress(v)
206-
case string:
207-
vs.AddString(v)
208-
case []byte:
209-
vs.AddBytes(v)
210-
default:
211-
continue
212-
}
213-
176+
func (vs *ValueSet) Add(results []any) {
177+
178+
for _, eventOrReturnValues := range results {
179+
if eventOrReturnSlice, ok := eventOrReturnValues.([]any); ok {
180+
for _, eventOrReturnValue := range eventOrReturnSlice {
181+
switch v := eventOrReturnValue.(type) {
182+
case *big.Int:
183+
vs.AddInteger(v)
184+
case common.Address:
185+
vs.AddAddress(v)
186+
case string:
187+
vs.AddString(v)
188+
case []byte:
189+
vs.AddBytes(v)
190+
default:
191+
continue
214192
}
193+
215194
}
216195
}
217196
}

0 commit comments

Comments
 (0)