Skip to content

ScalarDB cluster test #111

ScalarDB cluster test

ScalarDB cluster test #111

Workflow file for this run

name: Test with Docker
on:
push:
branches:
- master
pull_request:
jobs:
cassandra-scaladb:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Buildx
id: buildx
uses: docker/setup-buildx-action@v3
- name: Setup Cache
uses: satackey/[email protected]
# Ignore the failure of a step and avoid terminating the job.
continue-on-error: true
- name: docker-compose up
run: |
cd docker
docker compose up -d
- name: Cassandra test
run: |
docker exec jepsen-control bash -c "cd /scalar-jepsen/cassandra && lein run test --workload lwt --nodes n1,n2,n3 --ssh-private-key ~/.ssh/id_rsa"
- name: ScalarDB test
run: |
docker exec jepsen-control bash -c "cd /scalar-jepsen/cassandra && lein install"
docker exec jepsen-control bash -c "cd /scalar-jepsen/scalardb && lein run test --workload transfer --nodes n1,n2,n3 --ssh-private-key ~/.ssh/id_rsa"
cluster:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# Need ssh to the localhost
- name: Install SSH server
run: |
sudo apt update
sudo apt install -y openssh-server
- name: Enable ssh for runner user
run: |
mkdir -p ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -N ""
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config
sudo service ssh restart
- name: Setup Java
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
- name: Install leiningen
uses: DeLaGuardo/[email protected]
with:
lein: latest
- name: Cache m2 repository
uses: actions/cache@v3
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/project.clj') }}
restore-keys: |
${{ runner.os }}-m2-
- name: Set up Docker
uses: docker/setup-buildx-action@v3
- name: Set up Kind cluster
uses: helm/[email protected]
with:
cluster_name: test-cluster
- name: Install MetalLB
run: |
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.9/config/manifests/metallb-native.yaml
kubectl wait --namespace metallb-system \
--for=condition=Ready pods \
--selector=app=metallb \
--timeout=90s
NET=$(docker network inspect kind | jq -r '.[0].IPAM.Config[] | select(.Subnet | test("^fc00") | not) | .Subnet')
echo "IPv4 Subnet: $NET"
PREFIX=$(echo "$NET" | cut -d. -f1-2)
IP_RANGE="${PREFIX}.255.200-${PREFIX}.255.250"
cat <<EOF | kubectl apply -f -
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: kind-pool
namespace: metallb-system
spec:
addresses:
- $IP_RANGE
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: l2adv
namespace: metallb-system
EOF
- name: Install dependencies
run: |
cd cassandra
lein install
- name: ScalarDB cluster test
run: |
cd scalardb
lein with-profile cluster run test --workload transfer --nodes localhost --db cluster --username runner --ssh-private-key ~/.ssh/id_rsa --docker-username ${{ github.repository_owner }} --docker-access-token ${{ secrets.CR_PAT }} --nemesis crash