Skip to content

Commit

Permalink
Add GHA to run MCS conformance tests
Browse files Browse the repository at this point in the history
The GHA clones the "sigs.k8s.io/mcs-api" repo with the desired commit
and runs `go test` directly in the directory. "v0.1.0"  doesn't have
the conformance tests so we can't run them via Go import and trying to
import a later commit is problematic due  incompatible changes to the
MCS APIs. Also the conformance tests are really tied to the MCS spec
and not specifically to the API version so they'll likely evolve
separately anyway.

The clusterset IP field in the ServiceImport is required by the
spec for ClusterIP services so that conformance test will fail unless
the clusterset IP feature is enabled in Lighthouse. However, with
that enabled, the connectivity conformance tests will fail b/c Submariner
doesn't perform routing in that case. Thus, two separate GHA jobs are
configured, one with clusterset IP enabled and one without, and the
appropriate conformance tests are run/skipped by specifying the
appropriate Ginkgo label filter.

Signed-off-by: Tom Pantelis <[email protected]>
  • Loading branch information
tpantelis committed Jan 8, 2025
1 parent 4c83648 commit f79b23a
Showing 1 changed file with 46 additions and 0 deletions.
46 changes: 46 additions & 0 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,49 @@ jobs:
- name: Post mortem
if: failure()
uses: submariner-io/shipyard/gh-actions/post-mortem@devel
conformance-test:
name: MCS Conformance
needs: images
timeout-minutes: 60
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
using: ['clusterset-ip', '']
steps:
- name: Check out the repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332

- name: Check out the mcs-api repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
ref: 2b1ebf0d1a12261b9982393a5b0e4abceefa437f
repository: kubernetes-sigs/mcs-api
path: mcs-api

- name: Deploy Submariner
shell: bash
run: |
make deploy using="${{ matrix.using }}"
- name: Run conformance tests
shell: bash
run: |
export KUBECONFIG=$(find $(git rev-parse --show-toplevel)/output/kubeconfigs/ -type f -printf %p:)
label_filter="!ClusterIP || Connectivity"
if [[ "${{ matrix.using }}" =~ "clusterset-ip" ]]; then
label_filter="ClusterIP && !Connectivity"
fi
cd mcs-api/conformance
go test -v -timeout 30m -contexts cluster1,cluster2 -args -test.timeout 15m \
--ginkgo.v --ginkgo.trace --ginkgo.label-filter "${label_filter}"
- name: Print report.html
if: always()
shell: bash
run: |
cat mcs-api/conformance/report.html
- name: Post mortem
if: failure()
uses: submariner-io/shipyard/gh-actions/post-mortem@devel

0 comments on commit f79b23a

Please sign in to comment.