Skip to content

tests: add wake from sleep test and CI #1

tests: add wake from sleep test and CI

tests: add wake from sleep test and CI #1

# name: Test Harness
# on:
# push:
# branches:
# - main
# - develop
# paths:
# - 'nym-vpn-core/crates/test/**'
# - 'nym-vpn-core/crates/nym-vpnd/**'
# - 'nym-vpn-core/crates/nym-vpnc/**'
# - 'nym-vpn-core/crates/nym-vpn-lib/**'
# - 'nym-vpn-core/crates/nym-vpn-proto/**'
# pull_request:
# branches:
# - main
# - develop
# paths:
# - 'nym-vpn-core/crates/test/**'
# - 'nym-vpn-core/crates/nym-vpnd/**'
# - 'nym-vpn-core/crates/nym-vpnc/**'
# - 'nym-vpn-core/crates/nym-vpn-lib/**'
# - 'nym-vpn-core/crates/nym-vpn-proto/**'
# workflow_dispatch:
# inputs:
# test_name:
# description: 'Test name to run (default: basic_functionality)'
# required: false
# default: 'basic_functionality'
# vm_config:
# description: 'VM config name'
# required: false
# default: 'ci-test-vm'
# env:
# CARGO_TERM_COLOR: always
# RUST_BACKTRACE: 1
# jobs:
# test-harness:
# name: Run Test Harness
# runs-on: ubuntu-latest
# timeout-minutes: 60
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
# - name: Install system dependencies
# run: |
# sudo apt-get update
# sudo apt-get install -y \
# git \
# build-essential \
# pkg-config \
# libpcap-dev \
# libssl-dev \
# protobuf-compiler \
# rootlesskit \
# slirp4netns \
# procps \
# nftables \
# wireguard-tools \
# dnsmasq \
# curl \
# qemu-system-x86_64 \
# qemu-utils \
# podman
# - name: Install Rust toolchain
# uses: dtolnay/rust-toolchain@stable
# with:
# targets: x86_64-unknown-linux-gnu
# - name: Cache Cargo registry
# uses: actions/cache@v4
# with:
# path: |
# ~/.cargo/registry
# ~/.cargo/git
# key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
# restore-keys: |
# ${{ runner.os }}-cargo-
# - name: Cache Cargo build artifacts
# uses: actions/cache@v4
# with:
# path: |
# nym-vpn-core/target
# nym-vpn-core/crates/test/target
# key: ${{ runner.os }}-test-harness-${{ hashFiles('nym-vpn-core/**/Cargo.lock') }}
# restore-keys: |
# ${{ runner.os }}-test-harness-
# - name: Build WireGuard library
# working-directory: wireguard
# run: |
# ./build-wireguard-go.sh
# - name: Build test-runner and connection-checker
# working-directory: nym-vpn-core/crates/test
# run: |
# if command -v podman &> /dev/null; then
# ./scripts/container-run.sh ./scripts/build/test-runner.sh linux
# else
# cargo build --release --target x86_64-unknown-linux-gnu \
# -p test-runner \
# -p connection-checker
# fi
# - name: Build Nym VPN binaries
# working-directory: nym-vpn-core
# run: |
# cargo build --release \
# -p nym-vpnd \
# -p nym-vpnc
# - name: Prepare package directory
# run: |
# mkdir -p ~/.cache/nym-test/packages
# PACKAGE_DIR=~/.cache/nym-test/packages
# cp nym-vpn-core/crates/test/target/x86_64-unknown-linux-gnu/release/test-runner "$PACKAGE_DIR/" || true
# cp nym-vpn-core/crates/test/target/x86_64-unknown-linux-gnu/release/connection-checker "$PACKAGE_DIR/" || true
# cp nym-vpn-core/target/release/nym-vpnd "$PACKAGE_DIR/" || true
# cp nym-vpn-core/target/release/nym-vpnc "$PACKAGE_DIR/" || true
# ls -lh "$PACKAGE_DIR/"
# - name: Download or create QCOW2 image
# id: qcow_image
# run: |
# # TODO: Download QCOW2 image from builds.ci.nymte.ch
# - name: Configure VM
# if: steps.qcow_image.outputs.image_exists == 'true'
# working-directory: nym-vpn-core/crates/test/test-manager
# env:
# NYM_TEST_QCOW_IMAGE: ${{ steps.qcow_image.outputs.image_path }}
# NYM_TEST_VM_CONFIG: ${{ github.event.inputs.vm_config || 'ci-test-vm' }}
# run: |
# cargo run --release -- config vm set \
# "$NYM_TEST_VM_CONFIG" \
# qemu \
# "$NYM_TEST_QCOW_IMAGE" \
# linux \
# --package-type deb \
# --architecture x64 \
# --provisioner ssh \
# --ssh-user test \
# --ssh-password test \
# --vcpus 2 \
# --memory 2048
# - name: Run tests
# if: steps.qcow_image.outputs.image_exists == 'true'
# working-directory: nym-vpn-core/crates/test/test-manager
# env:
# NYM_TEST_QCOW_IMAGE: ${{ steps.qcow_image.outputs.image_path }}
# NYM_TEST_VM_CONFIG: ${{ github.event.inputs.vm_config || 'ci-test-vm' }}
# MAINNET_MNEMONIC: ${{ secrets.MAINNET_MNEMONIC || 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about' }}
# PACKAGE_DIR: ~/.cache/nym-test/packages
# run: |
# TEST_NAME="${{ github.event.inputs.test_name || 'basic_functionality' }}"
# cargo run --release -- run-tests \
# --vm "$NYM_TEST_VM_CONFIG" \
# --runner-dir "$PACKAGE_DIR" \
# --nym-mnemonic "$MAINNET_MNEMONIC" \
# --verbose \
# "$TEST_NAME"
# - name: Upload test artifacts
# if: always() && steps.qcow_image.outputs.image_exists == 'true'
# uses: actions/upload-artifact@v4
# with:
# name: test-results
# path: |
# nym-vpn-core/crates/test/test-manager/target/**/*.log
# ~/.cache/nym-test/packages/*
# retention-days: 7
# - name: Comment on PR (if test skipped)
# if: steps.qcow_image.outputs.image_exists == 'false' && github.event_name == 'pull_request'
# uses: actions/github-script@v7
# with:
# script: |
# github.rest.issues.createComment({
# issue_number: context.issue.number,
# owner: context.repo.owner,
# repo: context.repo.repo,
# body: ''
# })