aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoão Barbosa <joao.paulo.barbosa@gmail.com>2017-07-31 22:13:27 +0100
committerJoão Barbosa <joao.paulo.barbosa@gmail.com>2017-10-10 23:46:04 +0100
commitdf18d29a02ae2804ae8490ea816fe0e88a971e8e (patch)
treea0132a35c16e65a03d99d2d71b4ae182ceb5c624
parent9c72a464f87ad80d16ea6720dfc6a53578b94c92 (diff)
[tests] Add -blocknotify functional test
-rwxr-xr-xtest/functional/notifications.py (renamed from test/functional/forknotify.py)27
-rwxr-xr-xtest/functional/test_runner.py2
2 files changed, 22 insertions, 7 deletions
diff --git a/test/functional/forknotify.py b/test/functional/notifications.py
index d74b3181da..80a74c0020 100755
--- a/test/functional/forknotify.py
+++ b/test/functional/notifications.py
@@ -2,25 +2,40 @@
# 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."""
+"""Test the -alertnotify and -blocknotify options."""
import os
from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import assert_equal, wait_until
-class ForkNotifyTest(BitcoinTestFramework):
+class NotificationsTest(BitcoinTestFramework):
def set_test_params(self):
self.num_nodes = 2
def setup_network(self):
self.alert_filename = os.path.join(self.options.tmpdir, "alert.txt")
- self.extra_args = [["-alertnotify=echo %%s >> %s" % self.alert_filename],
+ self.block_filename = os.path.join(self.options.tmpdir, 'blocks.txt')
+ self.extra_args = [["-blockversion=2",
+ "-alertnotify=echo %%s >> %s" % self.alert_filename,
+ "-blocknotify=echo %%s >> %s" % self.block_filename],
["-blockversion=211"]]
super().setup_network()
def run_test(self):
- # Mine 51 up-version blocks. -alertnotify should trigger on the 51st.
- self.nodes[1].generate(51)
+ self.log.info("test -blocknotify")
+ block_count = 10
+ blocks = self.nodes[1].generate(block_count)
+
+ # wait at most 10 seconds for expected file size before reading the content
+ wait_until(lambda: os.path.isfile(self.block_filename) and os.stat(self.block_filename).st_size >= (block_count * 65), timeout=10)
+
+ # file content should equal the generated blocks hashes
+ with open(self.block_filename, 'r') as f:
+ assert_equal(sorted(blocks), sorted(f.read().splitlines()))
+
+ # Mine another 41 up-version blocks. -alertnotify should trigger on the 51st.
+ self.log.info("test -alertnotify")
+ self.nodes[1].generate(41)
self.sync_all()
# Give bitcoind 10 seconds to write the alert notification
@@ -40,4 +55,4 @@ class ForkNotifyTest(BitcoinTestFramework):
assert_equal(alert_text, alert_text2)
if __name__ == '__main__':
- ForkNotifyTest().main()
+ NotificationsTest().main()
diff --git a/test/functional/test_runner.py b/test/functional/test_runner.py
index 5c8740d7cd..43c3d0aa85 100755
--- a/test/functional/test_runner.py
+++ b/test/functional/test_runner.py
@@ -148,7 +148,7 @@ EXTENDED_SCRIPTS = [
'example_test.py',
'txn_doublespend.py',
'txn_clone.py --mineblock',
- 'forknotify.py',
+ 'notifications.py',
'invalidateblock.py',
'p2p-acceptblock.py',
'replace-by-fee.py',