testgres 1.14.1__tar.gz → 1.14.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {testgres-1.14.1/testgres.egg-info → testgres-1.14.3}/PKG-INFO +2 -2
- {testgres-1.14.1 → testgres-1.14.3}/pyproject.toml +1 -1
- {testgres-1.14.1 → testgres-1.14.3}/src/__init__.py +1 -1
- {testgres-1.14.1 → testgres-1.14.3}/src/node.py +3 -1
- {testgres-1.14.1 → testgres-1.14.3}/src/node_app.py +5 -4
- {testgres-1.14.1 → testgres-1.14.3}/src/utils.py +14 -6
- {testgres-1.14.1 → testgres-1.14.3/testgres.egg-info}/PKG-INFO +2 -2
- {testgres-1.14.1 → testgres-1.14.3}/testgres.egg-info/requires.txt +1 -1
- {testgres-1.14.1 → testgres-1.14.3}/tests/test_os_ops_common.py +6 -4
- {testgres-1.14.1 → testgres-1.14.3}/tests/test_testgres_common.py +52 -1
- {testgres-1.14.1 → testgres-1.14.3}/LICENSE +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/README.md +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/setup.cfg +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/api.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/backup.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/cache.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/config.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/connection.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/consts.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/decorators.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/defaults.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/enums.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/exceptions.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/impl/internal_utils.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/impl/platforms/internal_platform_utils.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/impl/platforms/internal_platform_utils_factory.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/impl/platforms/linux/internal_platform_utils.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/impl/platforms/win32/internal_platform_utils.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/impl/port_manager__generic.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/impl/port_manager__this_host.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/logger.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/port_manager.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/pubsub.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/raise_error.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/src/standby.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/testgres.egg-info/SOURCES.txt +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/testgres.egg-info/dependency_links.txt +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/testgres.egg-info/top_level.txt +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/tests/test_api.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/tests/test_config.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/tests/test_os_ops_local.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/tests/test_os_ops_remote.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/tests/test_raise_error.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/tests/test_testgres_local.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/tests/test_testgres_remote.py +0 -0
- {testgres-1.14.1 → testgres-1.14.3}/tests/test_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: testgres
|
|
3
|
-
Version: 1.14.
|
|
3
|
+
Version: 1.14.3
|
|
4
4
|
Summary: Testing utility for PostgreSQL and its extensions
|
|
5
5
|
Author-email: Postgres Professional <testgres@postgrespro.ru>
|
|
6
6
|
License: PostgreSQL
|
|
@@ -27,7 +27,7 @@ Requires-Dist: port-for>=0.4
|
|
|
27
27
|
Requires-Dist: six>=1.9.0
|
|
28
28
|
Requires-Dist: psutil
|
|
29
29
|
Requires-Dist: packaging
|
|
30
|
-
Requires-Dist: testgres.os_ops<3.0.0,>=2.
|
|
30
|
+
Requires-Dist: testgres.os_ops<3.0.0,>=2.4.0
|
|
31
31
|
Dynamic: license-file
|
|
32
32
|
|
|
33
33
|
[](https://github.com/postgrespro/testgres/actions/workflows/ci.yml)
|
|
@@ -56,7 +56,7 @@ from testgres.operations.os_ops import OsOperations, ConnectionParams
|
|
|
56
56
|
from testgres.operations.local_ops import LocalOperations
|
|
57
57
|
from testgres.operations.remote_ops import RemoteOperations
|
|
58
58
|
|
|
59
|
-
__version__ = "1.14.
|
|
59
|
+
__version__ = "1.14.3"
|
|
60
60
|
|
|
61
61
|
__all__ = [
|
|
62
62
|
"get_new_node",
|
|
@@ -1926,8 +1926,10 @@ class PostgresNode(object):
|
|
|
1926
1926
|
# should be the last one
|
|
1927
1927
|
_params.append(dbname)
|
|
1928
1928
|
|
|
1929
|
-
proc = self._os_ops.exec_command(_params, stdout=stdout, stderr=stderr,
|
|
1929
|
+
proc = self._os_ops.exec_command(_params, stdout=stdout, stderr=stderr, get_process=True)
|
|
1930
1930
|
|
|
1931
|
+
# [2026-06-21] It is so
|
|
1932
|
+
assert isinstance(proc, subprocess.Popen)
|
|
1931
1933
|
return proc
|
|
1932
1934
|
|
|
1933
1935
|
def pgbench_with_wait(self,
|
|
@@ -99,7 +99,7 @@ class NodeApp:
|
|
|
99
99
|
port=port,
|
|
100
100
|
bin_dir=bin_dir,
|
|
101
101
|
os_ops=self._os_ops,
|
|
102
|
-
port_manager=port_manager
|
|
102
|
+
port_manager=port_manager,
|
|
103
103
|
)
|
|
104
104
|
|
|
105
105
|
try:
|
|
@@ -150,7 +150,10 @@ class NodeApp:
|
|
|
150
150
|
|
|
151
151
|
node.init(
|
|
152
152
|
initdb_params=final_initdb_params,
|
|
153
|
-
|
|
153
|
+
# params for node.default_conf
|
|
154
|
+
fsync=False,
|
|
155
|
+
allow_streaming=set_replication,
|
|
156
|
+
log_statement="none",
|
|
154
157
|
)
|
|
155
158
|
|
|
156
159
|
# set major version
|
|
@@ -164,11 +167,9 @@ class NodeApp:
|
|
|
164
167
|
options = {
|
|
165
168
|
'max_connections': 100,
|
|
166
169
|
'shared_buffers': '10MB',
|
|
167
|
-
'fsync': 'off',
|
|
168
170
|
'wal_level': 'logical',
|
|
169
171
|
'hot_standby': 'off',
|
|
170
172
|
'log_line_prefix': '%t [%p]: [%l-1] ',
|
|
171
|
-
'log_statement': 'none',
|
|
172
173
|
'log_duration': 'on',
|
|
173
174
|
'log_min_duration_statement': 0,
|
|
174
175
|
'log_connections': 'on',
|
|
@@ -101,14 +101,21 @@ def execute_utility2(
|
|
|
101
101
|
assert type(ignore_errors) is bool
|
|
102
102
|
assert exec_env is None or type(exec_env) is dict
|
|
103
103
|
|
|
104
|
-
|
|
104
|
+
exec_r = os_ops.exec_command(
|
|
105
105
|
args,
|
|
106
106
|
verbose=True,
|
|
107
107
|
ignore_errors=ignore_errors,
|
|
108
108
|
encoding=OsHelpers.GetDefaultEncoding(),
|
|
109
|
-
exec_env=exec_env
|
|
109
|
+
exec_env=exec_env,
|
|
110
|
+
)
|
|
110
111
|
|
|
111
|
-
|
|
112
|
+
assert type(exec_r) is tuple
|
|
113
|
+
assert len(exec_r) == 3
|
|
114
|
+
|
|
115
|
+
exit_status, out, _ = exec_r
|
|
116
|
+
|
|
117
|
+
assert type(exit_status) is int
|
|
118
|
+
assert type(out) is str
|
|
112
119
|
|
|
113
120
|
# write new log entry if possible
|
|
114
121
|
if logfile:
|
|
@@ -122,9 +129,9 @@ def execute_utility2(
|
|
|
122
129
|
raise ExecUtilException(
|
|
123
130
|
"Problem with writing to logfile `{}` during run command `{}`".format(logfile, args))
|
|
124
131
|
if verbose:
|
|
125
|
-
return
|
|
126
|
-
|
|
127
|
-
|
|
132
|
+
return exec_r
|
|
133
|
+
|
|
134
|
+
return out
|
|
128
135
|
|
|
129
136
|
|
|
130
137
|
def get_bin_path(filename):
|
|
@@ -211,6 +218,7 @@ def get_pg_config2(os_ops: OsOperations, pg_config_path):
|
|
|
211
218
|
def cache_pg_config_data(cmd):
|
|
212
219
|
# execute pg_config and get the output
|
|
213
220
|
out = os_ops.exec_command(cmd, encoding='utf-8')
|
|
221
|
+
assert type(out) is str
|
|
214
222
|
|
|
215
223
|
data = {}
|
|
216
224
|
for line in out.splitlines():
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: testgres
|
|
3
|
-
Version: 1.14.
|
|
3
|
+
Version: 1.14.3
|
|
4
4
|
Summary: Testing utility for PostgreSQL and its extensions
|
|
5
5
|
Author-email: Postgres Professional <testgres@postgrespro.ru>
|
|
6
6
|
License: PostgreSQL
|
|
@@ -27,7 +27,7 @@ Requires-Dist: port-for>=0.4
|
|
|
27
27
|
Requires-Dist: six>=1.9.0
|
|
28
28
|
Requires-Dist: psutil
|
|
29
29
|
Requires-Dist: packaging
|
|
30
|
-
Requires-Dist: testgres.os_ops<3.0.0,>=2.
|
|
30
|
+
Requires-Dist: testgres.os_ops<3.0.0,>=2.4.0
|
|
31
31
|
Dynamic: license-file
|
|
32
32
|
|
|
33
33
|
[](https://github.com/postgrespro/testgres/actions/workflows/ci.yml)
|
|
@@ -74,7 +74,7 @@ class TestOsOpsCommon:
|
|
|
74
74
|
cmd = ["sh", "-c", "python3 --version"]
|
|
75
75
|
|
|
76
76
|
response = os_ops.exec_command(cmd)
|
|
77
|
-
|
|
77
|
+
assert type(response) is bytes
|
|
78
78
|
assert b'Python 3.' in response
|
|
79
79
|
|
|
80
80
|
def test_exec_command_failure(self, os_ops: OsOperations):
|
|
@@ -273,7 +273,9 @@ class TestOsOpsCommon:
|
|
|
273
273
|
RunConditions.skip_if_windows()
|
|
274
274
|
|
|
275
275
|
cmd = "pwd"
|
|
276
|
-
|
|
276
|
+
stdout = os_ops.exec_command(cmd, encoding='utf-8')
|
|
277
|
+
assert type(stdout) is str
|
|
278
|
+
pwd = stdout.strip()
|
|
277
279
|
|
|
278
280
|
path = "{}/test_dir".format(pwd)
|
|
279
281
|
|
|
@@ -898,7 +900,7 @@ class TestOsOpsCommon:
|
|
|
898
900
|
if ok_count == 0:
|
|
899
901
|
raise RuntimeError("No one free port was found.")
|
|
900
902
|
|
|
901
|
-
def
|
|
903
|
+
def test_get_tempdir(self, os_ops: OsOperations):
|
|
902
904
|
assert isinstance(os_ops, OsOperations)
|
|
903
905
|
|
|
904
906
|
dir = os_ops.get_tempdir()
|
|
@@ -922,7 +924,7 @@ class TestOsOpsCommon:
|
|
|
922
924
|
assert not os_ops.path_exists(file_path)
|
|
923
925
|
assert not os.path.exists(file_path)
|
|
924
926
|
|
|
925
|
-
def
|
|
927
|
+
def test_get_tempdir__compare_with_py_info(self, os_ops: OsOperations):
|
|
926
928
|
assert isinstance(os_ops, OsOperations)
|
|
927
929
|
|
|
928
930
|
actual_dir = os_ops.get_tempdir()
|
|
@@ -51,6 +51,7 @@ import subprocess
|
|
|
51
51
|
import typing
|
|
52
52
|
import types
|
|
53
53
|
import psutil
|
|
54
|
+
import testgres.postgres_configuration as testgres_pgconf
|
|
54
55
|
|
|
55
56
|
from packaging.version import Version
|
|
56
57
|
|
|
@@ -95,7 +96,7 @@ class TestTestgresCommon:
|
|
|
95
96
|
# Author: Mark G.
|
|
96
97
|
assert v.major == 1
|
|
97
98
|
assert v.minor == 14
|
|
98
|
-
assert v.micro ==
|
|
99
|
+
assert v.micro == 3
|
|
99
100
|
|
|
100
101
|
assert str(v) == testgres_version
|
|
101
102
|
return
|
|
@@ -2760,6 +2761,56 @@ where c.relname=%s;"""
|
|
|
2760
2761
|
node_svc.os_ops.rmdirs(tmp_dir)
|
|
2761
2762
|
return
|
|
2762
2763
|
|
|
2764
|
+
def test_node_app__make_empty_and_pgconf(self, node_svc: PostgresNodeService):
|
|
2765
|
+
assert type(node_svc) is PostgresNodeService
|
|
2766
|
+
|
|
2767
|
+
assert type(node_svc) is PostgresNodeService
|
|
2768
|
+
|
|
2769
|
+
assert isinstance(node_svc.os_ops, OsOperations)
|
|
2770
|
+
assert node_svc.port_manager is not None
|
|
2771
|
+
assert isinstance(node_svc.port_manager, PortManager)
|
|
2772
|
+
|
|
2773
|
+
tmp_dir = node_svc.os_ops.mkdtemp()
|
|
2774
|
+
assert tmp_dir is not None
|
|
2775
|
+
assert type(tmp_dir) is str
|
|
2776
|
+
logging.info("temp directory is [{}]".format(tmp_dir))
|
|
2777
|
+
|
|
2778
|
+
# -----------
|
|
2779
|
+
node_app = NodeApp(
|
|
2780
|
+
test_path=tmp_dir,
|
|
2781
|
+
os_ops=node_svc.os_ops,
|
|
2782
|
+
port_manager=node_svc.port_manager
|
|
2783
|
+
)
|
|
2784
|
+
|
|
2785
|
+
# TODO: We have to use node_svc.os_ops here
|
|
2786
|
+
|
|
2787
|
+
with node_app.make_simple("abc") as node:
|
|
2788
|
+
node_conf = testgres_pgconf.PostgresConfiguration(node.data_dir)
|
|
2789
|
+
|
|
2790
|
+
logging.info("Configuration is readed ...")
|
|
2791
|
+
testgres_pgconf.PostgresConfigurationReader.LoadConfiguration(node_conf)
|
|
2792
|
+
|
|
2793
|
+
logging.info("Configuration is checked ...")
|
|
2794
|
+
prop__port = node_conf.GetOptionValue("port")
|
|
2795
|
+
assert type(prop__port) is int
|
|
2796
|
+
assert prop__port == node.port
|
|
2797
|
+
# presets are checked
|
|
2798
|
+
prop__fsync = node_conf.GetOptionValue("fsync")
|
|
2799
|
+
assert prop__fsync == "off" or prop__fsync is False
|
|
2800
|
+
prop__log_statement = node_conf.GetOptionValue("log_statement")
|
|
2801
|
+
assert type(prop__log_statement) is str
|
|
2802
|
+
assert prop__log_statement == "none"
|
|
2803
|
+
prop__wal_level = node_conf.GetOptionValue("wal_level")
|
|
2804
|
+
assert type(prop__wal_level) is str
|
|
2805
|
+
assert prop__wal_level == "logical"
|
|
2806
|
+
|
|
2807
|
+
logging.info("Configuration is written ...")
|
|
2808
|
+
testgres_pgconf.PostgresConfigurationWriter.WriteConfiguration(node_conf)
|
|
2809
|
+
|
|
2810
|
+
logging.info("Node is started ...")
|
|
2811
|
+
node.slow_start()
|
|
2812
|
+
return
|
|
2813
|
+
|
|
2763
2814
|
@staticmethod
|
|
2764
2815
|
def helper__get_node(
|
|
2765
2816
|
node_svc: PostgresNodeService,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|