ScalarDB cluster test #111
This file contains hidden or 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: 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 |