Skip to content

Releases: postgrespro/testgres

1.11.0

22 Apr 12:07
Compare
Choose a tag to compare

Testgres 1.11.0 Release Notes

1. Important Changes

1.1. Removal of testgres.OsOperations::db_connect method (#237)

The db_connect method has been removed from the OsOperations interface as it was not fitting with the OS-specific functionality it was intended for.

1.2. Replacement of testgres.helpers.port_manager.PortManager (#234)

The old PortManager class has been replaced by the new testgres.port_manager.PortManager interface. The functionalities of the old PortManager are now in the testgres.utils.internal__reserve_port function.

1.3. PostgresNode property changes (#234)

  • PostgresNode::name, PostgresNode::host, PostgresNode::port, PostgresNode::ssh_key, and PostgresNode::os_ops are now read-only properties. These properties cannot be modified after the creation of a PostgresNode object.
  • Modifying a node's port now requires recreating the PostgresNode object due to potential complexities in synchronizing configurations across PostgreSQL instances.

1.4. New PostgresNode parameters (#234, ac0a2bb)

  • port_manager and os_ops parameters have been added to the PostgresNode constructor. These parameters allow explicit control over the port reservation and the OS operations used by the node.

2. New Features

2.1. New testgres.port_manager.PortManager Interface (#234)

A new interface for reserving and releasing ports, used by PostgresNode to manage port assignments correctly on both local and remote systems. Two implementations are available:

  • PortManager__ThisHost (for local systems)
  • PortManager__Generic (for both local and remote systems)

2.2. PostgresNode::clone_with_new_name_and_base_dir Method (ac0a2bb)

New method to clone a PostgresNode with a new name and base directory. This method is now used in NodeBackup::spawn_primary for better node cloning.

2.3. OsOperations::is_free_port Method (#234)

A new method added to OsOperations to check if a port is free. This method is used in the new PortManager__Generic class.

2.4. Support for Environment Variables in OsOperations::execute_command (#239)

You can now pass environment variables through the new exec_env parameter when using the execute_command method of OsOperations. This feature has been added to PostgresNode::start and PostgresNode::slow_start.

3. Updates and Changes

3.1. PostgresNode::start Does Not Call logging.error Anymore (b917141)

The PostgresNode::start method no longer logs errors before raising exceptions. This change improves the handling of errors and avoids misclassification of errors as they are now left for the client to handle.

3.2. RemoteOperations::exec_command Updates (#185, #187)

  • Explicit enumeration of supported cmd parameter types.
  • Explicitly transfers language environment variables (LANG, LC_*, etc.) during SSH command execution.

3.3. PostgresNode::pid Improved (#199)

Now uses pg_ctl to handle pid property more reliably.

3.4. Refactoring of OsOperations::execute_command (#203)

Improved error handling and the way results are processed. The function now only checks the exit code for errors and allows the caller to manage expected errors.

4. Bug Fixes

4.1. OsOperations::cwd Bug Fix (#182)

The implementation of cwd now works correctly with local systems.

4.2. Fixes in OsOperations::write Method (#183)

Bug fixes and data preparation improvements for both local and remote operations.

4.3. Fixes in PostgresNode::start Method (50fc4c5)

Corrected an issue in the warning message generation when starting a node.

4.4. RemoteOperations::mktemp Fix (#202)

The call to mktemp now correctly uses the -t option to return the full path instead of just a name.

4.5. Fix for RemoteOperations::listdir (#217)

Improved handling of directory listings, especially for paths with spaces.

5. Other Changes

5.1. New CI Verifications

  • Support for multiple Python versions (3.8 - 3.12).
  • Tests on multiple Linux distributions (Ubuntu 2024.04, AltLinux 10/11).

5.2. Migration to pytest

Tests have been migrated from unittest to pytest for better flexibility and efficiency.

5.3. Global Test Refactoring

New unified tests for LocalOperations and RemoteOperations.

5.4. Experimental Logging Feature

A new conftest.py allows logging test results for further processing of errors and warnings within a single test.

Full Changelog: 1.10.5 → 1.11.0

Contributors

1.10.5

18 Feb 13:46
Compare
Choose a tag to compare

What's Changed

Full Changelog: 1.10.4...1.10.5

1.10.4

12 Feb 08:38
Compare
Choose a tag to compare

Testgres 1.10.4 Release Notes

🚀 Key Improvements

  • Better Port Management: Improved handling of port numbers to reduce conflicts and errors. #165 @dmitry-lipetsk
  • More Reliable Error Handling:

🔧 Bug Fixes & Enhancements

  • Database Connection Fix: PSQL now explicitly passes the database name using -d <dbname>. #168 @dmitry-lipetsk
  • SSH Command Fix: Corrected SSH command execution in RemoteOperations::execute. #169 @dmitry-lipetsk
  • Remote Operations Updates:
  • File Operations Enhancements:
    • OsOps::read methods now correctly handle text mode. #171
    • OsOps::read_binary now supports offsets. #173 @dmitry-lipetsk
  • Backup Testing Support: Added check backup-source to help test pg_probackup3. #176 @egarbuz

🛠 Refactoring & Code Cleanup

🎉 New Contributors

📌 Full Changelog: 1.10.3 → 1.10.4

1.10.3

15 Dec 17:31
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 1.10.2...1.10.3

1.10.2

27 Sep 15:09
177724b
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 1.10.1...1.10.2

1.10.1

08 Jul 04:18
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 1.10.0...1.10.1

1.10.0

14 Mar 14:13
356cd52
Compare
Choose a tag to compare

What's Changed

  • Add pg_upgrade option by @demonolock (#97)
    This function allows upgrade PostgreSQL versions.
  • Remove unnecessary output by @homper (#88)
  • Fix get_pg_version for Linux Mint by @demonolock (#101)
  • Set default test locale to en by @Ogurezzz (#107)
    This change aims to standardize test outputs.
  • Fix Error during executing query by @z-kasymalieva (#110)
    Resolved an issue related to executing queries within the framework, particularly when executing commands that do not produce row output, which previously resulted in errors.
  • Run the archive command through exec by @asavchkov (#113)
    If the PostgreSQL archive command is run through the dash shell the shell produces a core dump upon receiving a SIGQUIT during the PostgreSQL server shutdown. This change replaces the dash process with pg_probackup to avoid the production of a core dump.

New Contributors

Full Changelog: 1.9.3...1.10.0

1.9.3

21 Dec 11:48
1a2f6da
Compare
Choose a tag to compare
  • Fixed a problem on MacOS with command --version
  • Fixed problems on Windows

1.9.2

19 Oct 21:33
Compare
Choose a tag to compare
  • Removed sshtunnel and fabric libraries usage

1.9.1

18 Oct 12:28
ad40c0f
Compare
Choose a tag to compare
1.9.1 Pre-release
Pre-release
  • Removed paramiko library usage