difftreelog
Merge pull request #215 from UniqueNetwork/ci/speedup-tests
in: master
Speedup tests
13 files changed
.dockerignorediffbeforeafterboth--- a/.dockerignore
+++ b/.dockerignore
@@ -2,5 +2,8 @@
.github/
doc/
target/
+tests/
chain-data*/
smart_contract/
+Dockerfile-parachain
+docker-compose-tests-parachain.yml
Cargo.lockdiffbeforeafterboth--- a/Cargo.lock
+++ b/Cargo.lock
@@ -3952,7 +3952,7 @@
"pallet-offences-benchmarking",
"pallet-proxy",
"pallet-recovery",
- "pallet-scheduler 4.0.0-dev",
+ "pallet-scheduler",
"pallet-session",
"pallet-session-benchmarking",
"pallet-society",
@@ -5306,12 +5306,12 @@
"pallet-nft-charge-transaction",
"pallet-nft-transaction-payment",
"pallet-randomness-collective-flip",
- "pallet-scheduler 3.0.0",
"pallet-sudo",
"pallet-timestamp",
"pallet-transaction-payment",
"pallet-transaction-payment-rpc-runtime-api",
"pallet-treasury",
+ "pallet-unq-scheduler",
"pallet-vesting",
"pallet-xcm",
"parachain-info",
@@ -6276,30 +6276,12 @@
source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.10#420db18eaa1a1f5ce9ba40dd6ccb69f7b3dd9bb7"
dependencies = [
"enumflags2",
- "frame-support",
- "frame-system",
- "parity-scale-codec",
- "sp-io",
- "sp-runtime",
- "sp-std",
-]
-
-[[package]]
-name = "pallet-scheduler"
-version = "3.0.0"
-dependencies = [
- "frame-benchmarking",
"frame-support",
"frame-system",
- "log",
"parity-scale-codec",
- "serde",
- "sp-core",
"sp-io",
"sp-runtime",
"sp-std",
- "substrate-test-utils",
- "up-sponsorship",
]
[[package]]
@@ -6517,6 +6499,24 @@
]
[[package]]
+name = "pallet-unq-scheduler"
+version = "3.0.0"
+dependencies = [
+ "frame-benchmarking",
+ "frame-support",
+ "frame-system",
+ "log",
+ "parity-scale-codec",
+ "serde",
+ "sp-core",
+ "sp-io",
+ "sp-runtime",
+ "sp-std",
+ "substrate-test-utils",
+ "up-sponsorship",
+]
+
+[[package]]
name = "pallet-utility"
version = "4.0.0-dev"
source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.10#420db18eaa1a1f5ce9ba40dd6ccb69f7b3dd9bb7"
@@ -7772,7 +7772,7 @@
"pallet-offences",
"pallet-offences-benchmarking",
"pallet-proxy",
- "pallet-scheduler 4.0.0-dev",
+ "pallet-scheduler",
"pallet-session",
"pallet-session-benchmarking",
"pallet-staking",
@@ -12787,7 +12787,7 @@
"pallet-offences-benchmarking",
"pallet-proxy",
"pallet-recovery",
- "pallet-scheduler 4.0.0-dev",
+ "pallet-scheduler",
"pallet-session",
"pallet-session-benchmarking",
"pallet-society",
Dockerfile-parachaindiffbeforeafterboth--- a/Dockerfile-parachain
+++ b/Dockerfile-parachain
@@ -1,8 +1,6 @@
-# ===== BUILD ======
-FROM phusion/baseimage:focal-1.0.0 as builder
+# ===== Rust builder =====
+FROM phusion/baseimage:focal-1.0.0 as rust-builder
LABEL maintainer="Unique.Network"
-
-
ARG RUST_TOOLCHAIN=nightly-2021-06-28
#ARG RUST_C=1.55.0-nightly
@@ -24,52 +22,58 @@
#RUN echo $POLKA_VERSION
#RUN echo $NFT_BRANCH
+ARG PROFILE=release
+ENV CARGO_HOME="/cargo-home"
+ENV PATH="/cargo-home/bin:$PATH"
-ARG PROFILE=release
+RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none
RUN apt-get update && \
apt-get dist-upgrade -y -o Dpkg::Options::="--force-confold" && \
apt-get install -y cmake pkg-config libssl-dev git clang
-# Get project and run it
-
-#RUN git clone -b $NFT_BRANCH https://$USER:$PASS@github.com/UniqueNetwork/unique-chain.git /nft_parachain
+RUN rustup toolchain uninstall $(rustup toolchain list) && \
+ rustup toolchain install $RUST_TOOLCHAIN && \
+ rustup default $RUST_TOOLCHAIN && \
+ rustup target list --installed && \
+ rustup show
+RUN rustup target add wasm32-unknown-unknown --toolchain $RUST_TOOLCHAIN
+RUN cargo install cargo-chef
RUN mkdir nft_parachain
WORKDIR /nft_parachain
+
+# ===== Chef =====
+FROM rust-builder as chef
+
COPY . .
+RUN cargo chef prepare --recipe-path recipe.json
+# ===== BUILD ======
+FROM rust-builder as builder
-RUN export CARGO_HOME="/cargo-home" && curl https://sh.rustup.rs -sSf | sh -s -- -y
-RUN export PATH="/cargo-home/bin:$PATH" && \
- export CARGO_HOME="/cargo-home" && \
- cargo fetch
+RUN mkdir nft_parachain
+WORKDIR /nft_parachain
-RUN export PATH="/cargo-home/bin:$PATH" && \
- export CARGO_HOME="/cargo-home" && \
- rustup toolchain uninstall $(rustup toolchain list) && \
- rustup toolchain install $RUST_TOOLCHAIN && \
-# rustup toolchain install $RUST_C && \
- rustup target add wasm32-unknown-unknown --toolchain $RUST_TOOLCHAIN && \
- rustup default $RUST_TOOLCHAIN && \
- rustup target list --installed && \
- rustup show
+COPY --from=chef /nft_parachain/recipe.json recipe.json
+RUN cargo chef cook --release --recipe-path recipe.json
-RUN export PATH="/cargo-home/bin:$PATH" && \
- export CARGO_HOME="/cargo-home" && \
- cargo build "--$PROFILE"
+COPY . .
+RUN cargo build "--$PROFILE"
# && \
# cargo test
+# ===== BUILD POLKADOT =====
+FROM rust-builder as builder-polkadot
+RUN mkdir nft_parachain
+WORKDIR /nft_parachain
RUN git clone -b $POLKA_VERSION --depth 1 https://github.com/paritytech/polkadot.git && \
cd polkadot && \
git tag -n && \
- export PATH="/cargo-home/bin:$PATH" && \
- export CARGO_HOME="/cargo-home" && \
cargo build --release
# ===== RUN ======
@@ -77,32 +81,28 @@
FROM phusion/baseimage:focal-1.0.0
ARG PROFILE=release
-
-COPY --from=builder /nft_parachain/target/$PROFILE/nft /nft_private/target/$PROFILE/
-COPY --from=builder /nft_parachain/polkadot/target/$PROFILE/polkadot /polkadot/target/$PROFILE/
-
-RUN apt-get update && \
- apt-get dist-upgrade -y -o Dpkg::Options::="--force-confold" && \
- apt-get install -y cmake pkg-config libssl-dev git clang
-RUN git clone https://github.com/paritytech/polkadot-launch.git
-
RUN apt-get -y update && \
apt-get -y upgrade && \
- apt-get -y install curl && \
+ apt-get -y install curl git && \
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash && \
export NVM_DIR="$HOME/.nvm" && \
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
nvm install v15.5.0 && \
nvm use v15.5.0
-# npm install --save @polkadot/api && \
-# npm install --save-dev mochawesome
+RUN git clone https://github.com/paritytech/polkadot-launch.git
-CMD export NVM_DIR="$HOME/.nvm" && \
+RUN export NVM_DIR="$HOME/.nvm" && \
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
cd /polkadot-launch && \
npm install --global yarn && \
- yarn install && \
- yarn build && \
- yarn start launch-config.json
\ No newline at end of file
+ yarn
+
+COPY --from=builder /nft_parachain/target/$PROFILE/nft /nft_private/target/$PROFILE/
+COPY --from=builder-polkadot /nft_parachain/polkadot/target/$PROFILE/polkadot /polkadot/target/$PROFILE/
+
+CMD export NVM_DIR="$HOME/.nvm" && \
+ [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
+ cd /polkadot-launch && \
+ yarn start launch-config.json
Dockerfile-testsdiffbeforeafterboth--- a/Dockerfile-tests
+++ /dev/null
@@ -1,35 +0,0 @@
-# ===== Integration Tests ======
-
-
-FROM ubuntu:20.04
-LABEL maintainer="UniqueNetwork.io"
-
-RUN apt -y update; apt -y upgrade; apt -y install curl
-
-
-RUN mkdir nft_parachain
-WORKDIR /nft_parachain
-
-COPY . .
-
-RUN apt-get -y update && \
- apt-get -y upgrade && \
- apt-get -y install curl && \
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash && \
- export NVM_DIR="$HOME/.nvm" && \
- [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
- nvm install v15.5.0 && \
- nvm use v15.5.0 && \
- npm install --save @polkadot/api && \
- npm install --save-dev mochawesome
-
-CMD sleep 60
-
-CMD export NVM_DIR="$HOME/.nvm" && \
- [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
- cd tests && \
- npm install --global yarn && \
- yarn add mochawesome && \
- yarn install && \
- sleep 120 && \
- NOW=$(date +%s) && yarn test --reporter mochawesome --reporter-options reportFilename=test-${NOW}
docker-compose-tests-parachain.ymldiffbeforeafterboth--- a/docker-compose-tests-parachain.yml
+++ b/docker-compose-tests-parachain.yml
@@ -31,11 +31,14 @@
container_name: integration_tests
image: integration_tests
build:
- context: ./
+ context: tests/
dockerfile: Dockerfile-tests
+ environment:
+ RPC_URL: http://blockchain_nodes:9934/
volumes:
- - ./tests/src/config_docker.ts:/nft_parachain/tests/src/config.ts
- - /home/ubuntu/mochawesome-report:/nft_parachain/tests/mochawesome-report
+ - ./tests/src/config_docker.ts:/nft_parachain/src/config.ts
+ - /home/ubuntu/mochawesome-report:/nft_parachain/mochawesome-report
+ - ./runtime_types.json:/runtime_types.json
# command: bash -c 'while true; do sleep 20; df -h; done'
networks:
- node_test_network
pallets/scheduler/Cargo.tomldiffbeforeafterboth--- a/pallets/scheduler/Cargo.toml
+++ b/pallets/scheduler/Cargo.toml
@@ -1,5 +1,5 @@
[package]
-name = "pallet-scheduler"
+name = "pallet-unq-scheduler"
version = "3.0.0"
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2018"
runtime/Cargo.tomldiffbeforeafterboth--- a/runtime/Cargo.toml
+++ b/runtime/Cargo.toml
@@ -68,7 +68,7 @@
'serde',
'pallet-inflation/std',
'pallet-nft/std',
- 'pallet-scheduler/std',
+ 'pallet-unq-scheduler/std',
'pallet-nft-charge-transaction/std',
'pallet-nft-transaction-payment/std',
'nft-data-structs/std',
@@ -387,7 +387,7 @@
pallet-nft = { path = '../pallets/nft', default-features = false, version = '3.0.0' }
pallet-inflation = { path = '../pallets/inflation', default-features = false, version = '3.0.0' }
nft-data-structs = { path = '../primitives/nft', default-features = false, version = '0.9.0' }
-pallet-scheduler = { path = '../pallets/scheduler', default-features = false, version = '3.0.0' }
+pallet-unq-scheduler = { path = '../pallets/scheduler', default-features = false, version = '3.0.0' }
# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }
pallet-nft-transaction-payment = { path = '../pallets/nft-transaction-payment', default-features = false, version = '3.0.0' }
pallet-nft-charge-transaction = { path = '../pallets/nft-charge-transaction', default-features = false, version = '3.0.0' }
runtime/src/lib.rsdiffbeforeafterboth--- a/runtime/src/lib.rs
+++ b/runtime/src/lib.rs
@@ -748,7 +748,7 @@
//pallet_contract_helpers::ContractSponsorshipHandler<Runtime>,
);
-impl pallet_scheduler::Config for Runtime {
+impl pallet_unq_scheduler::Config for Runtime {
type Event = Event;
type Origin = Origin;
type PalletsOrigin = OriginCaller;
@@ -821,7 +821,7 @@
// Unique Pallets
Inflation: pallet_inflation::{Pallet, Call, Storage} = 60,
Nft: pallet_nft::{Pallet, Call, Config<T>, Storage, Event<T>} = 61,
- Scheduler: pallet_scheduler::{Pallet, Call, Storage, Event<T>} = 62,
+ Scheduler: pallet_unq_scheduler::{Pallet, Call, Storage, Event<T>} = 62,
NftPayment: pallet_nft_transaction_payment::{Pallet, Call, Storage} = 63,
Charging: pallet_nft_charge_transaction::{Pallet, Call, Storage } = 64,
// ContractHelpers: pallet_contract_helpers::{Pallet, Call, Storage} = 65,
tests/.dockerignorediffbeforeafterboth--- /dev/null
+++ b/tests/.dockerignore
@@ -0,0 +1,2 @@
+node_modules/
+Dockerfile-tests
tests/Dockerfile-testsdiffbeforeafterboth--- /dev/null
+++ b/tests/Dockerfile-tests
@@ -0,0 +1,38 @@
+# ===== Integration Tests ======
+
+
+FROM ubuntu:20.04
+LABEL maintainer="UniqueNetwork.io"
+
+RUN apt -y update; apt -y upgrade; apt -y install curl
+
+
+RUN mkdir nft_parachain
+WORKDIR /nft_parachain
+
+RUN apt-get -y update && \
+ apt-get -y upgrade && \
+ apt-get -y install curl jq && \
+ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash && \
+ export NVM_DIR="$HOME/.nvm" && \
+ [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
+ nvm install v15.5.0 && \
+ nvm alias default v15.5.0 && \
+ nvm use default
+
+ENV YARN_CACHE_FOLDER ~/.yarn
+
+COPY package.json yarn.lock ./
+
+RUN export NVM_DIR="$HOME/.nvm" && \
+ [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
+ npm install --global yarn && \
+ yarn add mochawesome && \
+ yarn --pure-lockfile
+
+COPY . .
+
+CMD export NVM_DIR="$HOME/.nvm" && \
+ [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
+ ./scripts/wait_for_first_block.sh && \
+ NOW=$(date +%s) && yarn test --reporter mochawesome --reporter-options reportFilename=test-${NOW}
tests/package-lock.jsondiffbeforeafterbothno changes
tests/scripts/wait_for_first_block.shdiffbeforeafterboth--- /dev/null
+++ b/tests/scripts/wait_for_first_block.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+
+function do_rpc {
+ curl -s --header "Content-Type: application/json" -XPOST --data "{\"id\":1,\"jsonrpc\":\"2.0\",\"method\":\"$1\",\"params\":[$2]}" $RPC_URL
+}
+
+function is_started {
+ block_hash_rpc=$(do_rpc chain_getFinalizedHead)
+ echo Rpc response = $block_hash_rpc
+ block_hash=$(echo $block_hash_rpc | jq -r .result)
+ echo Head = $block_hash
+ block_id_hex=$(do_rpc chain_getHeader "\"$block_hash\"" | jq -r .result.number)
+ block_id=$((${block_id_hex}))
+ echo Id = $block_id
+ if (( $block_id > 1 )); then
+ return 0
+ fi
+ return 1
+}
+
+while ! is_started; do
+ echo "Waiting for first block..."
+ sleep 12
+done
+echo "Chain is running!"
tests/src/config_docker.tsdiffbeforeafterboth--- a/tests/src/config_docker.ts
+++ b/tests/src/config_docker.ts
@@ -6,8 +6,8 @@
import process from 'process';
const config = {
- substrateUrl: process.env.substrateUrl || 'ws://172.17.0.1:9944',
- frontierUrl: process.env.frontierUrl || 'http://172.17.0.1:9933',
+ substrateUrl: process.env.substrateUrl || 'ws://blockchain_nodes:9944',
+ frontierUrl: process.env.frontierUrl || 'http://blockchain_nodes:9933',
};
export default config;