Bitcoin ABC 0.32.12
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 <common/args.h>
6#include <seeder/options.h>
7#include <util/string.h>
8
9#include <boost/test/unit_test.hpp>
10
11using util::ToString;
12
13static const char *TEST_HOST = "-host=seeder.bitcoinabc.org";
14static const char *TEST_NAMESERVER = "-ns=localhost";
15static const char *TEST_EMAIL = "[email protected]";
16
18public:
21
23};
24
25BOOST_AUTO_TEST_SUITE(options_tests)
26
28 const char *argv[] = {"ignored"};
29 BOOST_CHECK(opts.ParseCommandLine(1, argv) == seeder::CONTINUE_EXECUTION);
30 BOOST_CHECK(opts.dumpInterval ==
31 std::chrono::seconds(seeder::DEFAULT_DUMP_INTERVAL_SECONDS));
32 BOOST_CHECK(opts.nPort == seeder::DEFAULT_PORT);
35 BOOST_CHECK(opts.fWipeBan == seeder::DEFAULT_WIPE_BAN);
36 BOOST_CHECK(opts.fWipeIgnore == seeder::DEFAULT_WIPE_IGNORE);
37}
38
40 const char *argv[] = {"ignored", TEST_HOST, TEST_NAMESERVER, TEST_EMAIL,
41 "-port=5555"};
42 BOOST_CHECK(opts.ParseCommandLine(5, argv) == seeder::CONTINUE_EXECUTION);
43 BOOST_CHECK(opts.host == "seeder.bitcoinabc.org");
44 BOOST_CHECK(opts.ns == "localhost");
45 BOOST_CHECK(opts.mbox == "[email protected]");
46 BOOST_CHECK(opts.nPort == 5555);
47}
48
49BOOST_FIXTURE_TEST_CASE(options_dumpinterval_test, ArgsTestingSetup) {
50 const std::map<int, int> expectedResults = {
51 {-9999, EXIT_FAILURE},
52 {-1, EXIT_FAILURE},
53 {0, EXIT_FAILURE},
57
58 for (const auto &[dump_interval, code] : expectedResults) {
59 const std::string testArg = "-dumpinterval=" + ToString(dump_interval);
60 const char *argv[] = {"ignored", TEST_HOST, TEST_NAMESERVER, TEST_EMAIL,
61 testArg.c_str()};
62 BOOST_CHECK(opts.ParseCommandLine(5, argv) == code);
63 if (code == seeder::CONTINUE_EXECUTION) {
64 BOOST_CHECK(opts.dumpInterval ==
65 std::chrono::seconds(dump_interval));
66 }
67 }
68}
69
71 const std::map<int, int> expectedResults = {
72 {-9999, EXIT_FAILURE},
73 {-1, EXIT_FAILURE},
74 {0, EXIT_FAILURE},
78
79 for (const auto &[num_threads, code] : expectedResults) {
80 const std::string testArg = "-threads=" + ToString(num_threads);
81 const char *argv[] = {"ignored", TEST_HOST, TEST_NAMESERVER, TEST_EMAIL,
82 testArg.c_str()};
83 BOOST_CHECK(opts.ParseCommandLine(5, argv) == code);
84 if (code == seeder::CONTINUE_EXECUTION) {
85 BOOST_CHECK(opts.nThreads == num_threads);
86 }
87 }
88}
89
90BOOST_FIXTURE_TEST_CASE(options_dns_threads_test, ArgsTestingSetup) {
91 const std::map<int, int> expectedResults = {
92 {-9999, EXIT_FAILURE},
93 {-1, EXIT_FAILURE},
94 {0, EXIT_FAILURE},
98
99 for (const auto &[num_threads, code] : expectedResults) {
100 const std::string testArg = "-dnsthreads=" + ToString(num_threads);
101 const char *argv[] = {"ignored", TEST_HOST, TEST_NAMESERVER, TEST_EMAIL,
102 testArg.c_str()};
103 BOOST_CHECK(opts.ParseCommandLine(5, argv) == code);
104 if (code == seeder::CONTINUE_EXECUTION) {
105 BOOST_CHECK(opts.nDnsThreads == num_threads);
106 }
107 }
108}
109
111 const std::map<int, int> expectedResults = {
112 {-9999, EXIT_FAILURE},
113 {-1, EXIT_FAILURE},
114 // Note: port 0 indicates to the kernel that a random unused port should
115 // be assigned
122 {65536, EXIT_FAILURE},
123 {999999, EXIT_FAILURE}};
124
125 for (const auto &[port, code] : expectedResults) {
126 const std::string testArg = "-port=" + ToString(port);
127 const char *argv[] = {"ignored", TEST_HOST, TEST_NAMESERVER, TEST_EMAIL,
128 testArg.c_str()};
129 BOOST_CHECK(opts.ParseCommandLine(5, argv) == code);
130 if (code == seeder::CONTINUE_EXECUTION) {
131 BOOST_CHECK(opts.nPort == port);
132 }
133 }
134}
135
136BOOST_AUTO_TEST_SUITE_END()
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
std::string ToString(const T &t)
Locale-independent version of std::to_string.
Definition: string.h:150
#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
static std::string ToString(const CService &ip)
Definition: db.h:36