Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
209 changes: 201 additions & 8 deletions .github/workflows/casper-node.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,21 +24,34 @@ on:
- '**.md'

jobs:
lints:
name: tests
checks:
name: checks
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Checkout
uses: actions/checkout@v4
with:
persist-credentials: false

- name: setup
run: make setup

- name: setup ubuntu
run: |
sudo apt-get -y install wabt
sudo apt-get -y install wabt

- name: cache setup tools
uses: actions/cache@v4
with:
path: |
~/.rustup/toolchains
~/.rustup/update-hashes
~/.rustup/settings.toml
~/.cargo/bin/cargo-audit
key: setup-tools-${{ runner.os }}-${{ hashFiles('rust-toolchain.toml', 'smart_contracts/rust-toolchain', 'Makefile') }}
restore-keys: |
setup-tools-${{ runner.os }}-

- name: setup
run: make setup

- uses: Swatinem/rust-cache@v2

Expand All @@ -60,8 +73,188 @@ jobs:
- name: check-testing-features
run: make check-testing-features

test:
name: test
runs-on: ubuntu-latest
timeout-minutes: 60
needs:
- build_contracts
steps:
- name: Checkout
uses: actions/checkout@v4
with:
persist-credentials: false

- name: setup ubuntu
run: |
sudo apt-get -y install wabt

- name: cache setup tools
uses: actions/cache@v4
with:
path: |
~/.rustup/toolchains
~/.rustup/update-hashes
~/.rustup/settings.toml
~/.cargo/bin/cargo-audit
key: setup-tools-${{ runner.os }}-${{ hashFiles('rust-toolchain.toml', 'smart_contracts/rust-toolchain', 'Makefile') }}
restore-keys: |
setup-tools-${{ runner.os }}-

- name: setup
run: make setup

- uses: Swatinem/rust-cache@v2

- name: download smart contracts
uses: actions/download-artifact@v4
with:
name: smart-contracts
path: .

- name: extract smart contracts
run: tar -xzf smart-contracts.tar.gz

- name: test
run: make test CARGO_FLAGS=--release
run: make test-rs-ci CARGO_FLAGS=--release CARGO_TEST_PROFILE_ENV='CARGO_PROFILE_RELEASE_LTO=false CARGO_PROFILE_RELEASE_CODEGEN_UNITS=16'

test_no_default_features:
name: test-no-default-features
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Checkout
uses: actions/checkout@v4
with:
persist-credentials: false

- name: setup ubuntu
run: |
sudo apt-get -y install wabt

- name: cache setup tools
uses: actions/cache@v4
with:
path: |
~/.rustup/toolchains
~/.rustup/update-hashes
~/.rustup/settings.toml
~/.cargo/bin/cargo-audit
key: setup-tools-${{ runner.os }}-${{ hashFiles('rust-toolchain.toml', 'smart_contracts/rust-toolchain', 'Makefile') }}
restore-keys: |
setup-tools-${{ runner.os }}-

- name: setup
run: make setup

- uses: Swatinem/rust-cache@v2

- name: test-no-default-features
run: make test-rs-no-default-features CARGO_FLAGS=--release CARGO_TEST_PROFILE_ENV='CARGO_PROFILE_RELEASE_LTO=false CARGO_PROFILE_RELEASE_CODEGEN_UNITS=16'

build_contracts:
name: build-contracts
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Checkout
uses: actions/checkout@v4
with:
persist-credentials: false

- name: setup ubuntu
run: |
sudo apt-get -y install wabt

- name: cache setup tools
uses: actions/cache@v4
with:
path: |
~/.rustup/toolchains
~/.rustup/update-hashes
~/.rustup/settings.toml
~/.cargo/bin/cargo-audit
key: setup-tools-${{ runner.os }}-${{ hashFiles('rust-toolchain.toml', 'smart_contracts/rust-toolchain', 'Makefile') }}
restore-keys: |
setup-tools-${{ runner.os }}-

- name: setup
run: make setup

- uses: Swatinem/rust-cache@v2

- name: build smart contracts
run: make build-test-artifacts CARGO_FLAGS=--release

