Skip to content

Commit

Permalink
Merge pull request #1143 from HathorNetwork/master
Browse files Browse the repository at this point in the history
Release-candidate v0.63.0-rc.1
  • Loading branch information
jansegre authored Nov 21, 2024
2 parents 8d0f571 + d91513e commit 60a1a1e
Show file tree
Hide file tree
Showing 203 changed files with 6,891 additions and 3,300 deletions.
7 changes: 7 additions & 0 deletions .envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
if [[ $(type -t use_flake) != function ]]; then
echo "ERROR: use_flake function missing."
echo "Please update direnv to v2.30.0 or later."
exit 1
fi

use flake
38 changes: 38 additions & 0 deletions .github/actions/setup-hathor-env/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: setup-hathor-env
description: Setup Hathor node environment
inputs:
python:
description: The python version
os:
description: The OS name
runs:
using: composite
steps:
- name: Install Poetry
shell: bash
run: pipx install poetry

- name: Set up Python ${{ inputs.python }}
uses: actions/setup-python@v5
with:
python-version: ${{ inputs.python }}
cache: 'poetry'

- name: Install Ubuntu dependencies
if: startsWith(inputs.os, 'ubuntu')
run: |
sudo apt-get -qy update
sudo apt-get -qy install graphviz librocksdb-dev libsnappy-dev liblz4-dev
shell: bash

- name: Install macOS dependencies
if: startsWith(inputs.os, 'macos')
run: |
brew cleanup -q
# brew update -q
brew install -q graphviz rocksdb pkg-config
shell: bash

