diff --git a/src/seeder/main.cpp b/src/seeder/main.cpp --- a/src/seeder/main.cpp +++ b/src/seeder/main.cpp @@ -348,6 +348,7 @@ signal(SIGPIPE, SIG_IGN); setbuf(stdout, nullptr); CDnsSeedOpts opts; + SetupSeederArgs(gArgs); int parseResults = opts.ParseCommandLine(argc, const_cast(argv)); if (parseResults != CONTINUE_EXECUTION) { diff --git a/src/seeder/options.h b/src/seeder/options.h --- a/src/seeder/options.h +++ b/src/seeder/options.h @@ -50,9 +50,8 @@ ipv6_proxy(DEFAULT_IPV6_PROXY) {} int ParseCommandLine(int argc, const char **argv); - -private: - void SetupSeederArgs(ArgsManager &argsman); }; +void SetupSeederArgs(ArgsManager &argsman); + #endif // BITCOIN_SEEDER_OPTIONS_H diff --git a/src/seeder/options.cpp b/src/seeder/options.cpp --- a/src/seeder/options.cpp +++ b/src/seeder/options.cpp @@ -11,7 +11,6 @@ #include int CDnsSeedOpts::ParseCommandLine(int argc, const char **argv) { - SetupSeederArgs(gArgs); std::string error; if (!gArgs.ParseParameters(argc, argv, error)) { tfm::format(std::cerr, "Error parsing command line arguments: %s\n", @@ -76,7 +75,7 @@ return CONTINUE_EXECUTION; } -void CDnsSeedOpts::SetupSeederArgs(ArgsManager &argsman) { +void SetupSeederArgs(ArgsManager &argsman) { SetupHelpOptions(argsman); argsman.AddArg("-help-debug", "Show all debugging options (usage: --help -help-debug)", diff --git a/src/seeder/test/options_tests.cpp b/src/seeder/test/options_tests.cpp --- a/src/seeder/test/options_tests.cpp +++ b/src/seeder/test/options_tests.cpp @@ -3,21 +3,42 @@ // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include +#include #include -BOOST_AUTO_TEST_SUITE(options_tests) +class ArgsTestingSetup { +public: + ArgsTestingSetup() { SetupSeederArgs(gArgs); } + ~ArgsTestingSetup() { gArgs.ClearArgs(); } +}; + +BOOST_FIXTURE_TEST_SUITE(options_tests, ArgsTestingSetup) BOOST_AUTO_TEST_CASE(options_basic_test) { - CDnsSeedOpts opts; - const char *argv[] = {"ignored", "-host=seeder.bitcoinabc.org", - "-ns=localhost", "-mbox=email@bitcoinabc.org", - "-port=5555"}; - BOOST_CHECK(opts.ParseCommandLine(5, argv) == CONTINUE_EXECUTION); - BOOST_CHECK(opts.host == "seeder.bitcoinabc.org"); - BOOST_CHECK(opts.ns == "localhost"); - BOOST_CHECK(opts.mbox == "email@bitcoinabc.org"); - BOOST_CHECK(opts.nPort == 5555); + { + // Check relevant defaults + CDnsSeedOpts opts; + const char *argv[] = {"ignored"}; + BOOST_CHECK(opts.ParseCommandLine(1, argv) == CONTINUE_EXECUTION); + BOOST_CHECK(opts.nPort == 53); + BOOST_CHECK(opts.nThreads == 96); + BOOST_CHECK(opts.nDnsThreads == 4); + BOOST_CHECK(opts.fWipeBan == false); + BOOST_CHECK(opts.fWipeIgnore == false); + } + { + // Example real-world use case + CDnsSeedOpts opts; + const char *argv[] = {"ignored", "-host=seeder.bitcoinabc.org", + "-ns=localhost", "-mbox=email@bitcoinabc.org", + "-port=5555"}; + BOOST_CHECK(opts.ParseCommandLine(5, argv) == CONTINUE_EXECUTION); + BOOST_CHECK(opts.host == "seeder.bitcoinabc.org"); + BOOST_CHECK(opts.ns == "localhost"); + BOOST_CHECK(opts.mbox == "email@bitcoinabc.org"); + BOOST_CHECK(opts.nPort == 5555); + } } BOOST_AUTO_TEST_SUITE_END()