- name: archive smart contracts
run: tar -czf smart-contracts.tar.gz resources/local/chainspec.toml target/wasm32-unknown-unknown/release/*.wasm

- name: upload smart contracts
uses: actions/upload-artifact@v4
with:
name: smart-contracts
path: smart-contracts.tar.gz

test_contracts:
name: test-contracts
runs-on: ubuntu-latest
timeout-minutes: 60
needs:
- build_contracts
steps:
- name: Checkout
uses: actions/checkout@v4
with:
persist-credentials: false

- name: setup ubuntu
run: |
sudo apt-get -y install wabt

- name: cache setup tools
uses: actions/cache@v4
with:
path: |
~/.rustup/toolchains
~/.rustup/update-hashes
~/.rustup/settings.toml
~/.cargo/bin/cargo-audit
key: setup-tools-${{ runner.os }}-${{ hashFiles('rust-toolchain.toml', 'smart_contracts/rust-toolchain', 'Makefile') }}
restore-keys: |
setup-tools-${{ runner.os }}-

- name: setup
run: make setup

- uses: Swatinem/rust-cache@v2

- name: download smart contracts
uses: actions/download-artifact@v4
with:
name: smart-contracts
path: .

- name: extract smart contracts
run: tar -xzf smart-contracts.tar.gz

- name: test-contracts
run: make test-contracts CARGO_FLAGS=--release
run: make test-contracts-rs CARGO_FLAGS=--release CARGO_TEST_PROFILE_ENV='CARGO_PROFILE_RELEASE_LTO=false CARGO_PROFILE_RELEASE_CODEGEN_UNITS=16'

tests:
name: tests
runs-on: ubuntu-latest
needs:
- checks
- build_contracts
- test
- test_no_default_features
- test_contracts
if: ${{ always() }}
steps:
- name: check required jobs
run: |
test "${{ needs.checks.result }}" = "success"
test "${{ needs.build_contracts.result }}" = "success"
test "${{ needs.test.result }}" = "success"
test "${{ needs.test_no_default_features.result }}" = "success"
test "${{ needs.test_contracts.result }}" = "success"
2 changes: 1 addition & 1 deletion .github/workflows/push-artifacts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:
python3 --version

- name: Install cargo deb
run: cargo install cargo-deb
run: cargo install --git https://github.com/sacherjj/cargo-deb cargo-deb

- name: Build update package
run: ./ci/build_update_package.sh
Expand Down
33 changes: 24 additions & 9 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
# This supports environments where $HOME/.cargo/env has not been sourced (CI, CLion Makefile runner)
CARGO = $(or $(shell which cargo), $(HOME)/.cargo/bin/cargo)
RUSTUP = $(or $(shell which rustup), $(HOME)/.cargo/bin/rustup)
CARGO_AUDIT = $(or $(shell which cargo-audit), $(HOME)/.cargo/bin/cargo-audit)

PINNED_NIGHTLY := $(shell cat smart_contracts/rust-toolchain)
PINNED_STABLE := $(shell sed -nr 's/channel *= *\"(.*)\"/\1/p' rust-toolchain.toml)
CARGO_AUDIT_VERSION := 0.22.1
WASM_STRIP_VERSION := $(shell wasm-strip --version)

CARGO_OPTS := --locked
Expand All @@ -20,6 +22,7 @@ EVM_CONTRACTS = $(shell find ./smart_contracts/evm_contracts -mindepth 1 -max
CARGO_HOME_REMAP = $(if $(CARGO_HOME),$(CARGO_HOME),$(HOME)/.cargo)
RUSTC_FLAGS = "--remap-path-prefix=$(CARGO_HOME_REMAP)=/home/cargo --remap-path-prefix=$$PWD=/dir"
WASM_RUSTC_FLAGS = "--remap-path-prefix=$(CARGO_HOME_REMAP)=/home/cargo --remap-path-prefix=$$PWD=/dir -C target-cpu=mvp -C target-feature=-bulk-memory"
CARGO_TEST_PROFILE_ENV ?=

CONTRACT_TARGET_DIR = target/wasm32-unknown-unknown/release
EVM_CONTRACT_TARGET_DIR = target/evm-contracts
Expand Down Expand Up @@ -77,27 +80,38 @@ test-contracts-evm: build-contracts-evm
resources/local/chainspec.toml: generate-chainspec.sh resources/local/chainspec.toml.in
@./$<

.PHONY: build-test-artifacts
build-test-artifacts: resources/local/chainspec.toml build-contracts-rs

.PHONY: test-rs
test-rs: resources/local/chainspec.toml build-contracts-rs
$(LEGACY) $(DISABLE_LOGGING) $(CARGO) test --all-features --no-fail-fast $(CARGO_FLAGS) -- --nocapture
test-rs:
$(LEGACY) $(DISABLE_LOGGING) $(CARGO_TEST_PROFILE_ENV) $(CARGO) test --all-features --no-fail-fast $(CARGO_FLAGS) -- --nocapture

.PHONY: test-rs-ci
test-rs-ci:
$(LEGACY) $(DISABLE_LOGGING) $(CARGO_TEST_PROFILE_ENV) $(CARGO) test --all-features --no-fail-fast $(CARGO_FLAGS) -- --nocapture --skip reactor::main_reactor::tests::rewards
$(LEGACY) $(DISABLE_LOGGING) $(CARGO_TEST_PROFILE_ENV) $(CARGO) test --all-features --no-fail-fast $(CARGO_FLAGS) -- --nocapture --test-threads=1 reactor::main_reactor::tests::rewards

.PHONY: resources/local/chainspec.toml
test-rs-no-default-features:
cd smart_contracts/contract && $(DISABLE_LOGGING) $(CARGO) test $(CARGO_FLAGS) --no-default-features --features=version-sync
cd smart_contracts/contract && $(DISABLE_LOGGING) $(CARGO_TEST_PROFILE_ENV) $(CARGO) test $(CARGO_FLAGS) --no-default-features --features=version-sync

.PHONY: test
test: test-rs-no-default-features test-rs
test: build-test-artifacts test-rs-no-default-features test-rs

.PHONY: test-ci
test-ci: test-rs-no-default-features test-rs-ci

.PHONY: test-contracts-rs
test-contracts-rs: build-contracts-rs
$(DISABLE_LOGGING) $(CARGO) test $(CARGO_FLAGS) -p casper-engine-tests -- --ignored --skip repeated_ffi_call_should_gas_out_quickly
test-contracts-rs:
$(DISABLE_LOGGING) $(CARGO_TEST_PROFILE_ENV) $(CARGO) test $(CARGO_FLAGS) -p casper-engine-tests -- --ignored --skip repeated_ffi_call_should_gas_out_quickly

.PHONY: test-contracts-timings
test-contracts-timings: build-contracts-rs
test-contracts-timings: resources/local/chainspec.toml build-contracts-rs
$(DISABLE_LOGGING) $(CARGO) test --release $(filter-out --release, $(CARGO_FLAGS)) -p casper-engine-tests -- --ignored --test-threads=1 repeated_ffi_call_should_gas_out_quickly

.PHONY: test-contracts
test-contracts: test-contracts-rs
test-contracts: build-test-artifacts test-contracts-rs

.PHONY: check-no-default-features
check-no-default-features:
Expand Down Expand Up @@ -208,7 +222,8 @@ setup-rs:
$(RUSTUP) component add --toolchain $(PINNED_NIGHTLY) rustfmt clippy-preview
$(RUSTUP) component add --toolchain $(PINNED_STABLE) clippy-preview
$(RUSTUP) component add rust-src --toolchain $(PINNED_NIGHTLY)
$(CARGO) install cargo-audit
$(CARGO_AUDIT) --version 2>/dev/null | grep -q ' $(CARGO_AUDIT_VERSION)$$' || \
$(CARGO) install cargo-audit --version '=$(CARGO_AUDIT_VERSION)'

.PHONY: setup
setup: setup-rs
8 changes: 4 additions & 4 deletions execution_engine_testing/tests/src/test/explorer/faucet.rs
Original file line number Diff line number Diff line change
Expand Up @@ -663,14 +663,14 @@ fn faucet_costs() {
// This test will fail if execution costs vary. The expected costs should not be updated
// without understanding why the cost has changed. If the costs do change, it should be
// reflected in the "Costs by Entry Point" section of the faucet crate's README.md.
const EXPECTED_FAUCET_INSTALL_COST: u64 = 112_723_697_942;
const EXPECTED_FAUCET_INSTALL_COST: u64 = 118_835_785_065;
const EXPECTED_FAUCET_INSTALL_COST_ALT: u64 = 149_230_872_143;

const EXPECTED_FAUCET_SET_VARIABLES_COST: u64 = 79_796_780;
const EXPECTED_FAUCET_SET_VARIABLES_COST: u64 = 79_790_440;

const EXPECTED_FAUCET_CALL_BY_INSTALLER_COST: u64 = 2_652_960_368;
const EXPECTED_FAUCET_CALL_BY_INSTALLER_COST: u64 = 2_652_954_573;

const EXPECTED_FAUCET_CALL_BY_USER_COST: u64 = 2_558_834_176;
const EXPECTED_FAUCET_CALL_BY_USER_COST: u64 = 2_558_820_996;

let installer_account = AccountHash::new([1u8; 32]);
let user_account: AccountHash = AccountHash::new([2u8; 32]);
Expand Down
Loading
Loading