Add python script, rename patch file

This commit is contained in:
Alexey Masterov
2024-08-30 16:39:07 +02:00
parent 0c6b34b5a0
commit 8fb8ec57ea
2 changed files with 57 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
"""
Run the regression tests on the cloud instance of Neon
"""
import os
import re
import psycopg2
import pytest
from fixtures.log_helper import log
from fixtures.neon_fixtures import RemotePostgres
@pytest.mark.timeout(7200)
@pytest.mark.remote_cluster
def test_cloud_regress(remote_pg: RemotePostgres):
"""
Run the regression tests
"""
pg_version = re.search(r"\-pg(\d+)\]", os.environ.get('PYTEST_CURRENT_TEST')).group(1)
log.info(pg_version)
conn = psycopg2.connect(remote_pg.connstr())
cur = conn.cursor()
cur.execute("SELECT COUNT(*) FROM pg_extension WHERE extname = 'regress_so'")
num_ext = cur.fetchone()[0]
assert int(num_ext) < 2
if num_ext == 1:
log.info('The extension is found')
else:
log.info('Creating the extension')
cur.execute('CREATE EXTENSION regress_so')
conn.commit()
log.info('Creating a C function to check availability of regress.so')
cur.execute("CREATE FUNCTION get_columns_length(oid[]) "
"RETURNS int AS 'regress.so' LANGUAGE C STRICT STABLE PARALLEL SAFE;")
conn.rollback()
neondir = os.path.abspath(os.path.join(os.path.dirname(os.path.relpath(__file__)), '../../'))
runpath = f'{neondir}/vendor/postgres-v{pg_version}/src/test/regress'
binpath = f'{neondir}/pg_install/v{pg_version}/bin'
log.info(os.path.relpath(__file__))
env_vars = {
'PGHOST': remote_pg.default_options['host'],
'PGPORT': str(remote_pg.default_options['port'] if 'port' in remote_pg.default_options else 5432),
'PGUSER': remote_pg.default_options['user'],
'PGPASSWORD': remote_pg.default_options['password'],
'PGDATABASE': remote_pg.default_options['dbname']
}
regress_cmd = [
f'{runpath}/pg_regress',
'--inputdir=.',
f"--bindir={binpath}",
"--dlpath=/usr/local/lib",
"--max-concurrent-tests=20",
"--schedule=./parallel_schedule",
"--max-connections=5"
]
remote_pg.pg_bin.run(regress_cmd, env=env_vars, cwd=runpath)