From 0574898baedfe379a31c1e2fc541e958518c62cd Mon Sep 17 00:00:00 2001 From: Sergi Delgado Segura Date: Sun, 15 Dec 2019 15:14:01 +0100 Subject: [PATCH 1/5] Adds circule-ci config + updates requirements --- .circleci/config.yml | 65 +++++++++++++++++++++++++++++++++++++++++++ pisa/requirements.txt | 4 ++- test.file | 0 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 .circleci/config.yml create mode 100644 test.file diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..ea6f067 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,65 @@ +# Python CircleCI 2.0 configuration file +# +# Check https://circleci.com/docs/2.0/language-python/ for more details +# +version: 2 +jobs: + build: + docker: + # specify the version you desire here + # use `-browsers` prefix for selenium tests, e.g. `3.6.1-browsers` + - image: circleci/python:3.6.1 + + # Specify service dependencies here if necessary + # CircleCI maintains a library of pre-built images + # documented at https://circleci.com/docs/2.0/circleci-images/ + # - image: circleci/postgres:9.4 + + working_directory: ~/repo + + steps: + - checkout + + # Download and cache dependencies + - restore_cache: + keys: + - v1-dependencies-{{ checksum "pisa/requirements.txt" }} + # fallback to using the latest cache if no exact match is found + - v1-dependencies- + + - run: + name: install dependencies + command: | + python3 -m venv venv + . venv/bin/activate + pip install -r pisa/requirements.txt + + - save_cache: + paths: + - ./venv + key: v1-dependencies-{{ checksum "pisa/requirements.txt" }} + + # run tests! + # this example uses Django's built-in test-runner + # other common Python testing frameworks include pytest and nose + # https://pytest.org + # https://nose.readthedocs.io + - run: + name: create config + command: cp pisa/sample_conf.py pisa/conf.py + + - run: + name: create keypair + command: | + . venv/bin/activate + python apps/generate_key.py + + - run: + name: run tests + command: | + . venv/bin/activate + pytest test/unit + + # - store_artifacts: + # path: test-reports + # destination: test-reports diff --git a/pisa/requirements.txt b/pisa/requirements.txt index 8ec7402..024cf09 100644 --- a/pisa/requirements.txt +++ b/pisa/requirements.txt @@ -1,4 +1,6 @@ zmq flask cryptography -requests \ No newline at end of file +requests +plyvel +pytest \ No newline at end of file diff --git a/test.file b/test.file new file mode 100644 index 0000000..e69de29 From fac0edf0c57ba8ff31a62dd7257d1a9520241ffe Mon Sep 17 00:00:00 2001 From: Sergi Delgado Segura Date: Mon, 16 Dec 2019 11:02:17 +0100 Subject: [PATCH 2/5] Remove creating keys from config --- .circleci/config.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index ea6f067..d3a6d2b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -49,13 +49,7 @@ jobs: command: cp pisa/sample_conf.py pisa/conf.py - run: - name: create keypair - command: | - . venv/bin/activate - python apps/generate_key.py - - - run: - name: run tests + name: run pisa tests command: | . venv/bin/activate pytest test/unit From bc250bd8146d06551169a94b4c426658ed71ae57 Mon Sep 17 00:00:00 2001 From: Sergi Delgado Segura Date: Mon, 16 Dec 2019 11:06:11 +0100 Subject: [PATCH 3/5] Gives some default values to sample_conf --- pisa/sample_conf.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pisa/sample_conf.py b/pisa/sample_conf.py index e664e81..71e64a0 100644 --- a/pisa/sample_conf.py +++ b/pisa/sample_conf.py @@ -1,14 +1,14 @@ # bitcoind -BTC_RPC_USER = None -BTC_RPC_PASSWD = None -BTC_RPC_HOST = None -BTC_RPC_PORT = None -BTC_NETWORK = None +BTC_RPC_USER = "user" +BTC_RPC_PASSWD = "passwd" +BTC_RPC_HOST = "localhost" +BTC_RPC_PORT = 18443 +BTC_NETWORK = "regtest" # ZMQ -FEED_PROTOCOL = None -FEED_ADDR = None -FEED_PORT = None +FEED_PROTOCOL = "tcp" +FEED_ADDR = "127.0.0.1" +FEED_PORT = 28332 # PISA MAX_APPOINTMENTS = 100 From 61663e89d77a9739ed4c2e8f9dfd26162e43415f Mon Sep 17 00:00:00 2001 From: Sergi Delgado Segura Date: Mon, 16 Dec 2019 11:26:51 +0100 Subject: [PATCH 4/5] Refactors tests folder to separate different modules Each module has a different folder and they do not share methods now. At some point they should be split in different repos --- test/{unit => apps}/__init__.py | 0 test/apps/cli/__init__.py | 0 test/apps/cli/unit/__init__.py | 0 test/apps/cli/unit/conftest.py | 7 +++++++ test/apps/cli/{ => unit}/test_pisa_cli.py | 2 +- test/common/__init__.py | 0 test/common/unit/__init__.py | 0 test/common/unit/conftest.py | 7 +++++++ test/{ => common}/unit/test_cryptographer.py | 2 +- test/pisa/__init__.py | 0 test/pisa/unit/__init__.py | 0 test/{ => pisa}/unit/conftest.py | 0 test/{ => pisa}/unit/test_api.py | 2 +- test/{ => pisa}/unit/test_appointment.py | 2 +- test/{ => pisa}/unit/test_blob.py | 2 +- test/{ => pisa}/unit/test_block_processor.py | 2 +- test/{ => pisa}/unit/test_builder.py | 2 +- test/{ => pisa}/unit/test_carrier.py | 2 +- test/{ => pisa}/unit/test_cleaner.py | 2 +- test/{ => pisa}/unit/test_db_manager.py | 2 +- test/{ => pisa}/unit/test_encrypted_blob.py | 2 +- test/{ => pisa}/unit/test_inspector.py | 2 +- test/{ => pisa}/unit/test_responder.py | 2 +- test/{ => pisa}/unit/test_tools.py | 0 test/{ => pisa}/unit/test_watcher.py | 2 +- test/simulator/test_bitcoin_sim.py | 2 +- 26 files changed, 29 insertions(+), 15 deletions(-) rename test/{unit => apps}/__init__.py (100%) create mode 100644 test/apps/cli/__init__.py create mode 100644 test/apps/cli/unit/__init__.py create mode 100644 test/apps/cli/unit/conftest.py rename test/apps/cli/{ => unit}/test_pisa_cli.py (98%) create mode 100644 test/common/__init__.py create mode 100644 test/common/unit/__init__.py create mode 100644 test/common/unit/conftest.py rename test/{ => common}/unit/test_cryptographer.py (98%) create mode 100644 test/pisa/__init__.py create mode 100644 test/pisa/unit/__init__.py rename test/{ => pisa}/unit/conftest.py (100%) rename test/{ => pisa}/unit/test_api.py (99%) rename test/{ => pisa}/unit/test_appointment.py (98%) rename test/{ => pisa}/unit/test_blob.py (87%) rename test/{ => pisa}/unit/test_block_processor.py (97%) rename test/{ => pisa}/unit/test_builder.py (95%) rename test/{ => pisa}/unit/test_carrier.py (96%) rename test/{ => pisa}/unit/test_cleaner.py (99%) rename test/{ => pisa}/unit/test_db_manager.py (99%) rename test/{ => pisa}/unit/test_encrypted_blob.py (89%) rename test/{ => pisa}/unit/test_inspector.py (98%) rename test/{ => pisa}/unit/test_responder.py (99%) rename test/{ => pisa}/unit/test_tools.py (100%) rename test/{ => pisa}/unit/test_watcher.py (99%) diff --git a/test/unit/__init__.py b/test/apps/__init__.py similarity index 100% rename from test/unit/__init__.py rename to test/apps/__init__.py diff --git a/test/apps/cli/__init__.py b/test/apps/cli/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test/apps/cli/unit/__init__.py b/test/apps/cli/unit/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test/apps/cli/unit/conftest.py b/test/apps/cli/unit/conftest.py new file mode 100644 index 0000000..c87a930 --- /dev/null +++ b/test/apps/cli/unit/conftest.py @@ -0,0 +1,7 @@ +import random + + +def get_random_value_hex(nbytes): + pseudo_random_value = random.getrandbits(8 * nbytes) + prv_hex = "{:x}".format(pseudo_random_value) + return prv_hex.zfill(2 * nbytes) diff --git a/test/apps/cli/test_pisa_cli.py b/test/apps/cli/unit/test_pisa_cli.py similarity index 98% rename from test/apps/cli/test_pisa_cli.py rename to test/apps/cli/unit/test_pisa_cli.py index 0067586..e14fd0b 100644 --- a/test/apps/cli/test_pisa_cli.py +++ b/test/apps/cli/unit/test_pisa_cli.py @@ -7,7 +7,7 @@ from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.asymmetric import ec import apps.cli.pisa_cli as pisa_cli -from test.unit.conftest import get_random_value_hex +from test.apps.cli.unit.conftest import get_random_value_hex # TODO: should find a way of doing without this from apps.cli.pisa_cli import build_appointment diff --git a/test/common/__init__.py b/test/common/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test/common/unit/__init__.py b/test/common/unit/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test/common/unit/conftest.py b/test/common/unit/conftest.py new file mode 100644 index 0000000..c87a930 --- /dev/null +++ b/test/common/unit/conftest.py @@ -0,0 +1,7 @@ +import random + + +def get_random_value_hex(nbytes): + pseudo_random_value = random.getrandbits(8 * nbytes) + prv_hex = "{:x}".format(pseudo_random_value) + return prv_hex.zfill(2 * nbytes) diff --git a/test/unit/test_cryptographer.py b/test/common/unit/test_cryptographer.py similarity index 98% rename from test/unit/test_cryptographer.py rename to test/common/unit/test_cryptographer.py index 9e4d160..36521b0 100644 --- a/test/unit/test_cryptographer.py +++ b/test/common/unit/test_cryptographer.py @@ -3,7 +3,7 @@ import binascii from apps.cli.blob import Blob from common.cryptographer import Cryptographer from pisa.encrypted_blob import EncryptedBlob -from test.unit.conftest import get_random_value_hex +from test.common.unit.conftest import get_random_value_hex data = "6097cdf52309b1b2124efeed36bd34f46dc1c25ad23ac86f28380f746254f777" key = "b2e984a570f6f49bc38ace178e09147b0aa296cbb7c92eb01412f7e2d07b5659" diff --git a/test/pisa/__init__.py b/test/pisa/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test/pisa/unit/__init__.py b/test/pisa/unit/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test/unit/conftest.py b/test/pisa/unit/conftest.py similarity index 100% rename from test/unit/conftest.py rename to test/pisa/unit/conftest.py diff --git a/test/unit/test_api.py b/test/pisa/unit/test_api.py similarity index 99% rename from test/unit/test_api.py rename to test/pisa/unit/test_api.py index c7ed0ad..68a845b 100644 --- a/test/unit/test_api.py +++ b/test/pisa/unit/test_api.py @@ -11,7 +11,7 @@ from pisa.tools import bitcoin_cli from pisa import HOST, PORT, c_logger from pisa.conf import MAX_APPOINTMENTS -from test.unit.conftest import ( +from test.pisa.unit.conftest import ( generate_block, generate_blocks, get_random_value_hex, diff --git a/test/unit/test_appointment.py b/test/pisa/unit/test_appointment.py similarity index 98% rename from test/unit/test_appointment.py rename to test/pisa/unit/test_appointment.py index fa1c074..8af351e 100644 --- a/test/unit/test_appointment.py +++ b/test/pisa/unit/test_appointment.py @@ -5,7 +5,7 @@ from pisa import c_logger from pisa.appointment import Appointment from pisa.encrypted_blob import EncryptedBlob -from test.unit.conftest import get_random_value_hex +from test.pisa.unit.conftest import get_random_value_hex from common.constants import LOCATOR_LEN_BYTES diff --git a/test/unit/test_blob.py b/test/pisa/unit/test_blob.py similarity index 87% rename from test/unit/test_blob.py rename to test/pisa/unit/test_blob.py index 21b7bf6..302862b 100644 --- a/test/unit/test_blob.py +++ b/test/pisa/unit/test_blob.py @@ -2,7 +2,7 @@ from binascii import unhexlify from pisa import c_logger from apps.cli.blob import Blob -from test.unit.conftest import get_random_value_hex +from test.pisa.unit.conftest import get_random_value_hex c_logger.disabled = True diff --git a/test/unit/test_block_processor.py b/test/pisa/unit/test_block_processor.py similarity index 97% rename from test/unit/test_block_processor.py rename to test/pisa/unit/test_block_processor.py index 972d42c..effd6f6 100644 --- a/test/unit/test_block_processor.py +++ b/test/pisa/unit/test_block_processor.py @@ -2,7 +2,7 @@ import pytest from pisa import c_logger from pisa.block_processor import BlockProcessor -from test.unit.conftest import get_random_value_hex, generate_block, generate_blocks +from test.pisa.unit.conftest import get_random_value_hex, generate_block, generate_blocks c_logger.disabled = True diff --git a/test/unit/test_builder.py b/test/pisa/unit/test_builder.py similarity index 95% rename from test/unit/test_builder.py rename to test/pisa/unit/test_builder.py index d1e3775..c45ef47 100644 --- a/test/unit/test_builder.py +++ b/test/pisa/unit/test_builder.py @@ -1,7 +1,7 @@ from uuid import uuid4 from pisa.builder import Builder -from test.unit.conftest import get_random_value_hex, generate_dummy_appointment, generate_dummy_tracker +from test.pisa.unit.conftest import get_random_value_hex, generate_dummy_appointment, generate_dummy_tracker def test_build_appointments(): diff --git a/test/unit/test_carrier.py b/test/pisa/unit/test_carrier.py similarity index 96% rename from test/unit/test_carrier.py rename to test/pisa/unit/test_carrier.py index 4e6eddf..3e473d1 100644 --- a/test/unit/test_carrier.py +++ b/test/pisa/unit/test_carrier.py @@ -4,7 +4,7 @@ from pisa import c_logger from pisa.carrier import Carrier from test.simulator.utils import sha256d from test.simulator.transaction import TX -from test.unit.conftest import generate_blocks, generate_block, get_random_value_hex +from test.pisa.unit.conftest import generate_blocks, get_random_value_hex from pisa.rpc_errors import RPC_VERIFY_ALREADY_IN_CHAIN, RPC_DESERIALIZATION_ERROR c_logger.disabled = True diff --git a/test/unit/test_cleaner.py b/test/pisa/unit/test_cleaner.py similarity index 99% rename from test/unit/test_cleaner.py rename to test/pisa/unit/test_cleaner.py index 0a7007b..1f99d60 100644 --- a/test/unit/test_cleaner.py +++ b/test/pisa/unit/test_cleaner.py @@ -7,7 +7,7 @@ from pisa.cleaner import Cleaner from pisa.appointment import Appointment from pisa.db_manager import WATCHER_PREFIX -from test.unit.conftest import get_random_value_hex +from test.pisa.unit.conftest import get_random_value_hex from common.constants import LOCATOR_LEN_BYTES, LOCATOR_LEN_HEX diff --git a/test/unit/test_db_manager.py b/test/pisa/unit/test_db_manager.py similarity index 99% rename from test/unit/test_db_manager.py rename to test/pisa/unit/test_db_manager.py index 60c070c..49a5e43 100644 --- a/test/unit/test_db_manager.py +++ b/test/pisa/unit/test_db_manager.py @@ -9,7 +9,7 @@ from pisa.db_manager import WATCHER_LAST_BLOCK_KEY, RESPONDER_LAST_BLOCK_KEY, LO from common.constants import LOCATOR_LEN_BYTES -from test.unit.conftest import get_random_value_hex, generate_dummy_appointment +from test.pisa.unit.conftest import get_random_value_hex, generate_dummy_appointment @pytest.fixture(scope="module") diff --git a/test/unit/test_encrypted_blob.py b/test/pisa/unit/test_encrypted_blob.py similarity index 89% rename from test/unit/test_encrypted_blob.py rename to test/pisa/unit/test_encrypted_blob.py index 33b4ece..ca15277 100644 --- a/test/unit/test_encrypted_blob.py +++ b/test/pisa/unit/test_encrypted_blob.py @@ -1,6 +1,6 @@ from pisa import c_logger from pisa.encrypted_blob import EncryptedBlob -from test.unit.conftest import get_random_value_hex +from test.pisa.unit.conftest import get_random_value_hex c_logger.disabled = True diff --git a/test/unit/test_inspector.py b/test/pisa/unit/test_inspector.py similarity index 98% rename from test/unit/test_inspector.py rename to test/pisa/unit/test_inspector.py index f7705f4..9c80dff 100644 --- a/test/unit/test_inspector.py +++ b/test/pisa/unit/test_inspector.py @@ -11,7 +11,7 @@ from pisa.appointment import Appointment from pisa.block_processor import BlockProcessor from pisa.conf import MIN_TO_SELF_DELAY -from test.unit.conftest import get_random_value_hex, generate_dummy_appointment_data, generate_keypair +from test.pisa.unit.conftest import get_random_value_hex, generate_dummy_appointment_data, generate_keypair from common.constants import LOCATOR_LEN_BYTES, LOCATOR_LEN_HEX from common.cryptographer import Cryptographer diff --git a/test/unit/test_responder.py b/test/pisa/unit/test_responder.py similarity index 99% rename from test/unit/test_responder.py rename to test/pisa/unit/test_responder.py index 67846a6..302dd00 100644 --- a/test/unit/test_responder.py +++ b/test/pisa/unit/test_responder.py @@ -18,7 +18,7 @@ from common.tools import check_sha256_hex_format from test.simulator.utils import sha256d from test.simulator.bitcoind_sim import TX -from test.unit.conftest import generate_block, generate_blocks, get_random_value_hex +from test.pisa.unit.conftest import generate_block, generate_blocks, get_random_value_hex c_logger.disabled = True diff --git a/test/unit/test_tools.py b/test/pisa/unit/test_tools.py similarity index 100% rename from test/unit/test_tools.py rename to test/pisa/unit/test_tools.py diff --git a/test/unit/test_watcher.py b/test/pisa/unit/test_watcher.py similarity index 99% rename from test/unit/test_watcher.py rename to test/pisa/unit/test_watcher.py index cd2db0d..8ea07cf 100644 --- a/test/unit/test_watcher.py +++ b/test/pisa/unit/test_watcher.py @@ -8,7 +8,7 @@ from pisa import c_logger from pisa.watcher import Watcher from pisa.responder import Responder from pisa.tools import bitcoin_cli -from test.unit.conftest import ( +from test.pisa.unit.conftest import ( generate_block, generate_blocks, generate_dummy_appointment, diff --git a/test/simulator/test_bitcoin_sim.py b/test/simulator/test_bitcoin_sim.py index 222fd9d..d24d7fd 100644 --- a/test/simulator/test_bitcoin_sim.py +++ b/test/simulator/test_bitcoin_sim.py @@ -4,7 +4,7 @@ from time import sleep from threading import Thread from test.simulator.transaction import TX -from test.unit.conftest import get_random_value_hex +from test.pisa.unit import get_random_value_hex from test.simulator.bitcoind_sim import run_simulator from pisa.utils.auth_proxy import AuthServiceProxy, JSONRPCException from pisa.conf import BTC_RPC_USER, BTC_RPC_PASSWD, BTC_RPC_HOST, BTC_RPC_PORT From 9034e6d7024dbdfeff498437dd53bef4ed0ed39a Mon Sep 17 00:00:00 2001 From: Sergi Delgado Segura Date: Mon, 16 Dec 2019 11:28:26 +0100 Subject: [PATCH 5/5] Updates circleci config to match bc250bd8146d06551169a94b4c426658ed71ae57 Cli tests are commented out for now --- .circleci/config.yml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index d3a6d2b..ae0798c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -49,10 +49,22 @@ jobs: command: cp pisa/sample_conf.py pisa/conf.py - run: - name: run pisa tests + name: run pisa unit tests command: | . venv/bin/activate - pytest test/unit + pytest test/pisa/unit/ + + - run: + name: run common unit tests + command: | + . venv/bin/activate + pytest test/common/unit + +# - run: +# name: run cli unit tests +# command: | +# . venv/bin/activate +# pytest test/apps/cli/unit # - store_artifacts: # path: test-reports