postgresql: add ptest support

Add ptest infrastructure to run the PostgreSQL standard regression test
suite (pg_regress) on the target system.

Test logs:
root@qemux86-64:~# ptest-runner postgresql
START: ptest-runner
2026-03-24T02:42
BEGIN: /usr/lib64/postgresql/ptest
.....
**if all pass **
PASS: - event_trigger_login                      1901 ms
PASS: - fast_default                             9459 ms
PASS: - tablespace                              16542 ms
PASS: all tests passed

**if have fail**
FAIL: create_type                              1763 ms
PASS: create_schema                            2123 ms
PASS: - tablespace                              23226 ms
FAIL: some tests failed

waiting for server to shut down.... done
server stopped
DURATION: 853
END: /usr/lib64/postgresql/ptest
2026-03-24T02:56
STOP: ptest-runner
TOTAL: 1 FAIL: 0

Signed-off-by: Guocai He <guocai.he.cn@windriver.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
This commit is contained in:
Guocai He
2026-03-24 18:50:21 +08:00
committed by Khem Raj
parent c4c6915cba
commit 4fe575d155
3 changed files with 107 additions and 1 deletions
+41 -1
View File
@@ -29,6 +29,7 @@ SRC_URI = "https://ftp.postgresql.org/pub/source/v${PV}/${BP}.tar.bz2 \
file://postgresql.pam \
file://postgresql-setup \
file://postgresql.service \
file://run-ptest \
"
LEAD_SONAME = "libpq.so"
@@ -37,7 +38,7 @@ LEAD_SONAME = "libpq.so"
export LDFLAGS_SL = "${LDFLAGS}"
export LDFLAGS_EX_BE = "-Wl,--export-dynamic"
inherit autotools pkgconfig perlnative python3native python3targetconfig useradd update-rc.d systemd gettext perl-version multilib_header
inherit autotools pkgconfig perlnative python3native python3targetconfig useradd update-rc.d systemd gettext perl-version multilib_header ptest
CFLAGS += "-I${STAGING_INCDIR}/${PYTHON_DIR}"
@@ -184,6 +185,45 @@ do_compile:append() {
done
}
do_compile_ptest() {
oe_runmake -C src/test/regress all
}
do_install_ptest() {
mkdir -p ${D}${PTEST_PATH}/test
# Install pg_regress binary
install -m 0755 ${B}/src/test/regress/pg_regress ${D}${PTEST_PATH}/test/
# Install test schedules and resultmap
for f in parallel_schedule serial_schedule resultmap; do
[ -f ${S}/src/test/regress/$f ] && install -m 0644 ${S}/src/test/regress/$f ${D}${PTEST_PATH}/test/
done
# Install SQL, expected, input, output, and data files
for d in sql expected input output data; do
if [ -d ${S}/src/test/regress/$d ]; then
cp -r ${S}/src/test/regress/$d ${D}${PTEST_PATH}/test/
fi
done
# Install the regress test shared library into the standard PostgreSQL
# package library directory (PKGLIBDIR) alongside contrib modules such
# as autoinc.so and refint.so. This allows pg_regress --dlpath to
# resolve all required shared libraries from a single location.
install -d ${D}${libdir}/${BPN}
install -m 0755 ${B}/src/test/regress/regress.so ${D}${libdir}/${BPN}/
# Install run-ptest
install -m 0755 ${UNPACKDIR}/run-ptest ${D}${PTEST_PATH}/
# Set ownership to postgres user for running tests
chown -R postgres:postgres ${D}${PTEST_PATH}
}
RDEPENDS:${PN}-ptest += "${PN}-client ${PN}-contrib perl"
FILES:${PN}-ptest += "${libdir}/${BPN}/regress.so"
# server needs to configure user and group
usernum = "28"
groupnum = "28"