holado 0.13.22__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.
Files changed (698) hide show
  1. holado/__init__.py +358 -0
  2. holado/common/__init__.py +25 -0
  3. holado/common/context/__init__.py +25 -0
  4. holado/common/context/context.py +248 -0
  5. holado/common/context/service_manager.py +262 -0
  6. holado/common/context/session_context.py +516 -0
  7. holado/common/handlers/__init__.py +19 -0
  8. holado/common/handlers/enums.py +41 -0
  9. holado/common/handlers/object.py +175 -0
  10. holado/common/handlers/undefined.py +55 -0
  11. holado/common/tools/__init__.py +19 -0
  12. holado/common/tools/gc_manager.py +155 -0
  13. holado/holado_config.py +45 -0
  14. holado-0.13.22.dist-info/METADATA +194 -0
  15. holado-0.13.22.dist-info/RECORD +698 -0
  16. holado-0.13.22.dist-info/WHEEL +4 -0
  17. holado-0.13.22.dist-info/licenses/LICENSE +21 -0
  18. holado_ais/__init__.py +33 -0
  19. holado_ais/ais/MaritimeIdentificationDigits.csv +295 -0
  20. holado_ais/ais/ais_manager.py +151 -0
  21. holado_ais/ais/ais_messages.py +356 -0
  22. holado_ais/ais/ais_payload.py +35 -0
  23. holado_ais/ais/enums.py +37 -0
  24. holado_ais/ais/patch_pyais.py +1174 -0
  25. holado_ais/tests/behave/steps/__init__.py +17 -0
  26. holado_ais/tests/behave/steps/ais/__init__.py +0 -0
  27. holado_ais/tests/behave/steps/ais/ais_manager_steps.py +50 -0
  28. holado_ais/tests/behave/steps/ais/ais_messages_steps.py +237 -0
  29. holado_binary/__init__.py +17 -0
  30. holado_binary/ipc/binary.py +125 -0
  31. holado_binary/ipc/bit_series.py +307 -0
  32. holado_binary/tests/behave/steps/__init__.py +17 -0
  33. holado_binary/tests/behave/steps/ipc/binary_steps.py +57 -0
  34. holado_binary/tests/behave/steps/ipc/bit_series_steps.py +132 -0
  35. holado_context/__init__.py +16 -0
  36. holado_context/tests/behave/steps/__init__.py +16 -0
  37. holado_context/tests/behave/steps/private/__init__.py +16 -0
  38. holado_context/tests/behave/steps/private/common/context_steps.py +68 -0
  39. holado_core/__init__.py +32 -0
  40. holado_core/common/__init__.py +0 -0
  41. holado_core/common/actors/actions.py +97 -0
  42. holado_core/common/actors/actor.py +226 -0
  43. holado_core/common/actors/element_actor.py +32 -0
  44. holado_core/common/actors/find_actor.py +106 -0
  45. holado_core/common/actors/tree_actor.py +32 -0
  46. holado_core/common/actors/verify_actions.py +69 -0
  47. holado_core/common/block/base.py +122 -0
  48. holado_core/common/block/block_manager.py +173 -0
  49. holado_core/common/block/block_method.py +46 -0
  50. holado_core/common/block/block_steps.py +37 -0
  51. holado_core/common/block/function.py +42 -0
  52. holado_core/common/block/scope_function.py +28 -0
  53. holado_core/common/block/scope_manager.py +238 -0
  54. holado_core/common/block/scope_steps.py +141 -0
  55. holado_core/common/criterias/and_criteria.py +61 -0
  56. holado_core/common/criterias/criteria.py +78 -0
  57. holado_core/common/criterias/or_criteria.py +64 -0
  58. holado_core/common/criterias/tools/criteria_context.py +20 -0
  59. holado_core/common/criterias/tools/criteria_parameters.py +18 -0
  60. holado_core/common/drivers/driver.py +153 -0
  61. holado_core/common/drivers/element_driver.py +30 -0
  62. holado_core/common/drivers/element_internal_api.py +239 -0
  63. holado_core/common/drivers/internal_api.py +40 -0
  64. holado_core/common/drivers/tree_driver.py +30 -0
  65. holado_core/common/drivers/tree_internal_api.py +176 -0
  66. holado_core/common/exceptions/__init__.py +0 -0
  67. holado_core/common/exceptions/element_exception.py +28 -0
  68. holado_core/common/exceptions/exceptions.py +24 -0
  69. holado_core/common/exceptions/functional_exception.py +21 -0
  70. holado_core/common/exceptions/holado_exception.py +25 -0
  71. holado_core/common/exceptions/technical_exception.py +27 -0
  72. holado_core/common/exceptions/timeout_exception.py +20 -0
  73. holado_core/common/exceptions/verify_exception.py +20 -0
  74. holado_core/common/finders/after_in_tree_finder.py +87 -0
  75. holado_core/common/finders/element_finder.py +60 -0
  76. holado_core/common/finders/else_finder.py +105 -0
  77. holado_core/common/finders/finder.py +478 -0
  78. holado_core/common/finders/or_finder.py +98 -0
  79. holado_core/common/finders/then_finder.py +157 -0
  80. holado_core/common/finders/tools/enums.py +30 -0
  81. holado_core/common/finders/tools/find_builder.py +118 -0
  82. holado_core/common/finders/tools/find_context.py +405 -0
  83. holado_core/common/finders/tools/find_info.py +27 -0
  84. holado_core/common/finders/tools/find_parameters.py +240 -0
  85. holado_core/common/finders/tools/find_updater.py +95 -0
  86. holado_core/common/finders/tools/finder_info.py +26 -0
  87. holado_core/common/finders/tree_finder.py +146 -0
  88. holado_core/common/handlers/__init__.py +0 -0
  89. holado_core/common/handlers/abstracts/base_redo.py +702 -0
  90. holado_core/common/handlers/abstracts/get_or_create.py +120 -0
  91. holado_core/common/handlers/element_holder.py +122 -0
  92. holado_core/common/handlers/enums.py +23 -0
  93. holado_core/common/handlers/exceptions/redo_exceptions.py +28 -0
  94. holado_core/common/handlers/features/resource_by_name.py +187 -0
  95. holado_core/common/handlers/features/resource_by_type.py +174 -0
  96. holado_core/common/handlers/redo.py +119 -0
  97. holado_core/common/handlers/wait.py +127 -0
  98. holado_core/common/inspectors/element_inspector.py +57 -0
  99. holado_core/common/inspectors/inspector.py +221 -0
  100. holado_core/common/inspectors/tools/inspect_builder.py +169 -0
  101. holado_core/common/inspectors/tools/inspect_context.py +69 -0
  102. holado_core/common/inspectors/tools/inspect_parameters.py +181 -0
  103. holado_core/common/inspectors/tree_inspector.py +73 -0
  104. holado_core/common/resource/persisted_data_manager.py +113 -0
  105. holado_core/common/resource/persisted_method_to_call_manager.py +263 -0
  106. holado_core/common/resource/resource_manager.py +126 -0
  107. holado_core/common/resource/table_data_manager.py +110 -0
  108. holado_core/common/tables/__init__.py +1 -0
  109. holado_core/common/tables/comparators/__init__.py +0 -0
  110. holado_core/common/tables/comparators/boolean_table_cell_comparator.py +25 -0
  111. holado_core/common/tables/comparators/bytes_table_cell_comparator.py +25 -0
  112. holado_core/common/tables/comparators/datetime_table_cell_comparator.py +24 -0
  113. holado_core/common/tables/comparators/float_table_cell_comparator.py +31 -0
  114. holado_core/common/tables/comparators/integer_table_cell_comparator.py +25 -0
  115. holado_core/common/tables/comparators/internal_table_cell_comparator.py +30 -0
  116. holado_core/common/tables/comparators/string_table_cell_comparator.py +24 -0
  117. holado_core/common/tables/comparators/string_table_comparator.py +29 -0
  118. holado_core/common/tables/comparators/string_table_row_comparator.py +29 -0
  119. holado_core/common/tables/comparators/table_cell_comparator.py +40 -0
  120. holado_core/common/tables/comparators/table_comparator.py +209 -0
  121. holado_core/common/tables/comparators/table_comparator_manager.py +60 -0
  122. holado_core/common/tables/comparators/table_row_comparator.py +116 -0
  123. holado_core/common/tables/comparators/table_with_header_comparator.py +68 -0
  124. holado_core/common/tables/converters/__init__.py +0 -0
  125. holado_core/common/tables/converters/table_converter.py +233 -0
  126. holado_core/common/tables/enums.py +23 -0
  127. holado_core/common/tables/table.py +261 -0
  128. holado_core/common/tables/table_cell.py +126 -0
  129. holado_core/common/tables/table_manager.py +365 -0
  130. holado_core/common/tables/table_row.py +169 -0
  131. holado_core/common/tables/table_with_header.py +242 -0
  132. holado_core/common/tools/__init__.py +0 -0
  133. holado_core/common/tools/comparators/comparator.py +151 -0
  134. holado_core/common/tools/comparators/object_comparator.py +21 -0
  135. holado_core/common/tools/converters/converter.py +118 -0
  136. holado_core/common/tools/path_manager.py +238 -0
  137. holado_core/common/tools/string_tools.py +144 -0
  138. holado_core/common/tools/tools.py +197 -0
  139. holado_core/tests/behave/steps/__init__.py +20 -0
  140. holado_core/tests/behave/steps/common/__init__.py +0 -0
  141. holado_core/tests/behave/steps/common/common_steps.py +137 -0
  142. holado_core/tests/behave/steps/common/config_steps.py +42 -0
  143. holado_core/tests/behave/steps/common/resource_steps.py +62 -0
  144. holado_core/tests/behave/steps/common/tables_steps.py +560 -0
  145. holado_core/tools/__init__.py +0 -0
  146. holado_core/tools/abstracts/__init__.py +0 -0
  147. holado_core/tools/abstracts/blocking_command_service.py +64 -0
  148. holado_core/tools/abstracts/service.py +48 -0
  149. holado_crypto/__init__.py +31 -0
  150. holado_crypto/crypto/crypto.py +108 -0
  151. holado_crypto/crypto/key.py +92 -0
  152. holado_crypto/crypto/tcpbin.py +105 -0
  153. holado_crypto/crypto/transport/__init__.py +0 -0
  154. holado_crypto/crypto/transport/crc.py +40 -0
  155. holado_crypto/tests/behave/steps/__init__.py +18 -0
  156. holado_crypto/tests/behave/steps/crypto_steps.py +112 -0
  157. holado_crypto/tests/behave/steps/key_steps.py +82 -0
  158. holado_crypto/tests/behave/steps/tcpbin_steps.py +79 -0
  159. holado_data/__init__.py +31 -0
  160. holado_data/data/generator/base.py +93 -0
  161. holado_data/data/generator/generator_manager.py +27 -0
  162. holado_data/data/generator/python_generator.py +30 -0
  163. holado_data/tests/behave/steps/__init__.py +17 -0
  164. holado_data/tests/behave/steps/data/generator_steps.py +91 -0
  165. holado_data/tests/behave/steps/tools/utils_steps.py +59 -0
  166. holado_db/__init__.py +32 -0
  167. holado_db/tests/behave/steps/__init__.py +18 -0
  168. holado_db/tests/behave/steps/tools/db/db_client_steps.py +134 -0
  169. holado_db/tests/behave/steps/tools/db/postgresql_client_steps.py +59 -0
  170. holado_db/tests/behave/steps/tools/db/sqlite_client_steps.py +57 -0
  171. holado_db/tools/db/clients/base/db_audit.py +94 -0
  172. holado_db/tools/db/clients/base/db_client.py +344 -0
  173. holado_db/tools/db/clients/postgresql/postgresql_audit.py +75 -0
  174. holado_db/tools/db/clients/postgresql/postgresql_client.py +84 -0
  175. holado_db/tools/db/clients/sqlite/sqlite_audit.py +70 -0
  176. holado_db/tools/db/clients/sqlite/sqlite_client.py +60 -0
  177. holado_db/tools/db/db_manager.py +109 -0
  178. holado_db/tools/db/query/base/query_builder.py +138 -0
  179. holado_db/tools/db/query/pypika/pypika_query_builder.py +244 -0
  180. holado_db/tools/db/query/query_manager.py +77 -0
  181. holado_django/__init__.py +31 -0
  182. holado_django/server/HOWTO.txt +27 -0
  183. holado_django/server/django_projects/rest_api/db.sqlite3 +0 -0
  184. holado_django/server/django_projects/rest_api/manage.py +22 -0
  185. holado_django/server/django_projects/rest_api/rest_api/__init__.py +0 -0
  186. holado_django/server/django_projects/rest_api/rest_api/application/__init__.py +0 -0
  187. holado_django/server/django_projects/rest_api/rest_api/application/admin.py +3 -0
  188. holado_django/server/django_projects/rest_api/rest_api/application/apps.py +9 -0
  189. holado_django/server/django_projects/rest_api/rest_api/application/migrations/__init__.py +0 -0
  190. holado_django/server/django_projects/rest_api/rest_api/application/models.py +3 -0
  191. holado_django/server/django_projects/rest_api/rest_api/application/tests.py +3 -0
  192. holado_django/server/django_projects/rest_api/rest_api/application/views.py +6 -0
  193. holado_django/server/django_projects/rest_api/rest_api/asgi.py +16 -0
  194. holado_django/server/django_projects/rest_api/rest_api/settings.py +130 -0
  195. holado_django/server/django_projects/rest_api/rest_api/urls.py +35 -0
  196. holado_django/server/django_projects/rest_api/rest_api/wsgi.py +16 -0
  197. holado_django/server/django_server.py +110 -0
  198. holado_django/server/grpc_django_server.py +57 -0
  199. holado_django/server/patch_djangogrpcframework.py +46 -0
  200. holado_django/tests/behave/steps/__init__.py +16 -0
  201. holado_django/tests/behave/steps/django_server_steps.py +83 -0
  202. holado_docker/__init__.py +25 -0
  203. holado_docker/sdk/docker/container_logs.py +447 -0
  204. holado_docker/sdk/docker/docker_client.py +537 -0
  205. holado_docker/sdk/docker/docker_service.py +71 -0
  206. holado_docker/tests/behave/steps/__init__.py +16 -0
  207. holado_docker/tests/behave/steps/sdk/docker/container_logs_steps.py +47 -0
  208. holado_examples/projects/server_rest/server_rest_example/initialize_holado.py +72 -0
  209. holado_examples/projects/server_rest/server_rest_example/rest_api/db.sqlite3 +0 -0
  210. holado_examples/projects/server_rest/server_rest_example/rest_api/manage.py +22 -0
  211. holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/__init__.py +0 -0
  212. holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/application/__init__.py +0 -0
  213. holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/application/admin.py +3 -0
  214. holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/application/apps.py +7 -0
  215. holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/application/migrations/__init__.py +0 -0
  216. holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/application/models.py +3 -0
  217. holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/application/serializers.py +15 -0
  218. holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/application/tests.py +3 -0
  219. holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/application/views.py +24 -0
  220. holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/asgi.py +16 -0
  221. holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/settings.py +130 -0
  222. holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/urls.py +31 -0
  223. holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/wsgi.py +16 -0
  224. holado_examples/projects/server_rest/server_rest_example/rest_server.py +37 -0
  225. holado_examples/scripts/script_custom_initialization.py +16 -0
  226. holado_examples/scripts/script_minimal_initialization.py +23 -0
  227. holado_examples/tests/behave/testing_solution/__main__.py +13 -0
  228. holado_examples/tests/behave/testing_solution/behave_environment.py +35 -0
  229. holado_examples/tests/behave/testing_solution/environment.py +36 -0
  230. holado_examples/tests/behave/testing_solution/features/Configuration/Actions/configure_system.feature +10 -0
  231. holado_examples/tests/behave/testing_solution/features/NonReg/example.feature +26 -0
  232. holado_examples/tests/behave/testing_solution/initialize_holado.py +62 -0
  233. holado_examples/tests/behave/testing_solution/logging.conf +102 -0
  234. holado_examples/tests/behave/testing_solution/requirements.txt +5 -0
  235. holado_examples/tests/behave/testing_solution/run_test.sh +7 -0
  236. holado_examples/tests/behave/testing_solution/run_test_nonreg.sh +6 -0
  237. holado_examples/tests/behave/testing_solution/src/common/tools/path_manager.py +40 -0
  238. holado_examples/tests/behave/testing_solution/src/config/config_manager.py +30 -0
  239. holado_examples/tests/behave/testing_solution/src/context/session_context.py +45 -0
  240. holado_examples/tests/behave/testing_solution/steps/config_steps.py +21 -0
  241. holado_examples/tests/behave/testing_solution/steps/public_steps.py +10 -0
  242. holado_grpc/TODO +8 -0
  243. holado_grpc/__init__.py +40 -0
  244. holado_grpc/api/rpc/TODO.txt +4 -0
  245. holado_grpc/api/rpc/grpc_client.py +210 -0
  246. holado_grpc/api/rpc/grpc_manager.py +81 -0
  247. holado_grpc/ipc/rpc/__init__.py +0 -0
  248. holado_grpc/ipc/rpc/grpc_compiler.py +45 -0
  249. holado_grpc/ipc/rpc/grpc_services.py +165 -0
  250. holado_grpc/tests/behave/steps/__init__.py +16 -0
  251. holado_grpc/tests/behave/steps/api/grpc_client_steps.py +173 -0
  252. holado_grpc/tests/behave/steps/private/__init__.py +16 -0
  253. holado_grpc/tests/behave/steps/private/api/grpc_steps.py +77 -0
  254. holado_helper/__init__.py +35 -0
  255. holado_helper/debug/README.txt +32 -0
  256. holado_helper/debug/memory/memory_profiler.py +106 -0
  257. holado_helper/docker/init_user.sh +24 -0
  258. holado_helper/docker/logging.conf +44 -0
  259. holado_helper/docker/run_holado_test_nonreg_in_docker.sh +120 -0
  260. holado_helper/docker/run_terminal_in_docker.sh +101 -0
  261. holado_helper/holado_module_template/__init__.py +38 -0
  262. holado_helper/holado_module_template/tests/behave/steps/__init__.py +16 -0
  263. holado_helper/holado_module_template/tests/behave/steps/private/__init__.py +16 -0
  264. holado_helper/initialize_holado.py +72 -0
  265. holado_helper/script/action.py +130 -0
  266. holado_helper/script/action_script.py +477 -0
  267. holado_helper/script/any_action_script.py +126 -0
  268. holado_helper/script/behave_action_script.py +99 -0
  269. holado_helper/script/csv_action_script.py +142 -0
  270. holado_helper/script/initialize_script.py +95 -0
  271. holado_helper/script/input_output_script.py +136 -0
  272. holado_helper/script/job.py +75 -0
  273. holado_helper/script/json_action_script.py +104 -0
  274. holado_helper/script/script.py +110 -0
  275. holado_json/__init__.py +16 -0
  276. holado_json/filesystem/json_file.py +94 -0
  277. holado_json/filesystem/stream_json_file.py +117 -0
  278. holado_json/ipc/json.py +146 -0
  279. holado_json/ipc/json_converter.py +69 -0
  280. holado_json/ipc/json_types.py +183 -0
  281. holado_json/tests/behave/steps/__init__.py +16 -0
  282. holado_json/tests/behave/steps/ipc/__init__.py +0 -0
  283. holado_json/tests/behave/steps/ipc/json_steps.py +131 -0
  284. holado_keycloak/__init__.py +16 -0
  285. holado_keycloak/tests/behave/steps/__init__.py +16 -0
  286. holado_keycloak/tests/behave/steps/tools/keycloak_client_steps.py +73 -0
  287. holado_keycloak/tools/keycloak/__init__.py +0 -0
  288. holado_keycloak/tools/keycloak/keycloak_client.py +90 -0
  289. holado_logging/__init__.py +38 -0
  290. holado_logging/common/logging/holado_logger.py +71 -0
  291. holado_logging/common/logging/log_config.py +163 -0
  292. holado_logging/common/logging/log_manager.py +335 -0
  293. holado_multitask/__init__.py +33 -0
  294. holado_multitask/multiprocessing/context/process_context.py +35 -0
  295. holado_multitask/multiprocessing/function_process.py +102 -0
  296. holado_multitask/multiprocessing/periodic_function_process.py +137 -0
  297. holado_multitask/multiprocessing/process.py +213 -0
  298. holado_multitask/multiprocessing/processesmanager.py +137 -0
  299. holado_multitask/multitasking/multitask_manager.py +464 -0
  300. holado_multitask/multithreading/__init__.py +0 -0
  301. holado_multitask/multithreading/context/thread_context.py +86 -0
  302. holado_multitask/multithreading/functionthreaded.py +129 -0
  303. holado_multitask/multithreading/loopfunctionthreaded.py +45 -0
  304. holado_multitask/multithreading/loopthread.py +110 -0
  305. holado_multitask/multithreading/periodicfunctionthreaded.py +135 -0
  306. holado_multitask/multithreading/reflection/inspect.py +47 -0
  307. holado_multitask/multithreading/reflection/sys.py +29 -0
  308. holado_multitask/multithreading/reflection/traceback.py +35 -0
  309. holado_multitask/multithreading/thread.py +203 -0
  310. holado_multitask/multithreading/threadsmanager.py +167 -0
  311. holado_multitask/multithreading/timer.py +51 -0
  312. holado_multitask/tests/behave/steps/__init__.py +17 -0
  313. holado_multitask/tests/behave/steps/multiprocessing_steps.py +138 -0
  314. holado_multitask/tests/behave/steps/multithreading_steps.py +129 -0
  315. holado_protobuf/__init__.py +61 -0
  316. holado_protobuf/ipc/protobuf/__init__.py +0 -0
  317. holado_protobuf/ipc/protobuf/abstracts/type.py +45 -0
  318. holado_protobuf/ipc/protobuf/protobuf_compiler.py +118 -0
  319. holado_protobuf/ipc/protobuf/protobuf_converter.py +153 -0
  320. holado_protobuf/ipc/protobuf/protobuf_messages.py +968 -0
  321. holado_protobuf/ipc/protobuf/protobuf_modifier.py +65 -0
  322. holado_protobuf/ipc/protobuf/types/__init__.py +0 -0
  323. holado_protobuf/ipc/protobuf/types/google/__init__.py +0 -0
  324. holado_protobuf/ipc/protobuf/types/google/protobuf.py +124 -0
  325. holado_protobuf/tests/behave/steps/__init__.py +16 -0
  326. holado_protobuf/tests/behave/steps/ipc/protobuf_steps.py +297 -0
  327. holado_python/__init__.py +36 -0
  328. holado_python/common/enums.py +34 -0
  329. holado_python/common/iterables.py +38 -0
  330. holado_python/common/tools/comparators/boolean_comparator.py +37 -0
  331. holado_python/common/tools/comparators/bytes_comparator.py +48 -0
  332. holado_python/common/tools/comparators/datetime_comparator.py +74 -0
  333. holado_python/common/tools/comparators/float_comparator.py +97 -0
  334. holado_python/common/tools/comparators/integer_comparator.py +37 -0
  335. holado_python/common/tools/comparators/string_comparator.py +99 -0
  336. holado_python/common/tools/comparators/type_comparator.py +31 -0
  337. holado_python/common/tools/datetime.py +341 -0
  338. holado_python/standard_library/csv.py +207 -0
  339. holado_python/standard_library/hashlib.py +110 -0
  340. holado_python/standard_library/multiprocessing.py +62 -0
  341. holado_python/standard_library/queue.py +79 -0
  342. holado_python/standard_library/socket/blocking_socket.py +219 -0
  343. holado_python/standard_library/socket/echo_server.py +29 -0
  344. holado_python/standard_library/socket/message_socket.py +152 -0
  345. holado_python/standard_library/socket/non_blocking_socket.py +172 -0
  346. holado_python/standard_library/socket/socket.py +411 -0
  347. holado_python/standard_library/ssl/resources/certificates/NOTES.txt +5 -0
  348. holado_python/standard_library/ssl/resources/certificates/localhost.crt +19 -0
  349. holado_python/standard_library/ssl/resources/certificates/localhost.key +28 -0
  350. holado_python/standard_library/ssl/ssl.py +131 -0
  351. holado_python/standard_library/typing.py +192 -0
  352. holado_python/tests/behave/steps/__init__.py +27 -0
  353. holado_python/tests/behave/steps/builtins/str_steps.py +45 -0
  354. holado_python/tests/behave/steps/convert_steps.py +59 -0
  355. holado_python/tests/behave/steps/iterable_steps.py +87 -0
  356. holado_python/tests/behave/steps/standard_library/csv_steps.py +134 -0
  357. holado_python/tests/behave/steps/standard_library/datetime_steps.py +163 -0
  358. holado_python/tests/behave/steps/standard_library/hashlib_steps.py +57 -0
  359. holado_python/tests/behave/steps/standard_library/multiprocessing_steps.py +56 -0
  360. holado_python/tests/behave/steps/standard_library/queue_steps.py +358 -0
  361. holado_python/tests/behave/steps/standard_library/socket_steps.py +384 -0
  362. holado_python/tests/behave/steps/standard_library/ssl_steps.py +71 -0
  363. holado_rabbitmq/__init__.py +28 -0
  364. holado_rabbitmq/tests/behave/steps/__init__.py +17 -0
  365. holado_rabbitmq/tests/behave/steps/tools/rabbitmq_client_steps.py +565 -0
  366. holado_rabbitmq/tests/behave/steps/tools/rabbitmq_server_steps.py +64 -0
  367. holado_rabbitmq/tools/rabbitmq/rabbitmq_blocking_client.py +333 -0
  368. holado_rabbitmq/tools/rabbitmq/rabbitmq_client.py +678 -0
  369. holado_rabbitmq/tools/rabbitmq/rabbitmq_manager.py +146 -0
  370. holado_rabbitmq/tools/rabbitmq/rabbitmq_select_client.py +428 -0
  371. holado_rabbitmq/tools/rabbitmq/rabbitmq_server.py +24 -0
  372. holado_redis/__init__.py +17 -0
  373. holado_redis/tests/behave/steps/__init__.py +16 -0
  374. holado_redis/tests/behave/steps/tools/redis_client_steps.py +101 -0
  375. holado_redis/tools/redis/TODO.txt +7 -0
  376. holado_redis/tools/redis/redis_client.py +190 -0
  377. holado_redis/tools/redis/redis_manager.py +38 -0
  378. holado_report/__init__.py +36 -0
  379. holado_report/campaign/campaign_manager.py +348 -0
  380. holado_report/report/analyze/execution_historic_manager.py +96 -0
  381. holado_report/report/analyze/scenario_duration_manager.py +245 -0
  382. holado_report/report/builders/detailed_scenario_report_builder.py +172 -0
  383. holado_report/report/builders/execution_historic_report_builder.py +132 -0
  384. holado_report/report/builders/failure_report_builder.py +150 -0
  385. holado_report/report/builders/report_builder.py +64 -0
  386. holado_report/report/builders/short_scenario_report_builder.py +94 -0
  387. holado_report/report/builders/summary_by_category_report_builder.py +103 -0
  388. holado_report/report/builders/summary_report_builder.py +110 -0
  389. holado_report/report/builders/summary_scenario_by_category_report_builder.py +109 -0
  390. holado_report/report/builders/summary_scenario_report_builder.py +81 -0
  391. holado_report/report/execution_historic.py +144 -0
  392. holado_report/report/report_manager.py +424 -0
  393. holado_report/report/reports/base_report.py +163 -0
  394. holado_report/report/reports/feature_report.py +106 -0
  395. holado_report/report/reports/scenario_report.py +64 -0
  396. holado_rest/__init__.py +32 -0
  397. holado_rest/api/rest/TODO.txt +2 -0
  398. holado_rest/api/rest/rest_client.py +200 -0
  399. holado_rest/api/rest/rest_manager.py +72 -0
  400. holado_rest/tests/behave/steps/__init__.py +16 -0
  401. holado_rest/tests/behave/steps/api/__init__.py +0 -0
  402. holado_rest/tests/behave/steps/api/rest_client_steps.py +181 -0
  403. holado_rest/tests/behave/steps/private/__init__.py +16 -0
  404. holado_rest/tests/behave/steps/private/api/__init__.py +0 -0
  405. holado_rest/tests/behave/steps/private/api/rest_steps.py +75 -0
  406. holado_s3/__init__.py +17 -0
  407. holado_s3/tests/behave/steps/__init__.py +17 -0
  408. holado_s3/tests/behave/steps/private/__init__.py +16 -0
  409. holado_s3/tests/behave/steps/private/tools/s3_steps.py +89 -0
  410. holado_s3/tests/behave/steps/tools/s3_client_steps.py +403 -0
  411. holado_s3/tests/behave/steps/tools/s3_server_steps.py +57 -0
  412. holado_s3/tools/s3/__init__.py +0 -0
  413. holado_s3/tools/s3/boto3_s3_client.py +59 -0
  414. holado_s3/tools/s3/minio_client.py +75 -0
  415. holado_s3/tools/s3/moto_server.py +52 -0
  416. holado_scripting/__init__.py +54 -0
  417. holado_scripting/common/tools/dynamic_text_manager.py +73 -0
  418. holado_scripting/common/tools/evaluate_parameters.py +228 -0
  419. holado_scripting/common/tools/expression_evaluator.py +389 -0
  420. holado_scripting/common/tools/variable_manager.py +354 -0
  421. holado_scripting/tests/behave/steps/__init__.py +22 -0
  422. holado_scripting/tests/behave/steps/common/tools/variable_convert_steps.py +159 -0
  423. holado_scripting/tests/behave/steps/common/tools/variable_new_steps.py +130 -0
  424. holado_scripting/tests/behave/steps/common/tools/variable_steps.py +108 -0
  425. holado_scripting/tests/behave/steps/common/tools/variable_verify_steps.py +160 -0
  426. holado_scripting/tests/behave/steps/scenario/function_steps.py +77 -0
  427. holado_scripting/tests/behave/steps/scenario/if_steps.py +87 -0
  428. holado_scripting/tests/behave/steps/scenario/loop_steps.py +119 -0
  429. holado_scripting/text/base/base_function.py +25 -0
  430. holado_scripting/text/base/base_verify_function.py +25 -0
  431. holado_scripting/text/base/text_inspecter.py +204 -0
  432. holado_scripting/text/interpreter/exceptions/interpreter_exception.py +25 -0
  433. holado_scripting/text/interpreter/functions/function_apply_function.py +60 -0
  434. holado_scripting/text/interpreter/functions/function_cast.py +60 -0
  435. holado_scripting/text/interpreter/functions/function_convert.py +57 -0
  436. holado_scripting/text/interpreter/functions/function_dynamic_value.py +40 -0
  437. holado_scripting/text/interpreter/functions/function_escape_all_bytes.py +35 -0
  438. holado_scripting/text/interpreter/functions/function_exists_variable.py +39 -0
  439. holado_scripting/text/interpreter/functions/function_hex_to_bytes.py +49 -0
  440. holado_scripting/text/interpreter/functions/function_hex_to_int.py +53 -0
  441. holado_scripting/text/interpreter/functions/function_to_base_64.py +41 -0
  442. holado_scripting/text/interpreter/functions/function_to_bytes.py +50 -0
  443. holado_scripting/text/interpreter/functions/function_to_hex.py +42 -0
  444. holado_scripting/text/interpreter/functions/function_to_string.py +50 -0
  445. holado_scripting/text/interpreter/text_interpreter.py +219 -0
  446. holado_scripting/text/verifier/exceptions/verifier_exception.py +21 -0
  447. holado_scripting/text/verifier/functions/verify_function_extract_in.py +35 -0
  448. holado_scripting/text/verifier/functions/verify_function_match_pattern.py +63 -0
  449. holado_scripting/text/verifier/text_verifier.py +103 -0
  450. holado_sftp/__init__.py +16 -0
  451. holado_sftp/tests/behave/steps/__init__.py +17 -0
  452. holado_sftp/tests/behave/steps/private/__init__.py +16 -0
  453. holado_sftp/tests/behave/steps/private/tools/sftp_steps.py +78 -0
  454. holado_sftp/tests/behave/steps/tools/sftp_client_steps.py +94 -0
  455. holado_sftp/tests/behave/steps/tools/sftp_server_steps.py +82 -0
  456. holado_sftp/tools/sftp/__init__.py +0 -0
  457. holado_sftp/tools/sftp/sftp_client.py +103 -0
  458. holado_sftp/tools/sftp/sftp_server.py +39 -0
  459. holado_swagger/__init__.py +31 -0
  460. holado_swagger/swagger_hub/mockserver/mockserver_client.py +82 -0
  461. holado_swagger/swagger_hub/mockserver/mockserver_manager.py +33 -0
  462. holado_swagger/tests/behave/steps/__init__.py +16 -0
  463. holado_swagger/tests/behave/steps/swagger_hub/mockserver_steps.py +74 -0
  464. holado_system/system/command/command.py +247 -0
  465. holado_system/system/command/command_result.py +128 -0
  466. holado_system/system/command/curl_command.py +101 -0
  467. holado_system/system/command/exceptions.py +59 -0
  468. holado_system/system/filesystem/file.py +150 -0
  469. holado_system/system/global_system.py +187 -0
  470. holado_system/tests/behave/steps/__init__.py +18 -0
  471. holado_system/tests/behave/steps/system/commands_steps.py +92 -0
  472. holado_system/tests/behave/steps/system/file_steps.py +231 -0
  473. holado_system/tests/behave/steps/system/system_steps.py +84 -0
  474. holado_test/__init__.py +30 -0
  475. holado_test/behave/__init__.py +0 -0
  476. holado_test/behave/behave.py +400 -0
  477. holado_test/behave/behave_environment.py +169 -0
  478. holado_test/behave/behave_function.py +33 -0
  479. holado_test/behave/behave_manager.py +558 -0
  480. holado_test/behave/independant_runner.py +66 -0
  481. holado_test/behave/scenario/__init__.py +0 -0
  482. holado_test/behave/scenario/behave_step_tools.py +157 -0
  483. holado_test/common/context/feature_context.py +81 -0
  484. holado_test/common/context/scenario_context.py +169 -0
  485. holado_test/common/context/step_context.py +66 -0
  486. holado_test/common/exceptions/undefined_step_exception.py +21 -0
  487. holado_test/scenario/step_tools.py +547 -0
  488. holado_test/scenario/tester_tools.py +57 -0
  489. holado_test/test_config.py +26 -0
  490. holado_test/tests/behave/steps/__init__.py +18 -0
  491. holado_test/tests/behave/steps/scenario/exception_steps.py +87 -0
  492. holado_test/tests/behave/steps/scenario/scenario_steps.py +100 -0
  493. holado_test/tests/behave/steps/scenario/tester_steps.py +65 -0
  494. holado_test/tools/test_server/client/rest/test_server_client.py +150 -0
  495. holado_test/tools/test_server/server/Dockerfile +60 -0
  496. holado_test/tools/test_server/server/core/server_context.py +42 -0
  497. holado_test/tools/test_server/server/core/server_manager.py +41 -0
  498. holado_test/tools/test_server/server/requirements.txt +2 -0
  499. holado_test/tools/test_server/server/rest/README +2 -0
  500. holado_test/tools/test_server/server/rest/api/__init__.py +24 -0
  501. holado_test/tools/test_server/server/rest/api/campaign/__init__.py +32 -0
  502. holado_test/tools/test_server/server/rest/api/campaign/scenario.py +40 -0
  503. holado_test/tools/test_server/server/rest/initialize_holado.py +72 -0
  504. holado_test/tools/test_server/server/rest/logging.conf +51 -0
  505. holado_test/tools/test_server/server/rest/openapi.yaml +57 -0
  506. holado_test/tools/test_server/server/rest/run.py +41 -0
  507. holado_test/tools/test_server/server/run.sh +6 -0
  508. holado_test/tools/test_server/server/run_test_server_in_docker.sh +104 -0
  509. holado_tools/__init__.py +38 -0
  510. holado_tools/scripts/execute_persisted_post_processes/execute_persisted_post_processes.py +36 -0
  511. holado_tools/scripts/execute_persisted_post_processes/execute_persisted_post_processes.sh +6 -0
  512. holado_tools/scripts/execute_persisted_post_processes/initialize_holado.py +62 -0
  513. holado_tools/tests/behave/steps/__init__.py +16 -0
  514. holado_tools/tests/behave/steps/tools/host_controller/client_steps.py +97 -0
  515. holado_tools/tools/host_controller/client/rest/host_controller_client.py +275 -0
  516. holado_tools/tools/host_controller/server/Dockerfile +60 -0
  517. holado_tools/tools/host_controller/server/requirements.txt +2 -0
  518. holado_tools/tools/host_controller/server/rest/README +2 -0
  519. holado_tools/tools/host_controller/server/rest/api/__init__.py +24 -0
  520. holado_tools/tools/host_controller/server/rest/api/config.py +88 -0
  521. holado_tools/tools/host_controller/server/rest/api/docker/__init__.py +66 -0
  522. holado_tools/tools/host_controller/server/rest/api/docker/container.py +144 -0
  523. holado_tools/tools/host_controller/server/rest/api/docker/logs.py +66 -0
  524. holado_tools/tools/host_controller/server/rest/api/os.py +58 -0
  525. holado_tools/tools/host_controller/server/rest/initialize_holado.py +72 -0
  526. holado_tools/tools/host_controller/server/rest/openapi.yaml +561 -0
  527. holado_tools/tools/host_controller/server/rest/run.py +31 -0
  528. holado_tools/tools/host_controller/server/run_host_controller_in_docker.sh +107 -0
  529. holado_tools/tools/host_viewer/client/rest/host_viewer_client.py +190 -0
  530. holado_tools/tools/host_viewer/server/Dockerfile +60 -0
  531. holado_tools/tools/host_viewer/server/requirements.txt +2 -0
  532. holado_tools/tools/host_viewer/server/rest/README +2 -0
  533. holado_tools/tools/host_viewer/server/rest/api/__init__.py +24 -0
  534. holado_tools/tools/host_viewer/server/rest/api/docker/__init__.py +65 -0
  535. holado_tools/tools/host_viewer/server/rest/api/docker/container.py +87 -0
  536. holado_tools/tools/host_viewer/server/rest/api/os.py +58 -0
  537. holado_tools/tools/host_viewer/server/rest/initialize_holado.py +72 -0
  538. holado_tools/tools/host_viewer/server/rest/openapi.yaml +301 -0
  539. holado_tools/tools/host_viewer/server/rest/run.py +31 -0
  540. holado_tools/tools/host_viewer/server/run_host_viewer_in_docker.sh +107 -0
  541. holado_value/__init__.py +24 -0
  542. holado_value/common/tables/comparators/table_2_value_table_cell_comparator.py +196 -0
  543. holado_value/common/tables/comparators/table_2_value_table_comparator.py +27 -0
  544. holado_value/common/tables/comparators/table_2_value_table_row_comparator.py +27 -0
  545. holado_value/common/tables/comparators/table_2_value_table_with_header_comparator.py +27 -0
  546. holado_value/common/tables/converters/value_table_converter.py +267 -0
  547. holado_value/common/tables/value_table.py +29 -0
  548. holado_value/common/tables/value_table_cell.py +76 -0
  549. holado_value/common/tables/value_table_manager.py +48 -0
  550. holado_value/common/tables/value_table_row.py +43 -0
  551. holado_value/common/tables/value_table_with_header.py +28 -0
  552. holado_value/common/tools/unique_value_manager.py +109 -0
  553. holado_value/common/tools/value.py +191 -0
  554. holado_value/common/tools/value_types.py +41 -0
  555. holado_value/tests/behave/steps/__init__.py +16 -0
  556. holado_value/tests/behave/steps/private/__init__.py +16 -0
  557. holado_ws/__init__.py +16 -0
  558. holado_ws/api/ws/TODO.txt +2 -0
  559. holado_ws/tests/behave/steps/__init__.py +16 -0
  560. holado_ws/tests/behave/steps/api/web_service_steps.py +189 -0
  561. holado_xml/__init__.py +38 -0
  562. holado_xml/tests/behave/steps/__init__.py +16 -0
  563. holado_xml/tests/behave/steps/private/__init__.py +16 -0
  564. holado_xml/xml/stream_xml_file.py +181 -0
  565. holado_xml/xml/xml_file.py +97 -0
  566. holado_xml/xml/xml_manager.py +35 -0
  567. holado_yaml/__init__.py +31 -0
  568. holado_yaml/tests/behave/steps/__init__.py +16 -0
  569. holado_yaml/tests/behave/steps/yaml_steps.py +161 -0
  570. holado_yaml/yaml/enums.py +28 -0
  571. holado_yaml/yaml/pyyaml/pyyaml_client.py +72 -0
  572. holado_yaml/yaml/ruamel/ruamel_yaml_client.py +80 -0
  573. holado_yaml/yaml/yaml_client.py +203 -0
  574. holado_yaml/yaml/yaml_manager.py +94 -0
  575. test_holado/Dockerfile_test_holado +82 -0
  576. test_holado/__init__.py +4 -0
  577. test_holado/__main__.py +25 -0
  578. test_holado/build_docker_image_to_test_holado_in_docker.sh +7 -0
  579. test_holado/environment.py +60 -0
  580. test_holado/features/Configuration/Actions/execute_persisted_post_processes.feature +13 -0
  581. test_holado/features/NonReg/api/REST.feature +26 -0
  582. test_holado/features/NonReg/api/gRPC.feature +116 -0
  583. test_holado/features/NonReg/common/multiprocessing/simple.feature +60 -0
  584. test_holado/features/NonReg/common/system/commands.feature +43 -0
  585. test_holado/features/NonReg/common/system/system.feature +20 -0
  586. test_holado/features/NonReg/common/tables/table.feature +245 -0
  587. test_holado/features/NonReg/common/tables/value_table_conversion.feature +29 -0
  588. test_holado/features/NonReg/common/tools/DateTime.feature +88 -0
  589. test_holado/features/NonReg/common/tools/UniqueValueManager.feature +43 -0
  590. test_holado/features/NonReg/holado_ais/ais_message-bitarray_to_nmea.feature +135 -0
  591. test_holado/features/NonReg/holado_ais/ais_message-nmea_raw_to_dict.feature +93 -0
  592. test_holado/features/NonReg/holado_ais/message_types/type-10.feature +38 -0
  593. test_holado/features/NonReg/holado_ais/message_types/type-12.feature +37 -0
  594. test_holado/features/NonReg/holado_ais/message_types/type-14.feature +36 -0
  595. test_holado/features/NonReg/holado_ais/message_types/type-15.feature +36 -0
  596. test_holado/features/NonReg/holado_ais/message_types/type-16.feature +38 -0
  597. test_holado/features/NonReg/holado_ais/message_types/type-17.feature +46 -0
  598. test_holado/features/NonReg/holado_ais/message_types/type-18.feature +37 -0
  599. test_holado/features/NonReg/holado_ais/message_types/type-19.feature +38 -0
  600. test_holado/features/NonReg/holado_ais/message_types/type-1_2_3.feature +42 -0
  601. test_holado/features/NonReg/holado_ais/message_types/type-20.feature +38 -0
  602. test_holado/features/NonReg/holado_ais/message_types/type-21.feature +37 -0
  603. test_holado/features/NonReg/holado_ais/message_types/type-22.feature +84 -0
  604. test_holado/features/NonReg/holado_ais/message_types/type-23.feature +49 -0
  605. test_holado/features/NonReg/holado_ais/message_types/type-24.feature +72 -0
  606. test_holado/features/NonReg/holado_ais/message_types/type-25.feature +143 -0
  607. test_holado/features/NonReg/holado_ais/message_types/type-26.feature +144 -0
  608. test_holado/features/NonReg/holado_ais/message_types/type-27.feature +36 -0
  609. test_holado/features/NonReg/holado_ais/message_types/type-4_11.feature +39 -0
  610. test_holado/features/NonReg/holado_ais/message_types/type-5.feature +33 -0
  611. test_holado/features/NonReg/holado_ais/message_types/type-6.feature +37 -0
  612. test_holado/features/NonReg/holado_ais/message_types/type-7_13.feature +43 -0
  613. test_holado/features/NonReg/holado_ais/message_types/type-8.feature +37 -0
  614. test_holado/features/NonReg/holado_ais/message_types/type-9.feature +37 -0
  615. test_holado/features/NonReg/holado_binary/bit_series.error.feature +33 -0
  616. test_holado/features/NonReg/holado_binary/bit_series.feature +144 -0
  617. test_holado/features/NonReg/holado_protobuf/protobuf.feature +291 -0
  618. test_holado/features/NonReg/holado_python/convert.feature +20 -0
  619. test_holado/features/NonReg/holado_python/iterable.feature +61 -0
  620. test_holado/features/NonReg/holado_python/standard_library/socket/local_echo_server/socket_reset.feature +191 -0
  621. test_holado/features/NonReg/holado_python/standard_library/socket/local_echo_server/socket_with_tls_and_verify.feature +279 -0
  622. test_holado/features/NonReg/holado_python/standard_library/socket/local_echo_server/socket_with_tls_without_verify.feature +299 -0
  623. test_holado/features/NonReg/holado_python/standard_library/socket/local_echo_server/socket_without_tls.feature +163 -0
  624. test_holado/features/NonReg/holado_python/standard_library/socket/tcpbin.com/socket_with_mtls.feature +214 -0
  625. test_holado/features/NonReg/holado_python/standard_library/socket/tcpbin.com/socket_with_tls.feature +184 -0
  626. test_holado/features/NonReg/holado_python/standard_library/socket/tcpbin.com/socket_without_tls.feature +169 -0
  627. test_holado/features/NonReg/holado_scripting/common/tools/dynamic_text_manager.feature +18 -0
  628. test_holado/features/NonReg/holado_scripting/common/tools/expression_evaluator.feature +185 -0
  629. test_holado/features/NonReg/holado_scripting/common/tools/variable_manager.feature +71 -0
  630. test_holado/features/NonReg/holado_scripting/text/interpreter/interpreter.error.feature +21 -0
  631. test_holado/features/NonReg/holado_scripting/text/interpreter/interpreter.feature +120 -0
  632. test_holado/features/NonReg/holado_yaml/yaml.feature +514 -0
  633. test_holado/features/NonReg/ipc/json.feature +20 -0
  634. test_holado/features/NonReg/scenario/scenario.feature +183 -0
  635. test_holado/features/NonReg/test_steps/behave.feature +275 -0
  636. test_holado/features/NonReg/test_steps/common.feature +100 -0
  637. test_holado/features/NonReg/tools/RabbitMQ.feature +445 -0
  638. test_holado/features/NonReg/tools/RabbitMQ_steps.feature +276 -0
  639. test_holado/features/NonReg/tools/S3/boto3_client.feature +73 -0
  640. test_holado/features/NonReg/tools/S3/minio_client.feature +75 -0
  641. test_holado/features/NonReg/tools/db_sqlite3.feature +41 -0
  642. test_holado/features/NonReg/tools/sFTP.feature +25 -0
  643. test_holado/features/Test/logger.feature +28 -0
  644. test_holado/features/Test/test_host_controller.feature +13 -0
  645. test_holado/features/Test/test_parameter.feature +15 -0
  646. test_holado/features/__init__.py +0 -0
  647. test_holado/initialize_holado.py +62 -0
  648. test_holado/logging.conf +53 -0
  649. test_holado/resources/proto/definitions/protobuf/custom_types/field_types.proto +24 -0
  650. test_holado/resources/proto/definitions/protobuf/protobuf.dev/tutorial/addressbook.proto +56 -0
  651. test_holado/resources/proto/generated/protobuf/custom_types/field_types_pb2.py +34 -0
  652. test_holado/resources/proto/generated/protobuf/protobuf/dev/tutorial/addressbook_pb2.py +34 -0
  653. test_holado/resources/scripts/list_tags.sh +2 -0
  654. test_holado/resources/scripts/update_resources_proto_generated.py +70 -0
  655. test_holado/steps/__init__.py +0 -0
  656. test_holado/steps/private_steps.py +20 -0
  657. test_holado/steps/public_steps.py +23 -0
  658. test_holado/test_holado_session_context.py +43 -0
  659. test_holado/tools/connexion/api_rest/openapi.yaml +16 -0
  660. test_holado/tools/connexion/api_rest/run.py +19 -0
  661. test_holado/tools/django/README.txt +3 -0
  662. test_holado/tools/django/api_grpc/api_grpc/__init__.py +0 -0
  663. test_holado/tools/django/api_grpc/api_grpc/api1/__init__.py +0 -0
  664. test_holado/tools/django/api_grpc/api_grpc/api1/admin.py +3 -0
  665. test_holado/tools/django/api_grpc/api_grpc/api1/apps.py +6 -0
  666. test_holado/tools/django/api_grpc/api_grpc/api1/migrations/__init__.py +0 -0
  667. test_holado/tools/django/api_grpc/api_grpc/api1/models.py +3 -0
  668. test_holado/tools/django/api_grpc/api_grpc/api1/proto/__init__.py +0 -0
  669. test_holado/tools/django/api_grpc/api_grpc/api1/proto/account.proto +27 -0
  670. test_holado/tools/django/api_grpc/api_grpc/api1/proto/account_pb2.py +33 -0
  671. test_holado/tools/django/api_grpc/api_grpc/api1/proto/account_pb2_grpc.py +199 -0
  672. test_holado/tools/django/api_grpc/api_grpc/api1/serializers.py +12 -0
  673. test_holado/tools/django/api_grpc/api_grpc/api1/services.py +11 -0
  674. test_holado/tools/django/api_grpc/api_grpc/api1/tests.py +3 -0
  675. test_holado/tools/django/api_grpc/api_grpc/api1/views.py +3 -0
  676. test_holado/tools/django/api_grpc/api_grpc/asgi.py +16 -0
  677. test_holado/tools/django/api_grpc/api_grpc/settings.py +126 -0
  678. test_holado/tools/django/api_grpc/api_grpc/urls.py +27 -0
  679. test_holado/tools/django/api_grpc/api_grpc/wsgi.py +16 -0
  680. test_holado/tools/django/api_grpc/db.sqlite3 +0 -0
  681. test_holado/tools/django/api_grpc/manage.py +29 -0
  682. test_holado/tools/django/api_grpc/manual_test_commands.txt +25 -0
  683. test_holado/tools/django/api_grpc/patch_djangogrpcframework.py +42 -0
  684. test_holado/tools/django/api_rest/api_rest/__init__.py +0 -0
  685. test_holado/tools/django/api_rest/api_rest/api1/__init__.py +0 -0
  686. test_holado/tools/django/api_rest/api_rest/api1/admin.py +3 -0
  687. test_holado/tools/django/api_rest/api_rest/api1/apps.py +6 -0
  688. test_holado/tools/django/api_rest/api_rest/api1/migrations/__init__.py +0 -0
  689. test_holado/tools/django/api_rest/api_rest/api1/models.py +3 -0
  690. test_holado/tools/django/api_rest/api_rest/api1/serializers.py +15 -0
  691. test_holado/tools/django/api_rest/api_rest/api1/tests.py +3 -0
  692. test_holado/tools/django/api_rest/api_rest/api1/views.py +24 -0
  693. test_holado/tools/django/api_rest/api_rest/asgi.py +16 -0
  694. test_holado/tools/django/api_rest/api_rest/settings.py +133 -0
  695. test_holado/tools/django/api_rest/api_rest/urls.py +32 -0
  696. test_holado/tools/django/api_rest/api_rest/wsgi.py +16 -0
  697. test_holado/tools/django/api_rest/db.sqlite3 +0 -0
  698. test_holado/tools/django/api_rest/manage.py +22 -0
