Update integration test #105
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Performance Test K8s-snap | |
on: | |
push: | |
branches: ["master"] | |
pull_request: | |
permissions: | |
pull-requests: write | |
contents: read | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
BASE_SHA: ${{ github.before || github.event.pull_request.base.sha }} | |
BASE_BRANCH: ${{ github.base_ref || github.ref }} | |
TARGET_SHA: ${{ github.sha }} | |
jobs: | |
build: | |
name: K8s-snap Performance Test | |
runs-on: self-hosted-linux-amd64-jammy-large | |
steps: | |
- name: Harden Runner | |
uses: step-security/harden-runner@v2 | |
with: | |
egress-policy: audit | |
- name: Checking out repo | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.10" | |
- name: Install tox | |
run: | | |
pip install tox | |
- name: Install Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: "1.22" | |
- name: Set-up R | |
run: | | |
sudo apt-get install r-base -y | |
sudo Rscript -e 'install.packages(c("ggplot2", "dplyr", "optparse"), repos="https://cloud.r-project.org")' | |
- name: Install lxd | |
run: | | |
sudo snap refresh lxd --channel 5.21/stable | |
sudo lxd init --auto | |
sudo usermod --append --groups lxd $USER | |
sg lxd -c 'lxc version' | |
# Docker sets iptables rules that interfere with LXD. | |
# https://documentation.ubuntu.com/lxd/en/latest/howto/network_bridge_firewalld/#prevent-connectivity-issues-with-lxd-and-docker | |
- name: Apply Docker iptables workaround | |
shell: bash | |
run: | | |
sudo iptables -I DOCKER-USER -i lxdbr0 -j ACCEPT | |
sudo iptables -I DOCKER-USER -o lxdbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT | |
- name: Download latest k8s-snap | |
run: | | |
sudo snap download k8s --channel=latest/edge --basename k8s | |
- name: Unpack Snap | |
run: | | |
sudo unsquashfs -d snap-unpack-dir k8s.snap | |
- name: Create snap with k8s-dqlite ${{ github.head_ref }} code | |
run: | | |
make static | |
sudo cp ./bin/static/k8s-dqlite snap-unpack-dir/bin/k8s-dqlite | |
sudo chmod o+r snap-unpack-dir/bin/k8s-dqlite | |
sudo mksquashfs snap-unpack-dir head.snap -noappend -comp lzo -no-fragments | |
- name: Create snap with k8s-dqlite base-code | |
run: | | |
set -o pipefail | |
git fetch origin $BASE_BRANCH | |
git reset --hard $BASE_SHA | |
make static | |
sudo cp ./bin/static/k8s-dqlite snap-unpack-dir/bin/k8s-dqlite | |
sudo chmod o+r snap-unpack-dir/bin/k8s-dqlite | |
sudo mksquashfs snap-unpack-dir base-code.snap -noappend -comp lzo -no-fragments | |
- name: Switch back to target branch | |
run: git reset --hard $TARGET_SHA | |
- name: Run Performance test ${{ github.head_ref }} snap | |
env: | |
TEST_SNAP: ${{ github.workspace }}/head.snap | |
TEST_SUBSTRATE: lxd | |
TEST_LXD_IMAGE: ubuntu:22.04 | |
TEST_INSPECTION_REPORTS_DIR: ${{ github.workspace }}/inspection-reports | |
TEST_METRICS_DIR: ${{ github.workspace }}/test/performance/results/head | |
TEST_RUN_NAME: head | |
run: | | |
cd test/performance | |
mkdir -p ./results/head | |
sg lxd -c 'tox -e performance' | |
- name: Run Performance test for base code snap | |
env: | |
TEST_SNAP: ${{ github.workspace }}/base-code.snap | |
TEST_SUBSTRATE: lxd | |
TEST_LXD_IMAGE: ubuntu:22.04 | |
TEST_INSPECTION_REPORTS_DIR: ${{ github.workspace }}/inspection-reports | |
TEST_METRICS_DIR: ${{ github.workspace }}/test/performance/results/base-code | |
TEST_RUN_NAME: base-code | |
run: | | |
cd test/performance | |
mkdir -p ./results/base-code | |
sg lxd -c 'tox -e performance' | |
- name: Generate 3 node Graphs | |
run: | | |
cd test/performance | |
sudo Rscript parse-performance-metrics.R -p ./results/head -o ./results/head -f *three-node.log | |
sudo Rscript parse-performance-metrics.R -p ./results/base-code -o ./results/base-code -f *three-node.log | |
- name: Generate single node Graphs | |
run: | | |
cd test/performance | |
mkdir -p ./results/single-node | |
cp ./results/head/*single-node.log ./results/single-node | |
cp ./results/base-code/*single-node.log ./results/single-node | |
sudo Rscript parse-performance-metrics.R -p ./results/single-node -o ./results/single-node -f *single-node.log | |
- name: Upload performance result | |
uses: actions/upload-artifact@v4 | |
with: | |
name: performance-results | |
path: ${{ github.workspace }}/test/performance/results | |
- name: Prepare inspection reports | |
if: failure() | |
run: | | |
tar -czvf inspection-reports.tar.gz -C ${{ github.workspace }} inspection-reports | |
echo "artifact_name=inspection-reports" | sed 's/:/-/g' >> $GITHUB_ENV | |
- name: Upload inspection report artifact | |
if: failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.artifact_name }} | |
path: ${{ github.workspace }}/inspection-reports.tar.gz |