git.delta.rocks / unique-network / refs/commits / e70284a7c5ed

difftreelog

Merge pull request #215 from UniqueNetwork/ci/speedup-tests

Alexei2021-10-20parents: #b24dbee #78977ee.patch.diff
in: master
Speedup tests

13 files changed

modified.dockerignorediffbeforeafterboth
--- a/.dockerignore
+++ b/.dockerignore
@@ -2,5 +2,8 @@
 .github/
 doc/
 target/
+tests/
 chain-data*/
 smart_contract/
+Dockerfile-parachain
+docker-compose-tests-parachain.yml
modifiedCargo.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",
modifiedDockerfile-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
deletedDockerfile-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}
modifieddocker-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
modifiedpallets/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"
modifiedruntime/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' }
modifiedruntime/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,
addedtests/.dockerignorediffbeforeafterboth
--- /dev/null
+++ b/tests/.dockerignore
@@ -0,0 +1,2 @@
+node_modules/
+Dockerfile-tests
addedtests/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}
deletedtests/package-lock.jsondiffbeforeafterboth

no changes

addedtests/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!"
modifiedtests/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;