-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Revert "temporarily remove e2e test - REVERT ME"
This reverts commit fbe771c.
- Loading branch information
Showing
2 changed files
with
146 additions
and
0 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
name: End-to-End tests | ||
|
||
on: | ||
pull_request: | ||
|
||
|
||
jobs: | ||
# test option values defined at test/conftest.py are passed on via repository secret | ||
# INTEGRATION_TEST_ARGS to operator-workflows automatically. | ||
openstack-integration-end-to-end-test: | ||
name: end-to-end test using private-endpoint | ||
uses: canonical/operator-workflows/.github/workflows/integration_test.yaml@main | ||
secrets: inherit | ||
with: | ||
juju-channel: 3.2/stable | ||
pre-run-script: scripts/setup-lxd.sh | ||
provider: lxd | ||
test-tox-env: integration-juju3.2 | ||
modules: '["test_e2e"]' | ||
extra-arguments: "-m openstack" | ||
self-hosted-runner: true | ||
self-hosted-runner-label: stg-private-endpoint | ||
|
||
required_status_checks: | ||
name: Required E2E Test Status Checks | ||
runs-on: ubuntu-latest | ||
needs: | ||
- openstack-integration-end-to-end-test | ||
if: always() && !cancelled() | ||
timeout-minutes: 5 | ||
steps: | ||
- run: | | ||
[ '${{ needs.openstack-integration-end-to-end-test.result }}' = 'success' ] || (echo openstack-integration-end-to-end-test failed && false) |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
# Copyright 2024 Canonical Ltd. | ||
# See LICENSE file for licensing details. | ||
|
||
name: Run End-to-End test | ||
|
||
on: | ||
# The inputs are the same but they cannot be shared between triggers. | ||
# See https://github.com/orgs/community/discussions/39357 | ||
workflow_call: | ||
inputs: | ||
runner-tag: | ||
description: The e2e test runner tag to run the workflow on. | ||
type: string | ||
required: true | ||
runner-virt-type: | ||
description: The e2e test runner virtualization type. E.g. lxd, or openstack. | ||
# workflow_call does not support choice type. | ||
type: string | ||
required: true | ||
workflow_dispatch: | ||
inputs: | ||
runner-tag: | ||
description: The e2e test runner tag to run the workflow on. | ||
type: string | ||
required: true | ||
runner-virt-type: | ||
description: The e2e test runner virtualization type. | ||
type: choice | ||
required: true | ||
options: | ||
- lxd | ||
- openstack | ||
|
||
jobs: | ||
e2e-test: | ||
name: End-to-End Test Run | ||
runs-on: [self-hosted, linux, "${{ inputs.runner-tag }}"] | ||
steps: | ||
- name: Hostname is set to "github-runner" | ||
run: sudo hostnamectl hostname | grep github-runner | ||
# Snapd can have some issues in privileged LXD containers without setting | ||
# security.nesting=True and this. | ||
- name: Fix snap issue in privileged LXD containers | ||
run: ln -s /bin/true /usr/local/bin/udevadm | ||
# Below is a series of simple tests to assess the functionality of the newly spawned runner. | ||
- name: Echo hello world | ||
run: echo "hello world" | ||
- name: File permission for /usr/local/bin | ||
run: ls -ld /usr/local/bin | grep drwxrwxrwx | ||
- name: Test file permission for /usr/local/bin | ||
run: touch /usr/local/bin/test_file | ||
# "Install microk8s" step will test if the proxies settings are correct. | ||
- name: Proxy set in /etc/environment | ||
run: cat /etc/environment | ||
# "Update apt in python docker container" step will test docker default proxy settings due to | ||
# pulling the python image. | ||
- name: Proxy set in docker daemon | ||
run: | | ||
[[ -z "${http_proxy}" && -z "${HTTP_PROXY}" ]] \ | ||
|| sudo cat /etc/systemd/system/docker.service.d/http-proxy.conf | grep HTTP_PROXY | ||
# "Update apt in python docker container" step will test docker client default proxy settings. | ||
- name: Proxy set in docker client | ||
run: | | ||
[[ -z "${http_proxy}" && -z "${HTTP_PROXY}" ]] \ | ||
|| cat /home/ubuntu/.docker/config.json | grep httpProxy | ||
- name: Install microk8s | ||
run: sudo snap install microk8s --classic | ||
- name: Wait for microk8s | ||
timeout-minutes: 10 | ||
run: microk8s status --wait-ready | ||
- name: Deploy nginx for testing | ||
run: microk8s kubectl create deployment nginx --image=nginx | ||
- name: Wait for nginx to be ready | ||
run: microk8s kubectl rollout status deployment/nginx --timeout=30m | ||
- name: Update apt in python docker container | ||
run: docker run python:3.10-slim apt-get update | ||
- name: Docker version | ||
run: docker version | ||
- name: Check python alias for python3 | ||
run: python --version | ||
- name: pip version | ||
run: python3 -m pip --version | ||
- name: npm version | ||
run: npm --version | ||
- name: shellcheck version | ||
run: shellcheck --version | ||
- name: jq version | ||
run: jq --version | ||
- name: yq version | ||
run: yq --version | ||
- name: apt update | ||
run: sudo apt-get update -y | ||
# Use pipx for 24.04 noble, check-jsonschema breaks OS system packages. | ||
- name: install pipx | ||
run: sudo apt-get install -y pipx | ||
- name: install check-jsonschema | ||
run: python3 -m pip install check-jsonschema || pipx install check-jsonschema | ||
- name: unzip version | ||
run: unzip -v | ||
- name: gh version | ||
run: gh --version | ||
# `check-jsonschema` is installed using pip. The directory `~/.local/bin` needs to be added to PATH. | ||
# ~/.local/bin is added to path runner env through in scripts/env.j2 | ||
- name: test check-jsonschema | ||
run: check-jsonschema --version | ||
- name: Test Firewall | ||
if: "${{ github.event.inputs.runner-virt-type == 'lxd' }}" | ||
run: | | ||
HOST_IP=$(ip route | grep default | cut -f 3 -d" ") | ||
[ $((ping $HOST_IP -c 5 || :) | grep "Destination Port Unreachable" | wc -l) -eq 5 ] | ||
- name: Test sctp support | ||
if: "${{ github.event.inputs.runner-virt-type == 'lxd' }}" | ||
run: sudo apt-get install lksctp-tools -yq && checksctp |