From 8f6105de0ba755e02d4e80672c2f2655bf71cdf0 Mon Sep 17 00:00:00 2001 From: Mark Ney Date: Mon, 9 Dec 2019 14:41:05 -0700 Subject: [PATCH 1/2] fixing broken restricted asset test and loop argument --- test/functional/feature_restricted_assets.py | 6 ++---- test/functional/test_framework/test_framework.py | 11 ++++++++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/test/functional/feature_restricted_assets.py b/test/functional/feature_restricted_assets.py index 3e4cc5fd60..9d799e809f 100755 --- a/test/functional/feature_restricted_assets.py +++ b/test/functional/feature_restricted_assets.py @@ -514,8 +514,7 @@ def global_freezing(self): assert_raises_rpc_error(None, "Invalid Raven change address", n0.freezerestrictedasset, asset_name, "garbagechangeaddress") - n0.freezerestrictedasset(asset_name, rvn_change_address) - n0.freezerestrictedasset(asset_name, rvn_change_address) # redundant freezing ok if consistent + n0.freezerestrictedasset(asset_name, rvn_change_address) # Can only freeze once! n0.generate(1) assert_raises_rpc_error(None, "global-freeze-when-already-frozen", n0.freezerestrictedasset, asset_name, rvn_change_address) @@ -527,8 +526,7 @@ def global_freezing(self): assert_raises_rpc_error(None, "Invalid Raven change address", n0.unfreezerestrictedasset, asset_name, "garbagechangeaddress") - n0.unfreezerestrictedasset(asset_name, rvn_change_address) - n0.unfreezerestrictedasset(asset_name, rvn_change_address) # redundant unfreezing ok if consistent + n0.unfreezerestrictedasset(asset_name, rvn_change_address) # Can only un-freeze once! n0.generate(1) assert_raises_rpc_error(None, "global-unfreeze-when-not-frozen", n0.unfreezerestrictedasset, asset_name, rvn_change_address) diff --git a/test/functional/test_framework/test_framework.py b/test/functional/test_framework/test_framework.py index ef869781fa..8bcc94cef4 100755 --- a/test/functional/test_framework/test_framework.py +++ b/test/functional/test_framework/test_framework.py @@ -7,6 +7,7 @@ """Base class for RPC testing.""" from enum import Enum +from random import randint import logging import optparse import os @@ -86,9 +87,17 @@ def main(self): self.options.cachedir = os.path.abspath(self.options.cachedir) # Set up temp directory and start logging + # When looping tests using the --loop=n argument, when a test fails the tmpdir will not be deleted. + # This will cause that specific test to fail on every loop after since this directory will exist. + # Now when it fails to create the tmpdir it will try to create a new directory with a random int + # appended to the path. This will allow looped tests to pass and keep the log and state data from the previous failure. if self.options.tmpdir: self.options.tmpdir = os.path.abspath(self.options.tmpdir) - os.makedirs(self.options.tmpdir, exist_ok=False) + try: + os.makedirs(self.options.tmpdir, exist_ok=False) + except OSError as e: + self.options.tmpdir = os.path.abspath(self.options.tmpdir + str(randint(0,48))) + os.makedirs(self.options.tmpdir, exist_ok=False) else: self.options.tmpdir = tempfile.mkdtemp(prefix="test") self._start_logging() From dd15be312ef934db554faef74546002636d8942b Mon Sep 17 00:00:00 2001 From: Mark Ney Date: Tue, 10 Dec 2019 10:05:17 -0700 Subject: [PATCH 2/2] Realized I should have left the freeze/unfreeze in with an expected assertion --- test/functional/feature_restricted_assets.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/test/functional/feature_restricted_assets.py b/test/functional/feature_restricted_assets.py index 9d799e809f..4f7060d64b 100755 --- a/test/functional/feature_restricted_assets.py +++ b/test/functional/feature_restricted_assets.py @@ -515,20 +515,19 @@ def global_freezing(self): assert_raises_rpc_error(None, "Invalid Raven change address", n0.freezerestrictedasset, asset_name, "garbagechangeaddress") n0.freezerestrictedasset(asset_name, rvn_change_address) # Can only freeze once! + assert_raises_rpc_error(-26, "Freezing transaction already in mempool", n0.freezerestrictedasset, asset_name, rvn_change_address) n0.generate(1) - assert_raises_rpc_error(None, "global-freeze-when-already-frozen", n0.freezerestrictedasset, asset_name, rvn_change_address) # post-freeze validation assert_contains(asset_name, n0.listglobalrestrictions()) assert n0.checkglobalrestriction(asset_name) assert_raises_rpc_error(-8, "restricted asset has been globally frozen", n0.transferfromaddress, asset_name, address, 1000, n1.getnewaddress()) - assert_raises_rpc_error(None, "Invalid Raven change address", n0.unfreezerestrictedasset, asset_name, "garbagechangeaddress") n0.unfreezerestrictedasset(asset_name, rvn_change_address) # Can only un-freeze once! + assert_raises_rpc_error(-26, "Unfreezing transaction already in mempool", n0.unfreezerestrictedasset, asset_name, rvn_change_address) n0.generate(1) - assert_raises_rpc_error(None, "global-unfreeze-when-not-frozen", n0.unfreezerestrictedasset, asset_name, rvn_change_address) # post-unfreeze validation