holado 0.2.4__py3-none-any.whl → 0.2.5__py3-none-any.whl
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.
Potentially problematic release.
This version of holado might be problematic. Click here for more details.
- holado/__init__.py +53 -25
- holado/common/context/service_manager.py +10 -2
- holado/common/context/session_context.py +43 -12
- holado/common/handlers/object.py +12 -4
- holado/holado_config.py +1 -0
- {holado-0.2.4.dist-info → holado-0.2.5.dist-info}/METADATA +1 -1
- {holado-0.2.4.dist-info → holado-0.2.5.dist-info}/RECORD +26 -26
- holado_core/common/tools/path_manager.py +8 -4
- holado_grpc/api/rpc/grpc_client.py +122 -118
- holado_helper/docker/logging.conf +3 -1
- holado_helper/docker/run_holado_test_nonreg_in_docker.sh +28 -28
- holado_helper/docker/run_terminal_in_docker-with_docker_control.sh +27 -27
- holado_helper/docker/run_terminal_in_docker.sh +26 -26
- holado_helper/script/initialize_script.py +5 -5
- holado_logging/__init__.py +5 -8
- holado_logging/common/logging/holado_logger.py +2 -2
- holado_logging/common/logging/log_config.py +43 -18
- holado_logging/common/logging/log_manager.py +20 -19
- holado_multitask/multitasking/multitask_manager.py +1 -1
- holado_multitask/multithreading/thread.py +8 -4
- holado_test/behave/independant_runner.py +3 -5
- holado_test/scenario/step_tools.py +2 -0
- test_holado/environment.py +1 -1
- test_holado/logging.conf +3 -1
- {holado-0.2.4.dist-info → holado-0.2.5.dist-info}/WHEEL +0 -0
- {holado-0.2.4.dist-info → holado-0.2.5.dist-info}/licenses/LICENSE +0 -0
holado/__init__.py
CHANGED
|
@@ -27,7 +27,7 @@ except:
|
|
|
27
27
|
with_behave = False
|
|
28
28
|
|
|
29
29
|
logger = None
|
|
30
|
-
|
|
30
|
+
__initialized = False
|
|
31
31
|
|
|
32
32
|
def __initialize_holado_loggers():
|
|
33
33
|
global logger
|
|
@@ -38,27 +38,29 @@ def __initialize_holado_loggers():
|
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
def _initialize_logging(
|
|
41
|
+
def _initialize_logging(use_holado_logger=True, logging_config_file_path=None, log_level=None, log_on_console=False, log_in_file=True):
|
|
42
42
|
# print_imported_modules("[initialize]")
|
|
43
43
|
import holado_logging
|
|
44
44
|
# print_imported_modules("[after import holado_logging]")
|
|
45
45
|
|
|
46
46
|
# Configure logging module
|
|
47
|
-
holado_logging.configure(
|
|
47
|
+
holado_logging.configure(use_holado_logger=use_holado_logger, logging_config_file_path=logging_config_file_path, log_level=log_level, log_on_console=log_on_console, log_in_file=log_in_file)
|
|
48
48
|
# print_imported_modules("[after import holado_logging]")
|
|
49
49
|
|
|
50
50
|
# Initialize holado loggers
|
|
51
51
|
__initialize_holado_loggers()
|
|
52
52
|
|
|
53
|
-
#
|
|
54
|
-
holado_logging.register()
|
|
55
|
-
|
|
56
|
-
# Configure log manager
|
|
53
|
+
# Create session context
|
|
57
54
|
from holado.common.context.session_context import SessionContext
|
|
58
|
-
SessionContext.
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
55
|
+
if SessionContext.has_instance():
|
|
56
|
+
from holado_core.common.exceptions.technical_exception import TechnicalException
|
|
57
|
+
raise TechnicalException(f"Session context was initialized to early (before logging configuration)")
|
|
58
|
+
SessionContext.instance()
|
|
59
|
+
|
|
60
|
+
# Initialize log manager and register it in session context
|
|
61
|
+
holado_logging.initialize_and_register()
|
|
62
|
+
|
|
63
|
+
# Set whole logging configuration
|
|
62
64
|
SessionContext.instance().log_manager.set_config()
|
|
63
65
|
|
|
64
66
|
def change_logging_config(log_level=None, log_on_console=False, log_in_file=True):
|
|
@@ -70,54 +72,78 @@ def change_logging_config(log_level=None, log_on_console=False, log_in_file=True
|
|
|
70
72
|
|
|
71
73
|
|
|
72
74
|
def initialize_minimal():
|
|
73
|
-
|
|
74
|
-
|
|
75
|
+
# initialize(TSessionContext=None, use_holado_logger=False, logging_config_file_path=None,
|
|
76
|
+
# log_level=None, log_on_console=True, log_in_file=False,
|
|
77
|
+
# session_kwargs={'with_session_path':False},
|
|
78
|
+
# garbage_collector_periodicity=None)
|
|
79
|
+
initialize(TSessionContext=None, use_holado_logger=True, logging_config_file_path=None,
|
|
80
|
+
log_level=None, log_on_console=True, log_in_file=False,
|
|
81
|
+
garbage_collector_periodicity=None)
|
|
75
82
|
|
|
76
|
-
def initialize(TSessionContext=None,
|
|
83
|
+
def initialize(TSessionContext=None, use_holado_logger=True, logging_config_file_path=None,
|
|
77
84
|
log_level=None, log_on_console=False, log_in_file=True, session_kwargs=None,
|
|
78
85
|
garbage_collector_periodicity=default_value):
|
|
86
|
+
global __initialized
|
|
87
|
+
if __initialized:
|
|
88
|
+
from holado_core.common.exceptions.technical_exception import TechnicalException
|
|
89
|
+
raise TechnicalException(f"HolAdo was already initialized")
|
|
90
|
+
|
|
79
91
|
from holado_core.common.tools.tools import Tools
|
|
80
92
|
|
|
81
93
|
if session_kwargs is None:
|
|
82
94
|
session_kwargs = {}
|
|
83
95
|
with_session_path = session_kwargs.get("with_session_path", True)
|
|
84
96
|
|
|
97
|
+
# Reset session context before initializing logging
|
|
98
|
+
# Note: Session context must not be created before logging initialization
|
|
99
|
+
from holado.common.context.session_context import SessionContext
|
|
100
|
+
SessionContext._reset_instance()
|
|
85
101
|
if TSessionContext is not None:
|
|
86
102
|
if isinstance(TSessionContext, str):
|
|
87
103
|
module_name, class_type = TSessionContext.rsplit('.', maxsplit=1)
|
|
88
104
|
module = importlib.import_module(module_name)
|
|
89
105
|
TSessionContext = getattr(module, class_type)
|
|
90
|
-
|
|
91
|
-
from holado.common.context.session_context import SessionContext
|
|
106
|
+
|
|
92
107
|
SessionContext.TSessionContext = TSessionContext
|
|
93
108
|
|
|
94
109
|
# Initialize logging
|
|
95
|
-
_initialize_logging(
|
|
110
|
+
_initialize_logging(use_holado_logger=use_holado_logger, logging_config_file_path=logging_config_file_path,
|
|
96
111
|
log_level=log_level, log_on_console=log_on_console, log_in_file=log_in_file and with_session_path)
|
|
97
112
|
if Tools.do_log(logger, logging.DEBUG):
|
|
98
113
|
logger.debug("Configured logging")
|
|
99
114
|
|
|
100
115
|
if Tools.do_log(logger, logging.DEBUG):
|
|
101
116
|
logger.debug("Importing HolAdo modules")
|
|
102
|
-
|
|
117
|
+
_import_modules(get_holado_module_names())
|
|
103
118
|
|
|
104
|
-
|
|
119
|
+
_initialize_session_context(session_kwargs)
|
|
105
120
|
|
|
106
121
|
# Initialize garbage collector
|
|
107
122
|
if garbage_collector_periodicity is not None:
|
|
108
123
|
GcManager.collect_periodically(garbage_collector_periodicity)
|
|
109
124
|
logger.debug(f"Garbage collector is disabled, and collects are automatically done in a dedicated thread (periodicity: {GcManager.get_collect_periodicity()} s)")
|
|
110
125
|
|
|
111
|
-
|
|
126
|
+
if with_behave:
|
|
127
|
+
# Register default behave parameter types
|
|
128
|
+
#TODO: make step tools a service
|
|
129
|
+
from holado_test.behave.scenario.behave_step_tools import BehaveStepTools
|
|
130
|
+
BehaveStepTools.register_default_types()
|
|
131
|
+
|
|
132
|
+
__initialized = True
|
|
133
|
+
|
|
134
|
+
def initialize_for_script(TSessionContext=None, use_holado_logger=True, logging_config_file_path=None,
|
|
135
|
+
log_level=logging.WARNING, log_on_console=True, log_in_file=False, session_kwargs=None,
|
|
136
|
+
garbage_collector_periodicity=None):
|
|
112
137
|
if session_kwargs is None:
|
|
113
138
|
session_kwargs={'with_session_path':log_in_file, 'raise_if_not_exist':False}
|
|
114
139
|
|
|
115
|
-
initialize(TSessionContext=TSessionContext,
|
|
140
|
+
initialize(TSessionContext=TSessionContext, use_holado_logger=use_holado_logger, logging_config_file_path=logging_config_file_path,
|
|
116
141
|
log_level=log_level, log_on_console=log_on_console, log_in_file=log_in_file,
|
|
117
|
-
session_kwargs=session_kwargs
|
|
142
|
+
session_kwargs=session_kwargs,
|
|
143
|
+
garbage_collector_periodicity=garbage_collector_periodicity )
|
|
118
144
|
|
|
119
145
|
|
|
120
|
-
def
|
|
146
|
+
def _initialize_session_context(session_kwargs=None):
|
|
121
147
|
from holado_core.common.tools.tools import Tools
|
|
122
148
|
|
|
123
149
|
if Tools.do_log(logger, logging.DEBUG):
|
|
@@ -143,7 +169,7 @@ def get_holado_module_names():
|
|
|
143
169
|
lp = sorted(os.listdir(get_holado_src_path()))
|
|
144
170
|
return [name for name in lp if name.startswith("holado_") and name not in ['holado_logging']]
|
|
145
171
|
|
|
146
|
-
def
|
|
172
|
+
def _import_modules(module_names):
|
|
147
173
|
from holado_core.common.tools.tools import Tools
|
|
148
174
|
|
|
149
175
|
imported_modules = __import_modules(module_names)
|
|
@@ -272,6 +298,8 @@ def print_imported_modules(prefix):
|
|
|
272
298
|
|
|
273
299
|
|
|
274
300
|
# Process minimal initialization of HolAdo
|
|
275
|
-
|
|
301
|
+
# Note: Currently, initialization can be done only once, thus minimal initialization is commented.
|
|
302
|
+
# As a consequence, the call of an initialize method is mandatory
|
|
303
|
+
# initialize_minimal()
|
|
276
304
|
|
|
277
305
|
|
|
@@ -170,13 +170,21 @@ class ServiceManager(object):
|
|
|
170
170
|
return context.get_object(name)
|
|
171
171
|
|
|
172
172
|
def add_context_property(self, name, context_type, raise_if_service_exist=None):
|
|
173
|
-
|
|
174
|
-
|
|
173
|
+
# Note: next lines are commented, to allow to set again the service in context type
|
|
174
|
+
# if raise_if_service_exist is None or raise_if_service_exist:
|
|
175
|
+
# self.__verify_service_doesnt_exist(name, context_type, raise_if_service_exist)
|
|
176
|
+
if hasattr(context_type, name):
|
|
177
|
+
logger.debug(f"Set again the property '{name}' in context type {context_type}")
|
|
175
178
|
|
|
176
179
|
@property
|
|
177
180
|
def context_service_property(self_context):
|
|
178
181
|
return self._get_context_service(name, self_context)
|
|
179
182
|
setattr(context_type, name, context_service_property)
|
|
183
|
+
|
|
184
|
+
@property
|
|
185
|
+
def context_has_service_property(self_context):
|
|
186
|
+
return self_context.has_object(name)
|
|
187
|
+
setattr(context_type, 'has_' + name, context_has_service_property)
|
|
180
188
|
|
|
181
189
|
def add_shortcut_property_to_context_service(self, name, dst_type, context_type, raise_if_service_exist=None):
|
|
182
190
|
from holado_multitask.multiprocessing.context.process_context import ProcessContext
|
|
@@ -18,6 +18,7 @@ import os.path
|
|
|
18
18
|
from holado.common.context.context import Context
|
|
19
19
|
from holado_core.common.tools.tools import Tools
|
|
20
20
|
import threading
|
|
21
|
+
from holado.common.handlers.enums import ObjectStates
|
|
21
22
|
|
|
22
23
|
|
|
23
24
|
logger = logging
|
|
@@ -32,16 +33,37 @@ class SessionContext(Context):
|
|
|
32
33
|
|
|
33
34
|
# Singleton management
|
|
34
35
|
__instance = None
|
|
36
|
+
__is_resetting_instance = False
|
|
35
37
|
|
|
36
38
|
@staticmethod
|
|
37
39
|
def instance() -> TSessionContext:
|
|
40
|
+
# Note: If session context istance is under reset, consider it is already None
|
|
41
|
+
if SessionContext.__is_resetting_instance:
|
|
42
|
+
return None
|
|
43
|
+
|
|
38
44
|
if SessionContext.__instance is None:
|
|
39
45
|
SessionContext.__instance = SessionContext.TSessionContext()
|
|
40
|
-
|
|
46
|
+
logger.debug(f"Created session context of type {SessionContext.TSessionContext}")
|
|
47
|
+
# logging.log(45, f"Created session context of type {SessionContext.TSessionContext}")
|
|
41
48
|
# import traceback
|
|
42
|
-
#
|
|
49
|
+
# logging.log(45, "".join(traceback.format_list(traceback.extract_stack())))
|
|
43
50
|
return SessionContext.__instance
|
|
44
51
|
|
|
52
|
+
@staticmethod
|
|
53
|
+
def has_instance() -> bool:
|
|
54
|
+
if SessionContext.__is_resetting_instance:
|
|
55
|
+
return False
|
|
56
|
+
else:
|
|
57
|
+
return SessionContext.__instance is not None
|
|
58
|
+
|
|
59
|
+
@staticmethod
|
|
60
|
+
def _reset_instance():
|
|
61
|
+
if SessionContext.__instance is not None:
|
|
62
|
+
logger.debug(f"Resetting session context")
|
|
63
|
+
SessionContext.__is_resetting_instance = True
|
|
64
|
+
SessionContext.__instance = None
|
|
65
|
+
SessionContext.__is_resetting_instance = False
|
|
66
|
+
logger.debug(f"Reset of session context")
|
|
45
67
|
|
|
46
68
|
def __init__(self, name="Session"):
|
|
47
69
|
super().__init__(name)
|
|
@@ -55,12 +77,27 @@ class SessionContext(Context):
|
|
|
55
77
|
self.__multitask_lock = threading.RLock()
|
|
56
78
|
self.__multitask_step_lock = threading.RLock()
|
|
57
79
|
|
|
80
|
+
def __del__(self):
|
|
81
|
+
# Note: Override Object.__del__ since it supposes that SessionContext is initialized, whereas SessionContext is deleting
|
|
82
|
+
try:
|
|
83
|
+
if self.object_state in [ObjectStates.Deleting, ObjectStates.Deleted]:
|
|
84
|
+
return
|
|
85
|
+
|
|
86
|
+
self.delete_object()
|
|
87
|
+
except Exception as exc:
|
|
88
|
+
if "Python is likely shutting down" in str(exc):
|
|
89
|
+
# Simply return
|
|
90
|
+
return
|
|
91
|
+
else:
|
|
92
|
+
raise exc
|
|
93
|
+
|
|
58
94
|
def _delete_object(self):
|
|
59
|
-
logger.info(f"Delete session context - Interrupting and unregistering all threads...")
|
|
60
95
|
# if Tools.do_log(logger, logging.DEBUG):
|
|
61
96
|
# logger.debug("Interrupting and unregistering all threads for scenario [{}]".format(scenario.name))
|
|
62
|
-
self.
|
|
63
|
-
|
|
97
|
+
if self.has_threads_manager:
|
|
98
|
+
logger.info(f"Delete session context - Interrupting and unregistering all threads...")
|
|
99
|
+
self.threads_manager.interrupt_all_threads(scope="Session")
|
|
100
|
+
self.threads_manager.unregister_all_threads(scope="Session", keep_alive=False)
|
|
64
101
|
|
|
65
102
|
# Delete session context
|
|
66
103
|
logger.info(f"Delete session context - Deleting context objects...")
|
|
@@ -76,11 +113,6 @@ class SessionContext(Context):
|
|
|
76
113
|
|
|
77
114
|
self.__with_session_path = session_kwargs.get("with_session_path", True)
|
|
78
115
|
|
|
79
|
-
# Register default behave parameter types
|
|
80
|
-
#TODO: make step tools a service
|
|
81
|
-
from holado_test.behave.scenario.behave_step_tools import BehaveStepTools
|
|
82
|
-
BehaveStepTools.register_default_types()
|
|
83
|
-
|
|
84
116
|
# Create this thread context
|
|
85
117
|
self.multitask_manager.get_thread_context()
|
|
86
118
|
|
|
@@ -122,14 +154,13 @@ class SessionContext(Context):
|
|
|
122
154
|
name = "session_{}".format(datetime.now().strftime("%Y-%m-%d_%H-%M-%S"))
|
|
123
155
|
report_path = self.path_manager.get_reports_path(name)
|
|
124
156
|
logger.info(f"Reports location: {report_path}")
|
|
125
|
-
|
|
157
|
+
print(f"Reports location: {report_path}")
|
|
126
158
|
self.report_manager.new_session(report_path)
|
|
127
159
|
|
|
128
160
|
# Logging configuration
|
|
129
161
|
if self.with_session_path and SessionContext.instance().log_manager.in_file:
|
|
130
162
|
log_filename = os.path.join(report_path, "logs", "report.log")
|
|
131
163
|
self.path_manager.makedirs(log_filename)
|
|
132
|
-
SessionContext.instance().log_manager.on_console = False
|
|
133
164
|
SessionContext.instance().log_manager.set_root_log_file(log_filename)
|
|
134
165
|
SessionContext.instance().log_manager.set_config()
|
|
135
166
|
|
holado/common/handlers/object.py
CHANGED
|
@@ -66,15 +66,23 @@ class DeleteableObject(Object):
|
|
|
66
66
|
|
|
67
67
|
def __del__(self):
|
|
68
68
|
try:
|
|
69
|
-
from holado_multitask.multithreading.functionthreaded import FunctionThreaded
|
|
70
|
-
|
|
71
69
|
if self.object_state in [ObjectStates.Deleting, ObjectStates.Deleted]:
|
|
72
70
|
return
|
|
73
71
|
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
if logger.isEnabledFor(logging.DEBUG):
|
|
73
|
+
logger.debug(f"Deleting object of ID {id(self)} and type {type(self)}")
|
|
74
|
+
if logger.isEnabledFor(logging.TRACE): # @UndefinedVariable
|
|
75
|
+
import traceback
|
|
76
|
+
logger.trace("".join(traceback.format_list(traceback.extract_stack())))
|
|
77
|
+
|
|
78
|
+
# Notes:
|
|
79
|
+
# - Garbage collector default mecanism is incompatible with custom object finalizers (cf GcManager.Method __del__ is called by garbage collector. This call can be done in any thread at any moment.
|
|
80
|
+
# - When SessionContext is under deletion, delete any object by thread is not possible
|
|
81
|
+
from holado.common.context.session_context import SessionContext
|
|
82
|
+
if GcManager.is_collect_threaded() or isinstance(self, SessionContext.TSessionContext) or not SessionContext.has_instance():
|
|
76
83
|
self.__delete()
|
|
77
84
|
else:
|
|
85
|
+
from holado_multitask.multithreading.functionthreaded import FunctionThreaded
|
|
78
86
|
func = FunctionThreaded(self.__delete, name=f"delete object '{self.name}'", register_thread=False)
|
|
79
87
|
func.start()
|
|
80
88
|
func.join(timeout=30, raise_if_still_alive=False) # timeout of 30s to limit deadlock impact ; raise to False since exceptions are omitted in gc collect context
|
holado/holado_config.py
CHANGED
|
@@ -16,6 +16,7 @@ class Config(object):
|
|
|
16
16
|
"""HolAdo project configuration"""
|
|
17
17
|
|
|
18
18
|
# Timeouts
|
|
19
|
+
session_timeout_seconds = 7 * 24 * 3600 # Session timeout is by default to 7 days
|
|
19
20
|
timeout_seconds = 240 # Default timeout
|
|
20
21
|
join_timeout_seconds = 1800 # Long timeout used when a join should stop without deadlock. When this timeout is reached, a TimeoutTechnicalException is raised
|
|
21
22
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
holado/__init__.py,sha256=
|
|
2
|
-
holado/holado_config.py,sha256
|
|
1
|
+
holado/__init__.py,sha256=vZmStYCsHdPOPrD-9qElAOHwiodLbN3iOldeVi7IEBE,14455
|
|
2
|
+
holado/holado_config.py,sha256=-HPwBdEcdG1kLfqSq4bH_esXbndVkNX4WW0VSpqoxu4,2459
|
|
3
3
|
holado/common/__init__.py,sha256=ZjXM-FRQgnfzRNXqcvJOGewDHVRR-U5-ugStSs8U2Xs,1525
|
|
4
4
|
holado/common/context/__init__.py,sha256=3jJBLm8myrYF9jbdV1EhIA6BtnlmjX33eeoDpTzwmLA,1604
|
|
5
5
|
holado/common/context/context.py,sha256=XPrdZw_9j096AI9EZwMT4xVd58c1ZH6VGxT5Yb-qYYU,6660
|
|
6
|
-
holado/common/context/service_manager.py,sha256=
|
|
7
|
-
holado/common/context/session_context.py,sha256=
|
|
6
|
+
holado/common/context/service_manager.py,sha256=LaCn8ukE1aqJynmwoexAYj5hCkdb_F3hXRtUBGqorUE,14087
|
|
7
|
+
holado/common/context/session_context.py,sha256=jyCXydCk7RnTf35MFcqaEflOsjX5eK2U33uITeGqP6U,22477
|
|
8
8
|
holado/common/handlers/__init__.py,sha256=d0KDUpaAAw1eBXyX08gaRh4RECnJlXjYQ0TcU-Ndicc,1372
|
|
9
9
|
holado/common/handlers/enums.py,sha256=ieqKVoukEiNyfE3KrKmMOImdbFS1ocUMud8JHe2xNLs,1662
|
|
10
|
-
holado/common/handlers/object.py,sha256=
|
|
10
|
+
holado/common/handlers/object.py,sha256=zAjJOClRmueziEPPUXQT61tZd4cdUjvjOXWdtEnJWqg,6369
|
|
11
11
|
holado/common/handlers/undefined.py,sha256=a1Jq2yrRd0UjJqZndj8ZTLpg5e6FlFn3Cc5uMfkbnBM,1859
|
|
12
12
|
holado/common/tools/__init__.py,sha256=z-T6zX_tOVkJjniTDA0KSKmdtosjfEhjaNa1-3g8wTs,1374
|
|
13
13
|
holado/common/tools/gc_manager.py,sha256=TjQg7MisGRhxuiQ22hB3IuqNhnWCVEWpU253-rOjR0w,7611
|
|
@@ -125,7 +125,7 @@ holado_core/common/tables/comparators/table_with_header_comparator.py,sha256=j7B
|
|
|
125
125
|
holado_core/common/tables/converters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
126
126
|
holado_core/common/tables/converters/table_converter.py,sha256=lFt1NKFo5aMPMpKQi_krBdVYUlm8zEg3JbDOy4bwWyA,8200
|
|
127
127
|
holado_core/common/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
128
|
-
holado_core/common/tools/path_manager.py,sha256=
|
|
128
|
+
holado_core/common/tools/path_manager.py,sha256=dgdm8wAaVubh-krpquCXXeGUTtGqRKDpuEKmvhA9dKA,8899
|
|
129
129
|
holado_core/common/tools/string_tools.py,sha256=j6ErNwpz19AXmbuvMk1HakX0EXfOkgu3s6bVohdz1g8,5365
|
|
130
130
|
holado_core/common/tools/tools.py,sha256=mRw-i4xNeBTb0GFBPzv54s7RyKzY0Ok0Oor8tgARmtw,8112
|
|
131
131
|
holado_core/common/tools/comparators/comparator.py,sha256=K4LcXIRORHX5vkmDibI6P6Bu1L-6Xezb63ZzzOMKrWY,6812
|
|
@@ -175,7 +175,7 @@ holado_docker/tools/docker_controler/proto/generated/docker_controler_pb2.py,sha
|
|
|
175
175
|
holado_docker/tools/docker_controler/proto/generated/docker_controler_pb2_grpc.py,sha256=r56UidBcB4jjxGWEsTY08_71Iz0E6pI2b5LR46qvoPc,9295
|
|
176
176
|
holado_grpc/__init__.py,sha256=SaAz66iSTqMw7oIDrj94rGcO8W7BgS15B78p--OogHc,2266
|
|
177
177
|
holado_grpc/api/rpc/TODO.txt,sha256=uWZT-WtrGuWbiOVU8-6xNiNyx_kKx-htM691zprLjh0,130
|
|
178
|
-
holado_grpc/api/rpc/grpc_client.py,sha256=
|
|
178
|
+
holado_grpc/api/rpc/grpc_client.py,sha256=sCsNzwHY8QAXvcqMd-Wt-gXy3VKrsqVbB8ncBf_EcRA,8990
|
|
179
179
|
holado_grpc/api/rpc/grpc_manager.py,sha256=v3e7b1JCNlUoCnWUPgB9aWKde-AbseRCZAxFwz5gPN8,4115
|
|
180
180
|
holado_grpc/ipc/rpc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
181
181
|
holado_grpc/ipc/rpc/grpc_compiler.py,sha256=f_v1Rj6gDpLSCpkN8a6Jn4w9d826JqNRII16HSPPrWA,2477
|
|
@@ -188,10 +188,10 @@ holado_helper/__init__.py,sha256=U5rV9zTT4OFE4MU2yiOIDlAmwQ_NO2CB0Adih2sn8eQ,178
|
|
|
188
188
|
holado_helper/debug/README.txt,sha256=kpsK1Ii5-t5pJCL9ChcEbZYyYTKt34fjKdiMC5DGOjc,2045
|
|
189
189
|
holado_helper/debug/memory/memory_profiler.py,sha256=Qu05N3uzntqm5S5XJMPdG9X0EFdagZS5poNQJPgZ-Iw,4659
|
|
190
190
|
holado_helper/docker/init_user.sh,sha256=vac-OUgsbSTIuO7MK4mpbtRZNGqHbNJGNm3Hk3W3FWQ,913
|
|
191
|
-
holado_helper/docker/logging.conf,sha256=
|
|
192
|
-
holado_helper/docker/run_holado_test_nonreg_in_docker.sh,sha256=
|
|
193
|
-
holado_helper/docker/run_terminal_in_docker-with_docker_control.sh,sha256=
|
|
194
|
-
holado_helper/docker/run_terminal_in_docker.sh,sha256=
|
|
191
|
+
holado_helper/docker/logging.conf,sha256=PKFEwVhQriaaHZMnU3t5I9fGxuM1HFxUBRJ0NZVH-KE,1186
|
|
192
|
+
holado_helper/docker/run_holado_test_nonreg_in_docker.sh,sha256=_ndFQXg4gBE3Zs6TbLmF15PM797i6onOK89OVENWORM,4696
|
|
193
|
+
holado_helper/docker/run_terminal_in_docker-with_docker_control.sh,sha256=EIKqew9xOAeA8KCEbz4DDSDM8s27g3FAT1j3sr2uWlI,3525
|
|
194
|
+
holado_helper/docker/run_terminal_in_docker.sh,sha256=GOOhbo9cEjw5Pp5BlhbzZm2U5XqZoqhHcVjlUwdV4WA,3397
|
|
195
195
|
holado_helper/holado_module_template/__init__.py,sha256=KpbIi2cm1BYZgoWf0LuhE0ei3ZCE15UcUtjC1cSA55M,1653
|
|
196
196
|
holado_helper/holado_module_template/test/behave/steps/__init__.py,sha256=BHp8TYE_X4lWn4B8A51nXSYaJlczuiDVJLcKMy7p0Lw,1267
|
|
197
197
|
holado_helper/holado_module_template/test/behave/steps/private/__init__.py,sha256=BHp8TYE_X4lWn4B8A51nXSYaJlczuiDVJLcKMy7p0Lw,1267
|
|
@@ -200,7 +200,7 @@ holado_helper/script/action_script.py,sha256=6yhb7M9aGe6jbqA4APa2rc3zC3INXvNTZjp
|
|
|
200
200
|
holado_helper/script/any_action_script.py,sha256=6P1bG3UoSO0JVS6kWaDGd4jP7MN-foiThRcVitW3Hjg,7901
|
|
201
201
|
holado_helper/script/behave_action_script.py,sha256=DwIRdHrRBM9qcLxoSx0vtyy3RX308g8bRlLT-UAqimM,5148
|
|
202
202
|
holado_helper/script/csv_action_script.py,sha256=mNoy9AS99uh57GCh5BPmxlp-hVql7S-ZPAQD_Kit3gA,7259
|
|
203
|
-
holado_helper/script/initialize_script.py,sha256=
|
|
203
|
+
holado_helper/script/initialize_script.py,sha256=v77lIoYeL3NR73_NBAr1OLWKPVixPW9m6gyLWLg8Ef4,5062
|
|
204
204
|
holado_helper/script/input_output_script.py,sha256=sRldfxO58KCjr5Zh_i-3MXy8zPPWDnNzZDLiwTKuBdM,6039
|
|
205
205
|
holado_helper/script/job.py,sha256=hb7WenhQP1qFMsxWGMsgbA-Z-zixynjRWjmZdx9wHEI,4435
|
|
206
206
|
holado_helper/script/json_action_script.py,sha256=angdSt6e385lKwYSGJBqytVb4sp3-HjMKziVEFSz6ro,5147
|
|
@@ -217,23 +217,23 @@ holado_keycloak/tests/behave/steps/__init__.py,sha256=NBE4L-am7jgPiJxcHRlZ4PQRjJ
|
|
|
217
217
|
holado_keycloak/tests/behave/steps/tools/keycloak_client_steps.py,sha256=Ku3G7GAmmX9Wzsv5ihj1tiPWae8gQDjpxYieMim6CrQ,3005
|
|
218
218
|
holado_keycloak/tools/keycloak/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
219
219
|
holado_keycloak/tools/keycloak/keycloak_client.py,sha256=QXAsf9rF0pKq1dHhXeZFZOxuEg_1uzp6vqXnwWDnegg,4019
|
|
220
|
-
holado_logging/__init__.py,sha256=
|
|
221
|
-
holado_logging/common/logging/holado_logger.py,sha256=
|
|
222
|
-
holado_logging/common/logging/log_config.py,sha256=
|
|
223
|
-
holado_logging/common/logging/log_manager.py,sha256=
|
|
220
|
+
holado_logging/__init__.py,sha256=EMmwm_jHe739gftVCmf6lb_dT20IVseVg0bbGGADn8w,2176
|
|
221
|
+
holado_logging/common/logging/holado_logger.py,sha256=vlU_q5jYD9Qf-xWFBogeNiIR9qpRri-68OfMofgbhy4,3320
|
|
222
|
+
holado_logging/common/logging/log_config.py,sha256=aSq1PUgQZXsomhmCmJLdVNQrJjkRNaisjVLVbon9dnM,6549
|
|
223
|
+
holado_logging/common/logging/log_manager.py,sha256=gq92IAfnKEX-GKUHexNVgEI0UUrUdiWaC5GLcSTAaUE,13604
|
|
224
224
|
holado_multitask/__init__.py,sha256=EwuwiBmp8ICbPZ8CKPju8tHRTh2rG68PB_wGXczY9rw,2143
|
|
225
225
|
holado_multitask/multiprocessing/function_process.py,sha256=HFXjpnzWed5J1tjmWMQyRx8AGcY6D1laegHqZ5j1dco,4550
|
|
226
226
|
holado_multitask/multiprocessing/periodic_function_process.py,sha256=ubbdm2XSwjBGuDDXWX2b-lo_Abkivh4Blj9C8axsa4o,6779
|
|
227
227
|
holado_multitask/multiprocessing/process.py,sha256=pSzeOXJpHF6poxT6oXx7g-2CcSm-EjVjSdZ4bIO3TD4,8591
|
|
228
228
|
holado_multitask/multiprocessing/processesmanager.py,sha256=WCWD-Zo5adBNKz-X34VhD3QifrlgAIaLzU-fVsQKtCs,5905
|
|
229
229
|
holado_multitask/multiprocessing/context/process_context.py,sha256=UADxmma8f5tW6etJz7kvrfDdeBOrFxNYCieRev0hFJY,1709
|
|
230
|
-
holado_multitask/multitasking/multitask_manager.py,sha256=
|
|
230
|
+
holado_multitask/multitasking/multitask_manager.py,sha256=uXd16gZvcrbh1tPh_v_Au97Ysz3tvu14k2H3AzBVPy8,21385
|
|
231
231
|
holado_multitask/multithreading/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
232
232
|
holado_multitask/multithreading/functionthreaded.py,sha256=gCLVMrxI18dKDNOQ9szH4hEKk_PQSWSuoO4enEEORzE,5570
|
|
233
233
|
holado_multitask/multithreading/loopfunctionthreaded.py,sha256=5kfONDR76uuT1bTJrAtnfSncHwvVvzl8jagWUvTduHw,2492
|
|
234
234
|
holado_multitask/multithreading/loopthread.py,sha256=4II3d22PRf891De8dd9P4WjuwI52KrTDRTSTPzzvso8,4265
|
|
235
235
|
holado_multitask/multithreading/periodicfunctionthreaded.py,sha256=PCBKpbOIThNGLq12rOONAh2ECxEOmaOb6Aqj2Ob2XY8,6926
|
|
236
|
-
holado_multitask/multithreading/thread.py,sha256=
|
|
236
|
+
holado_multitask/multithreading/thread.py,sha256=4zd5f3RFHPINhQzW6KUA4945npabKoOU7kAEIhdoOpA,8901
|
|
237
237
|
holado_multitask/multithreading/threadsmanager.py,sha256=5a-kV8t0-lwL6a9vCLL3_Oi-i67epcqOWWBz6vIJFEU,8462
|
|
238
238
|
holado_multitask/multithreading/timer.py,sha256=RIU9Cxm3CYVVGqtch2fAHNYnXOziq4PhZOu4LnKsE_o,2528
|
|
239
239
|
holado_multitask/multithreading/context/thread_context.py,sha256=pGcySQnqx92NIaVT64Ra3gIV7BpgBFfEy3N8PYTCOlI,3570
|
|
@@ -404,14 +404,14 @@ holado_test/behave/behave.py,sha256=IiqT_F45C-xVY2T8sKDPV7NsFCiGNzb8xpoTaXD-PXg,
|
|
|
404
404
|
holado_test/behave/behave_environment.py,sha256=T0HNMlSZAyzcnMB76VQtDo9zFiICzPMDGRa2xt1JCJA,5678
|
|
405
405
|
holado_test/behave/behave_function.py,sha256=2jDZIIijgQegWHmuzX1DlqRzs4utGjK1OeoucSeCTdg,1691
|
|
406
406
|
holado_test/behave/behave_manager.py,sha256=TEAfPgBQQONFn_l0s7gm7gDgWU0EejvuaPuFApoY_jY,26965
|
|
407
|
-
holado_test/behave/independant_runner.py,sha256=
|
|
407
|
+
holado_test/behave/independant_runner.py,sha256=QR_IS-qkK_x2FTryb2gRQrqyBU3YUgKqsaIL2xwXPNQ,3189
|
|
408
408
|
holado_test/behave/scenario/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
409
409
|
holado_test/behave/scenario/behave_step_tools.py,sha256=apMS8nvdY-vbXsUIw1mVR4wOy2xWHMOCPJ1QiYNU-hI,6612
|
|
410
410
|
holado_test/common/context/feature_context.py,sha256=GhC0lihnvTBhv5tE4JzPt39eP7gwAU5IApwX_-5Wt2Y,3348
|
|
411
411
|
holado_test/common/context/scenario_context.py,sha256=pmo-xGtn6oHtbTmcH6Vtp8Dj2iGrYVdHd0b6smtlhbY,10527
|
|
412
412
|
holado_test/common/context/step_context.py,sha256=j6S4ozTPrdlpV9Slopc998fYOV8KfMLAUSW4mcEFUI8,2383
|
|
413
413
|
holado_test/common/exceptions/undefined_step_exception.py,sha256=SHHX22iz4Ip-V4Y3aM2EJFDt30CCS5EaauN6KB-JORo,1461
|
|
414
|
-
holado_test/scenario/step_tools.py,sha256=
|
|
414
|
+
holado_test/scenario/step_tools.py,sha256=sVe9m1iFyOnhlgIVsOrFLq2Mc5LLZsKr3xuvnhVvERM,25178
|
|
415
415
|
holado_test/scenario/tester_tools.py,sha256=j2eBe7tlEX-Nw3VUGCZOdFqvh5ENhV9XnEUsqAqnXV8,2272
|
|
416
416
|
holado_test/tests/behave/steps/__init__.py,sha256=rdqrp-UN7vRplIqORx4sXyKwMUkptRizyLWudsmYehM,1362
|
|
417
417
|
holado_test/tests/behave/steps/scenario/exception_steps.py,sha256=ayMUmIJI4a7w95RL2NYiBWA8jSBwKyjdaRJL3IKdYQ0,4033
|
|
@@ -445,8 +445,8 @@ test_holado/Dockerfile_test_holado,sha256=zO6OUFnC1X9ZG7fPWWWfcWgZwnxif4WDE4ZDEm
|
|
|
445
445
|
test_holado/__init__.py,sha256=TIHAHrF05rvz6-VDKuDBSBjasD6PxTxXvcXjMEC3D6E,54
|
|
446
446
|
test_holado/__main__.py,sha256=PVdCX8V_RGRzbQQKVxf7eyt8a10XfUJ1pcaajGgIlus,1509
|
|
447
447
|
test_holado/build_docker_image_to_test_holado_in_docker.sh,sha256=B3hbi0yKnEC-t9S18o6ZR27AU1bqiuptwOqm6H7tv8s,142
|
|
448
|
-
test_holado/environment.py,sha256=
|
|
449
|
-
test_holado/logging.conf,sha256=
|
|
448
|
+
test_holado/environment.py,sha256=X4a6q9Km_Ya8XFIjwlDULgEQOkucumXxjIrIRtK1GDY,2294
|
|
449
|
+
test_holado/logging.conf,sha256=fI2P1eKEkDZm_GW0CFkgy7ASaIWwvgmLHUoLBfGqlwo,1132
|
|
450
450
|
test_holado/test_holado_session_context.py,sha256=qOB_i2k8mYjkR3-q2uv0B04xFc1K3p-K20ttYwe1Z18,1364
|
|
451
451
|
test_holado/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
452
452
|
test_holado/features/NonReg/api/REST.feature,sha256=ouaDdgXulNlXcZ7fSrSGCX-qDmQoCpXWnR_hKcKh8M4,469
|
|
@@ -529,7 +529,7 @@ test_holado/tools/django/api_rest/api_rest/api1/serializers.py,sha256=o_YxFr-tgC
|
|
|
529
529
|
test_holado/tools/django/api_rest/api_rest/api1/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
|
|
530
530
|
test_holado/tools/django/api_rest/api_rest/api1/views.py,sha256=kOt2xT6bxO47_z__5yYR9kcYIWWv4qYzpX0K8Tqonik,758
|
|
531
531
|
test_holado/tools/django/api_rest/api_rest/api1/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
532
|
-
holado-0.2.
|
|
533
|
-
holado-0.2.
|
|
534
|
-
holado-0.2.
|
|
535
|
-
holado-0.2.
|
|
532
|
+
holado-0.2.5.dist-info/METADATA,sha256=04lm8Q_8eATXzz-hS6LVjr7Y9_0sFQN0nBI8_O3oIBU,5796
|
|
533
|
+
holado-0.2.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
534
|
+
holado-0.2.5.dist-info/licenses/LICENSE,sha256=IgGmNlcFHnbp7UWrLJqAFvs_HIgjJDTmjCNRircJLsk,1070
|
|
535
|
+
holado-0.2.5.dist-info/RECORD,,
|
|
@@ -122,10 +122,14 @@ class PathManager(object):
|
|
|
122
122
|
else:
|
|
123
123
|
os.replace(src, dst)
|
|
124
124
|
|
|
125
|
+
def get_user_home_path(self):
|
|
126
|
+
import pathlib
|
|
127
|
+
return str(pathlib.Path.home())
|
|
128
|
+
|
|
125
129
|
def get_local_resources_path(self, name=None):
|
|
126
|
-
base_path = os.getenv('
|
|
130
|
+
base_path = os.getenv('HOLADO_LOCAL_RESOURCES_BASEDIR')
|
|
127
131
|
if base_path is None:
|
|
128
|
-
|
|
132
|
+
base_path = os.path.join(self.get_user_home_path(), '.holado', 'resources')
|
|
129
133
|
|
|
130
134
|
if name is not None:
|
|
131
135
|
return os.path.join(base_path, name)
|
|
@@ -133,9 +137,9 @@ class PathManager(object):
|
|
|
133
137
|
return base_path
|
|
134
138
|
|
|
135
139
|
def get_reports_path(self, name=None):
|
|
136
|
-
base_path = os.getenv('
|
|
140
|
+
base_path = os.getenv('HOLADO_OUTPUT_BASEDIR')
|
|
137
141
|
if base_path is None:
|
|
138
|
-
|
|
142
|
+
base_path = os.path.join(self.get_user_home_path(), '.holado', 'output')
|
|
139
143
|
|
|
140
144
|
if name is not None:
|
|
141
145
|
return os.path.join(base_path, "reports", name)
|