Skip to content

Commit

Permalink
[tests] skip rpc_zmq functional test when python3 zmq lib is not present
Browse files Browse the repository at this point in the history
Also refactors zmq-related test skipping logic into distinct functions.
  • Loading branch information
jamesob committed Jul 12, 2018
1 parent dcb154e commit a0b604c
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 15 deletions.
19 changes: 5 additions & 14 deletions test/functional/interface_zmq.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
"""Test the ZMQ notification interface."""
import configparser
import struct

from test_framework.test_framework import BitcoinTestFramework, SkipTest
from test_framework.test_framework import (
BitcoinTestFramework, skip_if_no_bitcoind_zmq, skip_if_no_py3_zmq)
from test_framework.mininode import CTransaction
from test_framework.util import (assert_equal,
bytes_to_hex_str,
Expand Down Expand Up @@ -38,18 +38,9 @@ def set_test_params(self):
self.num_nodes = 2

def setup_nodes(self):
# Try to import python3-zmq. Skip this test if the import fails.
try:
import zmq
except ImportError:
raise SkipTest("python3-zmq module not available.")

# Check that bitcoin has been built with ZMQ enabled.
config = configparser.ConfigParser()
config.read_file(open(self.options.configfile))

if not config["components"].getboolean("ENABLE_ZMQ"):
raise SkipTest("bitcoind has not been built with zmq enabled.")
skip_if_no_py3_zmq()
skip_if_no_bitcoind_zmq(self)
import zmq

# Initialize ZMQ context and socket.
# All messages are received in the same socket which means
Expand Down
5 changes: 4 additions & 1 deletion test/functional/rpc_zmq.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
"""Test for the ZMQ RPC methods."""

from test_framework.test_framework import BitcoinTestFramework
from test_framework.test_framework import (
BitcoinTestFramework, skip_if_no_py3_zmq, skip_if_no_bitcoind_zmq)
from test_framework.util import assert_equal


Expand All @@ -17,6 +18,8 @@ def set_test_params(self):
self.setup_clean_chain = True

def run_test(self):
skip_if_no_py3_zmq()
skip_if_no_bitcoind_zmq(self)
self._test_getzmqnotifications()

def _test_getzmqnotifications(self):
Expand Down
17 changes: 17 additions & 0 deletions test/functional/test_framework/test_framework.py
Original file line number Diff line number Diff line change
Expand Up @@ -475,3 +475,20 @@ class SkipTest(Exception):
"""This exception is raised to skip a test"""
def __init__(self, message):
self.message = message


def skip_if_no_py3_zmq():
"""Attempt to import the zmq package and skip the test if the import fails."""
try:
import zmq # noqa
except ImportError:
raise SkipTest("python3-zmq module not available.")


def skip_if_no_bitcoind_zmq(test_instance):
"""Skip the running test if bitcoind has not been compiled with zmq support."""
config = configparser.ConfigParser()
config.read_file(open(test_instance.options.configfile))

if not config["components"].getboolean("ENABLE_ZMQ"):
raise SkipTest("bitcoind has not been built with zmq enabled.")

0 comments on commit a0b604c

Please sign in to comment.