Skip to content

Commit

Permalink
test: simplify go-test
Browse files Browse the repository at this point in the history
Remove duplicated description between the default configuration
and the custom namespace configuration.

Signed-off-by: Satoru Takeuchi <[email protected]>
  • Loading branch information
satoru-takeuchi committed Jun 19, 2024
1 parent e1fe321 commit f8e8b7b
Show file tree
Hide file tree
Showing 3 changed files with 188 additions and 328 deletions.
174 changes: 174 additions & 0 deletions .github/workflows/go-test-config/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
name: go-test
description: "test kubectl-rook-ceph commands"
inputs:
op-ns:
description: operator namespace where rook operator will deploy
required: false
cluster-ns:
description: cluster namespace where ceph cluster will deploy
required: false

runs:
using: "composite"
steps:
- name: set environment variables
run: |
OP_NS_OPT=""
CLUSTER_NS_OPT=""
test -n "${{ input.op-ns }}" && OP_NS_OPT="--operator-namespace ${{ input.op-ns }}"
test -n "${{ input.cluster-ns }}" && CLUSTER_NS_OPT="--cluster-namespace ${{ input.cluster-ns }}"
echo "OP_NS_OPT=${OP_NS_OPT}" >> $GITHUB_ENV
echo "CLUSTER_NS_OPT=${CLUSTER_NS_OPT}" >> $GITHUB_ENV
echo "NS_OPT='${OP_NS_OPT} ${CLUSTER_NS_OPT}'" >> $GITHUB_ENV
- name: checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: setup golang
uses: actions/setup-go@v5
with:
go-version: "1.20"

- name: consider debugging
uses: ./.github/workflows/tmate_debug
with:
use-tmate: ${{ secrets.USE_TMATE }}

- name: setup cluster
uses: ./.github/workflows/cluster-setup
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
op-ns: ${{ input.op-ns }}
cluster-ns: ${{ input.cluster-ns }}

- name: build the binary and run unit tests
run: |
make build
sudo cp bin/kubectl-rook-ceph /usr/local/bin/kubectl-rook_ceph
make test
- name: Cluster Health
run: |
set -e
kubectl rook-ceph "${NS_OPT}" health
- name: Ceph status
run: |
set -ex
kubectl rook-ceph "${NS_OPT}" ceph status
- name: Ceph status using context
run: |
set -ex
kubectl rook-ceph "${NS_OPT}" --context=$(kubectl config current-context) ceph status
- name: Mon restore
run: |
set -ex
# test the mon restore to restore to mon a, delete mons b and c, then add d and e
kubectl rook-ceph "${NS_OPT}" mons restore-quorum a
kubectl "${CLUSTER_NS_OPT}" wait pod -l app=rook-ceph-mon-b --for=delete --timeout=90s
kubectl "${CLUSTER_NS_OPT}" wait pod -l app=rook-ceph-mon-c --for=delete --timeout=90s
tests/github-action-helper.sh wait_for_three_mons ${{ input.cluster-ns }}
kubectl "${CLUSTER_NS_OPT}" wait deployment rook-ceph-mon-d --for condition=Available=True --timeout=90s
kubectl "${CLUSTER_NS_OPT}" wait deployment rook-ceph-mon-e --for condition=Available=True --timeout=90s
- name: Rbd command
run: |
set -ex
kubectl rook-ceph "${NS_OPT}" rbd ls replicapool
- name: Subvolume command
run: |
set -ex
kubectl rook-ceph "${NS_OPT}" ceph fs subvolume create myfs test-subvol group-a
kubectl rook-ceph "${NS_OPT}" subvolume ls
kubectl rook-ceph "${NS_OPT}" subvolume ls --stale
kubectl rook-ceph "${NS_OPT}" subvolume delete test-subvol myfs group-a
- name: Get mon endpoints
run: |
set -ex
kubectl rook-ceph "${NS_OPT}" mons
- name: Update operator configmap
run: |
set -ex
kubectl rook-ceph "${NS_OPT}" operator set ROOK_LOG_LEVEL DEBUG
- name: Print cr status
run: |
set -ex
kubectl rook-ceph "${NS_OPT}" rook version
kubectl rook-ceph "${NS_OPT}" rook status
kubectl rook-ceph "${NS_OPT}" rook status all
kubectl rook-ceph "${NS_OPT}" rook status cephobjectstores
- name: Restart operator pod
run: |
set -ex
kubectl rook-ceph "${NS_OPT}" operator restart
# let's wait for operator pod to be restart
POD=$(kubectl "${OP_NS_OPT}" get pod -l app=rook-ceph-operator -o jsonpath="{.items[0].metadata.name}")
kubectl "${OP_NS_OPT}" wait --for=delete pod/$POD --timeout=100s
tests/github-action-helper.sh wait_for_operator_pod_to_be_ready_state ${{ input.op-ns }}
- name: Debug Mode
run: |
set -ex
kubectl rook-ceph "${NS_OPT}" debug start rook-ceph-osd-0
tests/github-action-helper.sh wait_for_deployment_to_be_running rook-ceph-osd-0-debug ${{ input.cluster-ns }}
kubectl rook-ceph ${NS_OPT} debug stop rook-ceph-osd-0
tests/github-action-helper.sh wait_for_deployment_to_be_running rook-ceph-osd-0 ${{ input.cluster-ns }}
- name: Purge Osd
run: |
set -ex
kubectl "${CLUSTER_NS_OPT}" scale deployment rook-ceph-osd-0 --replicas 0
kubectl rook-ceph "${NS_OPT}" rook purge-osd 0 --force
- name: Restore CRD without CRName
run: |
# First let's delete the cephCluster
kubectl "${CLUSTER_NS_OPT}" delete cephcluster my-cluster --timeout 3s --wait=false
kubectl rook-ceph "${NS_OPT}" restore-deleted cephcluster
tests/github-action-helper.sh wait_for_crd_to_be_ready ${{ input.cluster-ns }}
- name: Restore CRD with CRName
run: |
# First let's delete the cephCluster
kubectl "${CLUSTER_NS_OPT}" delete cephcluster my-cluster --timeout 3s --wait=false
kubectl rook-ceph "${NS_OPT}" restore-deleted cephcluster my-cluster
tests/github-action-helper.sh wait_for_crd_to_be_ready ${{ input.cluster-ns }}
- name: Show Cluster State
run: |
set -ex
kubectl "${CLUSTER_NS_OPT}" get all
- name: Destroy Cluster (removing CRs)
env:
ROOK_PLUGIN_SKIP_PROMPTS: true
run: |
set -ex
kubectl rook-ceph "${NS_OPT}" destroy-cluster
sleep 1
kubectl get deployments --no-headers| wc -l | (read n && [ $n -le 1 ] || { echo "the crs could not be deleted"; exit 1;})
- name: collect common logs
if: always()
uses: ./.github/workflows/collect-logs
with:
name: go-test

- name: consider debugging
if: failure()
uses: mxschmitt/action-tmate@v3
with:
limit-access-to-actor: false
Loading

0 comments on commit f8e8b7b

Please sign in to comment.