Bitcoin ABC  0.29.2
P2P Digital Currency
options_tests.cpp
Go to the documentation of this file.
1 // Copyright (c) 2022 The Bitcoin developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 
5 #include <seeder/options.h>
6 #include <util/system.h>
7 
8 #include <boost/test/unit_test.hpp>
9 
10 static const char *TEST_HOST = "-host=seeder.bitcoinabc.org";
11 static const char *TEST_NAMESERVER = "-ns=localhost";
12 static const char *TEST_EMAIL = "[email protected]";
13 
15 public:
18 
20 };
21 
22 BOOST_AUTO_TEST_SUITE(options_tests)
23 
24 BOOST_FIXTURE_TEST_CASE(options_defaults_test, ArgsTestingSetup) {
25  const char *argv[] = {"ignored"};
26  BOOST_CHECK(opts.ParseCommandLine(1, argv) == seeder::CONTINUE_EXECUTION);
27  BOOST_CHECK(opts.dumpInterval ==
28  std::chrono::seconds(seeder::DEFAULT_DUMP_INTERVAL_SECONDS));
29  BOOST_CHECK(opts.nPort == seeder::DEFAULT_PORT);
30  BOOST_CHECK(opts.nThreads == seeder::DEFAULT_NUM_THREADS);
31  BOOST_CHECK(opts.nDnsThreads == seeder::DEFAULT_NUM_DNS_THREADS);
32  BOOST_CHECK(opts.fWipeBan == seeder::DEFAULT_WIPE_BAN);
33  BOOST_CHECK(opts.fWipeIgnore == seeder::DEFAULT_WIPE_IGNORE);
34 }
35 
37  const char *argv[] = {"ignored", TEST_HOST, TEST_NAMESERVER, TEST_EMAIL,
38  "-port=5555"};
39  BOOST_CHECK(opts.ParseCommandLine(5, argv) == seeder::CONTINUE_EXECUTION);
40  BOOST_CHECK(opts.host == "seeder.bitcoinabc.org");
41  BOOST_CHECK(opts.ns == "localhost");
42  BOOST_CHECK(opts.mbox == "[email protected]");
43  BOOST_CHECK(opts.nPort == 5555);
44 }
45 
46 BOOST_FIXTURE_TEST_CASE(options_dumpinterval_test, ArgsTestingSetup) {
47  const std::map<int, int> expectedResults = {
48  {-9999, EXIT_FAILURE},
49  {-1, EXIT_FAILURE},
50  {0, EXIT_FAILURE},
54 
55  for (const auto entry : expectedResults) {
56  const std::string testArg = "-dumpinterval=" + ToString(entry.first);
57  const char *argv[] = {"ignored", TEST_HOST, TEST_NAMESERVER, TEST_EMAIL,
58  testArg.c_str()};
59  BOOST_CHECK(opts.ParseCommandLine(5, argv) == entry.second);
60  if (entry.second == seeder::CONTINUE_EXECUTION) {
61  BOOST_CHECK(opts.dumpInterval == std::chrono::seconds(entry.first));
62  }
63  }
64 }
65 
66 BOOST_FIXTURE_TEST_CASE(options_threads_test, ArgsTestingSetup) {
67  const std::map<int, int> expectedResults = {
68  {-9999, EXIT_FAILURE},
69  {-1, EXIT_FAILURE},
70  {0, EXIT_FAILURE},
74 
75  for (const auto entry : expectedResults) {
76  const std::string testArg = "-threads=" + ToString(entry.first);
77  const char *argv[] = {"ignored", TEST_HOST, TEST_NAMESERVER, TEST_EMAIL,
78  testArg.c_str()};
79  BOOST_CHECK(opts.ParseCommandLine(5, argv) == entry.second);
80  if (entry.second == seeder::CONTINUE_EXECUTION) {
81  BOOST_CHECK(opts.nThreads == entry.first);
82  }
83  }
84 }
85 
86 BOOST_FIXTURE_TEST_CASE(options_dns_threads_test, ArgsTestingSetup) {
87  const std::map<int, int> expectedResults = {
88  {-9999, EXIT_FAILURE},
89  {-1, EXIT_FAILURE},
90  {0, EXIT_FAILURE},
94 
95  for (const auto entry : expectedResults) {
96  const std::string testArg = "-dnsthreads=" + ToString(entry.first);
97  const char *argv[] = {"ignored", TEST_HOST, TEST_NAMESERVER, TEST_EMAIL,
98  testArg.c_str()};
99  BOOST_CHECK(opts.ParseCommandLine(5, argv) == entry.second);
100  if (entry.second == seeder::CONTINUE_EXECUTION) {
101  BOOST_CHECK(opts.nDnsThreads == entry.first);
102  }
103  }
104 }
105 
107  const std::map<int, int> expectedResults = {
108  {-9999, EXIT_FAILURE},
109  {-1, EXIT_FAILURE},
110  // Note: port 0 indicates to the kernel that a random unused port should
111  // be assigned
118  {65536, EXIT_FAILURE},
119  {999999, EXIT_FAILURE}};
120 
121  for (const auto entry : expectedResults) {
122  const std::string testArg = "-port=" + ToString(entry.first);
123  const char *argv[] = {"ignored", TEST_HOST, TEST_NAMESERVER, TEST_EMAIL,
124  testArg.c_str()};
125  BOOST_CHECK(opts.ParseCommandLine(5, argv) == entry.second);
126  if (entry.second == seeder::CONTINUE_EXECUTION) {
127  BOOST_CHECK(opts.nPort == entry.first);
128  }
129  }
130 }
131 
ArgsManager argsManager
seeder::CDnsSeedOpts opts
static const bool DEFAULT_WIPE_BAN
Definition: options.h:22
static const int CONTINUE_EXECUTION
Definition: options.h:16
static const int DEFAULT_NUM_DNS_THREADS
Definition: options.h:21
static const int DEFAULT_DUMP_INTERVAL_SECONDS
Definition: options.h:18
static const bool DEFAULT_WIPE_IGNORE
Definition: options.h:23
static const int DEFAULT_NUM_THREADS
Definition: options.h:19
static const int DEFAULT_PORT
Definition: options.h:20
#define BOOST_AUTO_TEST_SUITE_END()
Definition: object.cpp:16
#define BOOST_CHECK(expr)
Definition: object.cpp:17
BOOST_FIXTURE_TEST_CASE(options_defaults_test, ArgsTestingSetup)
static const char * TEST_HOST
static const char * TEST_EMAIL
static const char * TEST_NAMESERVER
std::string ToString(const T &t)
Locale-independent version of std::to_string.
Definition: string.h:87