- name: Install Poetry dependencies
run: poetry install -n --no-root
shell: bash
61 changes: 61 additions & 0 deletions .github/workflows/base_benchmarks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# yamllint disable rule:line-length
name: benchmarking
on: # yamllint disable-line rule:truthy
push:
branches:
- master
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
benchmark_base_branch:
name: Continuous Benchmarking base branch
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: bencherdev/bencher@main
- name: Install hyperfine
run: |
wget https://github.com/sharkdp/hyperfine/releases/download/v1.12.0/hyperfine_1.12.0_amd64.deb
sudo dpkg -i hyperfine_1.12.0_amd64.deb
- uses: ./.github/actions/setup-hathor-env
name: Setup Hathor node environment
with:
python: 3.11
os: ubuntu-22.04
- name: Set env vars
run: cat ./extras/benchmarking/sync_v2/.env >> $GITHUB_ENV
- name: Download benchmark data
run: |
wget $BENCH_DATA_URL
tar -xzf $BENCH_DATA_FILE_NAME.tar.gz
mkdir $SERVER_DATA_DIR
poetry run hathor-cli load-from-logs \
--testnet \
--data $SERVER_DATA_DIR \
--cache \
--cache-size $CACHE_SIZE \
--x-localhost-only \
--log-dump $BENCH_DATA_FILE_NAME
- name: Run server node
run: |
poetry run hathor-cli run_node \
--testnet \
--data $SERVER_DATA_DIR \
--cache \
--cache-size $CACHE_SIZE \
--x-localhost-only \
--listen tcp:$TCP_PORT \
&
- name: Track base branch benchmarks with Bencher
run: |
bencher run \
--project hathor-core \
--token '${{ secrets.BENCHER_API_TOKEN }}' \
--branch master \
--testbed ubuntu-22.04 \
--adapter shell_hyperfine \
--err \
--file $BENCH_FILE \
'./extras/benchmarking/sync_v2/benchmark_sync_v2.sh'
16 changes: 8 additions & 8 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
- '3.12'
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Prepare base version
id: prep
run: |
Expand All @@ -49,28 +49,28 @@ jobs:
VERSION: ${{ steps.prep.outputs.check-version }}
run: make check-custom
- name: Set up QEMU # arm64 is not available natively
uses: docker/setup-qemu-action@v2
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v3
with:
version: latest
install: true
driver-opts: network=host
- name: Login to DockerHub
uses: docker/login-action@v2
uses: docker/login-action@v3
if: steps.prep.outputs.login-dockerhub == 'true'
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
uses: docker/login-action@v3
if: steps.prep.outputs.login-ghcr == 'true'
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Cache Docker layers
uses: actions/cache@v3
uses: actions/cache@v4
if: steps.prep_base_version.outputs.is-nightly == 'false'
with:
path: /tmp/.buildx-cache
Expand All @@ -79,7 +79,7 @@ jobs:
restore-keys: |
${{ runner.os }}-buildx-${{ matrix.python-impl }}${{ matrix.python-version }}-refs/heads/master-
- name: Build and export to Docker
uses: docker/build-push-action@v3
uses: docker/build-push-action@v6
with:
context: .
file: ${{ steps.prep.outputs.dockerfile }}
Expand All @@ -92,7 +92,7 @@ jobs:
- name: Test image
run: docker run --rm ${{ env.TEST_TAG }} quick_test --data / --testnet
- name: Build and push
uses: docker/build-push-action@v3
uses: docker/build-push-action@v6
if: ${{ !env.ACT }} # Skip this step when testing locally with https://github.com/nektos/act
with:
context: .
Expand Down
29 changes: 7 additions & 22 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
full_matrix = {
'python': ['3.10', '3.11', '3.12'],
# available OS's: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on
'os': ['ubuntu-22.04', 'macos-12', 'windows-2022'],
'os': ['ubuntu-22.04', 'macos-13'],
}
# this is the fastest one:
reduced_matrix = {
Expand Down Expand Up @@ -62,29 +62,14 @@ jobs:
matrix: ${{fromJson(needs.matrix.outputs.matrix)}}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Poetry
run: pipx install poetry
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v4
uses: actions/checkout@v4
- uses: ./.github/actions/setup-hathor-env
name: Setup Hathor node environment
with:
python-version: ${{ matrix.python }}
cache: 'poetry'
- name: Install Ubuntu dependencies
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get -qy update
sudo apt-get -qy install graphviz librocksdb-dev libsnappy-dev liblz4-dev
- name: Install macOS dependencies
if: startsWith(matrix.os, 'macos')
run: |
brew cleanup -q
# brew update -q
brew install -q graphviz rocksdb pkg-config
- name: Install Poetry dependencies
run: poetry install -n --no-root
python: ${{ matrix.python }}
os: ${{ matrix.os }}
- name: Cache mypy
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: .mypy_cache
# this key is setup such that every branch has its cache and new branches can reuse dev's cache, but not the other way around
Expand Down
69 changes: 69 additions & 0 deletions .github/workflows/pr_benchmarks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# yamllint disable rule:line-length
name: benchmarking
on: # yamllint disable-line rule:truthy
pull_request:
branches:
- master
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
benchmark_pr_branch:
name: Continuous Benchmarking PRs
# DO NOT REMOVE: For handling Fork PRs see Pull Requests from Forks
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository
permissions:
pull-requests: write
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: bencherdev/bencher@main
- name: Install hyperfine
run: |
wget https://github.com/sharkdp/hyperfine/releases/download/v1.12.0/hyperfine_1.12.0_amd64.deb
sudo dpkg -i hyperfine_1.12.0_amd64.deb
- uses: ./.github/actions/setup-hathor-env
name: Setup Hathor node environment
with:
python: 3.11
os: ubuntu-22.04
- name: Set env vars
run: cat ./extras/benchmarking/sync_v2/.env >> $GITHUB_ENV
- name: Download benchmark data
run: |
wget $BENCH_DATA_URL
tar -xzf $BENCH_DATA_FILE_NAME.tar.gz
mkdir $SERVER_DATA_DIR
poetry run hathor-cli load-from-logs \
--testnet \
--data $SERVER_DATA_DIR \
--cache \
--cache-size $CACHE_SIZE \
--x-localhost-only \
--log-dump $BENCH_DATA_FILE_NAME
- name: Run server node
run: |
poetry run hathor-cli run_node \
--testnet \
--data $SERVER_DATA_DIR \
--cache \
--cache-size $CACHE_SIZE \
--x-localhost-only \
--listen tcp:$TCP_PORT \
&
- name: Track PR Benchmarks with Bencher
run: |
bencher run \
--project hathor-core \
--token '${{ secrets.BENCHER_API_TOKEN }}' \
--branch '${{ github.head_ref }}' \
--start-point '${{ github.base_ref }}' \
--start-point-hash '${{ github.event.pull_request.base.sha }}' \
--start-point-clone-thresholds \
--testbed ubuntu-22.04 \
--adapter shell_hyperfine \
--err \
--github-actions '${{ secrets.GITHUB_TOKEN }}' \
--file $BENCH_FILE \
'./extras/benchmarking/sync_v2/benchmark_sync_v2.sh'
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,6 @@ extras/docker/envvars
/dist/
/requirements.txt
*.egg-info

# Nix
.direnv/
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# before changing these variables, make sure the tag $PYTHON-alpine$ALPINE exists first
# list of valid tags hese: https://hub.docker.com/_/python
ARG PYTHON=3.10
ARG PYTHON=3.11
ARG DEBIAN=bullseye

# stage-0: copy pyproject.toml/poetry.lock and install the production set of dependencies
Expand Down
2 changes: 1 addition & 1 deletion docs/legacy/ref/p2p.rst
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ The :py:mod:`hathor.p2p.states` has all states and messages of the p2p network.
to send new messages and handle the new incoming ones.


The :py:class:`hathor.p2p.peer_id.PeerId` stores the peer's identity, entrypoint, reputation and history.
The :py:class:`hathor.p2p.peer.Peer` stores the peer's identity, entrypoint, reputation and history.



Expand Down
9 changes: 9 additions & 0 deletions extras/benchmarking/sync_v2/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
BENCH_DATA_FILE_NAME=ci_testnet_upto_20k
BENCH_DATA_URL=https://hathor-public-files.s3.amazonaws.com/hathor-core-ci/ci_testnet_upto_20k.tar.gz
N_BLOCKS=20000
CACHE_SIZE=100000
SERVER_DATA_DIR=server-data
TCP_PORT=40403
N_RUNS=2
BENCH_FILE=testnet_upto_20k_results.json
BENCH_DATA_DIR=bench-data
16 changes: 16 additions & 0 deletions extras/benchmarking/sync_v2/benchmark_sync_v2.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
hyperfine \
--warmup 1 \
--runs $N_RUNS \
--export-json $BENCH_FILE \
--command-name "sync-v2 (up to $N_BLOCKS blocks)" \
--prepare "rm -rf $BENCH_DATA_DIR && mkdir $BENCH_DATA_DIR" \
"
poetry run hathor-cli quick_test \
--testnet \
--data $BENCH_DATA_DIR \
--cache \
--cache-size $CACHE_SIZE \
--x-localhost-only \
--bootstrap tcp://localhost:$TCP_PORT \
--quit-after-n-blocks $N_BLOCKS
"
Loading

0 comments on commit 60a1a1e

Please sign in to comment.