15 const char* simulator_path =
std::getenv(
"AVM_SIMULATOR_BIN");
16 if (simulator_path ==
nullptr) {
17 throw std::runtime_error(
"AVM_SIMULATOR_BIN is not set");
19 std::string simulator_path_str(simulator_path);
26 size_t serialized_fuzzer_data_size,
46 msgpack::unpack((
reinterpret_cast<const char*
>(
data)), size).get().convert(tx_data);
47 }
catch (
const std::exception& e) {
48 fuzz_info(
"Failed to deserialize input in TestOneInput, using default. Exception: ", e.what());
StrictMock< MockContractDB > contract_db
static void initialize(std::string &simulator_path)
static FuzzerWorldStateManager * getInstance()
world_state::WorldStateRevision fork()
const std::vector< MemoryValue > data
FuzzerWorldStateManager * ws_mgr
SimulatorResult fuzz_tx(FuzzerWorldStateManager &ws_mgr, FuzzerContractDB &contract_db, FuzzerTxData &tx_data)
Fuzz CPP vs JS simulator with a full transaction containing multiple enqueued calls.
FuzzerTxData create_default_tx_data(std::mt19937_64 &rng, const FuzzerContext &context)
void setup_fuzzer_state(FuzzerWorldStateManager &ws_mgr, FuzzerContractDB &contract_db, const FuzzerTxData &tx_data)
size_t mutate_tx_data(FuzzerContext &context, uint8_t *serialized_fuzzer_data, size_t serialized_fuzzer_data_size, size_t max_size, unsigned int seed)
void fund_fee_payer(FuzzerWorldStateManager &ws_mgr, const Tx &tx)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
int LLVMFuzzerInitialize(int *, char ***)
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
size_t LLVMFuzzerCustomMutator(uint8_t *serialized_fuzzer_data, size_t serialized_fuzzer_data_size, size_t max_size, unsigned int seed)