diff options
author | John Newbery <john@johnnewbery.com> | 2017-03-08 15:56:30 -0500 |
---|---|---|
committer | John Newbery <john@johnnewbery.com> | 2017-03-20 10:40:31 -0400 |
commit | 00902c48cdc5d6a531abfd279fd8e7779cf0a0b8 (patch) | |
tree | 41891484a478a7478937fe4a12b63e6c7f31799a /test/rpc-tests/forknotify.py | |
parent | d34995a7bac6ed20ce42aa00c6252b900786e649 (diff) |
Rename qa directory to test
Diffstat (limited to 'test/rpc-tests/forknotify.py')
-rwxr-xr-x | test/rpc-tests/forknotify.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/test/rpc-tests/forknotify.py b/test/rpc-tests/forknotify.py new file mode 100755 index 0000000000..c2724ba5df --- /dev/null +++ b/test/rpc-tests/forknotify.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 +# Copyright (c) 2014-2016 The Bitcoin Core developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. +"""Test the -alertnotify option.""" + +from test_framework.test_framework import BitcoinTestFramework +from test_framework.util import * + +class ForkNotifyTest(BitcoinTestFramework): + + def __init__(self): + super().__init__() + self.num_nodes = 2 + self.setup_clean_chain = False + + alert_filename = None # Set by setup_network + + def setup_network(self): + self.nodes = [] + self.alert_filename = os.path.join(self.options.tmpdir, "alert.txt") + with open(self.alert_filename, 'w', encoding='utf8'): + pass # Just open then close to create zero-length file + self.nodes.append(start_node(0, self.options.tmpdir, + ["-blockversion=2", "-alertnotify=echo %s >> \"" + self.alert_filename + "\""])) + # Node1 mines block.version=211 blocks + self.nodes.append(start_node(1, self.options.tmpdir, + ["-blockversion=211"])) + connect_nodes(self.nodes[1], 0) + + self.is_network_split = False + self.sync_all() + + def run_test(self): + # Mine 51 up-version blocks + self.nodes[1].generate(51) + self.sync_all() + # -alertnotify should trigger on the 51'st, + # but mine and sync another to give + # -alertnotify time to write + self.nodes[1].generate(1) + self.sync_all() + + with open(self.alert_filename, 'r', encoding='utf8') as f: + alert_text = f.read() + + if len(alert_text) == 0: + raise AssertionError("-alertnotify did not warn of up-version blocks") + + # Mine more up-version blocks, should not get more alerts: + self.nodes[1].generate(1) + self.sync_all() + self.nodes[1].generate(1) + self.sync_all() + + with open(self.alert_filename, 'r', encoding='utf8') as f: + alert_text2 = f.read() + + if alert_text != alert_text2: + raise AssertionError("-alertnotify excessive warning of up-version blocks") + +if __name__ == '__main__': + ForkNotifyTest().main() |