Skip to content

Implement get_user #130

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

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 10 additions & 20 deletions testgres/node.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,9 +156,10 @@ def __init__(self, name=None, port=None, base_dir=None, conn_params: ConnectionP
else:
self.os_ops = LocalOperations(conn_params)

self.port = port or reserve_port()

self.host = self.os_ops.host
self.port = port or reserve_port()
# Default node username
self.username = default_username()
self.ssh_key = self.os_ops.ssh_key

# defaults for __exit__()
Expand Down Expand Up @@ -683,8 +684,6 @@ def slow_start(self, replica=False, dbname='template1', username=None, max_attem
If False, waits for the instance to be in primary mode. Default is False.
max_attempts:
"""
if not username:
username = default_username()
self.start()

if replica:
Expand All @@ -694,7 +693,7 @@ def slow_start(self, replica=False, dbname='template1', username=None, max_attem
# Call poll_query_until until the expected value is returned
self.poll_query_until(query=query,
dbname=dbname,
username=username,
username=username or self.username,
suppress={InternalError,
QueryException,
ProgrammingError,
Expand Down Expand Up @@ -967,15 +966,13 @@ def psql(self,
>>> psql(query='select 3', ON_ERROR_STOP=1)
"""

# Set default arguments
dbname = dbname or default_dbname()
username = username or default_username()

psql_params = [
self._get_bin_path("psql"),
"-p", str(self.port),
"-h", self.host,
"-U", username,
"-U", username or self.username,
"-X", # no .psqlrc
"-A", # unaligned output
"-t", # print rows only
Expand Down Expand Up @@ -1087,18 +1084,15 @@ def tmpfile():
fname = self.os_ops.mkstemp(prefix=TMP_DUMP)
return fname

# Set default arguments
dbname = dbname or default_dbname()
username = username or default_username()
filename = filename or tmpfile()

_params = [
self._get_bin_path("pg_dump"),
"-p", str(self.port),
"-h", self.host,
"-f", filename,
"-U", username,
"-d", dbname,
"-U", username or self.username,
"-d", dbname or default_dbname(),
"-F", format.value
] # yapf: disable

Expand All @@ -1118,7 +1112,7 @@ def restore(self, filename, dbname=None, username=None):

# Set default arguments
dbname = dbname or default_dbname()
username = username or default_username()
username = username or self.username

_params = [
self._get_bin_path("pg_restore"),
Expand Down Expand Up @@ -1388,15 +1382,13 @@ def pgbench(self,
if options is None:
options = []

# Set default arguments
dbname = dbname or default_dbname()
username = username or default_username()

_params = [
self._get_bin_path("pgbench"),
"-p", str(self.port),
"-h", self.host,
"-U", username,
"-U", username or self.username
] + options # yapf: disable

# should be the last one
Expand Down Expand Up @@ -1463,15 +1455,13 @@ def pgbench_run(self, dbname=None, username=None, options=[], **kwargs):
>>> pgbench_run(time=10)
"""

# Set default arguments
dbname = dbname or default_dbname()
username = username or default_username()

_params = [
self._get_bin_path("pgbench"),
"-p", str(self.port),
"-h", self.host,
"-U", username,
"-U", username or self.username
] + options # yapf: disable

for key, value in iteritems(kwargs):
Expand Down
8 changes: 6 additions & 2 deletions testgres/operations/os_ops.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import locale
import subprocess
import sys

try:
import psycopg2 as pglib # noqa: F401
Expand Down Expand Up @@ -44,9 +46,11 @@ def set_env(self, var_name, var_val):
# Check if the directory is already in PATH
raise NotImplementedError()

# Get environment variables
def get_user(self):
raise NotImplementedError()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это должно быть в local_ops.py и в remote_ops.py. os_ops.py - интерфейс нужный для того, чтобы не забыть реализовать какую-то из функций для локальной и удаленной работы

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А если функция для local и remote одна и та же, и её не нужно переопределять в дочерних классах?

if sys.platform.startswith('linux'):
return subprocess.run(['id', '-nu'], capture_output=True, text=True).stdout.rstrip()
else:
raise NotImplementedError()

def get_name(self):
raise NotImplementedError()
Expand Down