mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-05-23 20:35:02 +02:00
On some systems, these tests fail because the default 200 BIP101-version blocks are mined before the test begins, causing them to think BIP65 is already in effect.
69 lines
2.2 KiB
Python
Executable File
69 lines
2.2 KiB
Python
Executable File
#!/usr/bin/env python2
|
|
# Copyright (c) 2014-2015 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 -alertnotify
|
|
#
|
|
|
|
from test_framework.test_framework import BitcoinTestFramework
|
|
from test_framework.util import *
|
|
|
|
class ForkNotifyTest(BitcoinTestFramework):
|
|
|
|
alert_filename = None # Set by setup_network
|
|
|
|
def __init__(self):
|
|
self.num_nodes = 3
|
|
|
|
def setup_chain(self):
|
|
print "Initializing test directory "+self.options.tmpdir
|
|
initialize_chain_clean(self.options.tmpdir, self.num_nodes)
|
|
|
|
def setup_network(self):
|
|
self.nodes = []
|
|
self.alert_filename = os.path.join(self.options.tmpdir, "alert.txt")
|
|
with open(self.alert_filename, 'w') as f:
|
|
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') 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') 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()
|