16void initialize_system()
 
   18    static const auto testing_setup = MakeNoLogFileContext<>();
 
   21std::string GetArgumentName(
const std::string& 
name)
 
   23    size_t idx = 
name.find(
'=');
 
   24    if (idx == std::string::npos) {
 
   27    return name.substr(0, idx);
 
   35    if (fuzzed_data_provider.ConsumeBool()) {
 
   44                args_manager.SelectConfigNetwork(fuzzed_data_provider.ConsumeRandomLengthString(16));
 
   47                args_manager.SoftSetArg(fuzzed_data_provider.ConsumeRandomLengthString(16), fuzzed_data_provider.ConsumeRandomLengthString(16));
 
   50                args_manager.ForceSetArg(fuzzed_data_provider.ConsumeRandomLengthString(16), fuzzed_data_provider.ConsumeRandomLengthString(16));
 
   53                args_manager.SoftSetBoolArg(fuzzed_data_provider.ConsumeRandomLengthString(16), fuzzed_data_provider.ConsumeBool());
 
   56                const OptionsCategory options_category = fuzzed_data_provider.PickValueInArray<
OptionsCategory>({
OptionsCategory::OPTIONS, 
OptionsCategory::CONNECTION, 
OptionsCategory::WALLET, 
OptionsCategory::WALLET_DEBUG_TEST, 
OptionsCategory::ZMQ, 
OptionsCategory::DEBUG_TEST, 
OptionsCategory::CHAINPARAMS, 
OptionsCategory::NODE_RELAY, 
OptionsCategory::BLOCK_CREATION, 
OptionsCategory::RPC, 
OptionsCategory::GUI, 
OptionsCategory::COMMANDS, 
OptionsCategory::REGISTER_COMMANDS, 
OptionsCategory::HIDDEN});
 
   59                const std::string argument_name = GetArgumentName(fuzzed_data_provider.ConsumeRandomLengthString(16));
 
   60                if (args_manager.GetArgFlags(argument_name) != std::nullopt) {
 
   63                args_manager.AddArg(argument_name, fuzzed_data_provider.ConsumeRandomLengthString(16), fuzzed_data_provider.ConsumeIntegral<
unsigned int>() & ~
ArgsManager::COMMAND, options_category);
 
   69                std::vector<std::string> hidden_arguments;
 
   70                for (
const std::string& 
name : names) {
 
   71                    const std::string hidden_argument = GetArgumentName(
name);
 
   72                    if (args_manager.GetArgFlags(hidden_argument) != std::nullopt) {
 
   75                    if (std::find(hidden_arguments.begin(), hidden_arguments.end(), hidden_argument) != hidden_arguments.end()) {
 
   78                    hidden_arguments.push_back(hidden_argument);
 
   80                args_manager.AddHiddenArgs(hidden_arguments);
 
   83                args_manager.ClearArgs();
 
   87                std::vector<const char*> argv;
 
   88                argv.reserve(random_arguments.size());
 
   89                for (
const std::string& random_argument : random_arguments) {
 
   90                    argv.push_back(random_argument.c_str());
 
   94                    (void)args_manager.ParseParameters(argv.size(), argv.data(), 
error);
 
   95                } 
catch (
const std::logic_error&) {
 
  100    const std::string s1 = fuzzed_data_provider.ConsumeRandomLengthString(16);
 
  101    const std::string s2 = fuzzed_data_provider.ConsumeRandomLengthString(16);
 
  102    const int64_t i64 = fuzzed_data_provider.ConsumeIntegral<int64_t>();
 
  103    const bool b = fuzzed_data_provider.ConsumeBool();
 
  105    (void)args_manager.GetIntArg(s1, i64);
 
  106    (void)args_manager.GetArg(s1, s2);
 
  107    (void)args_manager.GetArgFlags(s1);
 
  108    (void)args_manager.GetArgs(s1);
 
  109    (void)args_manager.GetBoolArg(s1, b);
 
  111        (void)args_manager.GetChainName();
 
  112    } 
catch (
const std::runtime_error&) {
 
  114    (void)args_manager.GetHelpMessage();
 
  115    (void)args_manager.GetUnrecognizedSections();
 
  116    (void)args_manager.GetUnsuitableSectionOnlyArgs();
 
  117    (void)args_manager.IsArgNegated(s1);
 
  118    (void)args_manager.IsArgSet(s1);
 
#define FUZZ_TARGET_INIT(name, init_fun)
#define LIMITED_WHILE(condition, limit)
Can be used to limit a theoretically unbounded loop.
bool error(const char *fmt, const Args &... args)
size_t CallOneOf(FuzzedDataProvider &fuzzed_data_provider, Callables... callables)
std::vector< std::string > ConsumeRandomLengthStringVector(FuzzedDataProvider &fuzzed_data_provider, const size_t max_vector_size=16, const size_t max_string_length=16) noexcept
bool HelpRequested(const ArgsManager &args)
void SetupHelpOptions(ArgsManager &args)
Add help options to the args manager.