Skip to content

feat: add Phase 2 Solo E2E test for WRB CLI wrapping validation #2534

feat: add Phase 2 Solo E2E test for WRB CLI wrapping validation

feat: add Phase 2 Solo E2E test for WRB CLI wrapping validation #2534

Workflow file for this run

# SPDX-License-Identifier: Apache-2.0
name: "K6 Load Tests"
on:
push:
branches:
- main
- release/*
pull_request:
types:
- opened
- reopened
- synchronize
defaults:
run:
shell: bash
permissions:
contents: read
env:
GRADLE_EXEC: ionice -c 2 -n 2 nice -n 19 ./gradlew --no-daemon
SOLO_VERSION: "0.72.0"
jobs:
k6-tests:
timeout-minutes: 30
runs-on: hl-bn-lin-md
steps:
- name: Harden Runner
uses: step-security/harden-runner@a5ad31d6a139d249332a2605b85202e8c0b78450 # v2.19.1
with:
egress-policy: audit
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Extract version
id: extract_version
run: |
VERSION=$(cat version.txt)
echo "VERSION=${VERSION}" >> $GITHUB_ENV
- name: Set up JDK 25
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: "temurin"
java-version: "25.0.2"
- name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: "20.19.4"
- name: Install Helm
uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2 # v5.0.0
- name: Setup Kind
uses: helm/kind-action@ef37e7f390d99f746eb8b610417061a60e82a6cc # v1.14.0
with:
install_only: true
node_image: kindest/node:v1.31.4@sha256:2cb39f7295fe7eafee0842b1052a599a4fb0f8bcf3f83d96c7f4864c357c6c30
version: v0.26.0
kubectl_version: v1.31.4
verbosity: 3
wait: 120s
# Install Solo CLI
- name: Install Solo CLI via npm
id: solo
run: |
npm i @hashgraph/solo@${SOLO_VERSION} -g
# Extract version number from solo output (handles various output formats)
SOLO_INSTALLED=$(solo --version 2>/dev/null | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+' | head -1 || echo "unknown")
echo "Solo version: ${SOLO_INSTALLED}"
echo "solo_version=${SOLO_INSTALLED}" >> "${GITHUB_OUTPUT}"
# Produce protobuf source artifact
- name: Produce Protobuf proto artifact
run: ${GRADLE_EXEC} :protobuf-sources:generateBlockNodeProtoArtifact
# Untar protobuf sources
- name: Untar Protobuf Sources
working-directory: protobuf-sources
run: |
mkdir -p proto
# Use the generated protobuf artifact (matches local project version)
PROTO_FILE=$(ls block-node-protobuf-*.tgz 2>/dev/null | head -1)
if [[ -z "$PROTO_FILE" ]]; then
echo "Error: No protobuf artifact found"
ls -la
exit 1
fi
echo "Using protobuf artifact: $PROTO_FILE"
tar -xzf "$PROTO_FILE" -C proto
- name: Install grpcurl
run: |
curl -L https://github.com/fullstorydev/grpcurl/releases/download/v1.8.7/grpcurl_1.8.7_linux_x86_64.tar.gz -o grpcurl.tar.gz
sudo tar -xzf grpcurl.tar.gz -C /usr/local/bin grpcurl
rm grpcurl.tar.gz
- name: Install jq
run: |
sudo apt-get update
sudo apt-get install -y jq
- name: Install k6
run: |
# based on https://grafana.com/docs/k6/latest/set-up/install-k6/#debianubuntu
sudo gpg -k
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install k6
- name: Run k6 tests
run: ${GRADLE_EXEC} runK6Tests
- name: Display Test Logs
run: ${GRADLE_EXEC} printK6Logs