Roman Zajic 8cb44f1201
chore: RLN registration support (#16)
* chore: parameters and volumes for RLN relay

* chore: add startup test for RLN

* fix: remove redundant rln_enabled from WakuNode

* fix: - and _ magic in rln parameters

* fix: key 'eth_testnet_key' -> 'eth_client_private_key'

* fix: rln-register_only -> rln-register-only

* fix: use extend instead of append for the volumes list

* fix: use absolute path for the volumes names
- mark volumes shared across containers

* fix: remove :z attr from volumes

* fix: remove filename from volume path

* fix: remove request for ENR

* test: plain RLN registration

* fix: remove subscribe

* fix: remove ENR related params

* test: add run_container func to Docker Mananger

* fix: remove run_container func from Docker Mananger - no need for exec

* fix: pass exec commands instead of specialized docker exec func

* fix: exclude RLN arguments from others

* fix: separate RLN volumes by implementation

* test: registration with nwaku

* test: registration over existing credentials

* test: add RLN Relay node startup

* test: RLN credentials reuse for  relay node startup

* fix: clean up unnecessary commands

* fix: clean up unnecessary commands for non RLN relay too

* test: regression by sending one valid message

* fix: add forgotten call to get enr_uri

* fix: check RLN credentials set properly

* fix: parenthesis in eval expression

* fix: better check for RLN credentials

* fix: update to new flags - gowaku
- separate private key for go/nwaku

* test: register RLN

* fix: RLN credentials check

* fix: remove enable rln-relay flag from registration

* test: reorder commands to check go-waku registration

* fix: restructure if statements for RLN registration

* fix: different set of flag for RLN registration and operation

* fix: forgotten "eth" in eth-contract-address

* fix: remove redundant None from get_env_var call

* fix: refactor rln credentials parsing from start function

* fix: missed second return value

* test: call to parse_rln_credentials

* fix: remove redundant self in call to parse_rln_credentials

* fix: remove rln related values if not valid

* fix: refactored to accept multiple private keys
- JSON source for RLN credentials
- removed go-waku support for RLN

* test: register RLN with 2 nwaku nodes

* fix: missing open file, key errors

* fix: return effective keystore_path

* fix: cleanup unused env variables

* fix: cleanup unused env variables from relay

* fix: wait longer for credentials file to be written to disk

* test: remove waiting for credentials file to be written to disk

* fix: add select_private_key()

* fix: merge parse_rln_credentials and parse_rln_registration_credentials

* test: wait for filesystem cache

* test: try with os.sync to flush cache

* test: stop container to clear cache

* fix: 15 sec wait + stop container to clear cache

* test: RLN registration test with fixture and cred file check

* test: added allure.step - RLN registration for single node
- corresponding test to register all keys

* fix: f-strings in the test

* fix: sync naming for register_main_rln_relay_nodes

* fix: add WARN message to log unset and expected RLN credentials

* fix:  pytest.skip added to exit tests when non nwaku image is used

* fix: swap NODE2 for DEFAULT_NWAKU

* fix: let rln_credential_store_ready to raise exception for retry

* fix: let register_rln to raise exception too, when credential fine still not available

* fix: remove container stop

* fix: tune down retry timeouts

* fix: remove unnecessary f-string

* test: reduce unnecessary variables init

* test: undo reduce unnecessary variables init

* test: increase timeout for rln_credential_store_ready

* test: refactor kwargs handling into sanitize_docker_flags

* fix: created RLN registration check
- changed rln_credential_store_ready to function

* fix: delete unnecessary ports from register_rln init

* fix: remove wait for registration entirely

* test: RLN_CREDENTIALS env var example

* fix: check_rln_registration to raise exception

* fix: use f-string at check_rln_registration

* fix: add gen_step_id function

* fix: RLN_CREDENTIALS as loaded from .env

* fix: RLN_CREDENTIALS example, skipping test if not set

* test: RLN with actions

* fix: tune up RLN timeouts for Github runners

* test: filesystem write to /

* fix: change RLN data to be stored at working directory

* fix: catch exception instead of "if not"
- print out container log

* fix: wrap logs into debug msg

* fix: print log file

* fix: remove additional logging

* fix: exit RLN cred parsing sooner when not used
- delete proper keys from default_args

* fix: Allure report

* fix: Discord notifications

* fix: remove f-string

* fix: delete test workflow
2024-02-13 22:01:30 +08:00

111 lines
3.6 KiB
YAML

name: Interop Tests Common
on:
workflow_call:
inputs:
node1:
required: true
description: "Node that usually publishes messages. Used for all tests"
type: string
default: "harbor.status.im/wakuorg/go-waku:latest"
node2:
required: true
description: "Node that usually queries for published messages. Used for all tests"
type: string
default: "harbor.status.im/wakuorg/nwaku:latest"
additional_nodes:
required: false
description: "Additional optional nodes used in e2e tests, separated by ,"
type: string
default: "harbor.status.im/wakuorg/nwaku:latest,harbor.status.im/wakuorg/go-waku:latest,harbor.status.im/wakuorg/nwaku:latest"
caller:
required: false
description: "Workflow caller. Used in reporting"
type: string
env:
FORCE_COLOR: "1"
NODE_1: ${{ inputs.node1 }}
NODE_2: ${{ inputs.node2 }}
ADDITIONAL_NODES: ${{ inputs.additional_nodes }}
CALLER: ${{ inputs.caller || 'manual' }}
RLN_CREDENTIALS: ${{ secrets.RLN_CREDENTIALS }}
jobs:
tests:
name: tests
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: '3.12'
cache: 'pip'
- run: pip install -r requirements.txt
- name: Run tests
run: pytest -n 4 --reruns 1 --alluredir=allure-results
- name: Get allure history
if: always()
uses: actions/checkout@v4
with:
ref: gh-pages
path: gh-pages
- name: Setup allure report
uses: simple-elf/allure-report-action@master
if: always()
id: allure-report
with:
allure_results: allure-results
gh_pages: gh-pages/${{ env.CALLER }}
allure_history: allure-history
keep_reports: 30
- name: Deploy report to Github Pages
uses: peaceiris/actions-gh-pages@v3
if: always()
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_branch: gh-pages
publish_dir: allure-history
destination_dir: ${{ env.CALLER }}
- name: Create job summary
if: always()
env:
JOB_STATUS: ${{ job.status }}
run: |
echo "## Run Information" >> $GITHUB_STEP_SUMMARY
echo "- **Event**: ${{ github.event_name }}" >> $GITHUB_STEP_SUMMARY
echo "- **Actor**: ${{ github.actor }}" >> $GITHUB_STEP_SUMMARY
echo "- **Node1**: ${{ env.NODE_1 }}" >> $GITHUB_STEP_SUMMARY
echo "- **Node2**: ${{ env.NODE_2 }}" >> $GITHUB_STEP_SUMMARY
echo "- **Additonal Nodes**: ${{ env.ADDITIONAL_NODES }}" >> $GITHUB_STEP_SUMMARY
echo "## Test Results" >> $GITHUB_STEP_SUMMARY
echo "Allure report will be available at: https://waku-org.github.io/waku-interop-tests/${{ env.CALLER }}/${{ github.run_number }}" >> $GITHUB_STEP_SUMMARY
if [ "$JOB_STATUS" != "success" ]; then
echo "There are failures with nwaku node. cc <@&1111608257824440330>" >> $GITHUB_STEP_SUMMARY
fi
{
echo 'JOB_SUMMARY<<EOF'
cat $GITHUB_STEP_SUMMARY
echo EOF
} >> $GITHUB_ENV
- name: Send report to Discord
uses: rjstone/discord-webhook-notify@v1
if: always() && env.CALLER != 'manual'
with:
severity: ${{ job.status == 'success' && 'info' || 'error' }}
username: ${{ github.workflow }}
description: "## Job Result: ${{ job.status }}"
details: ${{ env.JOB_SUMMARY }}
webhookUrl: ${{ secrets.DISCORD_TEST_REPORTS_WH }}