Skip to content

Commit

Permalink
Merge pull request #262 from SirSevenG/dev_pr
Browse files Browse the repository at this point in the history
[QA] Pytest-based RPC and CC tests updates
  • Loading branch information
tonymorony authored Jan 14, 2020
2 parents 19ba2c9 + 8eb9741 commit 50f7101
Show file tree
Hide file tree
Showing 28 changed files with 2,297 additions and 381 deletions.
232 changes: 208 additions & 24 deletions .github/workflows/komodod_ci.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
name: CI test
name: Komodo CI

on: [push, pull_request]

jobs:
ci:
name: ${{ matrix.os }} CI
runs-on: ${{ matrix.os }}

strategy:
matrix:
os: [macOS-latest, ubuntu-18.04]
linux-build:
name: Linux Build
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v1
Expand All @@ -20,18 +16,31 @@ jobs:
sudo apt-get remove php7.1-fpm php7.2-fpm php7.3-fpm php7.3-common
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install build-essential pkg-config libc6-dev m4 g++-multilib autoconf libtool libncurses-dev unzip git python zlib1g-dev wget bsdmainutils automake libboost-all-dev libssl-dev libprotobuf-dev protobuf-compiler libqrencode-dev libdb++-dev ntp ntpdate nano software-properties-common curl libevent-dev libcurl4-gnutls-dev cmake clang libsodium-dev -y
sudo apt-get install python3.6 python3-pip python3-setuptools libgnutls28-dev
pip3 install setuptools wheel
pip3 install slick-bitcoinrpc pytest wget
# params we will need for tests execution
sudo apt-get update
sudo apt-get install -q \
curl \
python3 \
python3-dev \
python3-setuptools \
python3-pip \
libcurl4-openssl-dev \
libssl-dev -y
python3 -m pip install setuptools wheel
python3 -m pip install slick-bitcoinrpc pytest wget jsonschema
./zcutil/fetch-params.sh
- name: Build (Linux)
if: runner.os == 'Linux'
run: |
# flag for some CC tests transactions - so DO NOT USE THIS CI ARTIFACTS IN PRODUCTION!!!
CONFIGURE_FLAGS='CPPFLAGS=-DTESTMODE' ./zcutil/build.sh -j$(nproc)
tar -czvf komodo-linux.tar.gz src/komodod src/komodo-cli
- name: Upload komodo-linux.tar.gz as artifact
uses: actions/upload-artifact@v1
with:
name: komodo-linux
path: ./komodo-linux.tar.gz
# - name: Install deps (macOS)
# if: runner.os == 'macOS'
# run: |
Expand All @@ -56,16 +65,192 @@ jobs:
# CONFIGURE_FLAGS='CPPFLAGS=-DTESTMODE' ./zcutil/build-mac.sh -j4
# - name: Run CC tests
# if: runner.os == 'Linux' || runner.os == 'macOS'
- name: Run CC tests
if: runner.os == 'Linux'


linux-test-dice-token-reards-faucet-cc:
name: Test (Linux/Dice, Token, Faucet, Rewards)
runs-on: ubuntu-latest
needs: linux-build

steps:
- uses: actions/checkout@v1

- name: Install deps (Dice, Token, Faucet, Rewards CC)
run: |
sudo apt-get update
sudo apt-get install -q \
curl \
python3 \
python3-dev \
python3-setuptools \
python3-pip \
libcurl4-openssl-dev \
libssl-dev -y
python3 -m pip install setuptools wheel
python3 -m pip install slick-bitcoinrpc pytest wget jsonschema
- name: Download komodo-linux.tar.gz
uses: actions/download-artifact@v1
with:
name: komodo-linux

- name: Test CC (Linux)
run: |
mv komodo-linux/komodo-linux.tar.gz .
mkdir -p src
tar xzvf komodo-linux.tar.gz
./zcutil/fetch-params.sh
cd qa/pytest_komodo
./ci_setup.sh "cc_modules/test_dice.py cc_modules/test_faucet.py cc_modules/test_token.py cc_modules/test_rewards.py"
linux-test-oracles:
name: Test (Linux/OraclesCC)
runs-on: ubuntu-latest
needs: linux-build

steps:
- uses: actions/checkout@v1

- name: Install deps (OraclesCC)
run: |
sudo apt-get update
sudo apt-get install -q \
curl \
python3 \
python3-dev \
python3-setuptools \
python3-pip \
libcurl4-openssl-dev \
libssl-dev -y
python3 -m pip install setuptools wheel
python3 -m pip install slick-bitcoinrpc pytest wget jsonschema
- name: Download komodo-linux.tar.gz
uses: actions/download-artifact@v1
with:
name: komodo-linux

- name: Oracles Test (Linux)
run: |
mv komodo-linux/komodo-linux.tar.gz .
mkdir -p src
tar xzvf komodo-linux.tar.gz
./zcutil/fetch-params.sh
cd qa/pytest_komodo
./ci_setup.sh cc_modules/test_oracles.py
linux-test-baserpc:
name: Test (Linux/BasicRPC)
runs-on: ubuntu-latest
needs: linux-build

steps:
- uses: actions/checkout@v1

