Skip to content

Commit a7662d1

Browse files
[#256] Port number 65535 is valid for using (#268)
This patch corrects PortManager__Generic: - Valid port range is [1024, 65535]. Old range was [1024, 65535) - Strange (copy&paste) code for self._available_ports initialization is corrected - Strange (copy&paste) code for self._reserved_ports initialization is corrected - New asserts are added
1 parent 44d61c2 commit a7662d1

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

testgres/impl/port_manager__generic.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,31 @@
99

1010

1111
class PortManager__Generic(PortManager):
12+
_C_MIN_PORT_NUMBER = 1024
13+
_C_MAX_PORT_NUMBER = 65535
14+
1215
_os_ops: OsOperations
1316
_guard: object
1417
# TODO: is there better to use bitmap fot _available_ports?
1518
_available_ports: typing.Set[int]
1619
_reserved_ports: typing.Set[int]
1720

1821
def __init__(self, os_ops: OsOperations):
22+
assert __class__._C_MIN_PORT_NUMBER <= __class__._C_MAX_PORT_NUMBER
23+
1924
assert os_ops is not None
2025
assert isinstance(os_ops, OsOperations)
2126
self._os_ops = os_ops
2227
self._guard = threading.Lock()
23-
self._available_ports: typing.Set[int] = set(range(1024, 65535))
24-
self._reserved_ports: typing.Set[int] = set()
28+
29+
self._available_ports = set(
30+
range(__class__._C_MIN_PORT_NUMBER, __class__._C_MAX_PORT_NUMBER + 1)
31+
)
32+
assert len(self._available_ports) == (
33+
(__class__._C_MAX_PORT_NUMBER - __class__._C_MIN_PORT_NUMBER) + 1
34+
)
35+
self._reserved_ports = set()
36+
return
2537

2638
def reserve_port(self) -> int:
2739
assert self._guard is not None
@@ -35,9 +47,13 @@ def reserve_port(self) -> int:
3547
t = None
3648

3749
for port in sampled_ports:
50+
assert type(port) == int # noqa: E721
3851
assert not (port in self._reserved_ports)
3952
assert port in self._available_ports
4053

54+
assert port >= __class__._C_MIN_PORT_NUMBER
55+
assert port <= __class__._C_MAX_PORT_NUMBER
56+
4157
if not self._os_ops.is_port_free(port):
4258
continue
4359

@@ -51,6 +67,8 @@ def reserve_port(self) -> int:
5167

5268
def release_port(self, number: int) -> None:
5369
assert type(number) == int # noqa: E721
70+
assert number >= __class__._C_MIN_PORT_NUMBER
71+
assert number <= __class__._C_MAX_PORT_NUMBER
5472

5573
assert self._guard is not None
5674
assert type(self._reserved_ports) == set # noqa: E721
@@ -62,3 +80,4 @@ def release_port(self, number: int) -> None:
6280
self._reserved_ports.discard(number)
6381
assert not (number in self._reserved_ports)
6482
assert number in self._available_ports
83+
return

0 commit comments

Comments
 (0)