@@ -0,0 +1,37 @@
1
+ @ais
2
+ @type_21
3
+ Feature: Message type 21 : Aids To Navigation Report
4
+
5
+ Scenario: Create, convert, encode and decode message
6
+ # Create message
7
+ When MESSAGE = new AIS message of type 'T21_AIDS_TO_NAVIGATION_REPORT'
8
+ | repeat | mmsi | name | accuracy | lon | lat | to_bow | to_stern | to_port | to_starboard | epfd | second | off_position | reserved_1 | raim | virtual_aid | assigned | name_ext |
9
+ | 1 | 0235006280 | 'TYPE 21' | True | 11.2 | 13.1 | 1 | 1 | 1 | 1 | 1 | 1 | True | 7 | True | True | True | 'AIS 21' |
10
+
11
+ # Verify bytes conversion
12
+ When MESSAGE_TO_BYTES = convert AIS message MESSAGE to bytes
13
+ When MESSAGE_BYTES = new AIS message of type 'T21_AIDS_TO_NAVIGATION_REPORT' as bitarray bytes
14
+ | repeat | mmsi | name | accuracy | lon | lat | to_bow | to_stern | to_port | to_starboard | epfd | second | off_position | reserved_1 | raim | virtual_aid | assigned | name_ext |
15
+ | 1 | 0235006280 | 'TYPE 21' | True | 11.2 | 13.1 | 1 | 1 | 1 | 1 | 1 | 1 | True | 7 | True | True | True | 'AIS 21' |
16
+ Then MESSAGE_TO_BYTES == MESSAGE_BYTES
17
+
18
+ # Encode in NMEA
19
+ When NMEA_SENTENCES = encode AIS raw payload MESSAGE_BYTES to NMEA
20
+ | talker_id | radio_channel | seq_id | group_id |
21
+ | 'AIVDM' | 'A' | 0 | 0 |
22
+ Then ${len(NMEA_SENTENCES)} == 1
23
+
24
+ # Verify some NMEA fields
25
+ Given STRING_NMEA_MSG = split NMEA AIS message NMEA_SENTENCES[0] to fields
26
+ Then STRING_NMEA_MSG[-3] == 'A'
27
+
28
+ # Decode NMEA message
29
+ Given DECODED_NMEA_MESSAGE = decode NMEA AIS message NMEA_SENTENCES as dictionary
30
+ When DECODED_NMEA_MESSAGE_TABLE = convert dictionary DECODED_NMEA_MESSAGE to table with keys as columns
31
+ Then table DECODED_NMEA_MESSAGE_TABLE is
32
+ | accuracy | aid_type | assigned | epfd | lat | lon | mmsi | msg_type | name | name_ext | off_position | raim | repeat | reserved_1 | second | to_bow | to_port | to_starboard | to_stern | virtual_aid |
33
+ | True | N/A | True | N/A | 13.1 | 11.2 | 235006280 | 21 | 'TYPE 21' | 'AIS 21' | True | True | 1 | 7 | 1 | 1 | 1 | 1 | 1 | True |
34
+
35
+
36
+
37
+
@@ -0,0 +1,84 @@
1
+ @ais
2
+ @type_22
3
+ Feature: Message type 22 : Channel Management Addressed & Broadcast
4
+
5
+ @addressed
6
+ Scenario: Create, convert, encode and decode message for Channel A
7
+ # Create message
8
+ When MESSAGE = new AIS message of type 'T22_CHANNEL_MANAGEMENT'
9
+ | repeat | mmsi | channel_a | channel_b | txrx | power | addressed | dest1 | empty_1 | dest2 | empty_2 | zonesize |
10
+ | 1 | 235006280 | True | False | True | 1 | 1 | 235006281 | 1 | 235006282 | 2 | 1 |
11
+
12
+ # Verify bytes conversion
13
+ When MESSAGE_TO_BYTES = convert AIS message MESSAGE to bytes
14
+ When MESSAGE_BYTES = new AIS message of type 'T22_CHANNEL_MANAGEMENT' as bitarray bytes
15
+ | repeat | mmsi | channel_a | channel_b | txrx | power | addressed | dest1 | empty_1 | dest2 | empty_2 | zonesize |
16
+ | 1 | 235006280 | True | False | True | 1 | 1 | 235006281 | 1 | 235006282 | 2 | 1 |
17
+ Then MESSAGE_TO_BYTES == MESSAGE_BYTES
18
+
19
+ # Encode in NMEA
20
+ When NMEA_SENTENCES = encode AIS raw payload MESSAGE_BYTES to NMEA
21
+ | talker_id | radio_channel | seq_id | group_id |
22
+ | 'AIVDM' | 'A' | 0 | 0 |
23
+ Then ${len(NMEA_SENTENCES)} == 1
24
+
25
+ # Verify some NMEA fields
26
+ Given STRING_NMEA_MSG = split NMEA AIS message NMEA_SENTENCES[0] to fields
27
+ Then STRING_NMEA_MSG[-3] == 'A'
28
+
29
+ # Decode NMEA message
30
+ Given DECODED_NMEA_MESSAGE = decode NMEA AIS message NMEA_SENTENCES as dictionary
31
+ When DECODED_NMEA_MESSAGE_TABLE = convert dictionary DECODED_NMEA_MESSAGE to table with keys as columns
32
+ Then table DECODED_NMEA_MESSAGE_TABLE is
33
+ | addressed | band_a | band_b | channel_a | channel_b | dest1 | dest2 | empty_1 | empty_2 | mmsi | msg_type | power | repeat | txrx | zonesize |
34
+ | True | False | False | 1 | 0 | 235006281 | 235006282 | 1 | 2 | 235006280 | 22 | True | 1 | 1 | 1 |
35
+
36
+
37
+
38
+
39
+ @broadcast
40
+ Scenario: Create, convert, encode and decode message for Channel B
41
+ ### PRECONDITIONS - BEGIN
42
+ Given begin preconditions
43
+
44
+ Given NE_LON = 33.2
45
+ Given NE_LAT = 6.2
46
+
47
+ Given SW_LON = 15.7
48
+ Given SW_LAT = 1.1
49
+
50
+ Given end preconditions
51
+ ### PRECONDITIONS - END
52
+
53
+ # Create message
54
+ When MESSAGE = new AIS message of type 'T22_CHANNEL_MANAGEMENT'
55
+ | repeat | mmsi | channel_a | channel_b | txrx | power | addressed | dest1 | empty_1 | dest2 | empty_2 | zonesize | ne_lon | ne_lat | sw_lon | sw_lat |
56
+ | 1 | 235006280 | False | True | False | 1 | 0 | 11 | 1 | 22 | 2 | 0 | NE_LON | NE_LAT | SW_LON | SW_LAT |
57
+
58
+ # Verify bytes conversion
59
+ When MESSAGE_TO_BYTES = convert AIS message MESSAGE to bytes
60
+ When MESSAGE_BYTES = new AIS message of type 'T22_CHANNEL_MANAGEMENT' as bitarray bytes
61
+ | repeat | mmsi | channel_a | channel_b | txrx | power | addressed | dest1 | empty_1 | dest2 | empty_2 | zonesize | ne_lon | ne_lat | sw_lon | sw_lat |
62
+ | 1 | 235006280 | False | True | False | 1 | 0 | 11 | 1 | 22 | 2 | 0 | NE_LON | NE_LAT | SW_LON | SW_LAT |
63
+ Then MESSAGE_TO_BYTES == MESSAGE_BYTES
64
+
65
+ # Encode in NMEA
66
+ When NMEA_SENTENCES = encode AIS raw payload MESSAGE_BYTES to NMEA
67
+ | talker_id | radio_channel | seq_id | group_id |
68
+ | 'AIVDM' | 'B' | 0 | 0 |
69
+ Then ${len(NMEA_SENTENCES)} == 1
70
+
71
+ # Verify some NMEA fields
72
+ Given STRING_NMEA_MSG = split NMEA AIS message NMEA_SENTENCES[0] to fields
73
+ Then STRING_NMEA_MSG[-3] == 'B'
74
+
75
+ # Decode NMEA message
76
+ Given DECODED_NMEA_MESSAGE = decode NMEA AIS message NMEA_SENTENCES as dictionary
77
+ When DECODED_NMEA_MESSAGE_TABLE = convert dictionary DECODED_NMEA_MESSAGE to table with keys as columns
78
+ Then table DECODED_NMEA_MESSAGE_TABLE is
79
+ | addressed | band_a | band_b | channel_a | channel_b | mmsi | msg_type | ne_lat | ne_lon | power | repeat | sw_lat | sw_lon | txrx | zonesize |
80
+ | False | False | False | 0 | 1 | 235006280 | 22 | NE_LAT | NE_LON | True | 1 | SW_LAT | SW_LON | 0 | 0 |
81
+
82
+
83
+
84
+
@@ -0,0 +1,49 @@
1
+ @ais
2
+ @type_23
3
+ Feature: Message type 23 : Group Assignment Command
4
+
5
+ Scenario: Create, convert, encode and decode message for Channel A
6
+ ### PRECONDITIONS - BEGIN
7
+ Given begin preconditions
8
+
9
+ Given NE_LON = 11.5
10
+ Given NE_LAT = 9.3
11
+
12
+ Given SW_LON = 22.7
13
+ Given SW_LAT = 18.0
14
+
15
+ Given end preconditions
16
+ ### PRECONDITIONS - END
17
+
18
+ # Create message
19
+ When MESSAGE = new AIS message of type 'T23_GROUP_ASSIGNMENT_COMMAND'
20
+ | repeat | mmsi | ne_lon | ne_lat | sw_lon | sw_lat | station_type | ship_type | txrx | interval | quiet |
21
+ | 1 | 235006280 | NE_LON | NE_LAT | SW_LON | SW_LAT | 2 | 1 | 1 | 1 | 15 |
22
+
23
+ # Verify bytes conversion
24
+ When MESSAGE_TO_BYTES = convert AIS message MESSAGE to bytes
25
+ When MESSAGE_BYTES = new AIS message of type 'T23_GROUP_ASSIGNMENT_COMMAND' as bitarray bytes
26
+ | repeat | mmsi | ne_lon | ne_lat | sw_lon | sw_lat | station_type | ship_type | txrx | interval | quiet |
27
+ | 1 | 235006280 | NE_LON | NE_LAT | SW_LON | SW_LAT | 2 | 1 | 1 | 1 | 15 |
28
+ Then MESSAGE_TO_BYTES == MESSAGE_BYTES
29
+
30
+ # Encode in NMEA
31
+ When NMEA_SENTENCES = encode AIS raw payload MESSAGE_BYTES to NMEA
32
+ | talker_id | radio_channel | seq_id | group_id |
33
+ | 'AIVDM' | 'A' | 0 | 0 |
34
+ Then ${len(NMEA_SENTENCES)} == 1
35
+
36
+ # Verify some NMEA fields
37
+ Given STRING_NMEA_MSG = split NMEA AIS message NMEA_SENTENCES[0] to fields
38
+ Then STRING_NMEA_MSG[-3] == 'A'
39
+
40
+ # Decode NMEA message
41
+ Given DECODED_NMEA_MESSAGE = decode NMEA AIS message NMEA_SENTENCES as dictionary
42
+ When DECODED_NMEA_MESSAGE_TABLE = convert dictionary DECODED_NMEA_MESSAGE to table with keys as columns
43
+ Then table DECODED_NMEA_MESSAGE_TABLE is
44
+ | interval | mmsi | msg_type | ne_lat | ne_lon | quiet | repeat | ship_type | station_type | sw_lat | sw_lon | txrx |
45
+ | N/A | 235006280 | 23 | NE_LAT | NE_LON | 15 | 1 | N/A | N/A | SW_LAT | SW_LON | N/A |
46
+
47
+
48
+
49
+
@@ -0,0 +1,72 @@
1
+ @ais
2
+ @type_24
3
+ Feature: Message type 24 : Static Data Report Part A & part B
4
+
5
+ @part_A
6
+ Scenario: Create, convert, encode and decode message for Channel A
7
+ # Create message
8
+ When MESSAGE = new AIS message of type 'T24_STATIC_DATA_REPORT'
9
+ | repeat | mmsi | partno | shipname |
10
+ | 1 | 235006280 | 0 | 'THOUSAND SUNNY' |
11
+
12
+ # Verify bytes conversion
13
+ When MESSAGE_TO_BYTES = convert AIS message MESSAGE to bytes
14
+ When MESSAGE_BYTES = new AIS message of type 'T24_STATIC_DATA_REPORT' as bitarray bytes
15
+ | repeat | mmsi | partno | shipname |
16
+ | 1 | 235006280 | 0 | 'THOUSAND SUNNY' |
17
+ Then MESSAGE_TO_BYTES == MESSAGE_BYTES
18
+
19
+ # Encode in NMEA
20
+ When NMEA_SENTENCES = encode AIS raw payload MESSAGE_BYTES to NMEA
21
+ | talker_id | radio_channel | seq_id | group_id |
22
+ | 'AIVDM' | 'A' | 0 | 0 |
23
+ Then ${len(NMEA_SENTENCES)} == 1
24
+
25
+ # Verify some NMEA fields
26
+ Given STRING_NMEA_MSG = split NMEA AIS message NMEA_SENTENCES[0] to fields
27
+ Then STRING_NMEA_MSG[-3] == 'A'
28
+
29
+ # Decode NMEA message
30
+ Given DECODED_NMEA_MESSAGE = decode NMEA AIS message NMEA_SENTENCES as dictionary
31
+ When DECODED_NMEA_MESSAGE_TABLE = convert dictionary DECODED_NMEA_MESSAGE to table with keys as columns
32
+ Then table DECODED_NMEA_MESSAGE_TABLE is
33
+ | mmsi | msg_type | partno | repeat | shipname |
34
+ | 235006280 | 24 | 0 | 1 | 'THOUSAND SUNNY' |
35
+
36
+
37
+
38
+
39
+ @part_B
40
+ Scenario: Create, convert, encode and decode message for Channel B
41
+ # Create message
42
+ When MESSAGE = new AIS message of type 'T24_STATIC_DATA_REPORT'
43
+ | repeat | mmsi | partno | shipname | vendorid | model | serial | callsign | to_bow | to_stern | to_port | to_starboard |
44
+ | 1 | 235006280 | 1 | 'MERRY GO' | '123' | 14 | 1048574 | 'DEL 55' | True | True | True | True |
45
+
46
+ # Verify bytes conversion
47
+ When MESSAGE_TO_BYTES = convert AIS message MESSAGE to bytes
48
+ When MESSAGE_BYTES = new AIS message of type 'T24_STATIC_DATA_REPORT' as bitarray bytes
49
+ | repeat | mmsi | partno | shipname | vendorid | model | serial | callsign | to_bow | to_stern | to_port | to_starboard |
50
+ | 1 | 235006280 | 1 | 'MERRY GO' | '123' | 14 | 1048574 | 'DEL 55' | True | True | True | True |
51
+ Then MESSAGE_TO_BYTES == MESSAGE_BYTES
52
+
53
+ # Encode in NMEA
54
+ When NMEA_SENTENCES = encode AIS raw payload MESSAGE_BYTES to NMEA
55
+ | talker_id | radio_channel | seq_id | group_id |
56
+ | 'AIVDM' | 'A' | 0 | 0 |
57
+ Then ${len(NMEA_SENTENCES)} == 1
58
+
59
+ # Verify some NMEA fields
60
+ Given STRING_NMEA_MSG = split NMEA AIS message NMEA_SENTENCES[0] to fields
61
+ Then STRING_NMEA_MSG[-3] == 'A'
62
+
63
+ # Decode NMEA message
64
+ Given DECODED_NMEA_MESSAGE = decode NMEA AIS message NMEA_SENTENCES as dictionary
65
+ When DECODED_NMEA_MESSAGE_TABLE = convert dictionary DECODED_NMEA_MESSAGE to table with keys as columns
66
+ Then table DECODED_NMEA_MESSAGE_TABLE is
67
+ | callsign | mmsi | model | msg_type | partno | repeat | serial | ship_type | to_bow | to_port | to_starboard | to_stern | vendorid |
68
+ | 'DEL 55' | 235006280 | 14 | 24 | 1 | 1 | 1048574 | 0 | 1 | 1 | 1 | 1 | '123' |
69
+
70
+
71
+
72
+
@@ -0,0 +1,143 @@
1
+ @ais
2
+ @type_25
3
+ Feature: Message type 25 : Single Slot Binary Message
4
+
5
+ @addressed
6
+ @structured
7
+ Scenario: Create, convert, encode and decode message for Channel A
8
+ # Create message
9
+ When MESSAGE = new AIS message of type 'T25_SINGLE_SLOT_BINARY_MESSAGE'
10
+ | repeat | mmsi | addressed | structured | dest_mmsi | app_id | data |
11
+ | 1 | 235006280 | 1 | 1 | 23200001 | 1 | b'1' |
12
+
13
+ # Verify bytes conversion
14
+ When MESSAGE_TO_BYTES = convert AIS message MESSAGE to bytes
15
+ When MESSAGE_BYTES = new AIS message of type 'T25_SINGLE_SLOT_BINARY_MESSAGE' as bitarray bytes
16
+ | repeat | mmsi | addressed | structured | dest_mmsi | app_id | data |
17
+ | 1 | 235006280 | 1 | 1 | 23200001 | 1 | b'1' |
18
+ Then MESSAGE_TO_BYTES == MESSAGE_BYTES
19
+
20
+ # Encode in NMEA
21
+ When NMEA_SENTENCES = encode AIS raw payload MESSAGE_BYTES to NMEA
22
+ | talker_id | radio_channel | seq_id | group_id |
23
+ | 'AIVDM' | 'A' | 0 | 0 |
24
+ Then ${len(NMEA_SENTENCES)} == 1
25
+
26
+ # Verify some NMEA fields
27
+ Given STRING_NMEA_MSG = split NMEA AIS message NMEA_SENTENCES[0] to fields
28
+ Then STRING_NMEA_MSG[-3] == 'A'
29
+
30
+ # Decode NMEA message
31
+ Given DECODED_NMEA_MESSAGE = decode NMEA AIS message NMEA_SENTENCES as dictionary
32
+ When DECODED_NMEA_MESSAGE_TABLE = convert dictionary DECODED_NMEA_MESSAGE to table with keys as columns
33
+ Then table DECODED_NMEA_MESSAGE_TABLE is
34
+ | addressed | app_id | data | dest_mmsi | mmsi | msg_type | repeat | structured |
35
+ | True | 1 | b'1' | 23200001 | 235006280 | 25 | 1 | True |
36
+
37
+
38
+
39
+
40
+ @broadcast
41
+ @structured
42
+ Scenario: Create, convert, encode and decode message for Channel B
43
+ # Create message
44
+ When MESSAGE = new AIS message of type 'T25_SINGLE_SLOT_BINARY_MESSAGE'
45
+ | repeat | mmsi | addressed | structured | dest_mmsi | app_id | data |
46
+ | 1 | 235006280 | 0 | 1 | 23200001 | 1 | b'A' |
47
+
48
+ # Verify bytes conversion
49
+ When MESSAGE_TO_BYTES = convert AIS message MESSAGE to bytes
50
+ When MESSAGE_BYTES = new AIS message of type 'T25_SINGLE_SLOT_BINARY_MESSAGE' as bitarray bytes
51
+ | repeat | mmsi | addressed | structured | dest_mmsi | app_id | data |
52
+ | 1 | 235006280 | 0 | 1 | 23200001 | 1 | b'A' |
53
+ Then MESSAGE_TO_BYTES == MESSAGE_BYTES
54
+
55
+ # Encode in NMEA
56
+ When NMEA_SENTENCES = encode AIS raw payload MESSAGE_BYTES to NMEA
57
+ | talker_id | radio_channel | seq_id | group_id |
58
+ | 'AIVDM' | 'A' | 0 | 0 |
59
+ Then ${len(NMEA_SENTENCES)} == 1
60
+
61
+ # Verify some NMEA fields
62
+ Given STRING_NMEA_MSG = split NMEA AIS message NMEA_SENTENCES[0] to fields
63
+ Then STRING_NMEA_MSG[-3] == 'A'
64
+
65
+ # Decode NMEA message
66
+ Given DECODED_NMEA_MESSAGE = decode NMEA AIS message NMEA_SENTENCES as dictionary
67
+ When DECODED_NMEA_MESSAGE_TABLE = convert dictionary DECODED_NMEA_MESSAGE to table with keys as columns
68
+ Then table DECODED_NMEA_MESSAGE_TABLE is
69
+ | addressed | app_id | data | mmsi | msg_type | repeat | structured |
70
+ | False | 1 | b'A' | 235006280 | 25 | 1 | True |
71
+
72
+
73
+
74
+
75
+ @addressed
76
+ @unstructured
77
+ Scenario: Create, convert, encode and decode message for Channel A
78
+ # Create message
79
+ When MESSAGE = new AIS message of type 'T25_SINGLE_SLOT_BINARY_MESSAGE'
80
+ | repeat | mmsi | addressed | structured | dest_mmsi | app_id | data |
81
+ | 1 | 235006280 | 1 | 0 | 23200001 | 0 | b'B' |
82
+
83
+ # Verify bytes conversion
84
+ When MESSAGE_TO_BYTES = convert AIS message MESSAGE to bytes
85
+ When MESSAGE_BYTES = new AIS message of type 'T25_SINGLE_SLOT_BINARY_MESSAGE' as bitarray bytes
86
+ | repeat | mmsi | addressed | structured | dest_mmsi | app_id | data |
87
+ | 1 | 235006280 | 1 | 0 | 23200001 | 0 | b'B' |
88
+ Then MESSAGE_TO_BYTES == MESSAGE_BYTES
89
+
90
+ # Encode in NMEA
91
+ When NMEA_SENTENCES = encode AIS raw payload MESSAGE_BYTES to NMEA
92
+ | talker_id | radio_channel | seq_id | group_id |
93
+ | 'AIVDM' | 'A' | 0 | 0 |
94
+ Then ${len(NMEA_SENTENCES)} == 1
95
+
96
+ # Verify some NMEA fields
97
+ Given STRING_NMEA_MSG = split NMEA AIS message NMEA_SENTENCES[0] to fields
98
+ Then STRING_NMEA_MSG[-3] == 'A'
99
+
100
+ # Decode NMEA message
101
+ Given DECODED_NMEA_MESSAGE = decode NMEA AIS message NMEA_SENTENCES as dictionary
102
+ When DECODED_NMEA_MESSAGE_TABLE = convert dictionary DECODED_NMEA_MESSAGE to table with keys as columns
103
+ Then table DECODED_NMEA_MESSAGE_TABLE is
104
+ | addressed | data | dest_mmsi | mmsi | msg_type | repeat | structured |
105
+ | True | b'B' | 23200001 | 235006280 | 25 | 1 | False |
106
+
107
+
108
+
109
+
110
+ @broadcast
111
+ @unstructured
112
+ Scenario: Create, convert, encode and decode message for Channel B
113
+ # Create message
114
+ When MESSAGE = new AIS message of type 'T25_SINGLE_SLOT_BINARY_MESSAGE'
115
+ | repeat | mmsi | addressed | structured | dest_mmsi | app_id | data |
116
+ | 1 | 235006280 | 0 | 0 | 23200001 | 0 | b'21' |
117
+
118
+ # Verify bytes conversion
119
+ When MESSAGE_TO_BYTES = convert AIS message MESSAGE to bytes
120
+ When MESSAGE_BYTES = new AIS message of type 'T25_SINGLE_SLOT_BINARY_MESSAGE' as bitarray bytes
121
+ | repeat | mmsi | addressed | structured | dest_mmsi | app_id | data |
122
+ | 1 | 235006280 | 0 | 0 | 23200001 | 0 | b'21' |
123
+ Then MESSAGE_TO_BYTES == MESSAGE_BYTES
124
+
125
+ # Encode in NMEA
126
+ When NMEA_SENTENCES = encode AIS raw payload MESSAGE_BYTES to NMEA
127
+ | talker_id | radio_channel | seq_id | group_id |
128
+ | 'AIVDM' | 'A' | 0 | 0 |
129
+ Then ${len(NMEA_SENTENCES)} == 1
130
+
131
+ # Verify some NMEA fields
132
+ Given STRING_NMEA_MSG = split NMEA AIS message NMEA_SENTENCES[0] to fields
133
+ Then STRING_NMEA_MSG[-3] == 'A'
134
+
135
+ # Decode NMEA message
136
+ Given DECODED_NMEA_MESSAGE = decode NMEA AIS message NMEA_SENTENCES as dictionary
137
+ When DECODED_NMEA_MESSAGE_TABLE = convert dictionary DECODED_NMEA_MESSAGE to table with keys as columns
138
+ Then table DECODED_NMEA_MESSAGE_TABLE is
139
+ | addressed | data | mmsi | msg_type | repeat | structured |
140
+ | False | b'21' | 235006280 | 25 | 1 | False |
141
+
142
+
143
+
@@ -0,0 +1,144 @@
1
+ @ais
2
+ @type_26
3
+ Feature: Message type 26
4
+
5
+ @addressed
6
+ @structured
7
+ Scenario: Create, convert, encode and decode message
8
+ # Create message
9
+ When MESSAGE = new AIS message of type 'T26_MULTIPLE_SLOT_BINARY_MESSAGE'
10
+ | repeat | mmsi | addressed | structured | dest_mmsi | app_id | data | radio |
11
+ | 1 | 235006280 | 1 | 1 | 23200001 | 0 | b'' | 1 |
12
+
13
+ # Verify bytes conversion
14
+ When MESSAGE_TO_BYTES = convert AIS message MESSAGE to bytes
15
+ When MESSAGE_BYTES = new AIS message of type 'T26_MULTIPLE_SLOT_BINARY_MESSAGE' as bitarray bytes
16
+ | repeat | mmsi | addressed | structured | dest_mmsi | app_id | data | radio |
17
+ | 1 | 235006280 | 1 | 1 | 23200001 | 0 | b'' | 1 |
18
+ Then MESSAGE_TO_BYTES == MESSAGE_BYTES
19
+
20
+ # Encode in NMEA
21
+ When NMEA_SENTENCES = encode AIS raw payload MESSAGE_BYTES to NMEA
22
+ | talker_id | radio_channel | seq_id | group_id |
23
+ | 'AIVDM' | 'A' | 0 | 0 |
24
+ Then ${len(NMEA_SENTENCES)} == 3
25
+
26
+ # Verify some NMEA fields
27
+ Given STRING_NMEA_MSG = split NMEA AIS message NMEA_SENTENCES[0] to fields
28
+ Then STRING_NMEA_MSG[-3] == 'A'
29
+
30
+ # Decode NMEA message
31
+ Given DECODED_NMEA_MESSAGE = decode NMEA AIS message NMEA_SENTENCES as dictionary
32
+ When DECODED_NMEA_MESSAGE_TABLE = convert dictionary DECODED_NMEA_MESSAGE to table with keys as columns
33
+ Then table DECODED_NMEA_MESSAGE_TABLE is
34
+ | addressed | app_id | data | dest_mmsi | mmsi | msg_type | radio | repeat | structured |
35
+ | True | 0 | N/A | 23200001 | 235006280 | 26 | 1 | 1 | True |
36
+
37
+
38
+
39
+
40
+ @broadcast
41
+ @structured
42
+ Scenario: Create, convert, encode and decode message
43
+ # Create message
44
+ When MESSAGE = new AIS message of type 'T26_MULTIPLE_SLOT_BINARY_MESSAGE'
45
+ | repeat | mmsi | addressed | structured | dest_mmsi | app_id | data | radio |
46
+ | 1 | 235006280 | 0 | 1 | 23200001 | 1 | b'A' | 1 |
47
+
48
+ # Verify bytes conversion
49
+ When MESSAGE_TO_BYTES = convert AIS message MESSAGE to bytes
50
+ When MESSAGE_BYTES = new AIS message of type 'T26_MULTIPLE_SLOT_BINARY_MESSAGE' as bitarray bytes
51
+ | repeat | mmsi | addressed | structured | dest_mmsi | app_id | data | radio |
52
+ | 1 | 235006280 | 0 | 1 | 23200001 | 1 | b'A' | 1 |
53
+ Then MESSAGE_TO_BYTES == MESSAGE_BYTES
54
+
55
+ # Encode in NMEA
56
+ When NMEA_SENTENCES = encode AIS raw payload MESSAGE_BYTES to NMEA
57
+ | talker_id | radio_channel | seq_id | group_id |
58
+ | 'AIVDM' | 'A' | 0 | 0 |
59
+ Then ${len(NMEA_SENTENCES)} == 1
60
+
61
+ # Verify some NMEA fields
62
+ Given STRING_NMEA_MSG = split NMEA AIS message NMEA_SENTENCES[0] to fields
63
+ Then STRING_NMEA_MSG[-3] == 'A'
64
+
65
+ # Decode NMEA message
66
+ Given DECODED_NMEA_MESSAGE = decode NMEA AIS message NMEA_SENTENCES as dictionary
67
+ When DECODED_NMEA_MESSAGE_TABLE = convert dictionary DECODED_NMEA_MESSAGE to table with keys as columns
68
+ Then table DECODED_NMEA_MESSAGE_TABLE is
69
+ | addressed | app_id | data | mmsi | msg_type | radio | repeat | structured |
70
+ | False | 1 | N/A | 235006280 | 26 | 1 | 1 | True |
71
+
72
+
73
+
74
+
75
+ @addressed
76
+ @unstructured
77
+ Scenario: Create, convert, encode and decode message
78
+ # Create message
79
+ When MESSAGE = new AIS message of type 'T26_MULTIPLE_SLOT_BINARY_MESSAGE'
80
+ | repeat | mmsi | addressed | structured | dest_mmsi | data | radio |
81
+ | 1 | 235006280 | 1 | 0 | 23200001 | b'\x01\x02\x03' | 4 |
82
+
83
+ # Verify bytes conversion
84
+ When MESSAGE_TO_BYTES = convert AIS message MESSAGE to bytes
85
+ When MESSAGE_BYTES = new AIS message of type 'T26_MULTIPLE_SLOT_BINARY_MESSAGE' as bitarray bytes
86
+ | repeat | mmsi | addressed | structured | dest_mmsi | data | radio |
87
+ | 1 | 235006280 | 1 | 0 | 23200001 | b'\x01\x02\x03' | 4 |
88
+ Then MESSAGE_TO_BYTES == MESSAGE_BYTES
89
+
90
+ # Encode in NMEA
91
+ When NMEA_SENTENCES = encode AIS raw payload MESSAGE_BYTES to NMEA
92
+ | talker_id | radio_channel | seq_id | group_id |
93
+ | 'AIVDM' | 'A' | 0 | 0 |
94
+ Then ${len(NMEA_SENTENCES)} == 1
95
+
96
+ # Verify some NMEA fields
97
+ Given STRING_NMEA_MSG = split NMEA AIS message NMEA_SENTENCES[0] to fields
98
+ Then STRING_NMEA_MSG[-3] == 'A'
99
+
100
+ # Decode NMEA message
101
+ Given DECODED_NMEA_MESSAGE = decode NMEA AIS message NMEA_SENTENCES as dictionary
102
+ When DECODED_NMEA_MESSAGE_TABLE = convert dictionary DECODED_NMEA_MESSAGE to table with keys as columns
103
+ Then table DECODED_NMEA_MESSAGE_TABLE is
104
+ | addressed | data | dest_mmsi | mmsi | msg_type | radio | repeat | structured |
105
+ | True | b'\x01\x02\x03' | 23200001 | 235006280 | 26 | 4 | 1 | False |
106
+
107
+
108
+
109
+
110
+ @broadcast
111
+ @unstructured
112
+ Scenario: Create, convert, encode and decode message
113
+ # Create message
114
+ When MESSAGE = new AIS message of type 'T26_MULTIPLE_SLOT_BINARY_MESSAGE'
115
+ | repeat | mmsi | addressed | structured | data | radio |
116
+ | 1 | 235006280 | 0 | 0 | b'\x01\x02\x03' | 3 |
117
+
118
+ # Verify bytes conversion
119
+ When MESSAGE_TO_BYTES = convert AIS message MESSAGE to bytes
120
+ When MESSAGE_BYTES = new AIS message of type 'T26_MULTIPLE_SLOT_BINARY_MESSAGE' as bitarray bytes
121
+ | repeat | mmsi | addressed | structured | data | radio |
122
+ | 1 | 235006280 | 0 | 0 | b'\x01\x02\x03' | 3 |
123
+ Then MESSAGE_TO_BYTES == MESSAGE_BYTES
124
+
125
+ # Encode in NMEA
126
+ When NMEA_SENTENCES = encode AIS raw payload MESSAGE_BYTES to NMEA
127
+ | talker_id | radio_channel | seq_id | group_id |
128
+ | 'AIVDM' | 'A' | 0 | 0 |
129
+ Then ${len(NMEA_SENTENCES)} == 1
130
+
131
+ # Verify some NMEA fields
132
+ Given STRING_NMEA_MSG = split NMEA AIS message NMEA_SENTENCES[0] to fields
133
+ Then STRING_NMEA_MSG[-3] == 'A'
134
+
135
+ # Decode NMEA message
136
+ Given DECODED_NMEA_MESSAGE = decode NMEA AIS message NMEA_SENTENCES as dictionary
137
+ When DECODED_NMEA_MESSAGE_TABLE = convert dictionary DECODED_NMEA_MESSAGE to table with keys as columns
138
+ Then table DECODED_NMEA_MESSAGE_TABLE is
139
+ | addressed | data | mmsi | msg_type | radio | repeat | structured |
140
+ | False | b'\x01\x02\x03' | 235006280 | 26 | 3 | 1 | False |
141
+
142
+
143
+
144
+
@@ -0,0 +1,36 @@
1
+ @ais
2
+ @type_27
3
+ Feature: Message type 27
4
+
5
+ Scenario: Create, convert, encode and decode message for Channel A
6
+ # Create message
7
+ When MESSAGE = new AIS message of type 'T27_LONG_RANG_AIS_BROADCAST_MESSAGE'
8
+ | repeat | mmsi | accuracy | raim | status | lon | lat | speed | course | gnss |
9
+ | 1 | 235006280 | True | False | 1 | 65.2 | 20.3 | 11.0 | 6.0 | True |
10
+
11
+ # Verify bytes conversion
12
+ When MESSAGE_TO_BYTES = convert AIS message MESSAGE to bytes
13
+ When MESSAGE_BYTES = new AIS message of type 'T27_LONG_RANG_AIS_BROADCAST_MESSAGE' as bitarray bytes
14
+ | repeat | mmsi | accuracy | raim | status | lon | lat | speed | course | gnss |
15
+ | 1 | 235006280 | True | False | 1 | 65.2 | 20.3 | 11.0 | 6.0 | True |
16
+ Then MESSAGE_TO_BYTES == MESSAGE_BYTES
17
+
18
+ # Encode in NMEA
19
+ When NMEA_SENTENCES = encode AIS raw payload MESSAGE_BYTES to NMEA
20
+ | talker_id | radio_channel | seq_id | group_id |
21
+ | 'AIVDM' | 'A' | 0 | 0 |
22
+ Then ${len(NMEA_SENTENCES)} == 1
23
+
24
+ # Verify some NMEA fields
25
+ Given STRING_NMEA_MSG = split NMEA AIS message NMEA_SENTENCES[0] to fields
26
+ Then STRING_NMEA_MSG[-3] == 'A'
27
+
28
+ # Decode NMEA message
29
+ Given DECODED_NMEA_MESSAGE = decode NMEA AIS message NMEA_SENTENCES as dictionary
30
+ When DECODED_NMEA_MESSAGE_TABLE = convert dictionary DECODED_NMEA_MESSAGE to table with keys as columns
31
+ Then table DECODED_NMEA_MESSAGE_TABLE is
32
+ | accuracy | course | gnss | lat | lon | mmsi | msg_type | raim | repeat | speed | status |
33
+ | True | 6.0 | True | 20.3 | 65.2 | 235006280 | 27 | False | 1 | 11.0 | N/A |
34
+
35
+
36
+
@@ -0,0 +1,39 @@
1
+ @ais
2
+ @type_4
3
+ @type_11
4
+ Feature: Message types 4 and 11 : Base Station Report
5
+
6
+ Scenario Outline: Create, convert, encode and decode message
7
+ # Create message
8
+ When MESSAGE = new AIS message of type '<message_type>'
9
+ | repeat | mmsi | year | month | day | hour | minute | second | accuracy | lon | lat | epfd | raim | radio |
10
+ | 1 | 235006280 | 2024 | 01 | 01 | 08 | 30 | 56 | True | 70.9 | 44.2 | 1 | False | 1 |
11
+
12
+ # Verify bytes conversion
13
+ When MESSAGE_TO_BYTES = convert AIS message MESSAGE to bytes
14
+ When MESSAGE_BYTES = new AIS message of type '<message_type>' as bitarray bytes
15
+ | repeat | mmsi | year | month | day | hour | minute | second | accuracy | lon | lat | epfd | raim | radio |
16
+ | 1 | 235006280 | 2024 | 01 | 01 | 08 | 30 | 56 | True | 70.9 | 44.2 | 1 | False | 1 |
17
+ Then MESSAGE_TO_BYTES == MESSAGE_BYTES
18
+
19
+ # Encode in NMEA
20
+ When NMEA_SENTENCES = encode AIS raw payload MESSAGE_BYTES to NMEA
21
+ | talker_id | radio_channel | seq_id | group_id |
22
+ | 'AIVDM' | <channel> | 0 | 0 |
23
+ Then ${len(NMEA_SENTENCES)} == 1
24
+
25
+ # Verify some NMEA fields
26
+ Given STRING_NMEA_MSG = split NMEA AIS message NMEA_SENTENCES[0] to fields
27
+ Then STRING_NMEA_MSG[-3] == <channel>
28
+
29
+ # Decode NMEA message
30
+ Given DECODED_NMEA_MESSAGE = decode NMEA AIS message NMEA_SENTENCES as dictionary
31
+ When DECODED_NMEA_MESSAGE_TABLE = convert dictionary DECODED_NMEA_MESSAGE to table with keys as columns
32
+ Then table DECODED_NMEA_MESSAGE_TABLE is
33
+ | accuracy | day | epfd | hour | lat | lon | minute | mmsi | month | msg_type | radio | raim | repeat | second | year |
34
+ | True | 1 | N/A | 8 | 44.2 | 70.9 | 30 | 235006280 | 1 | <type> | 1 | False | 1 | 56 | 2024 |
35
+
36
+ Examples: With types 4 and 11
37
+ | message_type | type | channel |
38
+ | T4_BASE_STATION_REPORT | 4 | 'A' |
39
+ | T11_BASE_STATION_REPORT | 11 | 'A' |
@@ -0,0 +1,33 @@
1
+ @ais
2
+ @type_5
3
+ Feature: Message type 5 : Ship Static Data
4
+
5
+ Scenario: Create, convert, encode and decode message
6
+ # Create message
7
+ When MESSAGE = new AIS message of type 'T5_SHIP_STATIC_DATA'
8
+ | repeat | mmsi | ais_version | imo | callsign | shipname | ship_type | to_bow | to_stern | to_port | to_starboard | epfd | year | month | day | hour | minute | draught | destination | dte |
9
+ | 1 | 235006280 | 1 | 1 | 'DEL 001' | 'TITANIC' | True | True | True | True | True | 11 | 2024 | 01 | 01 | 08 | 30 | 0.0 | 'SAT KIN' | True |
10
+
11
+ # Verify bytes conversion
12
+ When MESSAGE_TO_BYTES = convert AIS message MESSAGE to bytes
13
+ When MESSAGE_BYTES = new AIS message of type 'T5_SHIP_STATIC_DATA' as bitarray bytes
14
+ | repeat | mmsi | ais_version | imo | callsign | shipname | ship_type | to_bow | to_stern | to_port | to_starboard | epfd | year | month | day | hour | minute | draught | destination | dte |
15
+ | 1 | 235006280 | 1 | 1 | 'DEL 001' | 'TITANIC' | True | True | True | True | True | 11 | 2024 | 01 | 01 | 08 | 30 | 0.0 | 'SAT KIN' | True |
16
+ Then MESSAGE_TO_BYTES == MESSAGE_BYTES
17
+
18
+ # Encode in NMEA
19
+ When NMEA_SENTENCES = encode AIS raw payload MESSAGE_BYTES to NMEA
20
+ | talker_id | radio_channel | seq_id | group_id |
21
+ | 'AIVDM' | 'A' | 0 | 0 |
22
+ Then ${len(NMEA_SENTENCES)} == 2
23
+
24
+ # Verify some NMEA fields
25
+ Given STRING_NMEA_MSG = split NMEA AIS message NMEA_SENTENCES[0] to fields
26
+ Then STRING_NMEA_MSG[-3] == 'A'
27
+
28
+ # Decode NMEA message
29
+ Given DECODED_NMEA_MESSAGE = decode NMEA AIS message NMEA_SENTENCES as dictionary
30
+ When DECODED_NMEA_MESSAGE_TABLE = convert dictionary DECODED_NMEA_MESSAGE to table with keys as columns
31
+ Then table DECODED_NMEA_MESSAGE_TABLE is
32
+ | ais_version | callsign | day | destination | draught | dte | epfd | hour | imo | minute | mmsi | month | msg_type | repeat | ship_type | shipname | to_bow | to_port | to_starboard | to_stern |
33
+ | 1 | 'DEL 001' | 1 | 'SAT KIN' | 0.0 | True | N/A | 8 | 1 | 30 | 235006280 | 1 | 5 | 1 | N/A | 'TITANIC' | 1 | 1 | 1 | 1 |