diff --git a/requirements.txt b/requirements.txt index 1899b27..ec81c35 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,9 +1,10 @@ -jsonrpcclient -pyyaml -pysha3 -coincurve -eth-utils -py-ecc -web3 +jsonrpcclient==4.0.3 +pyyaml==6.0.1 +pysha3==1.0.2 +coincurve==18.0.0 +eth-utils==3.0.0 +py-ecc==7.0.0 +web3==6.14.0 eth_tester -rtoml \ No newline at end of file +cffi==1.16.0 +rtoml==0.10.0 \ No newline at end of file diff --git a/tests/readme.md b/tests/readme.md new file mode 100644 index 0000000..c0b149a --- /dev/null +++ b/tests/readme.md @@ -0,0 +1,43 @@ +# Python Tests for Storage node + +## Prerequisites + +1. Required python version: 3.8, 3.9, 3.10, higher version is not guaranteed (e.g. failed to install `pysha3`). + +2. Install dependencies under root folder: + +``` +pip3 install -r requirements.txt +``` + +## Dependent Binaries + +Python test framework will launch blockchain fullnodes at local for storage node to interact with. There are 2 kinds of fullnodes supported: + +- Conflux eSpace node (by default). +- BSC node (geth). + +For Conflux eSpace node, the test framework will automatically compile the binary at runtime, and copy the binary to `tests/tmp` folder. For BSC node, the test framework will automatically download the latest version binary from [github](https://github.com/bnb-chain/bsc/releases) to `tests/tmp` folder. + +Alternatively, you could also manually copy specific versoin binaries (conflux or geth) to the `tests/tmp` folder. Note, do **NOT** copy released conflux binary on github, since block height of some CIPs are hardcoded. + +## Run Tests + +Go to the `tests` folder and run following command to run all tests: + +``` +python test_all.py +``` + +or, run any single test, e.g. + +``` +python sync_test.py +``` + +## Troubleshootings + +1. Test failed due to blockchain fullnode rpc inaccessible. +* Traceback: `node.wait_for_rpc_connection()` +* Solution: unset the `http_proxy` and `https_proxy` environment variables if configured. + diff --git a/tests/test_framework/test_framework.py b/tests/test_framework/test_framework.py index 7348639..0b140b4 100644 --- a/tests/test_framework/test_framework.py +++ b/tests/test_framework/test_framework.py @@ -448,14 +448,13 @@ class TestFramework: self.stop_nodes() - if success == TestStatus.PASSED: - self.log.info("Test success") - shutil.rmtree(self.root_dir) - handlers = self.log.handlers[:] for handler in handlers: self.log.removeHandler(handler) handler.close() logging.shutdown() + if success == TestStatus.PASSED: + shutil.rmtree(self.root_dir) + sys.exit(exit_code)