test: Test includeconf parameter.
This commit is contained in:
parent
629ff8c358
commit
0f0badd5a3
2 changed files with 79 additions and 0 deletions
78
test/functional/feature_includeconf.py
Executable file
78
test/functional/feature_includeconf.py
Executable file
|
@ -0,0 +1,78 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# Copyright (c) 2018 The Bitcoin Core developers
|
||||||
|
# Distributed under the MIT software license, see the accompanying
|
||||||
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
"""Tests the includeconf argument
|
||||||
|
|
||||||
|
Verify that:
|
||||||
|
|
||||||
|
1. adding includeconf to the configuration file causes the includeconf
|
||||||
|
file to be loaded in the correct order.
|
||||||
|
2. includeconf cannot be used as a command line argument.
|
||||||
|
3. includeconf cannot be used recursively (ie includeconf can only
|
||||||
|
be used from the base config file).
|
||||||
|
4. multiple includeconf arguments can be specified in the main config
|
||||||
|
file.
|
||||||
|
"""
|
||||||
|
import os
|
||||||
|
import tempfile
|
||||||
|
|
||||||
|
from test_framework.test_framework import BitcoinTestFramework, assert_equal
|
||||||
|
|
||||||
|
class IncludeConfTest(BitcoinTestFramework):
|
||||||
|
def set_test_params(self):
|
||||||
|
self.setup_clean_chain = False
|
||||||
|
self.num_nodes = 1
|
||||||
|
|
||||||
|
def setup_chain(self):
|
||||||
|
super().setup_chain()
|
||||||
|
# Create additional config files
|
||||||
|
# - tmpdir/node0/relative.conf
|
||||||
|
with open(os.path.join(self.options.tmpdir, "node0", "relative.conf"), "w", encoding="utf8") as f:
|
||||||
|
f.write("uacomment=relative\n")
|
||||||
|
# - tmpdir/node0/relative2.conf
|
||||||
|
with open(os.path.join(self.options.tmpdir, "node0", "relative2.conf"), "w", encoding="utf8") as f:
|
||||||
|
f.write("uacomment=relative2\n")
|
||||||
|
with open(os.path.join(self.options.tmpdir, "node0", "bitcoin.conf"), "a", encoding='utf8') as f:
|
||||||
|
f.write("uacomment=main\nincludeconf=relative.conf\n")
|
||||||
|
|
||||||
|
def run_test(self):
|
||||||
|
self.log.info("-includeconf works from config file. subversion should end with 'main; relative)/'")
|
||||||
|
|
||||||
|
subversion = self.nodes[0].getnetworkinfo()["subversion"]
|
||||||
|
assert subversion.endswith("main; relative)/")
|
||||||
|
|
||||||
|
self.log.info("-includeconf cannot be used as command-line arg. subversion should still end with 'main; relative)/'")
|
||||||
|
self.stop_node(0)
|
||||||
|
with tempfile.SpooledTemporaryFile(max_size=2**16) as log_stderr:
|
||||||
|
self.start_node(0, extra_args=["-includeconf=relative2.conf"], stderr=log_stderr)
|
||||||
|
|
||||||
|
subversion = self.nodes[0].getnetworkinfo()["subversion"]
|
||||||
|
assert subversion.endswith("main; relative)/")
|
||||||
|
log_stderr.seek(0)
|
||||||
|
stderr = log_stderr.read().decode('utf-8').strip()
|
||||||
|
assert_equal(stderr, 'warning: -includeconf cannot be used from commandline; ignoring -includeconf=relative2.conf')
|
||||||
|
|
||||||
|
self.log.info("-includeconf cannot be used recursively. subversion should end with 'main; relative)/'")
|
||||||
|
with open(os.path.join(self.options.tmpdir, "node0", "relative.conf"), "a", encoding="utf8") as f:
|
||||||
|
f.write("includeconf=relative2.conf\n")
|
||||||
|
|
||||||
|
self.restart_node(0)
|
||||||
|
|
||||||
|
subversion = self.nodes[0].getnetworkinfo()["subversion"]
|
||||||
|
assert subversion.endswith("main; relative)/")
|
||||||
|
|
||||||
|
self.log.info("multiple -includeconf args can be used from the base config file. subversion should end with 'main; relative; relative2)/'")
|
||||||
|
with open(os.path.join(self.options.tmpdir, "node0", "relative.conf"), "w", encoding="utf8") as f:
|
||||||
|
f.write("uacomment=relative\n")
|
||||||
|
|
||||||
|
with open(os.path.join(self.options.tmpdir, "node0", "bitcoin.conf"), "a", encoding='utf8') as f:
|
||||||
|
f.write("includeconf=relative2.conf\n")
|
||||||
|
|
||||||
|
self.restart_node(0)
|
||||||
|
|
||||||
|
subversion = self.nodes[0].getnetworkinfo()["subversion"]
|
||||||
|
assert subversion.endswith("main; relative; relative2)/")
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
IncludeConfTest().main()
|
|
@ -138,6 +138,7 @@ BASE_SCRIPTS = [
|
||||||
'p2p_fingerprint.py',
|
'p2p_fingerprint.py',
|
||||||
'feature_uacomment.py',
|
'feature_uacomment.py',
|
||||||
'p2p_unrequested_blocks.py',
|
'p2p_unrequested_blocks.py',
|
||||||
|
'feature_includeconf.py',
|
||||||
'feature_logging.py',
|
'feature_logging.py',
|
||||||
'p2p_node_network_limited.py',
|
'p2p_node_network_limited.py',
|
||||||
'feature_blocksdir.py',
|
'feature_blocksdir.py',
|
||||||
|
|
Loading…
Reference in a new issue