Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
135 changes: 129 additions & 6 deletions .github/workflows/testing-farm.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ name: Run tests on Testing Farm

on:
push:
branches: [ master ]
pull_request_trigger:
branches: [ master, container-tests ]
pull_request_target:
types: [opened, synchronize, reopened]

jobs:
Expand All @@ -16,19 +16,37 @@ jobs:
statuses: write

steps:
- name: Get User Permission
id: checkAccess
uses: actions-cool/check-user-permission@v2
with:
require: write
username: ${{ github.triggering_actor }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Check User Permission
if: steps.checkAccess.outputs.require-result == 'false'
run: |
echo "${{ github.triggering_actor }} does not have permissions on this repo."
echo "Current permission level is ${{ steps.checkAccess.outputs.user-permission }}"
echo "Job originally triggered by ${{ github.actor }}"
exit 1
- name: Checkout repository
uses: actions/checkout@v4

with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Test init on Fedora VM
uses: sclorg/testing-farm-as-github-action@v4
uses: sclorg/testing-farm-as-github-action@main
with:
api_key: ${{ secrets.TESTING_FARM_API_TOKEN }}
compose: Fedora-Rawhide
tmt_path: "tmt"
tmt_plan_regex: "fedora-init"
pull_request_status_name: "Fedora init test"
update_pull_request_status: "true"
create_github_summary: "true"
update_pull_request_status: "true"
variables: "REPO_URL=${{ github.server_url }}/${{ github.repository }};PR_HEAD=${{ github.event.pull_request.head.sha }};"

test-upgrade:
runs-on: ubuntu-latest

Expand All @@ -38,11 +56,29 @@ jobs:
statuses: write

steps:
- name: Get User Permission
id: checkAccess
uses: actions-cool/check-user-permission@v2
with:
require: write
username: ${{ github.triggering_actor }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Check User Permission
if: steps.checkAccess.outputs.require-result == 'false'
run: |
echo "${{ github.triggering_actor }} does not have permissions on this repo."
echo "Current permission level is ${{ steps.checkAccess.outputs.user-permission }}"
echo "Job originally triggered by ${{ github.actor }}"
exit 1

- name: Checkout repository
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}

- name: Test upgrade on Fedora VM
uses: sclorg/testing-farm-as-github-action@v4
uses: sclorg/testing-farm-as-github-action@main
with:
api_key: ${{ secrets.TESTING_FARM_API_TOKEN }}
compose: Fedora-Rawhide
Expand All @@ -51,4 +87,91 @@ jobs:
pull_request_status_name: "Fedora upgrade test"
update_pull_request_status: "true"
create_github_summary: "true"
variables: "REPO_URL=${{ github.server_url }}/${{ github.repository }};PR_HEAD=${{ github.event.pull_request.head.sha }};"
container-test-init:
runs-on: ubuntu-latest

permissions:
contents: read
pull-requests: write
statuses: write

steps:
- name: Get User Permission
id: checkAccess
uses: actions-cool/check-user-permission@v2
with:
require: write
username: ${{ github.triggering_actor }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Check User Permission
if: steps.checkAccess.outputs.require-result == 'false'
run: |
echo "${{ github.triggering_actor }} does not have permissions on this repo."
echo "Current permission level is ${{ steps.checkAccess.outputs.user-permission }}"
echo "Job originally triggered by ${{ github.actor }}"
exit 1

- name: Checkout repository
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}

- name: Test init on Fedora container
uses: sclorg/testing-farm-as-github-action@main
with:
api_key: ${{ secrets.TESTING_FARM_API_TOKEN }}
compose: null
tmt_path: "tmt"
tmt_plan_regex: "container-fedora-init"
pull_request_status_name: "Fedora container init test"
update_pull_request_status: "true"
create_github_summary: "true"
variables: "REPO_URL=${{ github.server_url }}/${{ github.repository }};PR_HEAD=${{ github.event.pull_request.head.sha }};"

container-test-upgrade:
runs-on: ubuntu-latest

permissions:
contents: read
pull-requests: write
statuses: write

steps:
- name: Get User Permission
id: checkAccess
uses: actions-cool/check-user-permission@v2
with:
require: write
username: ${{ github.triggering_actor }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Check User Permission
if: steps.checkAccess.outputs.require-result == 'false'
run: |
echo "${{ github.triggering_actor }} does not have permissions on this repo."
echo "Current permission level is ${{ steps.checkAccess.outputs.user-permission }}"
echo "Job originally triggered by ${{ github.actor }}"
exit 1

- name: Checkout repository
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}

- name: Test upgrade on Fedora container
uses: sclorg/testing-farm-as-github-action@main
with:
api_key: ${{ secrets.TESTING_FARM_API_TOKEN }}
compose: null
tmt_path: "tmt"
tmt_plan_regex: "container-fedora-upgrade"
pull_request_status_name: "Fedora container upgrade test"
update_pull_request_status: "true"
create_github_summary: "true"
variables: "REPO_URL=${{ github.server_url }}/${{ github.repository }};PR_HEAD=${{ github.event.pull_request.head.sha }};"


Empty file added readme.dummy
Empty file.
12 changes: 12 additions & 0 deletions tmt/plans/container-fedora-init.fmf
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
name: /plans/fedora-init-container
summary: Run init test in a fedora container environment
provision:
how: container
image: fedora:latest
discover:
how: fmf
filter: tag:container-init-fedora
execute:
how: tmt


12 changes: 12 additions & 0 deletions tmt/plans/container-fedora-upgrade.fmf
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
name: /plans/fedora-upgrade-container
summary: Run upgrade test in a fedora container environment
provision:
how: container
image: fedora
discover:
how: fmf
filter: tag:fedora-upgrade-container
execute:
how: tmt


2 changes: 1 addition & 1 deletion tmt/plans/fedora-init.fmf
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: /plans/fedora
name: /plans/fedora-init
summary: Run tests in a fedora virtual machine environment
discover:
how: fmf
Expand Down
14 changes: 9 additions & 5 deletions tmt/tests/container/sanity/init/init.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
#!/bin/bash
# prep
git clone "$TESTING_FARM_GIT_URL" repo
git clone "$REPO_URL" repo
cd repo
git fetch origin "$TESTING_FARM_GIT_REF"
git fetch origin "$PR_HEAD"
git checkout FETCH_HEAD

grep -q systemd /proc/1/comm
echo "Return value CONTAINER: $?"

# setup
autoreconf -vfi
./configure --prefix=/usr
Expand All @@ -13,10 +16,11 @@ make
# initialization
./bin/postgresql-setup --init

# start postgresql
# start postgresql and check if it's running
PGDATA=/var/lib/pgsql/data
LOGFILE=/var/lib/pgsql/logfile
su - postgres -c "
/usr/bin/pg_ctl -D $PGDATA -l $LOGFILE start
pg_ctl -D $PGDATA status && echo \"PostgreSQL is running\" || { echo \"PostgreSQL is NOT running\"; exit 1; }
"

# check if it is running
pg_ctl -D $PGDATA status && echo "PostgreSQL is running" || { echo "PostgreSQL is NOT running"; exit 1; }
6 changes: 4 additions & 2 deletions tmt/tests/container/sanity/init/main.fmf
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
summary: Check whether the machine is a container
summary: Postgresql-setup init test in a fedora rawhide container
require:
- make
- m4
Expand All @@ -11,7 +11,9 @@ require:
- automake
- autoconf-archive
- git
test: ./init.sh
framework: shell
duration: 10m
tag: container-init-fedora
contact: [email protected]
test: ./init.sh

19 changes: 19 additions & 0 deletions tmt/tests/container/sanity/upgrade/main.fmf
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
summary: Postgresql-setup upgrade test in a fedora rawhide container
require:
- make
- m4
- docbook-utils
- help2man
- elinks
- postgresql-server
- coreutils
- autoconf
- automake
- autoconf-archive
- git
test: ./upgrade.sh
framework: shell
duration: 10m
tag: fedora-upgrade-container
contact: [email protected]

73 changes: 73 additions & 0 deletions tmt/tests/container/sanity/upgrade/upgrade.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
#!/bin/bash
# prep
git clone "$REPO_URL" repo
cd repo
git fetch origin "$PR_HEAD"
git checkout FETCH_HEAD

echo "Fedora release:"
cat /etc/fedora-release

# install postgresql16
dnf -y install postgresql16-server

# setup
autoreconf -vfi
./configure --prefix=/usr
make

# initialization
./bin/postgresql-setup --init

# start postgresql and check if it's running
PGDATA=/var/lib/pgsql/data
LOGFILE=/var/lib/pgsql/logfile
su - postgres -c "
/usr/bin/pg_ctl -D $PGDATA -l $LOGFILE start
pg_ctl -D $PGDATA status && echo \"PostgreSQL is running\" || { echo \"PostgreSQL is NOT running\"; exit 1; }
"

# insert data
su - postgres -c "
echo \"User switched\";

createdb testdb;
psql -U postgres -d testdb -c \"create table users (id serial primary key, name text)\";
psql -U postgres -d testdb -c \"insert into users (name) values ('Alice'), ('Bob'), ('Celine')\"
"
su - postgres -c '
psql -U postgres -d testdb -c "select * from users"
' > expected.txt

echo "Expected:"
cat expected.txt

# uninstall postgresql
dnf -y remove postgresql-server postgresql-private-libs postgresql libicu

# install postgresql17
dnf -y install postgresql17-upgrade

# run --upgrade
./bin/postgresql-setup --upgrade

# start postgresql and check if it's running
su - postgres -c "
/usr/bin/pg_ctl -D $PGDATA -l $LOGFILE start
pg_ctl -D $PGDATA status && echo \"PostgreSQL is running\" || { echo \"PostgreSQL is NOT running\"; exit 1; }
"

su - postgres -c '
psql -U postgres -d testdb -c "select * from users"
' > actual.txt

echo "Actual:"
cat actual.txt

diff -q expected.txt actual.txt && echo "Actual and expected outputs match" || { echo "Actual and expected outputs differ"; exit 1; }






5 changes: 3 additions & 2 deletions tmt/tests/virtual/sanity/init/init.sh
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
#!/bin/bash
# prep
git clone "$TESTING_FARM_GIT_URL" repo
git clone "$REPO_URL" repo
cd repo
git fetch origin "$TESTING_FARM_GIT_REF"
git fetch origin "$PR_HEAD"
git checkout FETCH_HEAD
git log -1 --oneline

# setup
autoreconf -vfi
Expand Down
4 changes: 2 additions & 2 deletions tmt/tests/virtual/sanity/upgrade/upgrade.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#!/bin/bash
# prep
git clone "$TESTING_FARM_GIT_URL" repo
git clone "$REPO_URL" repo
cd repo
git fetch origin "$TESTING_FARM_GIT_REF"
git fetch origin "$PR_HEAD"
git checkout FETCH_HEAD
echo "Fedora release:"
cat /etc/fedora-release
Expand Down
Loading