From e57422d0aa84f7d4f4408fcfcf6a27f9d3883370 Mon Sep 17 00:00:00 2001 From: "Markus Kitsinger (SwooshyCueb)" Date: Thu, 26 Feb 2026 11:56:16 -0600 Subject: [PATCH 1/3] [#230] Fix remaining SyntaxWarnings --- install.py | 2 +- irods_testing_environment/install/install.py | 2 +- irods_testing_environment/irods_setup.py | 2 +- irods_testing_environment/test_manager.py | 2 +- irods_testing_environment/test_runner.py | 2 +- setup_irods.py | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/install.py b/install.py index eb2c381a..7a71fef7 100644 --- a/install.py +++ b/install.py @@ -42,7 +42,7 @@ logging.debug('provided project name [{0}], docker-compose project name [{1}]' .format(args.project_name, ctx.compose_project.name)) - if len(ctx.compose_project.containers()) is 0: + if len(ctx.compose_project.containers()) == 0: logging.critical( 'no containers found for project [directory=[{0}], name=[{1}]]'.format( os.path.abspath(project_directory), ctx.compose_project.name)) diff --git a/irods_testing_environment/install/install.py b/irods_testing_environment/install/install.py index 14e62cf7..3d3d2d43 100644 --- a/irods_testing_environment/install/install.py +++ b/irods_testing_environment/install/install.py @@ -52,7 +52,7 @@ def get_list_of_package_paths(self, package_directory, package_name_list=None): glob_list = glob.glob(glob_str) - if len(glob_list) is 0: + if len(glob_list) == 0: raise RuntimeError('no packages found [{}]'.format(glob_str)) # TODO: allow specifying a suffix or something instead of taking everything diff --git a/irods_testing_environment/irods_setup.py b/irods_testing_environment/irods_setup.py index 581df127..aa71f5f5 100644 --- a/irods_testing_environment/irods_setup.py +++ b/irods_testing_environment/irods_setup.py @@ -1179,7 +1179,7 @@ def setup_irods_catalog_consumers(ctx, service_names=[context.irods_catalog_consumer_service()]) if consumer_service_instances: - if len(consumer_service_instances) is 0: + if len(consumer_service_instances) == 0: logging.warning('empty list of iRODS catalog service consumers to set up') return diff --git a/irods_testing_environment/test_manager.py b/irods_testing_environment/test_manager.py index f5514e55..ee991e6f 100644 --- a/irods_testing_environment/test_manager.py +++ b/irods_testing_environment/test_manager.py @@ -128,7 +128,7 @@ def run(self, fail_fast=True, options=None, **kwargs): try: f.result() - if tr.rc is 0 and len(tr.failed_tests()) is 0: + if tr.rc == 0 and len(tr.failed_tests()) == 0: logging.error(f'[{tr.name()}]: tests completed successfully') else: logging.error(f'[{tr.name()}]: some tests failed') diff --git a/irods_testing_environment/test_runner.py b/irods_testing_environment/test_runner.py index 371c7082..d429cbe8 100644 --- a/irods_testing_environment/test_runner.py +++ b/irods_testing_environment/test_runner.py @@ -143,7 +143,7 @@ def run(self, test_queue, fail_fast=True, **kwargs): logging.info(f'[{self.name()}]: cmd [{ec}] [{cmd}]') - if ec is 0: + if ec == 0: self.passed_tests().append((t, duration)) logging.error(f'[{self.name()}]: test passed [[{duration:>9.4f}]s] [{t or "all tests"}]') diff --git a/setup_irods.py b/setup_irods.py index 295f1649..cb2e6d7e 100644 --- a/setup_irods.py +++ b/setup_irods.py @@ -81,7 +81,7 @@ logging.debug('provided project name [{}], docker-compose project name [{}]' .format(args.project_name, ctx.compose_project.name)) - if len(ctx.compose_project.containers()) is 0: + if len(ctx.compose_project.containers()) == 0: logging.critical('no containers found for project [directory=[{}], name=[{}]]' .format(os.path.abspath(project_directory), ctx.compose_project.name)) From 2c763ecb587f368e732bbdeba329807186a9951a Mon Sep 17 00:00:00 2001 From: "Markus Kitsinger (SwooshyCueb)" Date: Wed, 29 Jul 2026 03:05:25 -0500 Subject: [PATCH 2/3] [irods/irods#8877] Add support for Ubuntu 26.04 --- README.md | 4 + irods_testing_environment/odbc_setup.py | 107 ++++++++++++++++++ projects/ubuntu-26.04/Dockerfile | 81 +++++++++++++ .../docker-compose.yml | 42 +++++++ .../docker-compose.yml | 42 +++++++ .../docker-compose.yml | 42 +++++++ .../docker-compose.yml | 42 +++++++ .../ubuntu-26.04-mysql-8.4/docker-compose.yml | 74 ++++++++++++ .../ubuntu-26.04-mysql-9.7/docker-compose.yml | 74 ++++++++++++ .../docker-compose.yml | 42 +++++++ .../docker-compose.yml | 42 +++++++ .../docker-compose.yml | 42 +++++++ 12 files changed, 634 insertions(+) create mode 100644 projects/ubuntu-26.04/Dockerfile create mode 100644 projects/ubuntu-26.04/ubuntu-26.04-mariadb-10.11/docker-compose.yml create mode 100644 projects/ubuntu-26.04/ubuntu-26.04-mariadb-11.4/docker-compose.yml create mode 100644 projects/ubuntu-26.04/ubuntu-26.04-mariadb-11.8/docker-compose.yml create mode 100644 projects/ubuntu-26.04/ubuntu-26.04-mariadb-12.3/docker-compose.yml create mode 100644 projects/ubuntu-26.04/ubuntu-26.04-mysql-8.4/docker-compose.yml create mode 100644 projects/ubuntu-26.04/ubuntu-26.04-mysql-9.7/docker-compose.yml create mode 100644 projects/ubuntu-26.04/ubuntu-26.04-postgres-16/docker-compose.yml create mode 100644 projects/ubuntu-26.04/ubuntu-26.04-postgres-17/docker-compose.yml create mode 100644 projects/ubuntu-26.04/ubuntu-26.04-postgres-18/docker-compose.yml diff --git a/README.md b/README.md index a816b530..766682e1 100644 --- a/README.md +++ b/README.md @@ -15,17 +15,21 @@ For each combination of supported OS platform/version and database type/version, - ubuntu:20.04 - ubuntu:22.04 - ubuntu:24.04 + - ubuntu:26.04 The following database Docker image tags are currently supported (although not for all platforms): - postgres:14 - postgres:16 - postgres:17 + - postgres:18 - mariadb:10.6 - mariadb:10.11 - mariadb:11.4 - mariadb:11.8 + - mariadb:12.3 - mysql:8.0 - mysql:8.4 + - mysql:9.7 ## Requirements diff --git a/irods_testing_environment/odbc_setup.py b/irods_testing_environment/odbc_setup.py index 1bd4a145..d77bd498 100644 --- a/irods_testing_environment/odbc_setup.py +++ b/irods_testing_environment/odbc_setup.py @@ -112,6 +112,33 @@ def configure_odbc_driver_ubuntu_2404_postgres_17(csp_container, odbc_driver): """ configure_postgres_odbc_driver(csp_container, odbc_driver) +def configure_odbc_driver_ubuntu_2604_postgres_16(csp_container, odbc_driver): + """Configure ODBC driver for postgres 16 on ubuntu 26.04. + + Argument: + csp_container -- docker container on which the iRODS catalog service provider is running + odbc_driver -- path to local archive file containing the ODBC driver package + """ + configure_postgres_odbc_driver(csp_container, odbc_driver) + +def configure_odbc_driver_ubuntu_2604_postgres_17(csp_container, odbc_driver): + """Configure ODBC driver for postgres 17 on ubuntu 26.04. + + Argument: + csp_container -- docker container on which the iRODS catalog service provider is running + odbc_driver -- path to local archive file containing the ODBC driver package + """ + configure_postgres_odbc_driver(csp_container, odbc_driver) + +def configure_odbc_driver_ubuntu_2604_postgres_18(csp_container, odbc_driver): + """Configure ODBC driver for postgres 18 on ubuntu 26.04. + + Argument: + csp_container -- docker container on which the iRODS catalog service provider is running + odbc_driver -- path to local archive file containing the ODBC driver package + """ + configure_postgres_odbc_driver(csp_container, odbc_driver) + def configure_odbc_driver_debian_11_postgres_14(csp_container, odbc_driver): """Configure ODBC driver for postgres 14 on debian 11. @@ -416,6 +443,19 @@ def configure_odbc_driver_mysql_84(csp_container, odbc_driver): configure_mysql_odbc_driver(csp_container, os.path.abspath(odbc_driver)) +def configure_odbc_driver_mysql_97(csp_container, odbc_driver): + """Configure ODBC driver for mysql 9.7. + + Argument: + csp_container -- docker container on which the iRODS catalog service provider is running + odbc_driver -- path to local archive file containing the ODBC driver package + """ + if not odbc_driver: + odbc_driver = download_mysql_odbc_driver( + 'https://dev.mysql.com/get/Downloads/Connector-ODBC/9.7/mysql-connector-odbc-9.7.0-linux-glibc2.28-x86-64bit.tar.gz') + + configure_mysql_odbc_driver(csp_container, os.path.abspath(odbc_driver)) + def configure_odbc_driver_ubuntu_2004_mysql_80(csp_container, odbc_driver): """Configure ODBC driver for mysql 8.0 on ubuntu 20.04. @@ -461,6 +501,24 @@ def configure_odbc_driver_ubuntu_2404_mysql_84(csp_container, odbc_driver): """ configure_odbc_driver_mysql_84(csp_container, odbc_driver) +def configure_odbc_driver_ubuntu_2604_mysql_84(csp_container, odbc_driver): + """Configure ODBC driver for mysql 8.4 on ubuntu 26.04. + + Argument: + csp_container -- docker container on which the iRODS catalog service provider is running + odbc_driver -- path to local archive file containing the ODBC driver package + """ + configure_odbc_driver_mysql_84(csp_container, odbc_driver) + +def configure_odbc_driver_ubuntu_2604_mysql_97(csp_container, odbc_driver): + """Configure ODBC driver for mysql 9.7 on ubuntu 26.04. + + Argument: + csp_container -- docker container on which the iRODS catalog service provider is running + odbc_driver -- path to local archive file containing the ODBC driver package + """ + configure_odbc_driver_mysql_97(csp_container, odbc_driver) + def configure_odbc_driver_debian_11_mysql_80(csp_container, odbc_driver): """Configure ODBC driver for mysql 8.0 on debian 11. @@ -793,6 +851,55 @@ def configure_odbc_driver_ubuntu_2404_mariadb_118(csp_container, odbc_driver): """ configure_odbc_driver_ubuntu_2404_mariadb(csp_container, odbc_driver) +def configure_odbc_driver_ubuntu_2604_mariadb(csp_container, odbc_driver): + """Configure ODBC driver for mariadb on ubuntu 26.04. + + Argument: + csp_container -- docker container on which the iRODS catalog service provider is running + odbc_driver -- path to local archive file containing the ODBC driver package + """ + configure_mariadb_odbc_driver_apt( + csp_container, + odbc_driver, + # TODO(#303): Update to a package for 26.04 when one is available + 'https://dlm.mariadb.com/4785795/Connectors/odbc/connector-odbc-3.2.9/codbc-amd64-ubuntu-24.04/mariadb-connector-odbc_3.2.9-1+maria~noble_amd64.deb') + +def configure_odbc_driver_ubuntu_2604_mariadb_1011(csp_container, odbc_driver): + """Configure ODBC driver for mariadb 10.11 on ubuntu 26.04. + + Argument: + csp_container -- docker container on which the iRODS catalog service provider is running + odbc_driver -- path to local archive file containing the ODBC driver package + """ + configure_odbc_driver_ubuntu_2604_mariadb(csp_container, odbc_driver) + +def configure_odbc_driver_ubuntu_2604_mariadb_114(csp_container, odbc_driver): + """Configure ODBC driver for mariadb 11.4 on ubuntu 26.04. + + Argument: + csp_container -- docker container on which the iRODS catalog service provider is running + odbc_driver -- path to local archive file containing the ODBC driver package + """ + configure_odbc_driver_ubuntu_2604_mariadb(csp_container, odbc_driver) + +def configure_odbc_driver_ubuntu_2604_mariadb_118(csp_container, odbc_driver): + """Configure ODBC driver for mariadb 11.8 on ubuntu 26.04. + + Argument: + csp_container -- docker container on which the iRODS catalog service provider is running + odbc_driver -- path to local archive file containing the ODBC driver package + """ + configure_odbc_driver_ubuntu_2604_mariadb(csp_container, odbc_driver) + +def configure_odbc_driver_ubuntu_2604_mariadb_123(csp_container, odbc_driver): + """Configure ODBC driver for mariadb 12.3 on ubuntu 26.04. + + Argument: + csp_container -- docker container on which the iRODS catalog service provider is running + odbc_driver -- path to local archive file containing the ODBC driver package + """ + configure_odbc_driver_ubuntu_2604_mariadb(csp_container, odbc_driver) + def configure_odbc_driver_debian_11_mariadb(csp_container, odbc_driver): """Configure ODBC driver for mariadb on debian 11. diff --git a/projects/ubuntu-26.04/Dockerfile b/projects/ubuntu-26.04/Dockerfile new file mode 100644 index 00000000..6cd77cab --- /dev/null +++ b/projects/ubuntu-26.04/Dockerfile @@ -0,0 +1,81 @@ +FROM ubuntu:26.04 + +# BASE_IMAGE_TAG must always match the image name for this build stage (the argument to the FROM instruction above). +ENV BASE_IMAGE_TAG=ubuntu:26.04 + +SHELL [ "/bin/bash", "-c" ] +ENV DEBIAN_FRONTEND=noninteractive + +# Make sure we're starting with an up-to-date image +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get autoremove -y --purge && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* /tmp/* + +RUN apt-get update && \ + apt-get install -y \ + apt-transport-https \ + ca-certificates \ + gnupg \ + wget \ + lsb-release \ + && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* /tmp/* + +RUN wget -qO - https://packages.irods.org/irods-signing-key.asc | \ + gpg \ + --no-options \ + --no-default-keyring \ + --no-auto-check-trustdb \ + --homedir /dev/null \ + --no-keyring \ + --import-options import-export \ + --output /etc/apt/keyrings/renci-irods-archive-keyring.pgp \ + --import \ + && \ + echo "deb [signed-by=/etc/apt/keyrings/renci-irods-archive-keyring.pgp arch=amd64] https://packages.irods.org/apt/ resolute main" | \ + tee /etc/apt/sources.list.d/renci-irods.list && \ + wget -qO - https://core-dev.irods.org/irods-core-dev-signing-key.asc | \ + gpg \ + --no-options \ + --no-default-keyring \ + --no-auto-check-trustdb \ + --homedir /dev/null \ + --no-keyring \ + --import-options import-export \ + --output /etc/apt/keyrings/renci-irods-core-dev-archive-keyring.pgp \ + --import \ + && \ + echo "deb [signed-by=/etc/apt/keyrings/renci-irods-core-dev-archive-keyring.pgp arch=amd64] https://core-dev.irods.org/apt/ resolute main" | \ + tee /etc/apt/sources.list.d/renci-irods-core-dev.list + +RUN apt-get update && \ + apt-get install -y \ + libcurl4-gnutls-dev \ + procps \ + python3 \ + python3-distro \ + python3-jsonschema \ + python3-lxml \ + python3-pip \ + python3-psutil \ + python3-requests \ + python3-setuptools \ + rsyslog \ + systemd \ + unixodbc \ + && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* /tmp/* + +# Installing packages via pip in Ubuntu 24.04 is more strict than before. Given +# this is for testing purposes, we remove the file which blocks pip from touching +# system packages. See https://peps.python.org/pep-0668/ for details. +RUN rm /usr/lib/python3.*/EXTERNALLY-MANAGED && \ + python3 -m pip --no-cache-dir install 'unittest-xml-reporting' + +RUN mkdir -p /irods_testing_environment_mount_dir && chmod 777 /irods_testing_environment_mount_dir + +ENTRYPOINT ["bash", "-c", "until false; do sleep 2147483647d; done"] diff --git a/projects/ubuntu-26.04/ubuntu-26.04-mariadb-10.11/docker-compose.yml b/projects/ubuntu-26.04/ubuntu-26.04-mariadb-10.11/docker-compose.yml new file mode 100644 index 00000000..b0462d3d --- /dev/null +++ b/projects/ubuntu-26.04/ubuntu-26.04-mariadb-10.11/docker-compose.yml @@ -0,0 +1,42 @@ +services: + catalog: + image: mariadb:10.11 + environment: + - MARIADB_ROOT_PASSWORD=testpassword + - MARIADB_USER=irods + - MARIADB_PASSWORD=testpassword + # For parity with mysql 8.0, we use utf8mb4 charset and utf8mb4_uca1400_as_cs collation (for case sensitivity), and disable the binary log + command: "--transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_uca1400_as_cs --disable-log-bin" + + irods-catalog-provider: + build: + context: .. + dockerfile: ${dockerfile} + depends_on: + - catalog + volumes: + - shared_volume:/irods_testing_environment_mount_dir + # The core test suite for iRODS uses SIGHUP to reload the server's configuration often. + # To keep the iRODS Rule Language from failing and producing RE_UNABLE_TO_READ_SESSION_VAR, + # we bump the maximum amount of shared memory from 64mb to 100mb. This is required because + # iRODS 5 can have two Agent Factories running simultaneously (due to the SIGHUP). + shm_size: 100mb + + irods-catalog-consumer: + build: + context: .. + dockerfile: ${dockerfile} + depends_on: + - irods-catalog-provider + volumes: + - shared_volume:/irods_testing_environment_mount_dir + # The core test suite for iRODS uses SIGHUP to reload the server's configuration often. + # To keep the iRODS Rule Language from failing and producing RE_UNABLE_TO_READ_SESSION_VAR, + # we bump the maximum amount of shared memory from 64mb to 100mb. This is required because + # iRODS 5 can have two Agent Factories running simultaneously (due to the SIGHUP). + shm_size: 100mb + +# This volume is mounted on all test servers for detached mode testing which +# requires a common vault. +volumes: + shared_volume: diff --git a/projects/ubuntu-26.04/ubuntu-26.04-mariadb-11.4/docker-compose.yml b/projects/ubuntu-26.04/ubuntu-26.04-mariadb-11.4/docker-compose.yml new file mode 100644 index 00000000..da23aa4c --- /dev/null +++ b/projects/ubuntu-26.04/ubuntu-26.04-mariadb-11.4/docker-compose.yml @@ -0,0 +1,42 @@ +services: + catalog: + image: mariadb:11.4 + environment: + - MARIADB_ROOT_PASSWORD=testpassword + - MARIADB_USER=irods + - MARIADB_PASSWORD=testpassword + # For parity with mysql 8.0, we use utf8mb4 charset and utf8mb4_uca1400_as_cs collation (for case sensitivity), and disable the binary log + command: "--transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_uca1400_as_cs --disable-log-bin" + + irods-catalog-provider: + build: + context: .. + dockerfile: ${dockerfile} + depends_on: + - catalog + volumes: + - shared_volume:/irods_testing_environment_mount_dir + # The core test suite for iRODS uses SIGHUP to reload the server's configuration often. + # To keep the iRODS Rule Language from failing and producing RE_UNABLE_TO_READ_SESSION_VAR, + # we bump the maximum amount of shared memory from 64mb to 100mb. This is required because + # iRODS 5 can have two Agent Factories running simultaneously (due to the SIGHUP). + shm_size: 100mb + + irods-catalog-consumer: + build: + context: .. + dockerfile: ${dockerfile} + depends_on: + - irods-catalog-provider + volumes: + - shared_volume:/irods_testing_environment_mount_dir + # The core test suite for iRODS uses SIGHUP to reload the server's configuration often. + # To keep the iRODS Rule Language from failing and producing RE_UNABLE_TO_READ_SESSION_VAR, + # we bump the maximum amount of shared memory from 64mb to 100mb. This is required because + # iRODS 5 can have two Agent Factories running simultaneously (due to the SIGHUP). + shm_size: 100mb + +# This volume is mounted on all test servers for detached mode testing which +# requires a common vault. +volumes: + shared_volume: diff --git a/projects/ubuntu-26.04/ubuntu-26.04-mariadb-11.8/docker-compose.yml b/projects/ubuntu-26.04/ubuntu-26.04-mariadb-11.8/docker-compose.yml new file mode 100644 index 00000000..e70b5267 --- /dev/null +++ b/projects/ubuntu-26.04/ubuntu-26.04-mariadb-11.8/docker-compose.yml @@ -0,0 +1,42 @@ +services: + catalog: + image: mariadb:11.8 + environment: + - MARIADB_ROOT_PASSWORD=testpassword + - MARIADB_USER=irods + - MARIADB_PASSWORD=testpassword + # For parity with mysql 8.0, we use utf8mb4 charset and utf8mb4_uca1400_as_cs collation (for case sensitivity), and disable the binary log + command: "--transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_uca1400_as_cs --disable-log-bin" + + irods-catalog-provider: + build: + context: .. + dockerfile: ${dockerfile} + depends_on: + - catalog + volumes: + - shared_volume:/irods_testing_environment_mount_dir + # The core test suite for iRODS uses SIGHUP to reload the server's configuration often. + # To keep the iRODS Rule Language from failing and producing RE_UNABLE_TO_READ_SESSION_VAR, + # we bump the maximum amount of shared memory from 64mb to 100mb. This is required because + # iRODS 5 can have two Agent Factories running simultaneously (due to the SIGHUP). + shm_size: 100mb + + irods-catalog-consumer: + build: + context: .. + dockerfile: ${dockerfile} + depends_on: + - irods-catalog-provider + volumes: + - shared_volume:/irods_testing_environment_mount_dir + # The core test suite for iRODS uses SIGHUP to reload the server's configuration often. + # To keep the iRODS Rule Language from failing and producing RE_UNABLE_TO_READ_SESSION_VAR, + # we bump the maximum amount of shared memory from 64mb to 100mb. This is required because + # iRODS 5 can have two Agent Factories running simultaneously (due to the SIGHUP). + shm_size: 100mb + +# This volume is mounted on all test servers for detached mode testing which +# requires a common vault. +volumes: + shared_volume: diff --git a/projects/ubuntu-26.04/ubuntu-26.04-mariadb-12.3/docker-compose.yml b/projects/ubuntu-26.04/ubuntu-26.04-mariadb-12.3/docker-compose.yml new file mode 100644 index 00000000..92574c8e --- /dev/null +++ b/projects/ubuntu-26.04/ubuntu-26.04-mariadb-12.3/docker-compose.yml @@ -0,0 +1,42 @@ +services: + catalog: + image: mariadb:12.3 + environment: + - MARIADB_ROOT_PASSWORD=testpassword + - MARIADB_USER=irods + - MARIADB_PASSWORD=testpassword + # For parity with mysql 8.0, we use utf8mb4 charset and utf8mb4_uca1400_as_cs collation (for case sensitivity), and disable the binary log + command: "--transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_uca1400_as_cs --disable-log-bin" + + irods-catalog-provider: + build: + context: .. + dockerfile: ${dockerfile} + depends_on: + - catalog + volumes: + - shared_volume:/irods_testing_environment_mount_dir + # The core test suite for iRODS uses SIGHUP to reload the server's configuration often. + # To keep the iRODS Rule Language from failing and producing RE_UNABLE_TO_READ_SESSION_VAR, + # we bump the maximum amount of shared memory from 64mb to 100mb. This is required because + # iRODS 5 can have two Agent Factories running simultaneously (due to the SIGHUP). + shm_size: 100mb + + irods-catalog-consumer: + build: + context: .. + dockerfile: ${dockerfile} + depends_on: + - irods-catalog-provider + volumes: + - shared_volume:/irods_testing_environment_mount_dir + # The core test suite for iRODS uses SIGHUP to reload the server's configuration often. + # To keep the iRODS Rule Language from failing and producing RE_UNABLE_TO_READ_SESSION_VAR, + # we bump the maximum amount of shared memory from 64mb to 100mb. This is required because + # iRODS 5 can have two Agent Factories running simultaneously (due to the SIGHUP). + shm_size: 100mb + +# This volume is mounted on all test servers for detached mode testing which +# requires a common vault. +volumes: + shared_volume: diff --git a/projects/ubuntu-26.04/ubuntu-26.04-mysql-8.4/docker-compose.yml b/projects/ubuntu-26.04/ubuntu-26.04-mysql-8.4/docker-compose.yml new file mode 100644 index 00000000..55638e44 --- /dev/null +++ b/projects/ubuntu-26.04/ubuntu-26.04-mysql-8.4/docker-compose.yml @@ -0,0 +1,74 @@ +services: + catalog: + image: mysql:8.4 + environment: + - MYSQL_ROOT_PASSWORD=testpassword + - MYSQL_USER=irods + - MYSQL_PASSWORD=testpassword + + # MySQL 8.4 defaults to using UTF-8 (utf8mb4/utf8mb4_0900_ai_ci). iRODS requires that queries + # be case-sensitive. Therefore, we set the --collation-server option to one that satisfies that + # requirement. + # + # --disable-log-bin is needed so that setup succeeds. Without this option, the following + # error is produced and setup fails: + # + # ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, + # or READS SQL DATA in its declaration and binary logging is enabled + # (you *might* want to use the less safe log_bin_trust_function_creators + # variable) + # + command: "--transaction-isolation=READ-COMMITTED --collation-server=utf8mb4_0900_as_cs --disable-log-bin" + + # The default docker security profile restricts several things to protect the OS. This results + # in the MySQL container logging the following on each interaction: + # + # mbind: Operation not permitted + # + # This does not have any known impact on testing, but if you feel it does, consider uncommenting + # the "cap_add" section below. Doing so will resolve the mbind message and may resolve other + # problems. + # + # For more information about this, see the following: + # + # https://github.com/docker-library/mysql/issues/303 + # + #cap_add: + # - SYS_NICE + + irods-catalog-provider: + build: + context: .. + dockerfile: ${dockerfile} + args: + - irods_package_version=${irods_package_version} + depends_on: + - catalog + volumes: + - shared_volume:/irods_testing_environment_mount_dir + # The core test suite for iRODS uses SIGHUP to reload the server's configuration often. + # To keep the iRODS Rule Language from failing and producing RE_UNABLE_TO_READ_SESSION_VAR, + # we bump the maximum amount of shared memory from 64mb to 100mb. This is required because + # iRODS 5 can have two Agent Factories running simultaneously (due to the SIGHUP). + shm_size: 100mb + + irods-catalog-consumer: + build: + context: .. + dockerfile: ${dockerfile} + args: + - irods_package_version=${irods_package_version} + depends_on: + - irods-catalog-provider + volumes: + - shared_volume:/irods_testing_environment_mount_dir + # The core test suite for iRODS uses SIGHUP to reload the server's configuration often. + # To keep the iRODS Rule Language from failing and producing RE_UNABLE_TO_READ_SESSION_VAR, + # we bump the maximum amount of shared memory from 64mb to 100mb. This is required because + # iRODS 5 can have two Agent Factories running simultaneously (due to the SIGHUP). + shm_size: 100mb + +# This volume is mounted on all test servers for detached mode testing which +# requires a common vault. +volumes: + shared_volume: diff --git a/projects/ubuntu-26.04/ubuntu-26.04-mysql-9.7/docker-compose.yml b/projects/ubuntu-26.04/ubuntu-26.04-mysql-9.7/docker-compose.yml new file mode 100644 index 00000000..55638e44 --- /dev/null +++ b/projects/ubuntu-26.04/ubuntu-26.04-mysql-9.7/docker-compose.yml @@ -0,0 +1,74 @@ +services: + catalog: + image: mysql:8.4 + environment: + - MYSQL_ROOT_PASSWORD=testpassword + - MYSQL_USER=irods + - MYSQL_PASSWORD=testpassword + + # MySQL 8.4 defaults to using UTF-8 (utf8mb4/utf8mb4_0900_ai_ci). iRODS requires that queries + # be case-sensitive. Therefore, we set the --collation-server option to one that satisfies that + # requirement. + # + # --disable-log-bin is needed so that setup succeeds. Without this option, the following + # error is produced and setup fails: + # + # ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, + # or READS SQL DATA in its declaration and binary logging is enabled + # (you *might* want to use the less safe log_bin_trust_function_creators + # variable) + # + command: "--transaction-isolation=READ-COMMITTED --collation-server=utf8mb4_0900_as_cs --disable-log-bin" + + # The default docker security profile restricts several things to protect the OS. This results + # in the MySQL container logging the following on each interaction: + # + # mbind: Operation not permitted + # + # This does not have any known impact on testing, but if you feel it does, consider uncommenting + # the "cap_add" section below. Doing so will resolve the mbind message and may resolve other + # problems. + # + # For more information about this, see the following: + # + # https://github.com/docker-library/mysql/issues/303 + # + #cap_add: + # - SYS_NICE + + irods-catalog-provider: + build: + context: .. + dockerfile: ${dockerfile} + args: + - irods_package_version=${irods_package_version} + depends_on: + - catalog + volumes: + - shared_volume:/irods_testing_environment_mount_dir + # The core test suite for iRODS uses SIGHUP to reload the server's configuration often. + # To keep the iRODS Rule Language from failing and producing RE_UNABLE_TO_READ_SESSION_VAR, + # we bump the maximum amount of shared memory from 64mb to 100mb. This is required because + # iRODS 5 can have two Agent Factories running simultaneously (due to the SIGHUP). + shm_size: 100mb + + irods-catalog-consumer: + build: + context: .. + dockerfile: ${dockerfile} + args: + - irods_package_version=${irods_package_version} + depends_on: + - irods-catalog-provider + volumes: + - shared_volume:/irods_testing_environment_mount_dir + # The core test suite for iRODS uses SIGHUP to reload the server's configuration often. + # To keep the iRODS Rule Language from failing and producing RE_UNABLE_TO_READ_SESSION_VAR, + # we bump the maximum amount of shared memory from 64mb to 100mb. This is required because + # iRODS 5 can have two Agent Factories running simultaneously (due to the SIGHUP). + shm_size: 100mb + +# This volume is mounted on all test servers for detached mode testing which +# requires a common vault. +volumes: + shared_volume: diff --git a/projects/ubuntu-26.04/ubuntu-26.04-postgres-16/docker-compose.yml b/projects/ubuntu-26.04/ubuntu-26.04-postgres-16/docker-compose.yml new file mode 100644 index 00000000..8a1dd282 --- /dev/null +++ b/projects/ubuntu-26.04/ubuntu-26.04-postgres-16/docker-compose.yml @@ -0,0 +1,42 @@ +services: + catalog: + image: postgres:16 + environment: + - POSTGRES_PASSWORD=testpassword + + irods-catalog-provider: + build: + context: .. + dockerfile: ${dockerfile} + args: + - irods_package_version=${irods_package_version} + depends_on: + - catalog + volumes: + - shared_volume:/irods_testing_environment_mount_dir + # The core test suite for iRODS uses SIGHUP to reload the server's configuration often. + # To keep the iRODS Rule Language from failing and producing RE_UNABLE_TO_READ_SESSION_VAR, + # we bump the maximum amount of shared memory from 64mb to 100mb. This is required because + # iRODS 5 can have two Agent Factories running simultaneously (due to the SIGHUP). + shm_size: 100mb + + irods-catalog-consumer: + build: + context: .. + dockerfile: ${dockerfile} + args: + - irods_package_version=${irods_package_version} + depends_on: + - irods-catalog-provider + volumes: + - shared_volume:/irods_testing_environment_mount_dir + # The core test suite for iRODS uses SIGHUP to reload the server's configuration often. + # To keep the iRODS Rule Language from failing and producing RE_UNABLE_TO_READ_SESSION_VAR, + # we bump the maximum amount of shared memory from 64mb to 100mb. This is required because + # iRODS 5 can have two Agent Factories running simultaneously (due to the SIGHUP). + shm_size: 100mb + +# This volume is mounted on all test servers for detached mode testing which +# requires a common vault. +volumes: + shared_volume: diff --git a/projects/ubuntu-26.04/ubuntu-26.04-postgres-17/docker-compose.yml b/projects/ubuntu-26.04/ubuntu-26.04-postgres-17/docker-compose.yml new file mode 100644 index 00000000..a4c97d8a --- /dev/null +++ b/projects/ubuntu-26.04/ubuntu-26.04-postgres-17/docker-compose.yml @@ -0,0 +1,42 @@ +services: + catalog: + image: postgres:17 + environment: + - POSTGRES_PASSWORD=testpassword + + irods-catalog-provider: + build: + context: .. + dockerfile: ${dockerfile} + args: + - irods_package_version=${irods_package_version} + depends_on: + - catalog + volumes: + - shared_volume:/irods_testing_environment_mount_dir + # The core test suite for iRODS uses SIGHUP to reload the server's configuration often. + # To keep the iRODS Rule Language from failing and producing RE_UNABLE_TO_READ_SESSION_VAR, + # we bump the maximum amount of shared memory from 64mb to 100mb. This is required because + # iRODS 5 can have two Agent Factories running simultaneously (due to the SIGHUP). + shm_size: 100mb + + irods-catalog-consumer: + build: + context: .. + dockerfile: ${dockerfile} + args: + - irods_package_version=${irods_package_version} + depends_on: + - irods-catalog-provider + volumes: + - shared_volume:/irods_testing_environment_mount_dir + # The core test suite for iRODS uses SIGHUP to reload the server's configuration often. + # To keep the iRODS Rule Language from failing and producing RE_UNABLE_TO_READ_SESSION_VAR, + # we bump the maximum amount of shared memory from 64mb to 100mb. This is required because + # iRODS 5 can have two Agent Factories running simultaneously (due to the SIGHUP). + shm_size: 100mb + +# This volume is mounted on all test servers for detached mode testing which +# requires a common vault. +volumes: + shared_volume: diff --git a/projects/ubuntu-26.04/ubuntu-26.04-postgres-18/docker-compose.yml b/projects/ubuntu-26.04/ubuntu-26.04-postgres-18/docker-compose.yml new file mode 100644 index 00000000..904279f0 --- /dev/null +++ b/projects/ubuntu-26.04/ubuntu-26.04-postgres-18/docker-compose.yml @@ -0,0 +1,42 @@ +services: + catalog: + image: postgres:18 + environment: + - POSTGRES_PASSWORD=testpassword + + irods-catalog-provider: + build: + context: .. + dockerfile: ${dockerfile} + args: + - irods_package_version=${irods_package_version} + depends_on: + - catalog + volumes: + - shared_volume:/irods_testing_environment_mount_dir + # The core test suite for iRODS uses SIGHUP to reload the server's configuration often. + # To keep the iRODS Rule Language from failing and producing RE_UNABLE_TO_READ_SESSION_VAR, + # we bump the maximum amount of shared memory from 64mb to 100mb. This is required because + # iRODS 5 can have two Agent Factories running simultaneously (due to the SIGHUP). + shm_size: 100mb + + irods-catalog-consumer: + build: + context: .. + dockerfile: ${dockerfile} + args: + - irods_package_version=${irods_package_version} + depends_on: + - irods-catalog-provider + volumes: + - shared_volume:/irods_testing_environment_mount_dir + # The core test suite for iRODS uses SIGHUP to reload the server's configuration often. + # To keep the iRODS Rule Language from failing and producing RE_UNABLE_TO_READ_SESSION_VAR, + # we bump the maximum amount of shared memory from 64mb to 100mb. This is required because + # iRODS 5 can have two Agent Factories running simultaneously (due to the SIGHUP). + shm_size: 100mb + +# This volume is mounted on all test servers for detached mode testing which +# requires a common vault. +volumes: + shared_volume: From 418966e85cb4a98cd9f5d9f81d7538eb898fd371 Mon Sep 17 00:00:00 2001 From: "Markus Kitsinger (SwooshyCueb)" Date: Mon, 17 Aug 2026 13:52:23 -0500 Subject: [PATCH 3/3] [#302] Update MariaDB ODBC packages --- irods_testing_environment/odbc_setup.py | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/irods_testing_environment/odbc_setup.py b/irods_testing_environment/odbc_setup.py index d77bd498..1e2c9ab5 100644 --- a/irods_testing_environment/odbc_setup.py +++ b/irods_testing_environment/odbc_setup.py @@ -753,7 +753,7 @@ def configure_odbc_driver_ubuntu_2004_mariadb(csp_container, odbc_driver): configure_mariadb_odbc_driver_apt( csp_container, odbc_driver, - 'https://downloads.mariadb.com/Connectors/odbc/connector-odbc-3.2.2/mariadb-connector-odbc-3.2.2-ubu2004-amd64.deb') + 'https://dlm.mariadb.com/4275270/Connectors/odbc/connector-odbc-3.2.6/mariadb-connector-odbc_3.2.6-1+maria~focal_amd64.deb') def configure_odbc_driver_ubuntu_2004_mariadb_106(csp_container, odbc_driver): """Configure ODBC driver for mariadb 10.6 on ubuntu 20.04. @@ -783,7 +783,7 @@ def configure_odbc_driver_ubuntu_2204_mariadb(csp_container, odbc_driver): configure_mariadb_odbc_driver_apt( csp_container, odbc_driver, - 'https://downloads.mariadb.com/Connectors/odbc/connector-odbc-3.2.2/mariadb-connector-odbc-3.2.2-ubu2204-amd64.deb') + 'https://dlm.mariadb.com/4785854/Connectors/odbc/connector-odbc-3.2.9/codbc-amd64-ubuntu-22.04/mariadb-connector-odbc_3.2.9-1+maria~jammy_amd64.deb') def configure_odbc_driver_ubuntu_2204_mariadb_106(csp_container, odbc_driver): """Configure ODBC driver for mariadb 10.6 on ubuntu 22.04. @@ -822,7 +822,7 @@ def configure_odbc_driver_ubuntu_2404_mariadb(csp_container, odbc_driver): configure_mariadb_odbc_driver_apt( csp_container, odbc_driver, - 'https://downloads.mariadb.com/Connectors/odbc/connector-odbc-3.2.6/mariadb-connector-odbc_3.2.6-1+maria~noble_amd64.deb') + 'https://dlm.mariadb.com/4785795/Connectors/odbc/connector-odbc-3.2.9/codbc-amd64-ubuntu-24.04/mariadb-connector-odbc_3.2.9-1+maria~noble_amd64.deb') def configure_odbc_driver_ubuntu_2404_mariadb_1011(csp_container, odbc_driver): """Configure ODBC driver for mariadb 10.11 on ubuntu 24.04. @@ -910,7 +910,7 @@ def configure_odbc_driver_debian_11_mariadb(csp_container, odbc_driver): configure_mariadb_odbc_driver_apt( csp_container, odbc_driver, - 'https://downloads.mariadb.com/Connectors/odbc/connector-odbc-3.2.2/mariadb-connector-odbc-3.2.2-deb11-amd64.deb') + 'https://dlm.mariadb.com/4785819/Connectors/odbc/connector-odbc-3.2.9/codbc-amd64-debian-11/mariadb-connector-odbc_3.2.9-1+maria~bullseye_amd64.deb') def configure_odbc_driver_debian_11_mariadb_106(csp_container, odbc_driver): """Configure ODBC driver for mariadb 10.6 debian 11. @@ -940,7 +940,7 @@ def configure_odbc_driver_debian_12_mariadb(csp_container, odbc_driver): configure_mariadb_odbc_driver_apt( csp_container, odbc_driver, - 'https://downloads.mariadb.com/Connectors/odbc/connector-odbc-3.2.6/mariadb-connector-odbc_3.2.6-1+maria~bookworm_amd64.deb') + 'https://dlm.mariadb.com/4785802/Connectors/odbc/connector-odbc-3.2.9/codbc-amd64-debian-12/mariadb-connector-odbc_3.2.9-1+maria~bookworm_amd64.deb') def configure_odbc_driver_debian_12_mariadb_1011(csp_container, odbc_driver): """Configure ODBC driver for mariadb 10.11 debian 12. @@ -979,8 +979,7 @@ def configure_odbc_driver_debian_13_mariadb(csp_container, odbc_driver): configure_mariadb_odbc_driver_apt( csp_container, odbc_driver, - # Package is for Debian 12 - 'https://downloads.mariadb.com/Connectors/odbc/connector-odbc-3.2.6/mariadb-connector-odbc_3.2.6-1+maria~bookworm_amd64.deb') + 'https://dlm.mariadb.com/4785812/Connectors/odbc/connector-odbc-3.2.9/codbc-amd64-debian-13/mariadb-connector-odbc_3.2.9-1+maria~trixie_amd64.deb') def configure_odbc_driver_debian_13_mariadb_114(csp_container, odbc_driver): """Configure ODBC driver for mariadb 11.4 debian 13. @@ -1010,7 +1009,7 @@ def configure_odbc_driver_el_8_mariadb(csp_container, odbc_driver): configure_mariadb_odbc_driver_dnf( csp_container, odbc_driver, - 'https://downloads.mariadb.com/Connectors/odbc/connector-odbc-3.2.2/mariadb-connector-odbc-3.2.2-rhel8-amd64.rpm') + 'https://dlm.mariadb.com/4785777/Connectors/odbc/connector-odbc-3.2.9/codbc-amd64-rhel-8/mariadb-connector-odbc-3.2.9-1.el8.x86_64.rpm') def configure_odbc_driver_almalinux_8_mariadb_106(csp_container, odbc_driver): """Configure ODBC driver for mariadb 10.6 almalinux 8. @@ -1076,7 +1075,7 @@ def configure_odbc_driver_el_9_mariadb(csp_container, odbc_driver): configure_mariadb_odbc_driver_dnf( csp_container, odbc_driver, - 'https://downloads.mariadb.com/Connectors/odbc/connector-odbc-3.2.6/mariadb-connector-odbc-3.2.6-1.el9.x86_64.rpm') + 'https://dlm.mariadb.com/4785763/Connectors/odbc/connector-odbc-3.2.9/codbc-amd64-rhel-9/mariadb-connector-odbc-3.2.9-1.el9.x86_64.rpm') def configure_odbc_driver_almalinux_9_mariadb_1011(csp_container, odbc_driver): """Configure ODBC driver for mariadb 10.11 almalinux 9. @@ -1142,8 +1141,7 @@ def configure_odbc_driver_el_10_mariadb(csp_container, odbc_driver): configure_mariadb_odbc_driver_dnf( csp_container, odbc_driver, - # package is for EL9 - 'https://downloads.mariadb.com/Connectors/odbc/connector-odbc-3.2.6/mariadb-connector-odbc-3.2.6-1.el9.x86_64.rpm') + 'https://dlm.mariadb.com/4785863/Connectors/odbc/connector-odbc-3.2.9/codbc-amd64-rhel-10/mariadb-connector-odbc-3.2.9-1.el10.x86_64.rpm') def configure_odbc_driver_almalinux_10_mariadb_114(csp_container, odbc_driver): """Configure ODBC driver for mariadb 11.4 almalinux 10.