mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-25 10:43:19 -03:00
config: enable passing -asmap an absolute file path
- allow passing an absolute file path to the -asmap config arg - update the -asmap config help - add a functional test in feature_asmap.py
This commit is contained in:
parent
fbe9b024f0
commit
81c38a2497
2 changed files with 22 additions and 8 deletions
12
src/init.cpp
12
src/init.cpp
|
@ -408,7 +408,7 @@ void SetupServerArgs()
|
|||
ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
||||
|
||||
gArgs.AddArg("-addnode=<ip>", "Add a node to connect to and attempt to keep the connection open (see the `addnode` RPC command help for more info). This option can be specified multiple times to add multiple nodes.", ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::CONNECTION);
|
||||
gArgs.AddArg("-asmap=<file>", strprintf("Specify asn mapping used for bucketing of the peers (default: %s). Path should be relative to the -datadir path.", DEFAULT_ASMAP_FILENAME), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
|
||||
gArgs.AddArg("-asmap=<file>", strprintf("Specify asn mapping used for bucketing of the peers (default: %s). Relative paths will be prefixed by the net-specific datadir location.", DEFAULT_ASMAP_FILENAME), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
|
||||
gArgs.AddArg("-banscore=<n>", strprintf("Threshold for disconnecting misbehaving peers (default: %u)", DEFAULT_BANSCORE_THRESHOLD), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
|
||||
gArgs.AddArg("-bantime=<n>", strprintf("Number of seconds to keep misbehaving peers from reconnecting (default: %u)", DEFAULT_MISBEHAVING_BANTIME), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
|
||||
gArgs.AddArg("-bind=<addr>", "Bind to given address and always listen on it. Use [host]:port notation for IPv6", ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::CONNECTION);
|
||||
|
@ -1827,11 +1827,13 @@ bool AppInitMain(NodeContext& node)
|
|||
|
||||
// Read asmap file if configured
|
||||
if (gArgs.IsArgSet("-asmap")) {
|
||||
std::string asmap_file = gArgs.GetArg("-asmap", "");
|
||||
if (asmap_file.empty()) {
|
||||
asmap_file = DEFAULT_ASMAP_FILENAME;
|
||||
fs::path asmap_path = fs::path(gArgs.GetArg("-asmap", ""));
|
||||
if (asmap_path.empty()) {
|
||||
asmap_path = DEFAULT_ASMAP_FILENAME;
|
||||
}
|
||||
if (!asmap_path.is_absolute()) {
|
||||
asmap_path = GetDataDir() / asmap_path;
|
||||
}
|
||||
const fs::path asmap_path = GetDataDir() / asmap_file;
|
||||
std::vector<bool> asmap = CAddrMan::DecodeAsmap(asmap_path);
|
||||
if (asmap.size() == 0) {
|
||||
InitError(strprintf(_("Could not find or parse specified asmap: '%s'").translated, asmap_path));
|
||||
|
|
|
@ -8,11 +8,13 @@ Verify node behaviour and debug log when launching bitcoind in these cases:
|
|||
|
||||
1. `bitcoind` with no -asmap arg, using /16 prefix for IP bucketing
|
||||
|
||||
2. `bitcoind -asmap=<relative path>`, using the unit test skeleton asmap
|
||||
2. `bitcoind -asmap=<absolute path>`, using the unit test skeleton asmap
|
||||
|
||||
3. `bitcoind -asmap/-asmap=` with no file specified, using the default asmap
|
||||
3. `bitcoind -asmap=<relative path>`, using the unit test skeleton asmap
|
||||
|
||||
4. `bitcoind -asmap` with no file specified, and a missing default asmap file
|
||||
4. `bitcoind -asmap/-asmap=` with no file specified, using the default asmap
|
||||
|
||||
5. `bitcoind -asmap` with no file specified and a missing default asmap file
|
||||
|
||||
The tests are order-independent. The slowest test (missing default asmap file)
|
||||
is placed last.
|
||||
|
@ -42,6 +44,15 @@ class AsmapTest(BitcoinTestFramework):
|
|||
with self.node.assert_debug_log(['Using /16 prefix for IP bucketing']):
|
||||
self.start_node(0)
|
||||
|
||||
def test_asmap_with_absolute_path(self):
|
||||
self.log.info('Test bitcoind -asmap=<absolute path>')
|
||||
self.stop_node(0)
|
||||
filename = os.path.join(self.datadir, 'my-map-file.map')
|
||||
shutil.copyfile(self.asmap_raw, filename)
|
||||
with self.node.assert_debug_log(expected_messages(filename)):
|
||||
self.start_node(0, ['-asmap={}'.format(filename)])
|
||||
os.remove(filename)
|
||||
|
||||
def test_asmap_with_relative_path(self):
|
||||
self.log.info('Test bitcoind -asmap=<relative path>')
|
||||
self.stop_node(0)
|
||||
|
@ -74,6 +85,7 @@ class AsmapTest(BitcoinTestFramework):
|
|||
self.asmap_raw = os.path.join(os.path.dirname(os.path.realpath(__file__)), ASMAP)
|
||||
|
||||
self.test_without_asmap_arg()
|
||||
self.test_asmap_with_absolute_path()
|
||||
self.test_asmap_with_relative_path()
|
||||
self.test_default_asmap()
|
||||
self.test_default_asmap_with_missing_file()
|
||||
|
|
Loading…
Add table
Reference in a new issue