holado 0.2.1__py3-none-any.whl → 0.2.3__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.

Files changed (524) hide show
  1. holado/__init__.py +8 -4
  2. {holado-0.2.1.dist-info → holado-0.2.3.dist-info}/METADATA +13 -9
  3. holado-0.2.3.dist-info/RECORD +535 -0
  4. holado_ais/__init__.py +33 -0
  5. holado_ais/ais/MaritimeIdentificationDigits.csv +295 -0
  6. holado_ais/ais/ais_manager.py +151 -0
  7. holado_ais/ais/ais_messages.py +203 -0
  8. holado_ais/ais/ais_payload.py +35 -0
  9. holado_ais/ais/enums.py +37 -0
  10. holado_ais/ais/patch_pyais.py +1303 -0
  11. holado_ais/tests/behave/steps/__init__.py +17 -0
  12. holado_ais/tests/behave/steps/ais/__init__.py +0 -0
  13. holado_ais/tests/behave/steps/ais/ais_manager_steps.py +50 -0
  14. holado_ais/tests/behave/steps/ais/ais_messages_steps.py +182 -0
  15. holado_binary/__init__.py +17 -0
  16. holado_binary/ipc/binary.py +125 -0
  17. holado_binary/ipc/bit_series.py +307 -0
  18. holado_binary/tests/behave/steps/__init__.py +17 -0
  19. holado_binary/tests/behave/steps/ipc/binary_steps.py +57 -0
  20. holado_binary/tests/behave/steps/ipc/bit_series_steps.py +131 -0
  21. holado_context/__init__.py +16 -0
  22. holado_context/tests/behave/steps/__init__.py +16 -0
  23. holado_context/tests/behave/steps/private/__init__.py +16 -0
  24. holado_context/tests/behave/steps/private/common/context_steps.py +36 -0
  25. holado_core/__init__.py +32 -0
  26. holado_core/common/__init__.py +0 -0
  27. holado_core/common/actors/actions.py +97 -0
  28. holado_core/common/actors/actor.py +226 -0
  29. holado_core/common/actors/element_actor.py +32 -0
  30. holado_core/common/actors/find_actor.py +106 -0
  31. holado_core/common/actors/tree_actor.py +32 -0
  32. holado_core/common/actors/verify_actions.py +69 -0
  33. holado_core/common/block/base.py +122 -0
  34. holado_core/common/block/block_manager.py +173 -0
  35. holado_core/common/block/block_method.py +46 -0
  36. holado_core/common/block/block_steps.py +37 -0
  37. holado_core/common/block/function.py +42 -0
  38. holado_core/common/block/scope_function.py +28 -0
  39. holado_core/common/block/scope_manager.py +238 -0
  40. holado_core/common/block/scope_steps.py +141 -0
  41. holado_core/common/criterias/and_criteria.py +61 -0
  42. holado_core/common/criterias/criteria.py +78 -0
  43. holado_core/common/criterias/or_criteria.py +64 -0
  44. holado_core/common/criterias/tools/criteria_context.py +20 -0
  45. holado_core/common/criterias/tools/criteria_parameters.py +18 -0
  46. holado_core/common/drivers/driver.py +153 -0
  47. holado_core/common/drivers/element_driver.py +30 -0
  48. holado_core/common/drivers/element_internal_api.py +239 -0
  49. holado_core/common/drivers/internal_api.py +40 -0
  50. holado_core/common/drivers/tree_driver.py +30 -0
  51. holado_core/common/drivers/tree_internal_api.py +176 -0
  52. holado_core/common/exceptions/__init__.py +0 -0
  53. holado_core/common/exceptions/element_exception.py +28 -0
  54. holado_core/common/exceptions/exceptions.py +24 -0
  55. holado_core/common/exceptions/functional_exception.py +21 -0
  56. holado_core/common/exceptions/holado_exception.py +25 -0
  57. holado_core/common/exceptions/technical_exception.py +27 -0
  58. holado_core/common/exceptions/timeout_exception.py +20 -0
  59. holado_core/common/exceptions/verify_exception.py +20 -0
  60. holado_core/common/finders/after_in_tree_finder.py +87 -0
  61. holado_core/common/finders/element_finder.py +60 -0
  62. holado_core/common/finders/else_finder.py +105 -0
  63. holado_core/common/finders/finder.py +478 -0
  64. holado_core/common/finders/or_finder.py +98 -0
  65. holado_core/common/finders/then_finder.py +157 -0
  66. holado_core/common/finders/tools/enums.py +30 -0
  67. holado_core/common/finders/tools/find_builder.py +118 -0
  68. holado_core/common/finders/tools/find_context.py +405 -0
  69. holado_core/common/finders/tools/find_info.py +27 -0
  70. holado_core/common/finders/tools/find_parameters.py +240 -0
  71. holado_core/common/finders/tools/find_updater.py +95 -0
  72. holado_core/common/finders/tools/finder_info.py +26 -0
  73. holado_core/common/finders/tree_finder.py +146 -0
  74. holado_core/common/handlers/__init__.py +0 -0
  75. holado_core/common/handlers/abstracts/base_redo.py +695 -0
  76. holado_core/common/handlers/abstracts/get_or_create.py +120 -0
  77. holado_core/common/handlers/element_holder.py +122 -0
  78. holado_core/common/handlers/enums.py +23 -0
  79. holado_core/common/handlers/exceptions/redo_exceptions.py +28 -0
  80. holado_core/common/handlers/features/resource_by_name.py +187 -0
  81. holado_core/common/handlers/features/resource_by_type.py +174 -0
  82. holado_core/common/handlers/redo.py +119 -0
  83. holado_core/common/handlers/wait.py +127 -0
  84. holado_core/common/inspectors/element_inspector.py +57 -0
  85. holado_core/common/inspectors/inspector.py +221 -0
  86. holado_core/common/inspectors/tools/inspect_builder.py +169 -0
  87. holado_core/common/inspectors/tools/inspect_context.py +69 -0
  88. holado_core/common/inspectors/tools/inspect_parameters.py +181 -0
  89. holado_core/common/inspectors/tree_inspector.py +73 -0
  90. holado_core/common/resource/persisted_data_manager.py +113 -0
  91. holado_core/common/resource/persisted_method_to_call_manager.py +133 -0
  92. holado_core/common/resource/resource_manager.py +143 -0
  93. holado_core/common/tables/__init__.py +1 -0
  94. holado_core/common/tables/comparators/__init__.py +0 -0
  95. holado_core/common/tables/comparators/boolean_table_cell_comparator.py +25 -0
  96. holado_core/common/tables/comparators/bytes_table_cell_comparator.py +25 -0
  97. holado_core/common/tables/comparators/datetime_table_cell_comparator.py +24 -0
  98. holado_core/common/tables/comparators/float_table_cell_comparator.py +31 -0
  99. holado_core/common/tables/comparators/integer_table_cell_comparator.py +25 -0
  100. holado_core/common/tables/comparators/internal_table_cell_comparator.py +30 -0
  101. holado_core/common/tables/comparators/string_table_cell_comparator.py +24 -0
  102. holado_core/common/tables/comparators/string_table_comparator.py +29 -0
  103. holado_core/common/tables/comparators/string_table_row_comparator.py +29 -0
  104. holado_core/common/tables/comparators/table_cell_comparator.py +40 -0
  105. holado_core/common/tables/comparators/table_comparator.py +209 -0
  106. holado_core/common/tables/comparators/table_comparator_manager.py +60 -0
  107. holado_core/common/tables/comparators/table_row_comparator.py +116 -0
  108. holado_core/common/tables/comparators/table_with_header_comparator.py +68 -0
  109. holado_core/common/tables/converters/__init__.py +0 -0
  110. holado_core/common/tables/converters/table_converter.py +194 -0
  111. holado_core/common/tables/enums.py +23 -0
  112. holado_core/common/tables/table.py +261 -0
  113. holado_core/common/tables/table_cell.py +126 -0
  114. holado_core/common/tables/table_manager.py +366 -0
  115. holado_core/common/tables/table_row.py +169 -0
  116. holado_core/common/tables/table_with_header.py +236 -0
  117. holado_core/common/tools/__init__.py +0 -0
  118. holado_core/common/tools/comparators/comparator.py +151 -0
  119. holado_core/common/tools/comparators/object_comparator.py +21 -0
  120. holado_core/common/tools/converters/converter.py +107 -0
  121. holado_core/common/tools/path_manager.py +185 -0
  122. holado_core/common/tools/string_tools.py +135 -0
  123. holado_core/common/tools/tools.py +172 -0
  124. holado_core/common/transport/__init__.py +0 -0
  125. holado_core/common/transport/crc.py +40 -0
  126. holado_core/tests/behave/steps/__init__.py +20 -0
  127. holado_core/tests/behave/steps/common/__init__.py +0 -0
  128. holado_core/tests/behave/steps/common/common_steps.py +136 -0
  129. holado_core/tests/behave/steps/common/config_steps.py +42 -0
  130. holado_core/tests/behave/steps/common/resource_steps.py +62 -0
  131. holado_core/tests/behave/steps/common/tables_steps.py +537 -0
  132. holado_core/tools/__init__.py +0 -0
  133. holado_core/tools/abstracts/__init__.py +0 -0
  134. holado_core/tools/abstracts/blocking_command_service.py +56 -0
  135. holado_core/tools/abstracts/service.py +48 -0
  136. holado_data/__init__.py +31 -0
  137. holado_data/data/generator/base.py +93 -0
  138. holado_data/data/generator/python_generator.py +30 -0
  139. holado_data/tests/behave/steps/__init__.py +17 -0
  140. holado_data/tests/behave/steps/data/generator_steps.py +91 -0
  141. holado_data/tests/behave/steps/tools/utils_steps.py +60 -0
  142. holado_db/__init__.py +32 -0
  143. holado_db/tests/behave/steps/__init__.py +18 -0
  144. holado_db/tests/behave/steps/tools/db/db_client_steps.py +134 -0
  145. holado_db/tests/behave/steps/tools/db/postgresql_client_steps.py +59 -0
  146. holado_db/tests/behave/steps/tools/db/sqlite_client_steps.py +57 -0
  147. holado_db/tools/db/clients/base/db_client.py +206 -0
  148. holado_db/tools/db/clients/postgresql/postgresql_client.py +65 -0
  149. holado_db/tools/db/clients/sqlite/sqlite_client.py +56 -0
  150. holado_db/tools/db/db_manager.py +109 -0
  151. holado_db/tools/db/query/base/query_builder.py +87 -0
  152. holado_db/tools/db/query/pypika/pypika_query_builder.py +193 -0
  153. holado_db/tools/db/query/query_manager.py +77 -0
  154. holado_docker/__init__.py +25 -0
  155. holado_docker/sdk/docker/docker_client.py +268 -0
  156. holado_docker/sdk/docker/docker_service.py +71 -0
  157. holado_docker/tests/behave/steps/__init__.py +16 -0
  158. holado_docker/tests/behave/steps/tools/docker_steps.py +33 -0
  159. holado_docker/tools/docker_controler/__init__.py +26 -0
  160. holado_docker/tools/docker_controler/docker_controler_client.py +36 -0
  161. holado_docker/tools/docker_controler/docker_controler_server.py +31 -0
  162. holado_docker/tools/docker_controler/proto/compile_proto.py +60 -0
  163. holado_docker/tools/docker_controler/proto/definitions/docker_controler.proto +63 -0
  164. holado_docker/tools/docker_controler/proto/generated/docker_controler_pb2.py +52 -0
  165. holado_docker/tools/docker_controler/proto/generated/docker_controler_pb2_grpc.py +233 -0
  166. holado_grpc/__init__.py +32 -0
  167. holado_grpc/api/rpc/TODO.txt +4 -0
  168. holado_grpc/api/rpc/grpc_client.py +181 -0
  169. holado_grpc/api/rpc/grpc_manager.py +81 -0
  170. holado_grpc/ipc/rpc/__init__.py +0 -0
  171. holado_grpc/ipc/rpc/grpc_compiler.py +45 -0
  172. holado_grpc/ipc/rpc/grpc_services.py +165 -0
  173. holado_grpc/tests/behave/steps/__init__.py +16 -0
  174. holado_grpc/tests/behave/steps/api/grpc_client_steps.py +173 -0
  175. holado_grpc/tests/behave/steps/private/__init__.py +16 -0
  176. holado_grpc/tests/behave/steps/private/api/grpc_steps.py +77 -0
  177. holado_helper/__init__.py +35 -0
  178. holado_helper/debug/README.txt +32 -0
  179. holado_helper/debug/memory/memory_profiler.py +106 -0
  180. holado_helper/docker/init_user.sh +24 -0
  181. holado_helper/docker/logging.conf +42 -0
  182. holado_helper/docker/run_holado_test_nonreg_in_docker.sh +120 -0
  183. holado_helper/docker/run_terminal_in_docker-with_docker_control.sh +103 -0
  184. holado_helper/docker/run_terminal_in_docker.sh +101 -0
  185. holado_helper/holado_module_template/__init__.py +31 -0
  186. holado_helper/holado_module_template/test/behave/steps/__init__.py +16 -0
  187. holado_helper/holado_module_template/test/behave/steps/private/__init__.py +16 -0
  188. holado_helper/script/action.py +109 -0
  189. holado_helper/script/action_script.py +477 -0
  190. holado_helper/script/any_action_script.py +126 -0
  191. holado_helper/script/behave_action_script.py +99 -0
  192. holado_helper/script/csv_action_script.py +142 -0
  193. holado_helper/script/initialize_script.py +115 -0
  194. holado_helper/script/input_output_script.py +136 -0
  195. holado_helper/script/job.py +75 -0
  196. holado_helper/script/json_action_script.py +104 -0
  197. holado_helper/script/script.py +110 -0
  198. holado_json/__init__.py +16 -0
  199. holado_json/ipc/json.py +125 -0
  200. holado_json/ipc/json_converter.py +69 -0
  201. holado_json/ipc/json_types.py +183 -0
  202. holado_json/tests/behave/steps/__init__.py +16 -0
  203. holado_json/tests/behave/steps/ipc/__init__.py +0 -0
  204. holado_json/tests/behave/steps/ipc/json_steps.py +120 -0
  205. holado_keycloak/__init__.py +16 -0
  206. holado_keycloak/tests/behave/steps/__init__.py +16 -0
  207. holado_keycloak/tests/behave/steps/tools/keycloak_client_steps.py +59 -0
  208. holado_keycloak/tools/keycloak/__init__.py +0 -0
  209. holado_keycloak/tools/keycloak/keycloak_client.py +61 -0
  210. holado_logging/__init__.py +36 -0
  211. holado_logging/common/logging/holado_logger.py +75 -0
  212. holado_logging/common/logging/log_config.py +128 -0
  213. holado_logging/common/logging/log_manager.py +292 -0
  214. holado_multitask/__init__.py +33 -0
  215. holado_multitask/multiprocessing/context/process_context.py +35 -0
  216. holado_multitask/multiprocessing/function_process.py +102 -0
  217. holado_multitask/multiprocessing/periodic_function_process.py +135 -0
  218. holado_multitask/multiprocessing/process.py +196 -0
  219. holado_multitask/multiprocessing/processesmanager.py +133 -0
  220. holado_multitask/multitasking/multitask_manager.py +439 -0
  221. holado_multitask/multithreading/__init__.py +0 -0
  222. holado_multitask/multithreading/context/thread_context.py +84 -0
  223. holado_multitask/multithreading/functionthreaded.py +129 -0
  224. holado_multitask/multithreading/loopfunctionthreaded.py +45 -0
  225. holado_multitask/multithreading/loopthread.py +100 -0
  226. holado_multitask/multithreading/periodicfunctionthreaded.py +136 -0
  227. holado_multitask/multithreading/reflection/inspect.py +47 -0
  228. holado_multitask/multithreading/reflection/sys.py +29 -0
  229. holado_multitask/multithreading/reflection/traceback.py +35 -0
  230. holado_multitask/multithreading/thread.py +177 -0
  231. holado_multitask/multithreading/threadsmanager.py +162 -0
  232. holado_multitask/multithreading/timer.py +48 -0
  233. holado_multitask/tests/behave/steps/__init__.py +17 -0
  234. holado_multitask/tests/behave/steps/multiprocessing_steps.py +138 -0
  235. holado_multitask/tests/behave/steps/multithreading_steps.py +129 -0
  236. holado_protobuf/__init__.py +61 -0
  237. holado_protobuf/ipc/protobuf/__init__.py +0 -0
  238. holado_protobuf/ipc/protobuf/abstracts/type.py +45 -0
  239. holado_protobuf/ipc/protobuf/protobuf_compiler.py +118 -0
  240. holado_protobuf/ipc/protobuf/protobuf_converter.py +153 -0
  241. holado_protobuf/ipc/protobuf/protobuf_messages.py +965 -0
  242. holado_protobuf/ipc/protobuf/protobuf_modifier.py +65 -0
  243. holado_protobuf/ipc/protobuf/types/__init__.py +0 -0
  244. holado_protobuf/ipc/protobuf/types/google/__init__.py +0 -0
  245. holado_protobuf/ipc/protobuf/types/google/protobuf.py +124 -0
  246. holado_protobuf/tests/behave/steps/__init__.py +16 -0
  247. holado_protobuf/tests/behave/steps/ipc/protobuf_steps.py +297 -0
  248. holado_python/__init__.py +35 -0
  249. holado_python/common/enums.py +34 -0
  250. holado_python/common/iterables.py +30 -0
  251. holado_python/common/tools/comparators/boolean_comparator.py +37 -0
  252. holado_python/common/tools/comparators/bytes_comparator.py +48 -0
  253. holado_python/common/tools/comparators/datetime_comparator.py +74 -0
  254. holado_python/common/tools/comparators/float_comparator.py +97 -0
  255. holado_python/common/tools/comparators/integer_comparator.py +37 -0
  256. holado_python/common/tools/comparators/string_comparator.py +99 -0
  257. holado_python/common/tools/comparators/type_comparator.py +31 -0
  258. holado_python/common/tools/datetime.py +279 -0
  259. holado_python/standard_library/csv.py +207 -0
  260. holado_python/standard_library/hashlib.py +82 -0
  261. holado_python/standard_library/multiprocessing.py +62 -0
  262. holado_python/standard_library/queue.py +79 -0
  263. holado_python/standard_library/socket/blocking_socket.py +136 -0
  264. holado_python/standard_library/socket/echo_server.py +28 -0
  265. holado_python/standard_library/socket/message_socket.py +91 -0
  266. holado_python/standard_library/socket/non_blocking_socket.py +151 -0
  267. holado_python/standard_library/socket/socket.py +148 -0
  268. holado_python/standard_library/ssl/resources/certificates/NOTES.txt +5 -0
  269. holado_python/standard_library/ssl/resources/certificates/localhost.crt +19 -0
  270. holado_python/standard_library/ssl/resources/certificates/localhost.key +28 -0
  271. holado_python/standard_library/ssl/ssl.py +81 -0
  272. holado_python/standard_library/typing.py +192 -0
  273. holado_python/tests/behave/steps/__init__.py +27 -0
  274. holado_python/tests/behave/steps/builtins/str_steps.py +45 -0
  275. holado_python/tests/behave/steps/convert_steps.py +59 -0
  276. holado_python/tests/behave/steps/iterable_steps.py +87 -0
  277. holado_python/tests/behave/steps/standard_library/csv_steps.py +134 -0
  278. holado_python/tests/behave/steps/standard_library/datetime_steps.py +163 -0
  279. holado_python/tests/behave/steps/standard_library/hashlib_steps.py +57 -0
  280. holado_python/tests/behave/steps/standard_library/multiprocessing_steps.py +56 -0
  281. holado_python/tests/behave/steps/standard_library/queue_steps.py +358 -0
  282. holado_python/tests/behave/steps/standard_library/socket_steps.py +258 -0
  283. holado_python/tests/behave/steps/standard_library/ssl_steps.py +67 -0
  284. holado_rabbitmq/__init__.py +28 -0
  285. holado_rabbitmq/tests/behave/steps/__init__.py +17 -0
  286. holado_rabbitmq/tests/behave/steps/tools/rabbitmq_client_steps.py +537 -0
  287. holado_rabbitmq/tests/behave/steps/tools/rabbitmq_server_steps.py +64 -0
  288. holado_rabbitmq/tools/rabbitmq/rabbitmq_blocking_client.py +311 -0
  289. holado_rabbitmq/tools/rabbitmq/rabbitmq_client.py +675 -0
  290. holado_rabbitmq/tools/rabbitmq/rabbitmq_manager.py +173 -0
  291. holado_rabbitmq/tools/rabbitmq/rabbitmq_select_client.py +428 -0
  292. holado_rabbitmq/tools/rabbitmq/rabbitmq_server.py +24 -0
  293. holado_redis/__init__.py +17 -0
  294. holado_redis/tests/behave/steps/__init__.py +16 -0
  295. holado_redis/tests/behave/steps/tools/redis_client_steps.py +101 -0
  296. holado_redis/tools/redis/TODO.txt +7 -0
  297. holado_redis/tools/redis/redis_client.py +190 -0
  298. holado_redis/tools/redis/redis_manager.py +38 -0
  299. holado_report/__init__.py +27 -0
  300. holado_report/report/analyze/execution_historic_manager.py +96 -0
  301. holado_report/report/analyze/scenario_duration_manager.py +245 -0
  302. holado_report/report/builders/detailed_scenario_failed_report_builder.py +146 -0
  303. holado_report/report/builders/json_execution_historic_report_builder.py +123 -0
  304. holado_report/report/builders/report_builder.py +64 -0
  305. holado_report/report/builders/short_scenario_failed_report_builder.py +76 -0
  306. holado_report/report/builders/summary_report_builder.py +89 -0
  307. holado_report/report/builders/summary_scenario_failed_report_builder.py +56 -0
  308. holado_report/report/builders/summary_scenario_report_builder.py +74 -0
  309. holado_report/report/execution_historic.py +141 -0
  310. holado_report/report/report_manager.py +256 -0
  311. holado_report/report/reports/base_report.py +163 -0
  312. holado_report/report/reports/feature_report.py +106 -0
  313. holado_report/report/reports/scenario_report.py +64 -0
  314. holado_rest/__init__.py +24 -0
  315. holado_rest/api/rest/TODO.txt +2 -0
  316. holado_rest/api/rest/rest_client.py +113 -0
  317. holado_rest/api/rest/rest_manager.py +62 -0
  318. holado_rest/tests/behave/steps/__init__.py +16 -0
  319. holado_rest/tests/behave/steps/api/__init__.py +0 -0
  320. holado_rest/tests/behave/steps/api/rest_client_steps.py +141 -0
  321. holado_rest/tests/behave/steps/private/__init__.py +16 -0
  322. holado_rest/tests/behave/steps/private/api/__init__.py +0 -0
  323. holado_rest/tests/behave/steps/private/api/rest_steps.py +70 -0
  324. holado_s3/__init__.py +17 -0
  325. holado_s3/tests/behave/steps/__init__.py +17 -0
  326. holado_s3/tests/behave/steps/private/__init__.py +16 -0
  327. holado_s3/tests/behave/steps/private/tools/s3_steps.py +89 -0
  328. holado_s3/tests/behave/steps/tools/s3_client_steps.py +403 -0
  329. holado_s3/tests/behave/steps/tools/s3_server_steps.py +57 -0
  330. holado_s3/tools/s3/__init__.py +0 -0
  331. holado_s3/tools/s3/boto3_s3_client.py +59 -0
  332. holado_s3/tools/s3/minio_client.py +75 -0
  333. holado_s3/tools/s3/moto_server.py +52 -0
  334. holado_scripting/__init__.py +53 -0
  335. holado_scripting/common/tools/dynamic_text_manager.py +73 -0
  336. holado_scripting/common/tools/evaluate_parameters.py +210 -0
  337. holado_scripting/common/tools/expression_evaluator.py +387 -0
  338. holado_scripting/common/tools/variable_manager.py +321 -0
  339. holado_scripting/tests/behave/steps/__init__.py +22 -0
  340. holado_scripting/tests/behave/steps/common/tools/variable_convert_steps.py +158 -0
  341. holado_scripting/tests/behave/steps/common/tools/variable_new_steps.py +130 -0
  342. holado_scripting/tests/behave/steps/common/tools/variable_steps.py +108 -0
  343. holado_scripting/tests/behave/steps/common/tools/variable_verify_steps.py +160 -0
  344. holado_scripting/tests/behave/steps/scenario/function_steps.py +77 -0
  345. holado_scripting/tests/behave/steps/scenario/if_steps.py +87 -0
  346. holado_scripting/tests/behave/steps/scenario/loop_steps.py +119 -0
  347. holado_scripting/text/base/base_function.py +25 -0
  348. holado_scripting/text/base/base_verify_function.py +25 -0
  349. holado_scripting/text/base/text_inspecter.py +204 -0
  350. holado_scripting/text/interpreter/exceptions/interpreter_exception.py +25 -0
  351. holado_scripting/text/interpreter/functions/function_cast.py +60 -0
  352. holado_scripting/text/interpreter/functions/function_convert.py +57 -0
  353. holado_scripting/text/interpreter/functions/function_dynamic_value.py +40 -0
  354. holado_scripting/text/interpreter/functions/function_escape_all_bytes.py +35 -0
  355. holado_scripting/text/interpreter/functions/function_exists_variable.py +39 -0
  356. holado_scripting/text/interpreter/functions/function_hex_to_bytes.py +49 -0
  357. holado_scripting/text/interpreter/functions/function_hex_to_int.py +53 -0
  358. holado_scripting/text/interpreter/functions/function_to_base_64.py +41 -0
  359. holado_scripting/text/interpreter/functions/function_to_bytes.py +50 -0
  360. holado_scripting/text/interpreter/functions/function_to_hex.py +42 -0
  361. holado_scripting/text/interpreter/text_interpreter.py +216 -0
  362. holado_scripting/text/verifier/exceptions/verifier_exception.py +21 -0
  363. holado_scripting/text/verifier/functions/verify_function_extract_in.py +35 -0
  364. holado_scripting/text/verifier/functions/verify_function_match_pattern.py +63 -0
  365. holado_scripting/text/verifier/text_verifier.py +103 -0
  366. holado_sftp/__init__.py +16 -0
  367. holado_sftp/tests/behave/steps/__init__.py +17 -0
  368. holado_sftp/tests/behave/steps/private/__init__.py +16 -0
  369. holado_sftp/tests/behave/steps/private/tools/sftp_steps.py +78 -0
  370. holado_sftp/tests/behave/steps/tools/sftp_client_steps.py +94 -0
  371. holado_sftp/tests/behave/steps/tools/sftp_server_steps.py +82 -0
  372. holado_sftp/tools/sftp/__init__.py +0 -0
  373. holado_sftp/tools/sftp/sftp_client.py +103 -0
  374. holado_sftp/tools/sftp/sftp_server.py +39 -0
  375. holado_swagger/__init__.py +31 -0
  376. holado_swagger/swagger_hub/mockserver/mockserver_client.py +82 -0
  377. holado_swagger/swagger_hub/mockserver/mockserver_manager.py +32 -0
  378. holado_swagger/tests/behave/steps/__init__.py +16 -0
  379. holado_swagger/tests/behave/steps/swagger_hub/mockserver_steps.py +74 -0
  380. holado_system/system/command/command.py +216 -0
  381. holado_system/system/command/command_result.py +128 -0
  382. holado_system/system/command/curl_command.py +101 -0
  383. holado_system/system/command/exceptions.py +59 -0
  384. holado_system/system/filesystem/file.py +76 -0
  385. holado_system/system/global_system.py +187 -0
  386. holado_system/tests/behave/steps/__init__.py +18 -0
  387. holado_system/tests/behave/steps/system/commands_steps.py +92 -0
  388. holado_system/tests/behave/steps/system/file_steps.py +215 -0
  389. holado_system/tests/behave/steps/system/system_steps.py +84 -0
  390. holado_test/__init__.py +27 -0
  391. holado_test/behave/__init__.py +0 -0
  392. holado_test/behave/behave.py +397 -0
  393. holado_test/behave/behave_environment.py +143 -0
  394. holado_test/behave/behave_function.py +33 -0
  395. holado_test/behave/behave_manager.py +555 -0
  396. holado_test/behave/independant_runner.py +68 -0
  397. holado_test/behave/scenario/__init__.py +0 -0
  398. holado_test/behave/scenario/behave_step_tools.py +157 -0
  399. holado_test/common/context/feature_context.py +79 -0
  400. holado_test/common/context/scenario_context.py +217 -0
  401. holado_test/common/context/step_context.py +66 -0
  402. holado_test/common/exceptions/undefined_step_exception.py +21 -0
  403. holado_test/scenario/step_tools.py +523 -0
  404. holado_test/scenario/tester_tools.py +52 -0
  405. holado_test/test_config.py +26 -0
  406. holado_test/tests/behave/steps/__init__.py +18 -0
  407. holado_test/tests/behave/steps/scenario/exception_steps.py +87 -0
  408. holado_test/tests/behave/steps/scenario/scenario_steps.py +87 -0
  409. holado_test/tests/behave/steps/scenario/tester_steps.py +65 -0
  410. holado_value/__init__.py +24 -0
  411. holado_value/common/tables/comparators/table_2_value_table_cell_comparator.py +195 -0
  412. holado_value/common/tables/comparators/table_2_value_table_comparator.py +27 -0
  413. holado_value/common/tables/comparators/table_2_value_table_row_comparator.py +27 -0
  414. holado_value/common/tables/comparators/table_2_value_table_with_header_comparator.py +27 -0
  415. holado_value/common/tables/converters/value_table_converter.py +217 -0
  416. holado_value/common/tables/value_table.py +29 -0
  417. holado_value/common/tables/value_table_cell.py +67 -0
  418. holado_value/common/tables/value_table_manager.py +58 -0
  419. holado_value/common/tables/value_table_row.py +44 -0
  420. holado_value/common/tables/value_table_with_header.py +28 -0
  421. holado_value/common/tools/unique_value_manager.py +108 -0
  422. holado_value/common/tools/value.py +164 -0
  423. holado_value/common/tools/value_types.py +35 -0
  424. holado_value/tests/behave/steps/__init__.py +16 -0
  425. holado_value/tests/behave/steps/private/__init__.py +16 -0
  426. holado_ws/__init__.py +16 -0
  427. holado_ws/api/ws/TODO.txt +2 -0
  428. holado_ws/tests/behave/steps/__init__.py +16 -0
  429. holado_ws/tests/behave/steps/api/web_service_steps.py +189 -0
  430. holado_yaml/__init__.py +31 -0
  431. holado_yaml/tests/behave/steps/__init__.py +16 -0
  432. holado_yaml/tests/behave/steps/yaml_steps.py +64 -0
  433. holado_yaml/yaml/yaml_manager.py +86 -0
  434. test_holado/Dockerfile_test_holado +82 -0
  435. test_holado/__init__.py +4 -0
  436. test_holado/__main__.py +25 -0
  437. test_holado/build_docker_image_to_test_holado_in_docker.sh +7 -0
  438. test_holado/environment.py +42 -0
  439. test_holado/features/NonReg/api/REST.feature +21 -0
  440. test_holado/features/NonReg/api/gRPC.feature +122 -0
  441. test_holado/features/NonReg/common/multiprocessing/simple.feature +60 -0
  442. test_holado/features/NonReg/common/system/commands.feature +43 -0
  443. test_holado/features/NonReg/common/system/system.feature +20 -0
  444. test_holado/features/NonReg/common/tables/table.feature +239 -0
  445. test_holado/features/NonReg/common/tables/value_table_conversion.feature +29 -0
  446. test_holado/features/NonReg/common/tools/DateTime.feature +88 -0
  447. test_holado/features/NonReg/common/tools/UniqueValueManager.feature +43 -0
  448. test_holado/features/NonReg/holado_ais/ais_message-bitarray_to_nmea.feature +135 -0
  449. test_holado/features/NonReg/holado_protobuf/protobuf.feature +291 -0
  450. test_holado/features/NonReg/holado_python/convert.feature +20 -0
  451. test_holado/features/NonReg/holado_python/iterable.feature +61 -0
  452. test_holado/features/NonReg/holado_python/standard_library/socket.feature +101 -0
  453. test_holado/features/NonReg/holado_python/standard_library/socket_with_ssl.feature +180 -0
  454. test_holado/features/NonReg/holado_scripting/common/tools/dynamic_text_manager.feature +18 -0
  455. test_holado/features/NonReg/holado_scripting/common/tools/expression_evaluator.feature +185 -0
  456. test_holado/features/NonReg/holado_scripting/common/tools/variable_manager.feature +71 -0
  457. test_holado/features/NonReg/holado_scripting/text/interpreter/interpreter.error.feature +21 -0
  458. test_holado/features/NonReg/holado_scripting/text/interpreter/interpreter.feature +120 -0
  459. test_holado/features/NonReg/holado_yaml/yaml.feature +218 -0
  460. test_holado/features/NonReg/ipc/bit_series.error.feature +33 -0
  461. test_holado/features/NonReg/ipc/bit_series.feature +131 -0
  462. test_holado/features/NonReg/ipc/json.feature +20 -0
  463. test_holado/features/NonReg/scenario/scenario.feature +139 -0
  464. test_holado/features/NonReg/test_steps/behave.feature +275 -0
  465. test_holado/features/NonReg/test_steps/common.feature +100 -0
  466. test_holado/features/NonReg/tools/RabbitMQ.feature +445 -0
  467. test_holado/features/NonReg/tools/RabbitMQ_steps.feature +276 -0
  468. test_holado/features/NonReg/tools/S3/boto3_client.feature +73 -0
  469. test_holado/features/NonReg/tools/S3/minio_client.feature +75 -0
  470. test_holado/features/NonReg/tools/db_sqlite3.feature +41 -0
  471. test_holado/features/NonReg/tools/sFTP.feature +25 -0
  472. test_holado/features/Test/logger.feature +28 -0
  473. test_holado/features/__init__.py +0 -0
  474. test_holado/logging.conf +41 -0
  475. test_holado/resources/proto/definitions/protobuf/custom_types/field_types.proto +24 -0
  476. test_holado/resources/proto/definitions/protobuf/protobuf.dev/tutorial/addressbook.proto +56 -0
  477. test_holado/resources/proto/generated/protobuf/custom_types/field_types_pb2.py +34 -0
  478. test_holado/resources/proto/generated/protobuf/protobuf/dev/tutorial/addressbook_pb2.py +34 -0
  479. test_holado/resources/scripts/list_tags.sh +2 -0
  480. test_holado/resources/scripts/update_resources_proto_generated.py +70 -0
  481. test_holado/steps/__init__.py +0 -0
  482. test_holado/steps/private_steps.py +20 -0
  483. test_holado/steps/public_steps.py +23 -0
  484. test_holado/test_holado_session_context.py +43 -0
  485. test_holado/tools/django/README.txt +3 -0
  486. test_holado/tools/django/api_grpc/api_grpc/__init__.py +0 -0
  487. test_holado/tools/django/api_grpc/api_grpc/api1/__init__.py +0 -0
  488. test_holado/tools/django/api_grpc/api_grpc/api1/admin.py +3 -0
  489. test_holado/tools/django/api_grpc/api_grpc/api1/apps.py +6 -0
  490. test_holado/tools/django/api_grpc/api_grpc/api1/migrations/__init__.py +0 -0
  491. test_holado/tools/django/api_grpc/api_grpc/api1/models.py +3 -0
  492. test_holado/tools/django/api_grpc/api_grpc/api1/proto/__init__.py +0 -0
  493. test_holado/tools/django/api_grpc/api_grpc/api1/proto/account.proto +27 -0
  494. test_holado/tools/django/api_grpc/api_grpc/api1/proto/account_pb2.py +33 -0
  495. test_holado/tools/django/api_grpc/api_grpc/api1/proto/account_pb2_grpc.py +199 -0
  496. test_holado/tools/django/api_grpc/api_grpc/api1/serializers.py +12 -0
  497. test_holado/tools/django/api_grpc/api_grpc/api1/services.py +11 -0
  498. test_holado/tools/django/api_grpc/api_grpc/api1/tests.py +3 -0
  499. test_holado/tools/django/api_grpc/api_grpc/api1/views.py +3 -0
  500. test_holado/tools/django/api_grpc/api_grpc/asgi.py +16 -0
  501. test_holado/tools/django/api_grpc/api_grpc/settings.py +126 -0
  502. test_holado/tools/django/api_grpc/api_grpc/urls.py +27 -0
  503. test_holado/tools/django/api_grpc/api_grpc/wsgi.py +16 -0
  504. test_holado/tools/django/api_grpc/db.sqlite3 +0 -0
  505. test_holado/tools/django/api_grpc/manage.py +27 -0
  506. test_holado/tools/django/api_grpc/manual_test_commands.txt +25 -0
  507. test_holado/tools/django/api_rest/api_rest/__init__.py +0 -0
  508. test_holado/tools/django/api_rest/api_rest/api1/__init__.py +0 -0
  509. test_holado/tools/django/api_rest/api_rest/api1/admin.py +3 -0
  510. test_holado/tools/django/api_rest/api_rest/api1/apps.py +6 -0
  511. test_holado/tools/django/api_rest/api_rest/api1/migrations/__init__.py +0 -0
  512. test_holado/tools/django/api_rest/api_rest/api1/models.py +3 -0
  513. test_holado/tools/django/api_rest/api_rest/api1/serializers.py +15 -0
  514. test_holado/tools/django/api_rest/api_rest/api1/tests.py +3 -0
  515. test_holado/tools/django/api_rest/api_rest/api1/views.py +24 -0
  516. test_holado/tools/django/api_rest/api_rest/asgi.py +16 -0
  517. test_holado/tools/django/api_rest/api_rest/settings.py +133 -0
  518. test_holado/tools/django/api_rest/api_rest/urls.py +32 -0
  519. test_holado/tools/django/api_rest/api_rest/wsgi.py +16 -0
  520. test_holado/tools/django/api_rest/db.sqlite3 +0 -0
  521. test_holado/tools/django/api_rest/manage.py +22 -0
  522. holado-0.2.1.dist-info/RECORD +0 -17
  523. {holado-0.2.1.dist-info → holado-0.2.3.dist-info}/WHEEL +0 -0
  524. {holado-0.2.1.dist-info → holado-0.2.3.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,82 @@
1
+ # Note: HolAdo tests are currently failing with Python 3.13.0
2
+
3
+ ### Build
4
+
5
+ #FROM python:3.10.15-alpine3.20 AS build
6
+ #FROM python:3.11.10-alpine3.20 AS build
7
+ FROM python:3.12.7-alpine3.20 AS build
8
+ #FROM python:3.13.0-alpine3.20 AS build
9
+
10
+ # Install to build python requirements
11
+ RUN apk update \
12
+ && apk --no-cache --update add build-base \
13
+ && apk --update add alpine-sdk \
14
+ && apk add libffi-dev \
15
+ && apk add postgresql-dev gcc python3-dev musl-dev \
16
+ && apk add protobuf-dev
17
+
18
+ # Install to recompile proto
19
+ RUN apk update \
20
+ && apk add gcompat
21
+
22
+ # Create user
23
+ RUN adduser -D appuser
24
+
25
+ # Create /code folder
26
+ RUN mkdir /code
27
+ RUN chown -R appuser:appuser /code
28
+
29
+ # Switch to user appuser
30
+ USER appuser
31
+ ENV PATH=/home/appuser/.local:/home/appuser/.local/bin:$PATH
32
+
33
+ # Create python venv
34
+ RUN python -m venv /code/env
35
+ RUN source /code/env/bin/activate
36
+
37
+ # Copy HolAdo sources
38
+ WORKDIR /code/holado/python
39
+ COPY --chown=appuser . .
40
+
41
+ # Install python requirements
42
+ RUN pip install -r requirements_docker.txt
43
+
44
+ # Recompile proto
45
+ RUN python tests/behave/test_holado/resources/scripts/update_resources_proto_generated.py -nu
46
+
47
+
48
+
49
+ ### Runtime
50
+
51
+ #FROM python:3.10.15-alpine3.20 AS runtime
52
+ #FROM python:3.11.10-alpine3.20 AS runtime
53
+ FROM python:3.12.7-alpine3.20 AS runtime
54
+ #FROM python:3.13.0-alpine3.20 AS runtime
55
+
56
+ # Install for python requirements
57
+ RUN apk update \
58
+ && apk --no-cache add libstdc++ \
59
+ && apk --no-cache add postgresql-dev gcc python3-dev musl-dev
60
+
61
+ # Add tools
62
+ RUN apk --no-cache add bash \
63
+ && apk --no-cache add nano \
64
+ && apk --no-cache add curl
65
+
66
+ # Create user as in build
67
+ RUN adduser -D appuser
68
+ COPY --from=build /home/appuser/.local /home/appuser/.local
69
+
70
+ # Copy /code from build
71
+ COPY --from=build /code /code
72
+
73
+ # Switch to user appuser
74
+ USER appuser
75
+ ENV PATH=/home/appuser/.local:/home/appuser/.local/bin:$PATH
76
+
77
+ # Set working directory to easily launch HolAdo tests
78
+ WORKDIR /code/holado/python
79
+ RUN source /code/env/bin/activate
80
+
81
+
82
+
@@ -0,0 +1,4 @@
1
+ import logging
2
+
3
+ logger = logging.getLogger(__name__)
4
+
@@ -0,0 +1,25 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ #################################################
4
+ # HolAdo (Holistic Automation do)
5
+ #
6
+ # (C) Copyright 2021-2025 by Eric Klumpp
7
+ #
8
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
11
+
12
+ # The Software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the Software.
13
+ #################################################
14
+
15
+
16
+ # This main is only needed to debug behave execution (and thus HolAdo) with breakpoints
17
+
18
+ import re
19
+ import sys
20
+
21
+ from behave.__main__ import main
22
+
23
+ if __name__ == '__main__':
24
+ sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
25
+ sys.exit(main())
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+
3
+ cd "$(dirname "${BASH_SOURCE[0]}")"/../../..
4
+
5
+ docker build . -t test_holado -f tests/behave/test_holado/Dockerfile_test_holado
6
+
7
+
@@ -0,0 +1,42 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ #################################################
4
+ # HolAdo (Holistic Automation do)
5
+ #
6
+ # (C) Copyright 2021-2025 by Eric Klumpp
7
+ #
8
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
11
+
12
+ # The Software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the Software.
13
+ #################################################
14
+
15
+ import os.path
16
+ import sys
17
+ import logging
18
+
19
+
20
+ # Add testing solution sources paths
21
+ here = os.path.abspath(os.path.dirname(__file__))
22
+ sys.path.append(here)
23
+ holado_path = os.path.normpath(os.path.join(here, "..", "..", ".."))
24
+ sys.path.append( os.path.join(holado_path, "src") )
25
+ sys.path.append( os.path.join(holado_path, "tests", "behave") )
26
+
27
+ # Configure HolAdo
28
+ import holado
29
+ # Initialize HolAdo:
30
+ # - log_level is set to INFO for initialization phase, it will be overwrite by level in logging config file
31
+ # - log_on_console is True for initialization phase, it will be set to False when root log file will be defined
32
+ # - logging config file
33
+ from test_holado.test_holado_session_context import TestHoladoSessionContext
34
+ holado.initialize(TSessionContext=TestHoladoSessionContext, logging_config_file=os.path.join(here, 'logging.conf'), log_level=logging.INFO, log_on_console=True)
35
+
36
+
37
+
38
+ # Import generic environment methods
39
+ from holado_test.behave.behave_environment import * # @UnusedWildImport
40
+
41
+ # Define project specific environment methods
42
+
@@ -0,0 +1,21 @@
1
+ @testing_solution
2
+ @rest
3
+ Feature: Test REST module
4
+
5
+ @go_nogo
6
+ @need_update
7
+ Scenario: Simple get
8
+
9
+ ### PRECONDITIONS - BEGIN
10
+ Given begin preconditions
11
+
12
+ Given SERVER = start internal REST server
13
+
14
+ Given CLIENT = new internal REST client
15
+
16
+ Given end preconditions
17
+ ### PRECONDITIONS - END
18
+
19
+ When RESULT = get '/users' (REST client: CLIENT)
20
+ Then RESULT['results'] is list
21
+
@@ -0,0 +1,122 @@
1
+ @testing_solution
2
+ @grpc
3
+ Feature: Test gRPC module
4
+
5
+ @go_nogo
6
+ Scenario: Simple request
7
+
8
+ ### PRECONDITIONS - BEGIN
9
+ Given begin preconditions
10
+
11
+ Given SERVER = start internal gRPC server
12
+ When wait 1 seconds
13
+
14
+ Given CLIENT = new internal gRPC client on service 'account.UserController'
15
+
16
+ Given end preconditions
17
+ ### PRECONDITIONS - END
18
+
19
+ Given SERVICE_NAMES = service names (gRPC client: CLIENT)
20
+ Then SERVICE_NAMES is list
21
+ | 'account.UserController' |
22
+
23
+ When RESULT = request 'account.UserController.List' (gRPC client: CLIENT)
24
+
25
+ When TABLE = convert json RESULT to table with names as columns recursively
26
+ Then table TABLE is
27
+ | email | groups | id | username |
28
+ | 'auto@test.com' | [] | N/A | 'test_user' |
29
+
30
+
31
+ Scenario: Request with parameters
32
+ ### PRECONDITIONS - BEGIN
33
+ Given begin preconditions
34
+
35
+ Given SERVER = start internal gRPC server
36
+ When wait 1 seconds
37
+
38
+ Given CLIENT = new internal gRPC client on service 'account.UserController'
39
+
40
+ Given end preconditions
41
+ ### PRECONDITIONS - END
42
+
43
+ # Extract a user
44
+ When RESULT = request 'account.UserController.List' (gRPC client: CLIENT)
45
+ Given USER_JSON = RESULT[0]
46
+
47
+ When RESULT = request 'account.UserController.List' (gRPC client: CLIENT ; with Protobuf response)
48
+ Given USER_PROTO = RESULT[0]
49
+
50
+ # Retrieve user with json request & response
51
+ When RESULT = request 'account.UserController.Retrieve' (gRPC client: CLIENT)
52
+ | Name | Value |
53
+ | 'id' | USER_PROTO.id |
54
+ Then RESULT == USER_JSON
55
+
56
+ # Retrieve user with json request & proto response
57
+ When RESULT = request 'account.UserController.Retrieve' (gRPC client: CLIENT ; with Protobuf response)
58
+ | Name | Value |
59
+ | 'id' | USER_PROTO.id |
60
+ Then RESULT == USER_PROTO
61
+
62
+ # Retrieve user with proto request & json response
63
+ When RESULT = request 'account.UserController.Retrieve' (gRPC client: CLIENT ; with Protobuf request)
64
+ | Name | Value |
65
+ | 'id' | USER_PROTO.id |
66
+ Then RESULT == USER_JSON
67
+
68
+ # Retrieve user with proto request & proto response
69
+ When RESULT = request 'account.UserController.Retrieve' (gRPC client: CLIENT ; with Protobuf request & response)
70
+ | Name | Value |
71
+ | 'id' | USER_PROTO.id |
72
+ Then RESULT == USER_PROTO
73
+
74
+
75
+
76
+ Scenario: Request with request data build before request
77
+ ### PRECONDITIONS - BEGIN
78
+ Given begin preconditions
79
+
80
+ Given SERVER = start internal gRPC server
81
+ When wait 1 seconds
82
+
83
+ Given CLIENT = new internal gRPC client on service 'account.UserController'
84
+
85
+ Given end preconditions
86
+ ### PRECONDITIONS - END
87
+
88
+ # Extract a user
89
+ When RESULT = request 'account.UserController.List' (gRPC client: CLIENT)
90
+ Given USER_JSON = RESULT[0]
91
+
92
+ When RESULT = request 'account.UserController.List' (gRPC client: CLIENT ; with Protobuf response)
93
+ Given USER_PROTO = RESULT[0]
94
+
95
+ # Retrieve user with json request & response
96
+ When DATA = data for request 'account.UserController.Retrieve' (gRPC client: CLIENT)
97
+ | Name | Value |
98
+ | 'id' | USER_PROTO.id |
99
+ When RESULT = request 'account.UserController.Retrieve' with data DATA (gRPC client: CLIENT)
100
+ Then RESULT == USER_JSON
101
+
102
+ # Retrieve user with json request & proto response
103
+ When DATA = data for request 'account.UserController.Retrieve' (gRPC client: CLIENT)
104
+ | Name | Value |
105
+ | 'id' | USER_PROTO.id |
106
+ When RESULT = request 'account.UserController.Retrieve' with data DATA (gRPC client: CLIENT ; with Protobuf response)
107
+ Then RESULT == USER_PROTO
108
+
109
+ # Retrieve user with proto request & json response
110
+ When DATA = data for request 'account.UserController.Retrieve' (gRPC client: CLIENT ; as Protobuf)
111
+ | Name | Value |
112
+ | 'id' | USER_PROTO.id |
113
+ When RESULT = request 'account.UserController.Retrieve' with data DATA (gRPC client: CLIENT)
114
+ Then RESULT == USER_JSON
115
+
116
+ # Retrieve user with proto request & proto response
117
+ When DATA = data for request 'account.UserController.Retrieve' (gRPC client: CLIENT ; as Protobuf)
118
+ | Name | Value |
119
+ | 'id' | USER_PROTO.id |
120
+ When RESULT = request 'account.UserController.Retrieve' with data DATA (gRPC client: CLIENT ; with Protobuf response)
121
+ Then RESULT == USER_PROTO
122
+
@@ -0,0 +1,60 @@
1
+ @testing_solution
2
+ @multiprocessing
3
+ Feature: Basic features related to multiprocessing
4
+
5
+ Scenario: execute simple steps
6
+ Given BEG = datetime now
7
+ Given EXPECTED_MIN = BEG + 3 seconds
8
+ Given EXPECTED_MAX = EXPECTED_MIN + 400 milliseconds
9
+
10
+ Given PROC_ID_1 = call steps in a process
11
+ """
12
+ Given wait 2 seconds
13
+ """
14
+ Given PROC_ID_2 = call steps in a process
15
+ """
16
+ Given wait 3 seconds
17
+ """
18
+ Given PROC_ID_3 = call steps in a process
19
+ """
20
+ Given wait 1 seconds
21
+ """
22
+ When join process PROC_ID_1
23
+ When join process PROC_ID_2
24
+ When join process PROC_ID_3
25
+
26
+ Given END = datetime now
27
+ Then END >= EXPECTED_MIN
28
+ Then END < EXPECTED_MAX
29
+
30
+ Scenario: execute steps reading variables
31
+ Given SLEEP_1_S = 1
32
+ Given SLEEP_2_S = 2
33
+ Given SLEEP_3_S = 3
34
+
35
+ Given BEG = datetime now
36
+ Given EXPECTED_MIN = BEG + 3 seconds
37
+ Given EXPECTED_MAX = EXPECTED_MIN + 250 milliseconds
38
+
39
+ Given PROC_ID_1 = call steps in a process
40
+ """
41
+ Given wait SLEEP_2_S seconds
42
+ """
43
+ Given PROC_ID_2 = call steps in a process
44
+ """
45
+ Given wait SLEEP_3_S seconds
46
+ """
47
+ Given PROC_ID_3 = call steps in a process
48
+ """
49
+ Given wait SLEEP_1_S seconds
50
+ """
51
+ When join process PROC_ID_1
52
+ When join process PROC_ID_2
53
+ When join process PROC_ID_3
54
+
55
+ Given END = datetime now
56
+ Then END >= EXPECTED_MIN
57
+ Then END < EXPECTED_MAX
58
+
59
+
60
+
@@ -0,0 +1,43 @@
1
+ @testing_solution
2
+ @commands
3
+ Feature: Features realted to commands
4
+
5
+ Scenario: Simple command
6
+
7
+ Given VAR = new command 'pwd'
8
+ Then command VAR has status Ready
9
+
10
+ Given run command VAR
11
+ Then wait until command VAR has status Success (accepted time: 5 s ; timeout: 10 s)
12
+
13
+ Scenario: Simple command with arguments
14
+
15
+ Given VAR = new command 'pwd' with
16
+ | Name | Value |
17
+ | 'blocking' | False |
18
+ Then command VAR has status Ready
19
+
20
+ Given run command VAR
21
+ Then wait until command VAR has status Success (accepted time: 5 s ; timeout: 10 s)
22
+
23
+ Scenario: Simple python command
24
+
25
+ Given VAR = new command 'python3 -c "print('Hello')"' with
26
+ | Name | Value |
27
+ | 'blocking' | True |
28
+ | 'auto_stop' | True |
29
+ | 'name' | 'My command name' |
30
+ Then command VAR has status Ready
31
+
32
+ Given run command VAR
33
+ Then wait until command VAR has status Success (accepted time: 5 s ; timeout: 10 s)
34
+
35
+ Scenario: Failed command
36
+
37
+ Given VAR = new command 'xxxxxx'
38
+ Then command VAR has status Ready
39
+
40
+ Given run command VAR
41
+ Then wait until command VAR has status Error (accepted time: 5 s ; timeout: 10 s)
42
+
43
+
@@ -0,0 +1,20 @@
1
+ @testing_solution
2
+ @system
3
+ Feature: Features related to generic system actions
4
+
5
+ Scenario: Create file with content in context.text
6
+
7
+ Given DT_NOW = datetime now
8
+ Given DT_NOW_STR = convert datetime DT_NOW to string with format '%Y-%m-%dT%H-%M-%S-%f'
9
+ Given FILENAME = 'SC_KINEIS_OPS-ACK_${DT_NOW_STR}.xml'
10
+
11
+ Given TEXT = 'text'
12
+
13
+ Given FILE_PATH = create file with name FILENAME
14
+ """
15
+ <node>${TEXT}</node>
16
+ """
17
+
18
+ Given FILE_CONTENT = content of file FILE_PATH
19
+ Given FILE_CONTENT_STR = convert object value FILE_CONTENT to string
20
+ Then FILE_CONTENT_STR == '<node>text</node>'
@@ -0,0 +1,239 @@
1
+ @testing_solution
2
+ @table
3
+ Feature: Features related to tables
4
+
5
+ Scenario: Extract data from table
6
+ ### PRECONDITIONS - BEGIN
7
+ Given begin preconditions
8
+
9
+ Given INPUT_TABLE = convert json '{"test1" : 1, "test2":2.0, "test3": "test3", "test4" : null}' to name/value table with names uncollapsed
10
+
11
+ Given end preconditions
12
+ ### PRECONDITIONS - END
13
+
14
+ Then table INPUT_TABLE is
15
+ | Name | Value |
16
+ | 'test1' | 1 |
17
+ | 'test2' | 2.0 |
18
+ | 'test3' | 'test3' |
19
+ | 'test4' | None |
20
+
21
+ Given EXTRACTED = extract column 'Name' from table INPUT_TABLE
22
+ Then table EXTRACTED is
23
+ | Name |
24
+ | 'test1' |
25
+ | 'test2' |
26
+ | 'test3' |
27
+ | 'test4' |
28
+
29
+ Given EXTRACTED = extract column 'Value' cells from table INPUT_TABLE
30
+ Then table EXTRACTED is
31
+ | 1 |
32
+ | 2.0 |
33
+ | 'test3' |
34
+ | None |
35
+
36
+ Given EXTRACTED = extract column 'Value' cells from table INPUT_TABLE as row
37
+ Then table EXTRACTED is
38
+ | 1 | 2.0 | 'test3' | None |
39
+
40
+ Scenario: Empty table
41
+ ### PRECONDITIONS - BEGIN
42
+ Given begin preconditions
43
+
44
+ Given INPUT_TABLE = convert json '{}' to name/value table with names uncollapsed
45
+ Then table INPUT_TABLE is
46
+ | Name | Value |
47
+
48
+ Given end preconditions
49
+ ### PRECONDITIONS - END
50
+
51
+ Then table INPUT_TABLE is empty
52
+
53
+ Scenario: Table count
54
+ ### PRECONDITIONS - BEGIN
55
+ Given begin preconditions
56
+
57
+ Given INPUT_TABLE = convert json '{"test1" : 1, "test2":2.0, "test3": "test3", "test4" : null}' to name/value table with names uncollapsed
58
+
59
+ Then table INPUT_TABLE is
60
+ | Name | Value |
61
+ | 'test1' | 1 |
62
+ | 'test2' | 2.0 |
63
+ | 'test3' | 'test3' |
64
+ | 'test4' | None |
65
+
66
+ Given end preconditions
67
+ ### PRECONDITIONS - END
68
+
69
+ Given TABLE_COUNT = number of rows in table INPUT_TABLE
70
+ Then TABLE_COUNT == 4
71
+
72
+
73
+ Scenario: Table count empty
74
+ ### PRECONDITIONS - BEGIN
75
+ Given begin preconditions
76
+
77
+ Given INPUT_TABLE = convert json '{}' to name/value table with names uncollapsed
78
+
79
+ Given end preconditions
80
+ ### PRECONDITIONS - END
81
+
82
+ Given TABLE_COUNT = number of rows in table INPUT_TABLE
83
+ Then TABLE_COUNT == 0
84
+
85
+
86
+ Scenario: Table verification and variables
87
+ ### PRECONDITIONS - BEGIN
88
+ Given begin preconditions
89
+
90
+ Given INPUT_TABLE = convert json '{"test1" : 1, "test2":2.0, "test3": "TEST3 value", "test4" : null}' to name/value table with names uncollapsed
91
+
92
+ Given TEST3 = 'test3'
93
+ Given TEST3_VALUE = 'TEST3 value'
94
+
95
+ Given end preconditions
96
+ ### PRECONDITIONS - END
97
+
98
+ Then table INPUT_TABLE is
99
+ | Name | Value |
100
+ | 'test1' | 1 |
101
+ | 'test2' | 2.0 |
102
+ | ${TEST3} | ${TEST3_VALUE} |
103
+ | 'test4' | None |
104
+
105
+ @table_without_rows
106
+ Scenario: Table without rows
107
+ ### PRECONDITIONS - BEGIN
108
+ Given begin preconditions
109
+
110
+ Given INPUT_TABLE = convert json '{"a":"a", "b.c.b":"bcb", "b.d.a":"bda", "c.a":"ca", "c.b.a":"cba", "d.a":"da", "dab":"dab", "ea.id":"eaid", "f.a[0].g":"fa0g"}' to name/value table with names uncollapsed
111
+
112
+ Given end preconditions
113
+ ### PRECONDITIONS - END
114
+
115
+ Given TABLE = table INPUT_TABLE without rows verifying
116
+ | Name |
117
+ | '${MatchPattern(c\..*)}' |
118
+ | 'dab' |
119
+ | 'd.a' |
120
+ | '${MatchPattern(f\.a\[\d+\]\.g)}' |
121
+ Then table TABLE is
122
+ | Name | Value |
123
+ | 'a' | 'a' |
124
+ | 'b.c.b' | 'bcb' |
125
+ | 'b.d.a' | 'bda' |
126
+ | 'ea.id' | 'eaid' |
127
+
128
+ @table_with_new_columns
129
+ Scenario: Table with new columns
130
+ ### PRECONDITIONS - BEGIN
131
+ Given begin preconditions
132
+
133
+ Given INPUT_TABLE = table with header
134
+ | Name | Value | seconds | nanos |
135
+ | 'A' | 'VA' | 15 | 123456789 |
136
+ | 'B' | 'VB' | 3600 | 123456 |
137
+
138
+ Given end preconditions
139
+ ### PRECONDITIONS - END
140
+
141
+ Given X = 2
142
+ Given TABLE = table INPUT_TABLE with new columns
143
+ | Column Name | Value Expression |
144
+ | 'Col 1' | 'Name: "${Column(Name)}"' |
145
+ | 'Col 2' | 'Name: '${Column(Name)}' ; Value: '${Column(Value)}' ; X: ${X}' |
146
+ | 'Time 1' | ${Column(seconds)} + ${Column(nanos)} / 1e9 |
147
+ | 'Time 2' | float(f"{${Column(seconds)}}.{${Column(nanos)}:09d}") |
148
+
149
+ Then table TABLE is
150
+ | Name | Value | seconds | nanos | Col 1 | Col 2 | Time 1 | Time 2 |
151
+ | 'A' | 'VA' | 15 | 123456789 | 'Name: "A"' | 'Name: 'A' ; Value: 'VA' ; X: 2' | 15.123456789 | 15.123456789 |
152
+ | 'B' | 'VB' | 3600 | 123456 | 'Name: "B"' | 'Name: 'B' ; Value: 'VB' ; X: 2' | 3600.000123456 | 3600.000123456 |
153
+
154
+ @table_with_new_rows
155
+ Scenario: Table with new rows
156
+ ### PRECONDITIONS - BEGIN
157
+ Given begin preconditions
158
+
159
+ Given TABLE = table with header
160
+ | Name | Value |
161
+ | 'A' | 'VA' |
162
+
163
+ Given end preconditions
164
+ ### PRECONDITIONS - END
165
+
166
+ Given X = 2
167
+ Given Y = 5
168
+ Given TABLE = table TABLE with new rows
169
+ | Name | Value |
170
+ | 'A${X}.${Y}' | ${Y} |
171
+
172
+ Then table TABLE is
173
+ | Name | Value |
174
+ | 'A' | 'VA' |
175
+ | 'A2.5' | 5 |
176
+
177
+ @table_without_duplicated_rows
178
+ Scenario: Table without duplicated rows
179
+ ### PRECONDITIONS - BEGIN
180
+ Given begin preconditions
181
+
182
+ Given TABLE = table with header
183
+ | Col 1 | Col 2 | Col 3 |
184
+ | 'A1' | 'A2' | 'A3' |
185
+ | 'A1' | 'B2' | 'A3' |
186
+ | 'B1' | 'A2' | 'A3' |
187
+ | 'B1' | 'A2' | 'B3' |
188
+ | 'A1' | 'A2' | 'B3' |
189
+ | 'A1' | 'C2' | 'A3' |
190
+ | 'B1' | 'B2' | 'B3' |
191
+
192
+ Given end preconditions
193
+ ### PRECONDITIONS - END
194
+
195
+ Given TABLE = table TABLE without duplicated rows
196
+ | Col 1 | Col 3 |
197
+
198
+ Then table TABLE is
199
+ | Col 1 | Col 2 | Col 3 |
200
+ | 'A1' | 'A2' | 'A3' |
201
+ | 'B1' | 'A2' | 'A3' |
202
+ | 'B1' | 'A2' | 'B3' |
203
+ | 'A1' | 'A2' | 'B3' |
204
+
205
+ @contains
206
+ @doesnt_contain
207
+ Scenario: Table contains or not a row
208
+ ### PRECONDITIONS - BEGIN
209
+ Given begin preconditions
210
+
211
+ Given TABLE = table with header
212
+ | Col 1 | Col 2 | Col 3 |
213
+ | 'A1' | 'A2' | 'A3' |
214
+ | 'A1' | 'B2' | 'A3' |
215
+ | 'B1' | 'A2' | 'A3' |
216
+
217
+ Given end preconditions
218
+ ### PRECONDITIONS - END
219
+
220
+ Then table TABLE contains
221
+ | Col 1 | Col 2 | Col 3 |
222
+ | 'A1' | 'A2' | 'A3' |
223
+ | 'B1' | 'A2' | 'A3' |
224
+
225
+ Given next step shall fail on exception matching 'Table obtained doesn't contain row expected of index 0'
226
+ Then table TABLE contains
227
+ | Col 1 | Col 2 | Col 3 |
228
+ | 'PIPO' | 'A2' | 'A3' |
229
+
230
+ Then table TABLE doesn't contain
231
+ | Col 1 | Col 2 | Col 3 |
232
+ | 'PIPO' | 'A2' | 'A3' |
233
+
234
+ Given next step shall fail on exception matching 'Table obtained contains row expected of index 1'
235
+ Then table TABLE doesn't contain
236
+ | Col 1 | Col 2 | Col 3 |
237
+ | 'PIPO' | 'A2' | 'A3' |
238
+ | 'A1' | 'A2' | 'A3' |
239
+