Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PortManager #234

Merged

Conversation

dmitry-lipetsk
Copy link
Collaborator

@dmitry-lipetsk dmitry-lipetsk commented Apr 4, 2025

Main

  • Old PortManager was deleted
  • PostresNode uses new "abstract" interface PortManager to reserve/release port number.
  • PostgresNode.free_port always resets port number
  • OsOperations::is_free_port is added
    • LocalOsOperations::is_free_port uses python socket
    • RemoteOsOperations::is_free_port uses utility nc (netcat)
  • PostgresNode.start raises exception (InvalidOperationException) if node is None

Refactoring

  • PostgresNode::port is RO-property now. It throws if port is None
  • PostgresNode::host is RO-property now
  • PostgresNode::ssh_key is RO-property now
  • PostgresNode::name is RO-property now

PostgresNode uses PostgresNodePortManager to reserve/release port number

New PostgresNode RO-properties are added:
 - name
 - host
 - port
 - ssh_key
- [del] TestTestgresLocal.test_pgbench
- [del] TestTestgresRemote.test_pgbench
- test_port_rereserve_during_node_start
- test_port_conflict
…sg_arg]

- RemoteOperations::message
- RemoteOperations::path_exists
- RemoteOperations::is_port_free
Let's install it (netcat-traditional) explicitly.
A number of attempts is increased to 128.

The previous value (10) is not enough and test could fail.
- [del] assert hasattr(os_ops, "host")

During this test we get another exception:

<[AttributeError("'PostgresNode' object has no attribute '_port'") raised in repr()] PostgresNode object at 0x782b67d79dc0>
Tests are added:
 - test_try_to_get_port_after_free_manual_port
 - test_try_to_start_node_after_free_manual_port
@dmitry-lipetsk dmitry-lipetsk merged commit 14bc733 into postgrespro:master Apr 6, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant