@@ -1141,16 +1141,46 @@ def test_unix_sockets(self, node_svc: PostgresNodeService):
1141
1141
res_psql = r .safe_psql ('select 1' )
1142
1142
assert (res_psql == b'1\n ' )
1143
1143
1144
+ def test_the_same_port (self , node_svc : PostgresNodeService ):
1145
+ assert isinstance (node_svc , PostgresNodeService )
1146
+
1147
+ with __class__ .helper__get_node (node_svc ) as node :
1148
+ node .init ().start ()
1149
+ assert (node ._should_free_port )
1150
+ assert (type (node .port ) == int ) # noqa: E721
1151
+ node_port_copy = node .port
1152
+ r = node .safe_psql ("SELECT 1;" )
1153
+ assert (__class__ .helper__rm_carriage_returns (r ) == b'1\n ' )
1154
+
1155
+ with __class__ .helper__get_node (node_svc , port = node .port ) as node2 :
1156
+ assert (type (node2 .port ) == int ) # noqa: E721
1157
+ assert (node2 .port == node .port )
1158
+ assert not (node2 ._should_free_port )
1159
+
1160
+ with pytest .raises (
1161
+ expected_exception = StartNodeException ,
1162
+ match = re .escape ("Cannot start node" )
1163
+ ):
1164
+ node2 .init ().start ()
1165
+
1166
+ # node is still working
1167
+ assert (node .port == node_port_copy )
1168
+ assert (node ._should_free_port )
1169
+ r = node .safe_psql ("SELECT 3;" )
1170
+ assert (__class__ .helper__rm_carriage_returns (r ) == b'3\n ' )
1171
+
1144
1172
@staticmethod
1145
- def helper__get_node (node_svc : PostgresNodeService , name = None ):
1173
+ def helper__get_node (node_svc : PostgresNodeService , name = None , port = None ):
1146
1174
assert isinstance (node_svc , PostgresNodeService )
1147
1175
assert isinstance (node_svc .os_ops , OsOperations )
1148
1176
assert isinstance (node_svc .port_manager , PortManager )
1149
1177
return PostgresNode (
1150
1178
name ,
1179
+ port = port ,
1151
1180
conn_params = None ,
1152
1181
os_ops = node_svc .os_ops ,
1153
- port_manager = node_svc .port_manager )
1182
+ port_manager = node_svc .port_manager if port is None else None
1183
+ )
1154
1184
1155
1185
@staticmethod
1156
1186
def helper__skip_test_if_pg_version_is_not_ge (ver1 : str , ver2 : str ):
0 commit comments