- name: Install deps (BasicRPC)
run: |
sudo apt-get update
sudo apt-get install -q \
curl \
python3 \
python3-dev \
python3-setuptools \
python3-pip \
libcurl4-openssl-dev \
libssl-dev -y
python3 -m pip install setuptools wheel
python3 -m pip install slick-bitcoinrpc pytest wget jsonschema
- name: Download komodo-linux.tar.gz
uses: actions/download-artifact@v1
with:
name: komodo-linux

- name: BasicRPC Test (Linux)
run: |
mv komodo-linux/komodo-linux.tar.gz .
mkdir -p src
tar xzvf komodo-linux.tar.gz
./zcutil/fetch-params.sh
cd qa/pytest_komodo
./ci_setup.sh basic
linux-test-channels:
name: Test (Linux/ChannelsCC)
runs-on: ubuntu-latest
needs: linux-build

steps:
- uses: actions/checkout@v1

- name: Install deps (ChannelsCC)
run: |
sudo apt-get update
sudo apt-get install -q \
curl \
python3 \
python3-dev \
python3-setuptools \
python3-pip \
libcurl4-openssl-dev \
libssl-dev -y
python3 -m pip install setuptools wheel
python3 -m pip install slick-bitcoinrpc pytest wget jsonschema
- name: Download komodo-linux.tar.gz
uses: actions/download-artifact@v1
with:
name: komodo-linux

- name: Channels Test (Linux)
run: |
cd qa/rpc-tests/cc_pytest
./ci_setup.sh
mv komodo-linux/komodo-linux.tar.gz .
mkdir -p src
tar xzvf komodo-linux.tar.gz
./zcutil/fetch-params.sh
cd qa/pytest_komodo
./ci_setup.sh cc_modules/test_channels.py
linux-test-heir:
name: Test (Linux/HeirCC)
runs-on: ubuntu-latest
needs: linux-build

job-win-build:
steps:
- uses: actions/checkout@v1

- name: Install deps (HeirCC)
run: |
sudo apt-get update
sudo apt-get install -q \
curl \
python3 \
python3-dev \
python3-setuptools \
python3-pip \
libcurl4-openssl-dev \
libssl-dev -y
python3 -m pip install setuptools wheel
python3 -m pip install slick-bitcoinrpc pytest wget jsonschema
- name: Download komodo-linux.tar.gz
uses: actions/download-artifact@v1
with:
name: komodo-linux

- name: Heir Test (Linux)
run: |
mv komodo-linux/komodo-linux.tar.gz .
mkdir -p src
tar xzvf komodo-linux.tar.gz
./zcutil/fetch-params.sh
cd qa/pytest_komodo
./ci_setup.sh cc_modules/test_heir.py
windows-build:

name: Win Build
runs-on: ubuntu-16.04
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v1
Expand All @@ -84,11 +269,10 @@ jobs:
rustup target add x86_64-pc-windows-gnu
sudo update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix
sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
./zcutil/build-win.sh -j 2
CONFIGURE_FLAGS='CPPFLAGS=-DTESTMODE' ./zcutil/build-win.sh -j$(nproc)
zip --junk-paths komodod_win src/komodod.exe
- name: Upload komodod.exe as artifact
uses: actions/upload-artifact@v1
with:
name: komodod.exe
path: ./src/komodod.exe

#TODO: windows tests
name: komodod_win
path: ./komodod_win.zip
40 changes: 40 additions & 0 deletions qa/pytest_komodo/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
Updated RPC unit-tests infrastructure for Antara smart-chain custom modules

Using pytest as testing framework and slickrpc as rpc proxy. No more python2 support.

To start just set test nodes RPC credentials in `nodesconfig.json`.
`chainconfig.json` contains daemon start cli params, change hardcoded parameters to use with your chain, default parmas are valid for test bootstrap `http://159.69.45.70/bootstrap.tar.gz`

`is_fresh_chain=False` param allows to run tests on existing chains (it skips some tests which expecting first CC usage on chain)

So yes - you can run these tests on existing chains, just RPC creds (and wallets with some balance) needed.

# Dependencies
On Linux and MacOS:
```bash
pip3 install setuptools wheel slick-bitcoinrpc pytest wget jsonschema
```
On Windows:
```cmd
pip3 install setuptools wheel python-bitcoinrpc pytest wget jsonschema
```
slik-bitcoinrpc relies on libcurl and can have issues on Windows machines, thus we suggest to use different Proxy library.

# Usage

In `~/komodo/qa/rpc-tests/pytest_rpc` directory:

`python3 -m pytest basic -s` - starts all basic tests
`python3 -m pytest cc_modules/test_dice.py -s` - starts specific test, dice in this case

`-s` flag is optional, just displaying python prints which might be helpful in debugging

`ci_test.sh cc_modules` script will start a all CCs full test suite from bootstrapped chain - best way to start the tests
You still can run specific test via script `ci_test.sh basic/test_utils.py`

The `start_chains.py` script can spin needed amount of nodes and start the test chain.
You can find an example of this script usage in `ci_setup.sh`. Don't forget to change `test_config.json` accordingly to the chain params.

On Windows machines use `start_ci.bat` instead of `ci_setup.sh`

Also there is bootstrap downloading functionality in `start_chains.py` what should be quite useful for automated testing setups
Loading

0 comments on commit 50f7101

Please sign in to comment.