PMM2 Integration Tests #1242
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
name: pmm2-testsuite pipeline | |
on: | |
# run with default inputs | |
workflow_dispatch: | |
inputs: | |
server_image: | |
description: "pmm-server docker image, default perconalab/pmm-server:dev-latest" | |
required: false | |
type: string | |
client_version: | |
description: "pmm2-client version Tarball or Dev-latest, default is dev-latest" | |
required: false | |
type: string | |
client_image: | |
description: "pmm2-client docker image, default perconalab/pmm-client:dev-latest" | |
required: false | |
type: string | |
pmm_qa_branch: | |
description: "Branch for PMM-QA to checkout" | |
required: false | |
type: string | |
pmm_ui_branch: | |
description: "Branch for PMM-UI(CLI) tests to checkout" | |
required: false | |
type: string | |
sha: | |
description: "SHA (leave empty if running manually, default - 'null')" | |
required: false | |
type: string | |
workflow_call: | |
inputs: | |
server_image: | |
description: "pmm-server docker image, default perconalab/pmm-server:dev-latest" | |
required: false | |
type: string | |
client_version: | |
description: "pmm2-client version Tarball or Dev-latest, default is dev-latest" | |
required: false | |
type: string | |
client_image: | |
description: "pmm2-client docker image, default perconalab/pmm-client:dev-latest" | |
required: false | |
type: string | |
pmm_qa_branch: | |
description: "Branch for PMM-QA to checkout" | |
required: false | |
type: string | |
pmm_ui_branch: | |
description: "Branch for PMM-UI(CLI) tests to checkout" | |
required: false | |
type: string | |
sha: | |
description: "SHA (leave empty if running manually, default - 'null')" | |
required: false | |
type: string | |
jobs: | |
bats-testsuite: | |
runs-on: ubuntu-latest | |
timeout-minutes: 40 | |
env: | |
SERVER_IMAGE: ${{ github.event.inputs.server_image || inputs.server_image || 'perconalab/pmm-server:dev-latest' }} | |
CLIENT_IMAGE: ${{ github.event.inputs.client_image || inputs.client_image || 'perconalab/pmm-client:dev-latest' }} | |
CLIENT_VERSION: ${{ github.event.inputs.client_version || inputs.client_version || 'dev-latest' }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
PMM_QA_BRANCH: ${{ github.event.inputs.pmm_qa_branch || inputs.pmm_qa_branch || 'main' }} | |
PMM_UI_BRANCH: ${{ github.event.inputs.pmm_ui_branch || inputs.pmm_ui_branch || 'main' }} | |
DOCKER_VERSION: ${{ github.event.inputs.server_image || inputs.server_image || 'perconalab/pmm-server:dev-latest' }} | |
CLIENT_DOCKER_VERSION: ${{ github.event.inputs.client_image || inputs.client_image || 'perconalab/pmm-client:dev-latest' }} | |
SHA: ${{ github.event.inputs.sha || inputs.sha || github.event.pull_request.head.sha || github.event.pull_request.head.sha || github.sha || 'null' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
db-type: [ps5.7, ps8, pdpgsql13, pdpgsql14, pdpgsql15, modb4.4, modb5, modb6, help, generic, clientContainer, haproxy, proxysql, ms8.0] | |
steps: | |
- name: Create status check | |
if: ${{ env.SHA != 'null' }} | |
uses: percona-platform/github-status-action@update-node | |
continue-on-error: true | |
with: | |
authToken: ${{ secrets.GITHUB_TOKEN }} | |
context: "${{ matrix.db-type }} CLI tests" | |
description: "Test execution ${{ job.status }}" | |
state: "pending" | |
repository: ${{ github.repository }} | |
target_url: "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
sha: ${{ env.SHA }} | |
- name: Checkout PMM-QA tests ${{ env.PMM_QA_BRANCH }} branch | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ env.PMM_QA_BRANCH }} | |
repository: percona/pmm-qa | |
path: ./ | |
- name: Checkout PMM UI tests | |
if: ${{ matrix.db-type == 'modb6' || matrix.db-type == 'modb5' || matrix.db-type == 'modb4.4' || matrix.db-type == 'help' || matrix.db-type == 'pdpgsql13' || matrix.db-type == 'pdpgsql14' || matrix.db-type == 'pdpgsql15' }} | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ env.PMM_UI_BRANCH }} | |
repository: percona/pmm-ui-tests | |
path: ./pmm-ui-tests | |
- name: Install playwright | |
if: ${{ matrix.db-type == 'modb6' || matrix.db-type == 'modb5' || matrix.db-type == 'modb4.4' || matrix.db-type == 'help' || matrix.db-type == 'pdpgsql13' || matrix.db-type == 'pdpgsql14' || matrix.db-type == 'pdpgsql15' }} | |
working-directory: ./pmm-ui-tests/cli | |
run: | | |
npm install | |
npx playwright install | |
- name: Setup tools | |
run: | | |
npm install -g bats | |
sudo apt-get install -y apt-transport-https ca-certificates dirmngr ansible libaio1 libaio-dev libnuma-dev libncurses5 socat sysbench | |
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754 | |
echo "deb https://packages.clickhouse.com/deb stable main" | sudo tee \ | |
/etc/apt/sources.list.d/clickhouse.list | |
sudo apt-get update | |
sudo apt-get install -y clickhouse-client | |
sudo curl -s https://raw.githubusercontent.com/datacharmer/dbdeployer/master/scripts/dbdeployer-install.sh | bash | |
wget https://raw.githubusercontent.com/Percona-QA/percona-qa/master/get_download_link.sh | |
chmod +x get_download_link.sh | |
- name: Setup PMM2-Server | |
run: | | |
docker create -v /srv --name pmm-server-data ${{ env.SERVER_IMAGE }} | |
docker run -d -p 80:80 -p 443:443 -p 9000:9000 -e PERCONA_TEST_PLATFORM_ADDRESS=https://check-dev.percona.com:443 -e PERCONA_TEST_PLATFORM_PUBLIC_KEY=RWTg+ZmCCjt7O8eWeAmTLAqW+1ozUbpRSKSwNTmO+exlS5KEIPYWuYdX --volumes-from pmm-server-data --name pmm-server --restart always ${{ env.SERVER_IMAGE }} | |
sleep 30 | |
- name: Setup PMM2-Client | |
run: sudo -E bash -x ./pmm-tests/pmm2-client-setup.sh --pmm_server_ip 127.0.0.1 --client_version ${{ env.CLIENT_VERSION }} --admin_password admin --use_metrics_mode no | |
- name: Setup npm modules for the integration setup | |
working-directory: pmm-integration | |
run: npm ci | |
- name: Run CLI '--help' tests | |
if: ${{ matrix.db-type == 'help' }} | |
working-directory: ./pmm-ui-tests/cli | |
run: npx playwright test pmm-ui-tests/cli/tests/help.spec.ts | |
- name: Run Setup for ps5.7 | |
working-directory: pmm-integration | |
if: ${{ matrix.db-type == 'ps5.7' }} | |
run: | | |
sudo npx ts-node ./integration-setup.ts --ps-version=5.7 --ci --addclient=ps,1 | |
- name: Run Setup for ps8.0 | |
working-directory: pmm-integration | |
if: ${{ matrix.db-type == 'ps8' }} | |
run: | | |
sudo npx ts-node ./integration-setup.ts --ps-version=8 --ci --addclient=ps,1 | |
- name: Run bats tests for PS | |
if: ${{ matrix.db-type == 'ps5.7' || matrix.db-type == 'ps8' }} | |
run: sudo bats ./pmm-tests/pmm-2-0-bats-tests/ps-specific-tests.bats | |
- name: Run Setup for pdpgsql 13 | |
working-directory: pmm-integration | |
if: ${{ matrix.db-type == 'pdpgsql13' }} | |
run: | | |
sudo npx ts-node ./integration-setup.ts --ci --addclient=pdpgsql,1 --pdpgsql-version=13 | |
- name: Run Setup for pdpgsql 14 | |
working-directory: pmm-integration | |
if: ${{ matrix.db-type == 'pdpgsql14' }} | |
run: | | |
sudo npx ts-node ./integration-setup.ts --ci --addclient=pdpgsql,1 --pdpgsql-version=14 | |
- name: Run Setup for pdpgsql 15.0 | |
working-directory: pmm-integration | |
if: ${{ matrix.db-type == 'pdpgsql15' }} | |
run: | | |
sudo npx ts-node ./integration-setup.ts --ci --addclient=pdpgsql,1 --pdpgsql-version=15.0 | |
- name: Run CLI tests for PDPGSQL | |
if: ${{ matrix.db-type == 'pdpgsql13' || matrix.db-type == 'pdpgsql14' || matrix.db-type == 'pdpgsql15' }} | |
working-directory: ./pmm-ui-tests/cli | |
run: npx playwright test pgsql | |
- name: Run Setup for PSMDB 4.4 | |
working-directory: pmm-integration | |
if: ${{ matrix.db-type == 'modb4.4' }} | |
run: sudo npx ts-node ./integration-setup.ts --ci --addclient=modb,1 --mo-version=4.4 | |
- name: Run Setup for PSMDB 5 | |
working-directory: pmm-integration | |
if: ${{ matrix.db-type == 'modb5' }} | |
run: sudo npx ts-node ./integration-setup.ts --ci --addclient=modb,1 --mo-version=5 | |
- name: Run Setup for PSMDB 6 | |
working-directory: pmm-integration | |
if: ${{ matrix.db-type == 'modb6' }} | |
run: sudo npx ts-node ./integration-setup.ts --ci --addclient=modb,1 --mo-version=6 | |
- name: Run CLI tests for PSMDB | |
if: ${{ matrix.db-type == 'modb6' || matrix.db-type == 'modb5' || matrix.db-type == 'modb4.4' }} | |
working-directory: ./pmm-ui-tests/cli | |
run: npx playwright test pmm-ui-tests/cli/tests/modb.spec.ts | |
- name: Run Setup Generic Tests, Including Client Container Setup | |
if: ${{ matrix.db-type == 'clientContainer' }} | |
run: | | |
sudo -E bash -x ./pmm-tests/pmm-framework.sh --setup-pmm-client-docker --pmm2 | |
- name: Run bats tests for generic Scenarios | |
if: ${{ matrix.db-type == 'generic' }} | |
run: | | |
sudo bats ./pmm-tests/pmm-2-0-bats-tests/generic-tests.bats | |
sudo bats ./pmm-tests/pmm-2-0-bats-tests/docker-env-variable-tests.bats | |
- name: Run bats tests for Client Container Scenarios | |
if: ${{ matrix.db-type == 'clientContainer' }} | |
run: | | |
sudo bats ./pmm-tests/pmm-2-0-bats-tests/pmm-client-docker-tests.bats | |
sudo bats ./pmm-tests/pmm-2-0-bats-tests/pmm-admin-unregister-tests.bats | |
- name: Run Setup for HAPROXY | |
if: ${{ matrix.db-type == 'haproxy' }} | |
run: | | |
export CLIENT_VERSION=${{ env.CLIENT_VERSION }} | |
export CLIENT_DOCKER_VERSION=${{ env.CLIENT_DOCKER_VERSION }} | |
sudo -E bash -x ./pmm-tests/pmm-framework.sh --addclient=haproxy,1 --pmm2 | |
- name: Run bats tests for Client Container Scenarios | |
if: ${{ matrix.db-type == 'haproxy' }} | |
run: | | |
sudo bats ./pmm-tests/pmm-2-0-bats-tests/haproxy-tests.bats | |
- name: Run Setup for ProxySQL | |
if: ${{ matrix.db-type == 'proxysql' }} | |
run: sudo -E bash -x ./pmm-tests/pmm-framework.sh --addclient=pxc,1 --pmm2 --pxc-version=5.7 | |
- name: Run bats tests for ProxySQL | |
if: ${{ matrix.db-type == 'proxysql' }} | |
run: | | |
sudo bats ./pmm-tests/pmm-2-0-bats-tests/proxysql-specific-tests.bats | |
- name: Run Setup for MySQL | |
if: ${{ matrix.db-type == 'ms8.0' }} | |
run: sudo -E bash -x ./pmm-tests/pmm-framework.sh --addclient=ms,1 --pmm2 --ms-version=8.0 | |
- name: Run bats tests for MySQL Tests | |
if: ${{ matrix.db-type == 'ms8.0' }} | |
run: | | |
sudo bats ./pmm-tests/pmm-2-0-bats-tests/ms-specific-tests.bats | |
- name: Generate and Attach the report | |
if: ${{ matrix.db-type == 'modb6' || matrix.db-type == 'modb5' || matrix.db-type == 'modb4.4' || matrix.db-type == 'help' || matrix.db-type == 'pdpgsql13' || matrix.db-type == 'pdpgsql14' || matrix.db-type == 'pdpgsql15' }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: "report-${{ matrix.db-type }}" | |
path: ./pmm-ui-tests/cli/test-report | |
- name: Create status check | |
if: ${{ always() }} | |
uses: percona-platform/github-status-action@update-node | |
continue-on-error: true | |
with: | |
authToken: ${{ secrets.GITHUB_TOKEN }} | |
context: "${{ matrix.db-type }} CLI tests" | |
description: "Test execution ${{ job.status }}" | |
state: ${{ job.status }} | |
repository: ${{ github.repository }} | |
target_url: "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
sha: ${{ env.SHA }} |