holado 0.2.2__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.
- {holado-0.2.2.dist-info → holado-0.2.3.dist-info}/METADATA +13 -9
- holado-0.2.3.dist-info/RECORD +535 -0
- holado_ais/__init__.py +33 -0
- holado_ais/ais/MaritimeIdentificationDigits.csv +295 -0
- holado_ais/ais/ais_manager.py +151 -0
- holado_ais/ais/ais_messages.py +203 -0
- holado_ais/ais/ais_payload.py +35 -0
- holado_ais/ais/enums.py +37 -0
- holado_ais/ais/patch_pyais.py +1303 -0
- holado_ais/tests/behave/steps/__init__.py +17 -0
- holado_ais/tests/behave/steps/ais/__init__.py +0 -0
- holado_ais/tests/behave/steps/ais/ais_manager_steps.py +50 -0
- holado_ais/tests/behave/steps/ais/ais_messages_steps.py +182 -0
- holado_binary/__init__.py +17 -0
- holado_binary/ipc/binary.py +125 -0
- holado_binary/ipc/bit_series.py +307 -0
- holado_binary/tests/behave/steps/__init__.py +17 -0
- holado_binary/tests/behave/steps/ipc/binary_steps.py +57 -0
- holado_binary/tests/behave/steps/ipc/bit_series_steps.py +131 -0
- holado_context/__init__.py +16 -0
- holado_context/tests/behave/steps/__init__.py +16 -0
- holado_context/tests/behave/steps/private/__init__.py +16 -0
- holado_context/tests/behave/steps/private/common/context_steps.py +36 -0
- holado_core/__init__.py +32 -0
- holado_core/common/__init__.py +0 -0
- holado_core/common/actors/actions.py +97 -0
- holado_core/common/actors/actor.py +226 -0
- holado_core/common/actors/element_actor.py +32 -0
- holado_core/common/actors/find_actor.py +106 -0
- holado_core/common/actors/tree_actor.py +32 -0
- holado_core/common/actors/verify_actions.py +69 -0
- holado_core/common/block/base.py +122 -0
- holado_core/common/block/block_manager.py +173 -0
- holado_core/common/block/block_method.py +46 -0
- holado_core/common/block/block_steps.py +37 -0
- holado_core/common/block/function.py +42 -0
- holado_core/common/block/scope_function.py +28 -0
- holado_core/common/block/scope_manager.py +238 -0
- holado_core/common/block/scope_steps.py +141 -0
- holado_core/common/criterias/and_criteria.py +61 -0
- holado_core/common/criterias/criteria.py +78 -0
- holado_core/common/criterias/or_criteria.py +64 -0
- holado_core/common/criterias/tools/criteria_context.py +20 -0
- holado_core/common/criterias/tools/criteria_parameters.py +18 -0
- holado_core/common/drivers/driver.py +153 -0
- holado_core/common/drivers/element_driver.py +30 -0
- holado_core/common/drivers/element_internal_api.py +239 -0
- holado_core/common/drivers/internal_api.py +40 -0
- holado_core/common/drivers/tree_driver.py +30 -0
- holado_core/common/drivers/tree_internal_api.py +176 -0
- holado_core/common/exceptions/__init__.py +0 -0
- holado_core/common/exceptions/element_exception.py +28 -0
- holado_core/common/exceptions/exceptions.py +24 -0
- holado_core/common/exceptions/functional_exception.py +21 -0
- holado_core/common/exceptions/holado_exception.py +25 -0
- holado_core/common/exceptions/technical_exception.py +27 -0
- holado_core/common/exceptions/timeout_exception.py +20 -0
- holado_core/common/exceptions/verify_exception.py +20 -0
- holado_core/common/finders/after_in_tree_finder.py +87 -0
- holado_core/common/finders/element_finder.py +60 -0
- holado_core/common/finders/else_finder.py +105 -0
- holado_core/common/finders/finder.py +478 -0
- holado_core/common/finders/or_finder.py +98 -0
- holado_core/common/finders/then_finder.py +157 -0
- holado_core/common/finders/tools/enums.py +30 -0
- holado_core/common/finders/tools/find_builder.py +118 -0
- holado_core/common/finders/tools/find_context.py +405 -0
- holado_core/common/finders/tools/find_info.py +27 -0
- holado_core/common/finders/tools/find_parameters.py +240 -0
- holado_core/common/finders/tools/find_updater.py +95 -0
- holado_core/common/finders/tools/finder_info.py +26 -0
- holado_core/common/finders/tree_finder.py +146 -0
- holado_core/common/handlers/__init__.py +0 -0
- holado_core/common/handlers/abstracts/base_redo.py +695 -0
- holado_core/common/handlers/abstracts/get_or_create.py +120 -0
- holado_core/common/handlers/element_holder.py +122 -0
- holado_core/common/handlers/enums.py +23 -0
- holado_core/common/handlers/exceptions/redo_exceptions.py +28 -0
- holado_core/common/handlers/features/resource_by_name.py +187 -0
- holado_core/common/handlers/features/resource_by_type.py +174 -0
- holado_core/common/handlers/redo.py +119 -0
- holado_core/common/handlers/wait.py +127 -0
- holado_core/common/inspectors/element_inspector.py +57 -0
- holado_core/common/inspectors/inspector.py +221 -0
- holado_core/common/inspectors/tools/inspect_builder.py +169 -0
- holado_core/common/inspectors/tools/inspect_context.py +69 -0
- holado_core/common/inspectors/tools/inspect_parameters.py +181 -0
- holado_core/common/inspectors/tree_inspector.py +73 -0
- holado_core/common/resource/persisted_data_manager.py +113 -0
- holado_core/common/resource/persisted_method_to_call_manager.py +133 -0
- holado_core/common/resource/resource_manager.py +143 -0
- holado_core/common/tables/__init__.py +1 -0
- holado_core/common/tables/comparators/__init__.py +0 -0
- holado_core/common/tables/comparators/boolean_table_cell_comparator.py +25 -0
- holado_core/common/tables/comparators/bytes_table_cell_comparator.py +25 -0
- holado_core/common/tables/comparators/datetime_table_cell_comparator.py +24 -0
- holado_core/common/tables/comparators/float_table_cell_comparator.py +31 -0
- holado_core/common/tables/comparators/integer_table_cell_comparator.py +25 -0
- holado_core/common/tables/comparators/internal_table_cell_comparator.py +30 -0
- holado_core/common/tables/comparators/string_table_cell_comparator.py +24 -0
- holado_core/common/tables/comparators/string_table_comparator.py +29 -0
- holado_core/common/tables/comparators/string_table_row_comparator.py +29 -0
- holado_core/common/tables/comparators/table_cell_comparator.py +40 -0
- holado_core/common/tables/comparators/table_comparator.py +209 -0
- holado_core/common/tables/comparators/table_comparator_manager.py +60 -0
- holado_core/common/tables/comparators/table_row_comparator.py +116 -0
- holado_core/common/tables/comparators/table_with_header_comparator.py +68 -0
- holado_core/common/tables/converters/__init__.py +0 -0
- holado_core/common/tables/converters/table_converter.py +194 -0
- holado_core/common/tables/enums.py +23 -0
- holado_core/common/tables/table.py +261 -0
- holado_core/common/tables/table_cell.py +126 -0
- holado_core/common/tables/table_manager.py +366 -0
- holado_core/common/tables/table_row.py +169 -0
- holado_core/common/tables/table_with_header.py +236 -0
- holado_core/common/tools/__init__.py +0 -0
- holado_core/common/tools/comparators/comparator.py +151 -0
- holado_core/common/tools/comparators/object_comparator.py +21 -0
- holado_core/common/tools/converters/converter.py +107 -0
- holado_core/common/tools/path_manager.py +185 -0
- holado_core/common/tools/string_tools.py +135 -0
- holado_core/common/tools/tools.py +172 -0
- holado_core/common/transport/__init__.py +0 -0
- holado_core/common/transport/crc.py +40 -0
- holado_core/tests/behave/steps/__init__.py +20 -0
- holado_core/tests/behave/steps/common/__init__.py +0 -0
- holado_core/tests/behave/steps/common/common_steps.py +136 -0
- holado_core/tests/behave/steps/common/config_steps.py +42 -0
- holado_core/tests/behave/steps/common/resource_steps.py +62 -0
- holado_core/tests/behave/steps/common/tables_steps.py +537 -0
- holado_core/tools/__init__.py +0 -0
- holado_core/tools/abstracts/__init__.py +0 -0
- holado_core/tools/abstracts/blocking_command_service.py +56 -0
- holado_core/tools/abstracts/service.py +48 -0
- holado_data/__init__.py +31 -0
- holado_data/data/generator/base.py +93 -0
- holado_data/data/generator/python_generator.py +30 -0
- holado_data/tests/behave/steps/__init__.py +17 -0
- holado_data/tests/behave/steps/data/generator_steps.py +91 -0
- holado_data/tests/behave/steps/tools/utils_steps.py +60 -0
- holado_db/__init__.py +32 -0
- holado_db/tests/behave/steps/__init__.py +18 -0
- holado_db/tests/behave/steps/tools/db/db_client_steps.py +134 -0
- holado_db/tests/behave/steps/tools/db/postgresql_client_steps.py +59 -0
- holado_db/tests/behave/steps/tools/db/sqlite_client_steps.py +57 -0
- holado_db/tools/db/clients/base/db_client.py +206 -0
- holado_db/tools/db/clients/postgresql/postgresql_client.py +65 -0
- holado_db/tools/db/clients/sqlite/sqlite_client.py +56 -0
- holado_db/tools/db/db_manager.py +109 -0
- holado_db/tools/db/query/base/query_builder.py +87 -0
- holado_db/tools/db/query/pypika/pypika_query_builder.py +193 -0
- holado_db/tools/db/query/query_manager.py +77 -0
- holado_docker/__init__.py +25 -0
- holado_docker/sdk/docker/docker_client.py +268 -0
- holado_docker/sdk/docker/docker_service.py +71 -0
- holado_docker/tests/behave/steps/__init__.py +16 -0
- holado_docker/tests/behave/steps/tools/docker_steps.py +33 -0
- holado_docker/tools/docker_controler/__init__.py +26 -0
- holado_docker/tools/docker_controler/docker_controler_client.py +36 -0
- holado_docker/tools/docker_controler/docker_controler_server.py +31 -0
- holado_docker/tools/docker_controler/proto/compile_proto.py +60 -0
- holado_docker/tools/docker_controler/proto/definitions/docker_controler.proto +63 -0
- holado_docker/tools/docker_controler/proto/generated/docker_controler_pb2.py +52 -0
- holado_docker/tools/docker_controler/proto/generated/docker_controler_pb2_grpc.py +233 -0
- holado_grpc/__init__.py +32 -0
- holado_grpc/api/rpc/TODO.txt +4 -0
- holado_grpc/api/rpc/grpc_client.py +181 -0
- holado_grpc/api/rpc/grpc_manager.py +81 -0
- holado_grpc/ipc/rpc/__init__.py +0 -0
- holado_grpc/ipc/rpc/grpc_compiler.py +45 -0
- holado_grpc/ipc/rpc/grpc_services.py +165 -0
- holado_grpc/tests/behave/steps/__init__.py +16 -0
- holado_grpc/tests/behave/steps/api/grpc_client_steps.py +173 -0
- holado_grpc/tests/behave/steps/private/__init__.py +16 -0
- holado_grpc/tests/behave/steps/private/api/grpc_steps.py +77 -0
- holado_helper/__init__.py +35 -0
- holado_helper/debug/README.txt +32 -0
- holado_helper/debug/memory/memory_profiler.py +106 -0
- holado_helper/docker/init_user.sh +24 -0
- holado_helper/docker/logging.conf +42 -0
- holado_helper/docker/run_holado_test_nonreg_in_docker.sh +120 -0
- holado_helper/docker/run_terminal_in_docker-with_docker_control.sh +103 -0
- holado_helper/docker/run_terminal_in_docker.sh +101 -0
- holado_helper/holado_module_template/__init__.py +31 -0
- holado_helper/holado_module_template/test/behave/steps/__init__.py +16 -0
- holado_helper/holado_module_template/test/behave/steps/private/__init__.py +16 -0
- holado_helper/script/action.py +109 -0
- holado_helper/script/action_script.py +477 -0
- holado_helper/script/any_action_script.py +126 -0
- holado_helper/script/behave_action_script.py +99 -0
- holado_helper/script/csv_action_script.py +142 -0
- holado_helper/script/initialize_script.py +115 -0
- holado_helper/script/input_output_script.py +136 -0
- holado_helper/script/job.py +75 -0
- holado_helper/script/json_action_script.py +104 -0
- holado_helper/script/script.py +110 -0
- holado_json/__init__.py +16 -0
- holado_json/ipc/json.py +125 -0
- holado_json/ipc/json_converter.py +69 -0
- holado_json/ipc/json_types.py +183 -0
- holado_json/tests/behave/steps/__init__.py +16 -0
- holado_json/tests/behave/steps/ipc/__init__.py +0 -0
- holado_json/tests/behave/steps/ipc/json_steps.py +120 -0
- holado_keycloak/__init__.py +16 -0
- holado_keycloak/tests/behave/steps/__init__.py +16 -0
- holado_keycloak/tests/behave/steps/tools/keycloak_client_steps.py +59 -0
- holado_keycloak/tools/keycloak/__init__.py +0 -0
- holado_keycloak/tools/keycloak/keycloak_client.py +61 -0
- holado_logging/__init__.py +36 -0
- holado_logging/common/logging/holado_logger.py +75 -0
- holado_logging/common/logging/log_config.py +128 -0
- holado_logging/common/logging/log_manager.py +292 -0
- holado_multitask/__init__.py +33 -0
- holado_multitask/multiprocessing/context/process_context.py +35 -0
- holado_multitask/multiprocessing/function_process.py +102 -0
- holado_multitask/multiprocessing/periodic_function_process.py +135 -0
- holado_multitask/multiprocessing/process.py +196 -0
- holado_multitask/multiprocessing/processesmanager.py +133 -0
- holado_multitask/multitasking/multitask_manager.py +439 -0
- holado_multitask/multithreading/__init__.py +0 -0
- holado_multitask/multithreading/context/thread_context.py +84 -0
- holado_multitask/multithreading/functionthreaded.py +129 -0
- holado_multitask/multithreading/loopfunctionthreaded.py +45 -0
- holado_multitask/multithreading/loopthread.py +100 -0
- holado_multitask/multithreading/periodicfunctionthreaded.py +136 -0
- holado_multitask/multithreading/reflection/inspect.py +47 -0
- holado_multitask/multithreading/reflection/sys.py +29 -0
- holado_multitask/multithreading/reflection/traceback.py +35 -0
- holado_multitask/multithreading/thread.py +177 -0
- holado_multitask/multithreading/threadsmanager.py +162 -0
- holado_multitask/multithreading/timer.py +48 -0
- holado_multitask/tests/behave/steps/__init__.py +17 -0
- holado_multitask/tests/behave/steps/multiprocessing_steps.py +138 -0
- holado_multitask/tests/behave/steps/multithreading_steps.py +129 -0
- holado_protobuf/__init__.py +61 -0
- holado_protobuf/ipc/protobuf/__init__.py +0 -0
- holado_protobuf/ipc/protobuf/abstracts/type.py +45 -0
- holado_protobuf/ipc/protobuf/protobuf_compiler.py +118 -0
- holado_protobuf/ipc/protobuf/protobuf_converter.py +153 -0
- holado_protobuf/ipc/protobuf/protobuf_messages.py +965 -0
- holado_protobuf/ipc/protobuf/protobuf_modifier.py +65 -0
- holado_protobuf/ipc/protobuf/types/__init__.py +0 -0
- holado_protobuf/ipc/protobuf/types/google/__init__.py +0 -0
- holado_protobuf/ipc/protobuf/types/google/protobuf.py +124 -0
- holado_protobuf/tests/behave/steps/__init__.py +16 -0
- holado_protobuf/tests/behave/steps/ipc/protobuf_steps.py +297 -0
- holado_python/__init__.py +35 -0
- holado_python/common/enums.py +34 -0
- holado_python/common/iterables.py +30 -0
- holado_python/common/tools/comparators/boolean_comparator.py +37 -0
- holado_python/common/tools/comparators/bytes_comparator.py +48 -0
- holado_python/common/tools/comparators/datetime_comparator.py +74 -0
- holado_python/common/tools/comparators/float_comparator.py +97 -0
- holado_python/common/tools/comparators/integer_comparator.py +37 -0
- holado_python/common/tools/comparators/string_comparator.py +99 -0
- holado_python/common/tools/comparators/type_comparator.py +31 -0
- holado_python/common/tools/datetime.py +279 -0
- holado_python/standard_library/csv.py +207 -0
- holado_python/standard_library/hashlib.py +82 -0
- holado_python/standard_library/multiprocessing.py +62 -0
- holado_python/standard_library/queue.py +79 -0
- holado_python/standard_library/socket/blocking_socket.py +136 -0
- holado_python/standard_library/socket/echo_server.py +28 -0
- holado_python/standard_library/socket/message_socket.py +91 -0
- holado_python/standard_library/socket/non_blocking_socket.py +151 -0
- holado_python/standard_library/socket/socket.py +148 -0
- holado_python/standard_library/ssl/resources/certificates/NOTES.txt +5 -0
- holado_python/standard_library/ssl/resources/certificates/localhost.crt +19 -0
- holado_python/standard_library/ssl/resources/certificates/localhost.key +28 -0
- holado_python/standard_library/ssl/ssl.py +81 -0
- holado_python/standard_library/typing.py +192 -0
- holado_python/tests/behave/steps/__init__.py +27 -0
- holado_python/tests/behave/steps/builtins/str_steps.py +45 -0
- holado_python/tests/behave/steps/convert_steps.py +59 -0
- holado_python/tests/behave/steps/iterable_steps.py +87 -0
- holado_python/tests/behave/steps/standard_library/csv_steps.py +134 -0
- holado_python/tests/behave/steps/standard_library/datetime_steps.py +163 -0
- holado_python/tests/behave/steps/standard_library/hashlib_steps.py +57 -0
- holado_python/tests/behave/steps/standard_library/multiprocessing_steps.py +56 -0
- holado_python/tests/behave/steps/standard_library/queue_steps.py +358 -0
- holado_python/tests/behave/steps/standard_library/socket_steps.py +258 -0
- holado_python/tests/behave/steps/standard_library/ssl_steps.py +67 -0
- holado_rabbitmq/__init__.py +28 -0
- holado_rabbitmq/tests/behave/steps/__init__.py +17 -0
- holado_rabbitmq/tests/behave/steps/tools/rabbitmq_client_steps.py +537 -0
- holado_rabbitmq/tests/behave/steps/tools/rabbitmq_server_steps.py +64 -0
- holado_rabbitmq/tools/rabbitmq/rabbitmq_blocking_client.py +311 -0
- holado_rabbitmq/tools/rabbitmq/rabbitmq_client.py +675 -0
- holado_rabbitmq/tools/rabbitmq/rabbitmq_manager.py +173 -0
- holado_rabbitmq/tools/rabbitmq/rabbitmq_select_client.py +428 -0
- holado_rabbitmq/tools/rabbitmq/rabbitmq_server.py +24 -0
- holado_redis/__init__.py +17 -0
- holado_redis/tests/behave/steps/__init__.py +16 -0
- holado_redis/tests/behave/steps/tools/redis_client_steps.py +101 -0
- holado_redis/tools/redis/TODO.txt +7 -0
- holado_redis/tools/redis/redis_client.py +190 -0
- holado_redis/tools/redis/redis_manager.py +38 -0
- holado_report/__init__.py +27 -0
- holado_report/report/analyze/execution_historic_manager.py +96 -0
- holado_report/report/analyze/scenario_duration_manager.py +245 -0
- holado_report/report/builders/detailed_scenario_failed_report_builder.py +146 -0
- holado_report/report/builders/json_execution_historic_report_builder.py +123 -0
- holado_report/report/builders/report_builder.py +64 -0
- holado_report/report/builders/short_scenario_failed_report_builder.py +76 -0
- holado_report/report/builders/summary_report_builder.py +89 -0
- holado_report/report/builders/summary_scenario_failed_report_builder.py +56 -0
- holado_report/report/builders/summary_scenario_report_builder.py +74 -0
- holado_report/report/execution_historic.py +141 -0
- holado_report/report/report_manager.py +256 -0
- holado_report/report/reports/base_report.py +163 -0
- holado_report/report/reports/feature_report.py +106 -0
- holado_report/report/reports/scenario_report.py +64 -0
- holado_rest/__init__.py +24 -0
- holado_rest/api/rest/TODO.txt +2 -0
- holado_rest/api/rest/rest_client.py +113 -0
- holado_rest/api/rest/rest_manager.py +62 -0
- holado_rest/tests/behave/steps/__init__.py +16 -0
- holado_rest/tests/behave/steps/api/__init__.py +0 -0
- holado_rest/tests/behave/steps/api/rest_client_steps.py +141 -0
- holado_rest/tests/behave/steps/private/__init__.py +16 -0
- holado_rest/tests/behave/steps/private/api/__init__.py +0 -0
- holado_rest/tests/behave/steps/private/api/rest_steps.py +70 -0
- holado_s3/__init__.py +17 -0
- holado_s3/tests/behave/steps/__init__.py +17 -0
- holado_s3/tests/behave/steps/private/__init__.py +16 -0
- holado_s3/tests/behave/steps/private/tools/s3_steps.py +89 -0
- holado_s3/tests/behave/steps/tools/s3_client_steps.py +403 -0
- holado_s3/tests/behave/steps/tools/s3_server_steps.py +57 -0
- holado_s3/tools/s3/__init__.py +0 -0
- holado_s3/tools/s3/boto3_s3_client.py +59 -0
- holado_s3/tools/s3/minio_client.py +75 -0
- holado_s3/tools/s3/moto_server.py +52 -0
- holado_scripting/__init__.py +53 -0
- holado_scripting/common/tools/dynamic_text_manager.py +73 -0
- holado_scripting/common/tools/evaluate_parameters.py +210 -0
- holado_scripting/common/tools/expression_evaluator.py +387 -0
- holado_scripting/common/tools/variable_manager.py +321 -0
- holado_scripting/tests/behave/steps/__init__.py +22 -0
- holado_scripting/tests/behave/steps/common/tools/variable_convert_steps.py +158 -0
- holado_scripting/tests/behave/steps/common/tools/variable_new_steps.py +130 -0
- holado_scripting/tests/behave/steps/common/tools/variable_steps.py +108 -0
- holado_scripting/tests/behave/steps/common/tools/variable_verify_steps.py +160 -0
- holado_scripting/tests/behave/steps/scenario/function_steps.py +77 -0
- holado_scripting/tests/behave/steps/scenario/if_steps.py +87 -0
- holado_scripting/tests/behave/steps/scenario/loop_steps.py +119 -0
- holado_scripting/text/base/base_function.py +25 -0
- holado_scripting/text/base/base_verify_function.py +25 -0
- holado_scripting/text/base/text_inspecter.py +204 -0
- holado_scripting/text/interpreter/exceptions/interpreter_exception.py +25 -0
- holado_scripting/text/interpreter/functions/function_cast.py +60 -0
- holado_scripting/text/interpreter/functions/function_convert.py +57 -0
- holado_scripting/text/interpreter/functions/function_dynamic_value.py +40 -0
- holado_scripting/text/interpreter/functions/function_escape_all_bytes.py +35 -0
- holado_scripting/text/interpreter/functions/function_exists_variable.py +39 -0
- holado_scripting/text/interpreter/functions/function_hex_to_bytes.py +49 -0
- holado_scripting/text/interpreter/functions/function_hex_to_int.py +53 -0
- holado_scripting/text/interpreter/functions/function_to_base_64.py +41 -0
- holado_scripting/text/interpreter/functions/function_to_bytes.py +50 -0
- holado_scripting/text/interpreter/functions/function_to_hex.py +42 -0
- holado_scripting/text/interpreter/text_interpreter.py +216 -0
- holado_scripting/text/verifier/exceptions/verifier_exception.py +21 -0
- holado_scripting/text/verifier/functions/verify_function_extract_in.py +35 -0
- holado_scripting/text/verifier/functions/verify_function_match_pattern.py +63 -0
- holado_scripting/text/verifier/text_verifier.py +103 -0
- holado_sftp/__init__.py +16 -0
- holado_sftp/tests/behave/steps/__init__.py +17 -0
- holado_sftp/tests/behave/steps/private/__init__.py +16 -0
- holado_sftp/tests/behave/steps/private/tools/sftp_steps.py +78 -0
- holado_sftp/tests/behave/steps/tools/sftp_client_steps.py +94 -0
- holado_sftp/tests/behave/steps/tools/sftp_server_steps.py +82 -0
- holado_sftp/tools/sftp/__init__.py +0 -0
- holado_sftp/tools/sftp/sftp_client.py +103 -0
- holado_sftp/tools/sftp/sftp_server.py +39 -0
- holado_swagger/__init__.py +31 -0
- holado_swagger/swagger_hub/mockserver/mockserver_client.py +82 -0
- holado_swagger/swagger_hub/mockserver/mockserver_manager.py +32 -0
- holado_swagger/tests/behave/steps/__init__.py +16 -0
- holado_swagger/tests/behave/steps/swagger_hub/mockserver_steps.py +74 -0
- holado_system/system/command/command.py +216 -0
- holado_system/system/command/command_result.py +128 -0
- holado_system/system/command/curl_command.py +101 -0
- holado_system/system/command/exceptions.py +59 -0
- holado_system/system/filesystem/file.py +76 -0
- holado_system/system/global_system.py +187 -0
- holado_system/tests/behave/steps/__init__.py +18 -0
- holado_system/tests/behave/steps/system/commands_steps.py +92 -0
- holado_system/tests/behave/steps/system/file_steps.py +215 -0
- holado_system/tests/behave/steps/system/system_steps.py +84 -0
- holado_test/__init__.py +27 -0
- holado_test/behave/__init__.py +0 -0
- holado_test/behave/behave.py +397 -0
- holado_test/behave/behave_environment.py +143 -0
- holado_test/behave/behave_function.py +33 -0
- holado_test/behave/behave_manager.py +555 -0
- holado_test/behave/independant_runner.py +68 -0
- holado_test/behave/scenario/__init__.py +0 -0
- holado_test/behave/scenario/behave_step_tools.py +157 -0
- holado_test/common/context/feature_context.py +79 -0
- holado_test/common/context/scenario_context.py +217 -0
- holado_test/common/context/step_context.py +66 -0
- holado_test/common/exceptions/undefined_step_exception.py +21 -0
- holado_test/scenario/step_tools.py +523 -0
- holado_test/scenario/tester_tools.py +52 -0
- holado_test/test_config.py +26 -0
- holado_test/tests/behave/steps/__init__.py +18 -0
- holado_test/tests/behave/steps/scenario/exception_steps.py +87 -0
- holado_test/tests/behave/steps/scenario/scenario_steps.py +87 -0
- holado_test/tests/behave/steps/scenario/tester_steps.py +65 -0
- holado_value/__init__.py +24 -0
- holado_value/common/tables/comparators/table_2_value_table_cell_comparator.py +195 -0
- holado_value/common/tables/comparators/table_2_value_table_comparator.py +27 -0
- holado_value/common/tables/comparators/table_2_value_table_row_comparator.py +27 -0
- holado_value/common/tables/comparators/table_2_value_table_with_header_comparator.py +27 -0
- holado_value/common/tables/converters/value_table_converter.py +217 -0
- holado_value/common/tables/value_table.py +29 -0
- holado_value/common/tables/value_table_cell.py +67 -0
- holado_value/common/tables/value_table_manager.py +58 -0
- holado_value/common/tables/value_table_row.py +44 -0
- holado_value/common/tables/value_table_with_header.py +28 -0
- holado_value/common/tools/unique_value_manager.py +108 -0
- holado_value/common/tools/value.py +164 -0
- holado_value/common/tools/value_types.py +35 -0
- holado_value/tests/behave/steps/__init__.py +16 -0
- holado_value/tests/behave/steps/private/__init__.py +16 -0
- holado_ws/__init__.py +16 -0
- holado_ws/api/ws/TODO.txt +2 -0
- holado_ws/tests/behave/steps/__init__.py +16 -0
- holado_ws/tests/behave/steps/api/web_service_steps.py +189 -0
- holado_yaml/__init__.py +31 -0
- holado_yaml/tests/behave/steps/__init__.py +16 -0
- holado_yaml/tests/behave/steps/yaml_steps.py +64 -0
- holado_yaml/yaml/yaml_manager.py +86 -0
- test_holado/Dockerfile_test_holado +82 -0
- test_holado/__init__.py +4 -0
- test_holado/__main__.py +25 -0
- test_holado/build_docker_image_to_test_holado_in_docker.sh +7 -0
- test_holado/environment.py +42 -0
- test_holado/features/NonReg/api/REST.feature +21 -0
- test_holado/features/NonReg/api/gRPC.feature +122 -0
- test_holado/features/NonReg/common/multiprocessing/simple.feature +60 -0
- test_holado/features/NonReg/common/system/commands.feature +43 -0
- test_holado/features/NonReg/common/system/system.feature +20 -0
- test_holado/features/NonReg/common/tables/table.feature +239 -0
- test_holado/features/NonReg/common/tables/value_table_conversion.feature +29 -0
- test_holado/features/NonReg/common/tools/DateTime.feature +88 -0
- test_holado/features/NonReg/common/tools/UniqueValueManager.feature +43 -0
- test_holado/features/NonReg/holado_ais/ais_message-bitarray_to_nmea.feature +135 -0
- test_holado/features/NonReg/holado_protobuf/protobuf.feature +291 -0
- test_holado/features/NonReg/holado_python/convert.feature +20 -0
- test_holado/features/NonReg/holado_python/iterable.feature +61 -0
- test_holado/features/NonReg/holado_python/standard_library/socket.feature +101 -0
- test_holado/features/NonReg/holado_python/standard_library/socket_with_ssl.feature +180 -0
- test_holado/features/NonReg/holado_scripting/common/tools/dynamic_text_manager.feature +18 -0
- test_holado/features/NonReg/holado_scripting/common/tools/expression_evaluator.feature +185 -0
- test_holado/features/NonReg/holado_scripting/common/tools/variable_manager.feature +71 -0
- test_holado/features/NonReg/holado_scripting/text/interpreter/interpreter.error.feature +21 -0
- test_holado/features/NonReg/holado_scripting/text/interpreter/interpreter.feature +120 -0
- test_holado/features/NonReg/holado_yaml/yaml.feature +218 -0
- test_holado/features/NonReg/ipc/bit_series.error.feature +33 -0
- test_holado/features/NonReg/ipc/bit_series.feature +131 -0
- test_holado/features/NonReg/ipc/json.feature +20 -0
- test_holado/features/NonReg/scenario/scenario.feature +139 -0
- test_holado/features/NonReg/test_steps/behave.feature +275 -0
- test_holado/features/NonReg/test_steps/common.feature +100 -0
- test_holado/features/NonReg/tools/RabbitMQ.feature +445 -0
- test_holado/features/NonReg/tools/RabbitMQ_steps.feature +276 -0
- test_holado/features/NonReg/tools/S3/boto3_client.feature +73 -0
- test_holado/features/NonReg/tools/S3/minio_client.feature +75 -0
- test_holado/features/NonReg/tools/db_sqlite3.feature +41 -0
- test_holado/features/NonReg/tools/sFTP.feature +25 -0
- test_holado/features/Test/logger.feature +28 -0
- test_holado/features/__init__.py +0 -0
- test_holado/logging.conf +41 -0
- test_holado/resources/proto/definitions/protobuf/custom_types/field_types.proto +24 -0
- test_holado/resources/proto/definitions/protobuf/protobuf.dev/tutorial/addressbook.proto +56 -0
- test_holado/resources/proto/generated/protobuf/custom_types/field_types_pb2.py +34 -0
- test_holado/resources/proto/generated/protobuf/protobuf/dev/tutorial/addressbook_pb2.py +34 -0
- test_holado/resources/scripts/list_tags.sh +2 -0
- test_holado/resources/scripts/update_resources_proto_generated.py +70 -0
- test_holado/steps/__init__.py +0 -0
- test_holado/steps/private_steps.py +20 -0
- test_holado/steps/public_steps.py +23 -0
- test_holado/test_holado_session_context.py +43 -0
- test_holado/tools/django/README.txt +3 -0
- test_holado/tools/django/api_grpc/api_grpc/__init__.py +0 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/__init__.py +0 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/admin.py +3 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/apps.py +6 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/migrations/__init__.py +0 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/models.py +3 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/proto/__init__.py +0 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/proto/account.proto +27 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/proto/account_pb2.py +33 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/proto/account_pb2_grpc.py +199 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/serializers.py +12 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/services.py +11 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/tests.py +3 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/views.py +3 -0
- test_holado/tools/django/api_grpc/api_grpc/asgi.py +16 -0
- test_holado/tools/django/api_grpc/api_grpc/settings.py +126 -0
- test_holado/tools/django/api_grpc/api_grpc/urls.py +27 -0
- test_holado/tools/django/api_grpc/api_grpc/wsgi.py +16 -0
- test_holado/tools/django/api_grpc/db.sqlite3 +0 -0
- test_holado/tools/django/api_grpc/manage.py +27 -0
- test_holado/tools/django/api_grpc/manual_test_commands.txt +25 -0
- test_holado/tools/django/api_rest/api_rest/__init__.py +0 -0
- test_holado/tools/django/api_rest/api_rest/api1/__init__.py +0 -0
- test_holado/tools/django/api_rest/api_rest/api1/admin.py +3 -0
- test_holado/tools/django/api_rest/api_rest/api1/apps.py +6 -0
- test_holado/tools/django/api_rest/api_rest/api1/migrations/__init__.py +0 -0
- test_holado/tools/django/api_rest/api_rest/api1/models.py +3 -0
- test_holado/tools/django/api_rest/api_rest/api1/serializers.py +15 -0
- test_holado/tools/django/api_rest/api_rest/api1/tests.py +3 -0
- test_holado/tools/django/api_rest/api_rest/api1/views.py +24 -0
- test_holado/tools/django/api_rest/api_rest/asgi.py +16 -0
- test_holado/tools/django/api_rest/api_rest/settings.py +133 -0
- test_holado/tools/django/api_rest/api_rest/urls.py +32 -0
- test_holado/tools/django/api_rest/api_rest/wsgi.py +16 -0
- test_holado/tools/django/api_rest/db.sqlite3 +0 -0
- test_holado/tools/django/api_rest/manage.py +22 -0
- holado-0.2.2.dist-info/RECORD +0 -17
- {holado-0.2.2.dist-info → holado-0.2.3.dist-info}/WHEEL +0 -0
- {holado-0.2.2.dist-info → holado-0.2.3.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
@testing_solution
|
|
2
|
+
@ValueTableManager
|
|
3
|
+
Feature: Features related to ValueTableManager
|
|
4
|
+
|
|
5
|
+
Scenario: Convert Name/Value Scenario table to json
|
|
6
|
+
|
|
7
|
+
### PRECONDITIONS - BEGIN
|
|
8
|
+
Given begin preconditions
|
|
9
|
+
|
|
10
|
+
Given VAR = 'Variable value'
|
|
11
|
+
Given INPUT_TABLE = table with header
|
|
12
|
+
| Name | Value |
|
|
13
|
+
| 'test1' | 1 |
|
|
14
|
+
| 'test2' | 2.0 |
|
|
15
|
+
| 'test3' | 'test3' |
|
|
16
|
+
| 'test4' | None |
|
|
17
|
+
| 'test5[0]' | 'test5' |
|
|
18
|
+
| 'test6' | VAR |
|
|
19
|
+
|
|
20
|
+
Given end preconditions
|
|
21
|
+
### PRECONDITIONS - END
|
|
22
|
+
|
|
23
|
+
When JSON = convert name/value table INPUT_TABLE to json
|
|
24
|
+
|
|
25
|
+
Given JSON_STR = convert object value JSON to string
|
|
26
|
+
Given STR = '{'test1': 1, 'test2': 2.0, 'test3': 'test3', 'test4': None, 'test5': ['test5'], 'test6': 'Variable value'}'
|
|
27
|
+
Then JSON_STR == STR
|
|
28
|
+
|
|
29
|
+
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
@testing_solution
|
|
2
|
+
@DateTime
|
|
3
|
+
Feature: Features related to DateTime
|
|
4
|
+
|
|
5
|
+
@datetime_now-to_string
|
|
6
|
+
Scenario: DateTime to String without format
|
|
7
|
+
Given DT_REF = datetime now
|
|
8
|
+
Given DT_REF_STR = convert datetime DT_REF to string
|
|
9
|
+
|
|
10
|
+
@datetime_now_in_utc_tai
|
|
11
|
+
Scenario: DateTime to String without format
|
|
12
|
+
Given DT_UTC = datetime now in UTC
|
|
13
|
+
Given DT_TAI = datetime now in TAI
|
|
14
|
+
|
|
15
|
+
Given DT_UTC_SEC = ${DT_UTC.timestamp()}
|
|
16
|
+
Given DT_TAI_SEC = ${DT_TAI.timestamp()}
|
|
17
|
+
Then ${${DT_UTC_SEC}+36} < DT_TAI_SEC
|
|
18
|
+
Then DT_TAI_SEC < ${${DT_UTC_SEC}+38}
|
|
19
|
+
|
|
20
|
+
@datetime-to_string
|
|
21
|
+
Scenario: DateTime to String without format
|
|
22
|
+
Given DT = datetime '2022/12/09T12:34:56.012345678'
|
|
23
|
+
Given DT_STR = convert datetime DT to string
|
|
24
|
+
Then DT_STR == '2022-12-09T12:34:56.012345'
|
|
25
|
+
|
|
26
|
+
Given DT = datetime '2022/12/09T12:34:56.012345678Z'
|
|
27
|
+
Given DT_STR = convert datetime DT to string
|
|
28
|
+
Then DT_STR == '2022-12-09T12:34:56.012345+00:00'
|
|
29
|
+
|
|
30
|
+
@datetime-to_string_with_format
|
|
31
|
+
Scenario: DateTime to String without format
|
|
32
|
+
Given DT = datetime '2022/12/09T12:34:56.012345678Z'
|
|
33
|
+
|
|
34
|
+
Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%SZ'
|
|
35
|
+
Then DT_STR == '2022-12-09T12:34:56Z'
|
|
36
|
+
|
|
37
|
+
Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
|
|
38
|
+
Then DT_STR == '2022-12-09T12:34:56.012345Z'
|
|
39
|
+
|
|
40
|
+
@datetime-delta
|
|
41
|
+
Scenario: Add delta to DateTime
|
|
42
|
+
Given DT_init = datetime '2022/12/09T12:34:56.012345678Z'
|
|
43
|
+
|
|
44
|
+
# Plus duration
|
|
45
|
+
Given DT = DT_init + 800 microseconds
|
|
46
|
+
Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
|
|
47
|
+
Then DT_STR == '2022-12-09T12:34:56.013145Z'
|
|
48
|
+
|
|
49
|
+
Given DT = DT_init + 9 milliseconds
|
|
50
|
+
Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
|
|
51
|
+
Then DT_STR == '2022-12-09T12:34:56.021345Z'
|
|
52
|
+
|
|
53
|
+
Given DT = DT_init + 10 seconds
|
|
54
|
+
Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
|
|
55
|
+
Then DT_STR == '2022-12-09T12:35:06.012345Z'
|
|
56
|
+
|
|
57
|
+
Given DT = DT_init + 30 minutes
|
|
58
|
+
Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
|
|
59
|
+
Then DT_STR == '2022-12-09T13:04:56.012345Z'
|
|
60
|
+
|
|
61
|
+
Given DT = DT_init + 12 hours
|
|
62
|
+
Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
|
|
63
|
+
Then DT_STR == '2022-12-10T00:34:56.012345Z'
|
|
64
|
+
|
|
65
|
+
Given DT = DT_init + 25 days
|
|
66
|
+
Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
|
|
67
|
+
Then DT_STR == '2023-01-03T12:34:56.012345Z'
|
|
68
|
+
|
|
69
|
+
Given DT = DT_init + 2 weeks
|
|
70
|
+
Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
|
|
71
|
+
Then DT_STR == '2022-12-23T12:34:56.012345Z'
|
|
72
|
+
|
|
73
|
+
Given DT = DT_init + 2 months
|
|
74
|
+
Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
|
|
75
|
+
Then DT_STR == '2023-02-09T12:34:56.012345Z'
|
|
76
|
+
|
|
77
|
+
Given DT = DT_init + 10 years
|
|
78
|
+
Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
|
|
79
|
+
Then DT_STR == '2032-12-09T12:34:56.012345Z'
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
# Minus duration
|
|
83
|
+
Given DT = DT_init - 70 seconds
|
|
84
|
+
Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
|
|
85
|
+
Then DT_STR == '2022-12-09T12:33:46.012345Z'
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
@testing_solution
|
|
2
|
+
@UniqueValueManager
|
|
3
|
+
Feature: Features related to UniqueValueManager
|
|
4
|
+
|
|
5
|
+
Scenario: unique integer
|
|
6
|
+
|
|
7
|
+
Given VAR1 = new unique integer
|
|
8
|
+
Given VAR2 = new unique integer
|
|
9
|
+
|
|
10
|
+
Then VAR1 != VAR2
|
|
11
|
+
Then VAR1 < VAR2
|
|
12
|
+
|
|
13
|
+
Scenario: unique HEX integer
|
|
14
|
+
|
|
15
|
+
Given VAR1 = new unique HEX integer
|
|
16
|
+
Given VAR2 = new unique HEX integer
|
|
17
|
+
|
|
18
|
+
Then VAR1 != VAR2
|
|
19
|
+
|
|
20
|
+
Scenario: unique HEX integer with padding
|
|
21
|
+
|
|
22
|
+
Given VAR1 = new unique HEX integer (length: 8)
|
|
23
|
+
Given VAR2 = new unique HEX integer (length: 8)
|
|
24
|
+
|
|
25
|
+
Then VAR1 != VAR2
|
|
26
|
+
Then VAR1 < VAR2
|
|
27
|
+
|
|
28
|
+
Scenario: unique string
|
|
29
|
+
|
|
30
|
+
Given VAR1 = new unique string
|
|
31
|
+
Given VAR2 = new unique string
|
|
32
|
+
|
|
33
|
+
Then VAR1 != VAR2
|
|
34
|
+
Then VAR1 < VAR2
|
|
35
|
+
|
|
36
|
+
Scenario: unique string with padding
|
|
37
|
+
|
|
38
|
+
Given VAR1 = new unique string (padding length: 20)
|
|
39
|
+
Given VAR2 = new unique string (padding length: 20)
|
|
40
|
+
|
|
41
|
+
Then VAR1 != VAR2
|
|
42
|
+
Then VAR1 < VAR2
|
|
43
|
+
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
@testing_solution
|
|
2
|
+
@ais
|
|
3
|
+
Feature: Test decode of AIS message from bitarry and its encode in NMEAv4
|
|
4
|
+
|
|
5
|
+
@bitarray_to_nmea_through_decode
|
|
6
|
+
Scenario Outline: from bitarray to NMEAv4 sentences through decode
|
|
7
|
+
|
|
8
|
+
When MSG = decode AIS message of type <type> from bitarray <msg_bitarray>
|
|
9
|
+
Then MSG.mmsi == <mmsi>
|
|
10
|
+
|
|
11
|
+
When MSG_NMEA_SENTENCES = encode AIS message MSG
|
|
12
|
+
| talker_id | radio_channel | seq_id | group_id |
|
|
13
|
+
| 'AIVDM' | <channel> | 0 | 0 |
|
|
14
|
+
Given EXPECTED_NMEA_SENTENCES = split text <msg_nmea> on separator '\n'
|
|
15
|
+
Then MSG_NMEA_SENTENCES == EXPECTED_NMEA_SENTENCES
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
Examples: each type
|
|
19
|
+
| type | mmsi | msg_bitarray | channel | msg_nmea |
|
|
20
|
+
| 1 | 230025450 | '0436D7A3A940000062ABFB241938839120EE000000' | 'A' | '!AIVDM,1,1,,A,13KG`rU0001RbwdT6CR3TB3f0000,0*4E' |
|
|
21
|
+
| 2 | 667001237 | '089F0686554000088CC9321A9949AE103BBA08EA0C' | 'A' | '!AIVDM,1,1,,A,29t6QUE000R<jC8JVDVf43fr2>`<,0*4A' |
|
|
22
|
+
| 3 | 273448320 | '0C4131F60140000A6047D0987C0890001F6C080000' | 'A' | '!AIVDM,1,1,,A,344iuP5000aPAu2HO0R@01ud2000,0*5C' |
|
|
23
|
+
| 4 | 2573110 | '10009D0CD87E31E3EE9C0C880208758701C00008CA' | 'A' | '!AIVDM,1,1,,A,402M3=Qv<N?fW0j80PQmQh7000S:,0*61' |
|
|
24
|
+
| 5 | 533006100 | '147F141C500236215393575340002D34204094C3153000000000000000340684C21C40000000000000000000000000000000000000' | 'B' | '\\g:1-2-0*6E\\!AIVDM,2,1,0,B,57tD7502=R5CTmMC@00e=210U<<E<0000000000l1`C27400000000000000,0*42\n\\g:2-2-0*6D\\!AIVDM,2,2,0,B,00000000000,2*27' |
|
|
25
|
+
| 6 | 235102035 | '18380D7D4E008DA6A2001D239B009875505C32000100020002020002890700004A31505C00' | 'A' | '!AIVDM,1,1,,A,63P=ODp0SJJR01lSVh2HME1L<P0100800P800`T7001:<E1L00,4*3E' |
|
|
26
|
+
| 7 | 276691000 | '1C41F7E0E000A8D450' | 'A' | '!AIVDM,1,1,,A,747op>00b=A@,0*6D' |
|
|
27
|
+
| 8 | 0 | '200000000019F8B31F1E352BB61C0AD6D5077A949880983BC1F03B18072E1C' | 'A' | '!AIVDM,1,1,,A,8000000Iv;<O7SDceQh:meD7NaBHP9PshO0s60Lf70,4*13' |
|
|
28
|
+
| 9 | 41541 | '24000289140AC00E5AAE160B1976774834021081F4' | 'B' | '!AIVDM,1,1,,B,9002RA@:h0qJcQH;6GIoB3@2487l,0*66' |
|
|
29
|
+
| 10 | 240685000 | '2839623F2039385A20' | 'B' | '!AIVDM,1,1,,B,:3UR?j0q>5`P,0*04' |
|
|
30
|
+
| 11 | 241213000 | '2C398279207E31F20D221B26B0056B1E13C0080000' | 'B' | '!AIVDM,1,1,,B,;3V2NB1v<O8=8QdVd0Ec7Q?02000,0*36' |
|
|
31
|
+
# In error due to a @ that is removed at decode step in last field that has a variable length
|
|
32
|
+
#| 12 | 400000011 | '325F5E102D71F6889E5C1387215387CF3CB280138480654C3206551600D006F5034010' | 'B' | '!AIVDM,1,1,,B,<UuN42miu`RNG1>78E>7kkjjP1>4P6E<<PIE5P3@1gD3@10,2*17' |
|
|
33
|
+
| 13 | 255805859 | '343CFD268C97A36DB0' | 'B' | '!AIVDM,1,1,,B,=3ku9`jG`nnh,0*49' |
|
|
34
|
+
# In error with difference on fill_bits number. After analyse, it seems normal to have for this raw a fill_bits=2, whereas expected fill_bits is 0 in following test case
|
|
35
|
+
#| 14 | 970012793 | '38E744E1E44C149481415350' | 'B' | '!AIVDM,1,1,,B,>>M4pNA<59B1@E=@,0*18' |
|
|
36
|
+
| 15 | 2442101 | '3C00950DD43A2F72605000' | 'B' | '!AIVDM,1,1,,B,?02E3M@r;o9PD00,2*6A' |
|
|
37
|
+
| 16 | 2444010 | '4000952BA83101A2A8320000' | 'B' | '!AIVDM,1,1,,B,@02E:rPi0J:`<P00,0*1F' |
|
|
38
|
+
| 17 | 4310302 | '450107147851F80A6F6026AC18B6100DFD68F86C' | 'B' | '!AIVDM,1,1,,B,A@4757QAv0agH2Jd6;H@3Om`v6h,2*7F' |
|
|
39
|
+
| 18 | 338318773 | '4850A956D40000DCC408A1BD095DE10FFEE5DE0006' | 'B' | '!AIVDM,1,1,,B,B52aEe@00=k42:6u2EoQ3wsUoP06,0*5A' |
|
|
40
|
+
| 19 | 58015575 | '4C0DD4FD5C0011229C15B8E4AE1200024F80C9EAC068A4E395B8C1BE72800000000001010620A0' | 'A' | '!AIVDM,1,1,,A,C0oDwEh04B:L5KSTcQ800Tv0jNc0J:CSUKS1gW:0000000411R2P,0*20' |
|
|
41
|
+
| 20 | 2276020 | '50008AEAD032C2EBB8' | 'A' | '!AIVDM,1,1,,A,D02:re0jhffp,0*0F' |
|
|
42
|
+
| 21 | 20 | '5400000050099B0059000000000000000000000000830044DE0DFBA01008208F8000' | 'A' | '!AIVDM,1,1,,A,E0000509Vh1I0000000000000000Ph14oPos`10888v000,4*1C' |
|
|
43
|
+
| 22 | 2241048 | '580088C860827828035070D5486A0E1AA902000000' | 'A' | '!AIVDM,1,1,,A,F028j622N2P3D73EB6`>6bT20000,0*04' |
|
|
44
|
+
| 23 | 992611270 | '5CECA82F1808A5CFAF410A81F161800000002C00' | 'A' | '!AIVDM,1,1,,A,G>j`;iP8aLvg@@b1tF600000;00,2*0D' |
|
|
45
|
+
| 24 | 235099648 | '60380D5801254D2507220E721D12F80000880C4040' | 'B' | '!AIVDM,1,1,,B,H3P=F04UCBD78Pqj7A;p00283410,0*14' |
|
|
46
|
+
| 25 | 338302778 | '6450A85CE8F045C2515543D12FEA81F3E76EE56193' | 'B' | '!AIVDM,1,1,,B,I52`G>ShAL9AED?A;vb1tvMfqF6C,0*36' |
|
|
47
|
+
| 26 | 7300010 | '6801BD8EA9F8C0D5E91E80C0645601000000080000' | 'B' | '!AIVDM,1,1,,B,J06uSbWph=Ga7`30I5H100002000,0*2A' |
|
|
48
|
+
| 27 | 244060910 | '6F3A304BBB0029BCF33407FC' | 'B' | '!AIVDM,1,1,,B,Kk`hBsd0:Kkk=0Ot,0*2F' |
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
@nmea_to_bitarray_through_decode
|
|
52
|
+
Scenario Outline: from NMEAv4 sentences to bitarray through decode
|
|
53
|
+
|
|
54
|
+
Given NMEA_SENTENCES = split text <msg_nmea> on separator '\n'
|
|
55
|
+
When MSG = decode AIS NMEA message NMEA_SENTENCES
|
|
56
|
+
Then MSG.mmsi == <mmsi>
|
|
57
|
+
|
|
58
|
+
When MSG_RAW = convert AIS message MSG to hexadecimal string
|
|
59
|
+
Then MSG_RAW == <msg_bitarray>
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
Examples: each type
|
|
63
|
+
| type | mmsi | msg_bitarray | msg_nmea |
|
|
64
|
+
| 1 | 230025450 | '0436D7A3A940000062ABFB241938839120EE000000' | '!AIVDM,1,1,,A,13KG`rU0001RbwdT6CR3TB3f0000,0*4E' |
|
|
65
|
+
| 2 | 667001237 | '089F0686554000088CC9321A9949AE103BBA08EA0C' | '!AIVDM,1,1,,A,29t6QUE000R<jC8JVDVf43fr2>`<,0*4A' |
|
|
66
|
+
| 3 | 273448320 | '0C4131F60140000A6047D0987C0890001F6C080000' | '!AIVDM,1,1,,A,344iuP5000aPAu2HO0R@01ud2000,0*5C' |
|
|
67
|
+
| 4 | 2573110 | '10009D0CD87E31E3EE9C0C880208758701C00008CA' | '!AIVDM,1,1,,A,402M3=Qv<N?fW0j80PQmQh7000S:,0*61' |
|
|
68
|
+
| 5 | 533006100 | '147F141C500236215393575340002D34204094C3153000000000000000340684C21C40000000000000000000000000000000000000' | '\\g:1-2-0*6E\\!AIVDM,2,1,0,B,57tD7502=R5CTmMC@00e=210U<<E<0000000000l1`C27400000000000000,0*42\n\\g:2-2-0*6D\\!AIVDM,2,2,0,B,00000000000,2*27' |
|
|
69
|
+
| 6 | 235102035 | '18380D7D4E008DA6A2001D239B009875505C32000100020002020002890700004A31505C00' | '!AIVDM,1,1,,A,63P=ODp0SJJR01lSVh2HME1L<P0100800P800`T7001:<E1L00,4*3E' |
|
|
70
|
+
| 7 | 276691000 | '1C41F7E0E000A8D450' | '!AIVDM,1,1,,A,747op>00b=A@,0*6D' |
|
|
71
|
+
| 8 | 0 | '200000000019F8B31F1E352BB61C0AD6D5077A949880983BC1F03B18072E1C' | '!AIVDM,1,1,,A,8000000Iv;<O7SDceQh:meD7NaBHP9PshO0s60Lf70,4*13' |
|
|
72
|
+
| 9 | 41541 | '24000289140AC00E5AAE160B1976774834021081F4' | '!AIVDM,1,1,,B,9002RA@:h0qJcQH;6GIoB3@2487l,0*66' |
|
|
73
|
+
| 10 | 240685000 | '2839623F2039385A20' | '!AIVDM,1,1,,B,:3UR?j0q>5`P,0*04' |
|
|
74
|
+
| 11 | 241213000 | '2C398279207E31F20D221B26B0056B1E13C0080000' | '!AIVDM,1,1,,B,;3V2NB1v<O8=8QdVd0Ec7Q?02000,0*36' |
|
|
75
|
+
# Next both are working, since decode is removing @ padding characters
|
|
76
|
+
| 12 | 400000011 | '325F5E102D71F6889E5C1387215387CF3CB280138480654C3206551600D006F5034010' | '!AIVDM,1,1,,B,<UuN42miu`RNG1>78E>7kkjjP1>4P6E<<PIE5P3@1gD3@10,2*17' |
|
|
77
|
+
| 12 | 400000011 | '325F5E102D71F6889E5C1387215387CF3CB280138480654C3206551600D006F5034010' | '!AIVDM,1,1,,B,<UuN42miu`RNG1>78E>7kkjjP1>4P6E<<PIE5P3@1gD3@1,0*25' |
|
|
78
|
+
| 13 | 255805859 | '343CFD268C97A36DB0' | '!AIVDM,1,1,,B,=3ku9`jG`nnh,0*49' |
|
|
79
|
+
| 14 | 970012793 | '38E744E1E44C149481415350' | '!AIVDM,1,1,,B,>>M4pNA<59B1@E=@,0*18' |
|
|
80
|
+
| 15 | 2442101 | '3C00950DD43A2F72605000' | '!AIVDM,1,1,,B,?02E3M@r;o9PD00,2*6A' |
|
|
81
|
+
| 16 | 2444010 | '4000952BA83101A2A8320000' | '!AIVDM,1,1,,B,@02E:rPi0J:`<P00,0*1F' |
|
|
82
|
+
| 17 | 4310302 | '450107147851F80A6F6026AC18B6100DFD68F86C' | '!AIVDM,1,1,,B,A@4757QAv0agH2Jd6;H@3Om`v6h,2*7F' |
|
|
83
|
+
| 18 | 338318773 | '4850A956D40000DCC408A1BD095DE10FFEE5DE0006' | '!AIVDM,1,1,,B,B52aEe@00=k42:6u2EoQ3wsUoP06,0*5A' |
|
|
84
|
+
| 19 | 58015575 | '4C0DD4FD5C0011229C15B8E4AE1200024F80C9EAC068A4E395B8C1BE72800000000001010620A0' | '!AIVDM,1,1,,A,C0oDwEh04B:L5KSTcQ800Tv0jNc0J:CSUKS1gW:0000000411R2P,0*20' |
|
|
85
|
+
| 20 | 2276020 | '50008AEAD032C2EBB8' | '!AIVDM,1,1,,A,D02:re0jhffp,0*0F' |
|
|
86
|
+
| 21 | 20 | '5400000050099B0059000000000000000000000000830044DE0DFBA01008208F8000' | '!AIVDM,1,1,,A,E0000509Vh1I0000000000000000Ph14oPos`10888v000,4*1C' |
|
|
87
|
+
| 22 | 2241048 | '580088C860827828035070D5486A0E1AA902000000' | '!AIVDM,1,1,,A,F028j622N2P3D73EB6`>6bT20000,0*04' |
|
|
88
|
+
| 23 | 992611270 | '5CECA82F1808A5CFAF410A81F161800000002C00' | '!AIVDM,1,1,,A,G>j`;iP8aLvg@@b1tF600000;00,2*0D' |
|
|
89
|
+
| 24 | 235099648 | '60380D5801254D2507220E721D12F80000880C4040' | '!AIVDM,1,1,,B,H3P=F04UCBD78Pqj7A;p00283410,0*14' |
|
|
90
|
+
| 25 | 338302778 | '6450A85CE8F045C2515543D12FEA81F3E76EE56193' | '!AIVDM,1,1,,B,I52`G>ShAL9AED?A;vb1tvMfqF6C,0*36' |
|
|
91
|
+
| 26 | 7300010 | '6801BD8EA9F8C0D5E91E80C0645601000000080000' | '!AIVDM,1,1,,B,J06uSbWph=Ga7`30I5H100002000,0*2A' |
|
|
92
|
+
| 27 | 244060910 | '6F3A304BBB0029BCF33407FC' | '!AIVDM,1,1,,B,Kk`hBsd0:Kkk=0Ot,0*2F' |
|
|
93
|
+
|
|
94
|
+
@bitarray_to_nmea_without_decode
|
|
95
|
+
Scenario Outline: from bitarray to NMEAv4 sentences without decode
|
|
96
|
+
|
|
97
|
+
When OBTAINED_NMEA_SENTENCES = encode AIS raw payload <msg_payload> to NMEA
|
|
98
|
+
| talker_id | radio_channel | seq_id | group_id |
|
|
99
|
+
| 'AIVDM' | <channel> | 0 | 0 |
|
|
100
|
+
Given EXPECTED_NMEA_SENTENCES = split text <msg_nmea> on separator '\n'
|
|
101
|
+
Then OBTAINED_NMEA_SENTENCES == EXPECTED_NMEA_SENTENCES
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
Examples: each type
|
|
105
|
+
| type | msg_payload | channel | msg_nmea |
|
|
106
|
+
| 1 | '0436D7A3A940000062ABFB241938839120EE000000' | 'A' | '!AIVDM,1,1,,A,13KG`rU0001RbwdT6CR3TB3f0000,0*4E' |
|
|
107
|
+
| 2 | '089F0686554000088CC9321A9949AE103BBA08EA0C' | 'A' | '!AIVDM,1,1,,A,29t6QUE000R<jC8JVDVf43fr2>`<,0*4A' |
|
|
108
|
+
| 3 | '0C4131F60140000A6047D0987C0890001F6C080000' | 'A' | '!AIVDM,1,1,,A,344iuP5000aPAu2HO0R@01ud2000,0*5C' |
|
|
109
|
+
| 4 | '10009D0CD87E31E3EE9C0C880208758701C00008CA' | 'A' | '!AIVDM,1,1,,A,402M3=Qv<N?fW0j80PQmQh7000S:,0*61' |
|
|
110
|
+
| 5 | '147F141C500236215393575340002D34204094C3153000000000000000340684C21C40000000000000000000000000000000000000' | 'B' | '\\g:1-2-0*6E\\!AIVDM,2,1,0,B,57tD7502=R5CTmMC@00e=210U<<E<0000000000l1`C27400000000000000,0*42\n\\g:2-2-0*6D\\!AIVDM,2,2,0,B,00000000000,2*27' |
|
|
111
|
+
| 6 | '18380D7D4E008DA6A2001D239B009875505C32000100020002020002890700004A31505C00' | 'A' | '!AIVDM,1,1,,A,63P=ODp0SJJR01lSVh2HME1L<P0100800P800`T7001:<E1L00,4*3E' |
|
|
112
|
+
| 7 | '1C41F7E0E000A8D450' | 'A' | '!AIVDM,1,1,,A,747op>00b=A@,0*6D' |
|
|
113
|
+
| 8 | '200000000019F8B31F1E352BB61C0AD6D5077A949880983BC1F03B18072E1C' | 'A' | '!AIVDM,1,1,,A,8000000Iv;<O7SDceQh:meD7NaBHP9PshO0s60Lf70,4*13' |
|
|
114
|
+
| 9 | '24000289140AC00E5AAE160B1976774834021081F4' | 'B' | '!AIVDM,1,1,,B,9002RA@:h0qJcQH;6GIoB3@2487l,0*66' |
|
|
115
|
+
| 10 | '2839623F2039385A20' | 'B' | '!AIVDM,1,1,,B,:3UR?j0q>5`P,0*04' |
|
|
116
|
+
| 11 | '2C398279207E31F20D221B26B0056B1E13C0080000' | 'B' | '!AIVDM,1,1,,B,;3V2NB1v<O8=8QdVd0Ec7Q?02000,0*36' |
|
|
117
|
+
| 12 | '325F5E102D71F6889E5C1387215387CF3CB280138480654C3206551600D006F5034010' | 'B' | '!AIVDM,1,1,,B,<UuN42miu`RNG1>78E>7kkjjP1>4P6E<<PIE5P3@1gD3@10,2*17' |
|
|
118
|
+
| 13 | '343CFD268C97A36DB0' | 'B' | '!AIVDM,1,1,,B,=3ku9`jG`nnh,0*49' |
|
|
119
|
+
| 14 | '38E744E1E44C149481415350' | 'B' | '!AIVDM,1,1,,B,>>M4pNA<59B1@E=@,0*18' |
|
|
120
|
+
| 15 | '3C00950DD43A2F72605000' | 'B' | '!AIVDM,1,1,,B,?02E3M@r;o9PD00,2*6A' |
|
|
121
|
+
| 16 | '4000952BA83101A2A8320000' | 'B' | '!AIVDM,1,1,,B,@02E:rPi0J:`<P00,0*1F' |
|
|
122
|
+
| 17 | '450107147851F80A6F6026AC18B6100DFD68F86C' | 'B' | '!AIVDM,1,1,,B,A@4757QAv0agH2Jd6;H@3Om`v6h,2*7F' |
|
|
123
|
+
| 18 | '4850A956D40000DCC408A1BD095DE10FFEE5DE0006' | 'B' | '!AIVDM,1,1,,B,B52aEe@00=k42:6u2EoQ3wsUoP06,0*5A' |
|
|
124
|
+
| 19 | '4C0DD4FD5C0011229C15B8E4AE1200024F80C9EAC068A4E395B8C1BE72800000000001010620A0' | 'A' | '!AIVDM,1,1,,A,C0oDwEh04B:L5KSTcQ800Tv0jNc0J:CSUKS1gW:0000000411R2P,0*20' |
|
|
125
|
+
| 20 | '50008AEAD032C2EBB8' | 'A' | '!AIVDM,1,1,,A,D02:re0jhffp,0*0F' |
|
|
126
|
+
| 21 | '5400000050099B0059000000000000000000000000830044DE0DFBA01008208F8000' | 'A' | '!AIVDM,1,1,,A,E0000509Vh1I0000000000000000Ph14oPos`10888v000,4*1C' |
|
|
127
|
+
| 22 | '580088C860827828035070D5486A0E1AA902000000' | 'A' | '!AIVDM,1,1,,A,F028j622N2P3D73EB6`>6bT20000,0*04' |
|
|
128
|
+
| 23 | '5CECA82F1808A5CFAF410A81F161800000002C00' | 'A' | '!AIVDM,1,1,,A,G>j`;iP8aLvg@@b1tF600000;00,2*0D' |
|
|
129
|
+
| 24 | '60380D5801254D2507220E721D12F80000880C4040' | 'B' | '!AIVDM,1,1,,B,H3P=F04UCBD78Pqj7A;p00283410,0*14' |
|
|
130
|
+
| 25 | '6450A85CE8F045C2515543D12FEA81F3E76EE56193' | 'B' | '!AIVDM,1,1,,B,I52`G>ShAL9AED?A;vb1tvMfqF6C,0*36' |
|
|
131
|
+
| 26 | '6801BD8EA9F8C0D5E91E80C0645601000000080000' | 'B' | '!AIVDM,1,1,,B,J06uSbWph=Ga7`30I5H100002000,0*2A' |
|
|
132
|
+
| 27 | '6F3A304BBB0029BCF33407FC' | 'B' | '!AIVDM,1,1,,B,Kk`hBsd0:Kkk=0Ot,0*2F' |
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
@testing_solution
|
|
2
|
+
@protobuf
|
|
3
|
+
@go_nogo
|
|
4
|
+
Feature: Test Protobuf module
|
|
5
|
+
|
|
6
|
+
Scenario: Tutorial example
|
|
7
|
+
|
|
8
|
+
### PRECONDITIONS - BEGIN
|
|
9
|
+
Given begin preconditions
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
Given end preconditions
|
|
13
|
+
### PRECONDITIONS - END
|
|
14
|
+
|
|
15
|
+
Given PROTO = new Protobuf object of type 'tutorial.AddressBook'
|
|
16
|
+
| Name | Value |
|
|
17
|
+
| 'people[0].id' | 0 |
|
|
18
|
+
| 'people[0].name' | 'name0' |
|
|
19
|
+
| 'people[0].email' | 'email0@test.com' |
|
|
20
|
+
| 'people[0].last_updated' | '2022-01-01T01:00:00Z' |
|
|
21
|
+
| 'people[0].phones[0].number' | '0623456789' |
|
|
22
|
+
| 'people[0].phones[0].type' | MOBILE |
|
|
23
|
+
#| 'people[0].phones[0].type' | 0 |
|
|
24
|
+
| 'people[0].phones[1].number' | '0123456789' |
|
|
25
|
+
#| 'people[0].phones[1].type' | HOME |
|
|
26
|
+
| 'people[0].phones[1].type' | 1 |
|
|
27
|
+
| 'people[1].id' | 1 |
|
|
28
|
+
| 'people[1].name' | 'name1' |
|
|
29
|
+
| 'people[1].email' | 'email1@test.com' |
|
|
30
|
+
| 'people[1].last_updated' | '2022-02-02 02:00:00' |
|
|
31
|
+
| 'people[1].phones[0].number' | '0523456789' |
|
|
32
|
+
| 'people[1].phones[0].type' | WORK |
|
|
33
|
+
#| 'people[1].phones[0].type' | 2 |
|
|
34
|
+
|
|
35
|
+
Given PROTO_STR = serialize Protobuf object PROTO
|
|
36
|
+
|
|
37
|
+
Given NEW_PROTO = unserialize string PROTO_STR as 'tutorial.AddressBook' Protobuf object
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
Scenario: Map field assigned by key name
|
|
41
|
+
|
|
42
|
+
### PRECONDITIONS - BEGIN
|
|
43
|
+
Given begin preconditions
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
Given end preconditions
|
|
47
|
+
### PRECONDITIONS - END
|
|
48
|
+
|
|
49
|
+
Given PROTO = new Protobuf object of type 'custom_types.MessageWithMap'
|
|
50
|
+
| Name | Value |
|
|
51
|
+
| 'id' | 0 |
|
|
52
|
+
| 'map[k1]' | 'v1' |
|
|
53
|
+
|
|
54
|
+
Given PROTO_STR = serialize Protobuf object PROTO
|
|
55
|
+
|
|
56
|
+
Given NEW_PROTO = unserialize string PROTO_STR as 'custom_types.MessageWithMap' Protobuf object
|
|
57
|
+
|
|
58
|
+
Given NEW_PROTO_TABLE = convert Protobuf object NEW_PROTO to name/value table with names uncollapsed
|
|
59
|
+
Then table NEW_PROTO_TABLE is
|
|
60
|
+
| Name | Value |
|
|
61
|
+
| 'id' | 0 |
|
|
62
|
+
| 'map[k1]' | 'v1' |
|
|
63
|
+
|
|
64
|
+
Scenario: Map field assigned by dict
|
|
65
|
+
|
|
66
|
+
### PRECONDITIONS - BEGIN
|
|
67
|
+
Given begin preconditions
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
Given end preconditions
|
|
71
|
+
### PRECONDITIONS - END
|
|
72
|
+
|
|
73
|
+
Given PROTO = new Protobuf object of type 'custom_types.MessageWithMap'
|
|
74
|
+
| Name | Value |
|
|
75
|
+
| 'id' | 0 |
|
|
76
|
+
| 'map' | {'k1':'v1'} |
|
|
77
|
+
|
|
78
|
+
Given PROTO_STR = serialize Protobuf object PROTO
|
|
79
|
+
|
|
80
|
+
Given NEW_PROTO = unserialize string PROTO_STR as 'custom_types.MessageWithMap' Protobuf object
|
|
81
|
+
|
|
82
|
+
Given NEW_PROTO_TABLE = convert Protobuf object NEW_PROTO to name/value table
|
|
83
|
+
Then table NEW_PROTO_TABLE is
|
|
84
|
+
| Name | Value |
|
|
85
|
+
| 'id' | 0 |
|
|
86
|
+
| 'map' | {'k1':'v1'} |
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
Scenario: Optional field when set
|
|
90
|
+
### PRECONDITIONS - BEGIN
|
|
91
|
+
Given begin preconditions
|
|
92
|
+
|
|
93
|
+
Given PROTO = new Protobuf object of type 'custom_types.MessageWithOptional'
|
|
94
|
+
| Name | Value |
|
|
95
|
+
| 'id' | 0 |
|
|
96
|
+
| 'text' | 'toto' |
|
|
97
|
+
| 'optional_text' | 'pipo' |
|
|
98
|
+
|
|
99
|
+
Given end preconditions
|
|
100
|
+
### PRECONDITIONS - END
|
|
101
|
+
|
|
102
|
+
Given PROTO_TABLE = convert Protobuf object PROTO to name/value table
|
|
103
|
+
Then table PROTO_TABLE is
|
|
104
|
+
| Name | Value |
|
|
105
|
+
| 'id' | 0 |
|
|
106
|
+
| 'text' | 'toto' |
|
|
107
|
+
| 'optional_text' | 'pipo' |
|
|
108
|
+
|
|
109
|
+
Given PROTO_STR = serialize Protobuf object PROTO
|
|
110
|
+
|
|
111
|
+
Given NEW_PROTO = unserialize string PROTO_STR as 'custom_types.MessageWithOptional' Protobuf object
|
|
112
|
+
|
|
113
|
+
Given NEW_PROTO_TABLE = convert Protobuf object NEW_PROTO to name/value table
|
|
114
|
+
Then NEW_PROTO_TABLE == PROTO_TABLE
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
Scenario: Optional field when not set
|
|
118
|
+
### PRECONDITIONS - BEGIN
|
|
119
|
+
Given begin preconditions
|
|
120
|
+
|
|
121
|
+
Given PROTO = new Protobuf object of type 'custom_types.MessageWithOptional'
|
|
122
|
+
| Name | Value |
|
|
123
|
+
| 'id' | 0 |
|
|
124
|
+
| 'text' | 'toto' |
|
|
125
|
+
|
|
126
|
+
Given end preconditions
|
|
127
|
+
### PRECONDITIONS - END
|
|
128
|
+
|
|
129
|
+
Given PROTO_TABLE = convert Protobuf object PROTO to name/value table
|
|
130
|
+
Then table PROTO_TABLE is
|
|
131
|
+
| Name | Value |
|
|
132
|
+
| 'id' | 0 |
|
|
133
|
+
| 'text' | 'toto' |
|
|
134
|
+
|
|
135
|
+
Given PROTO_STR = serialize Protobuf object PROTO
|
|
136
|
+
|
|
137
|
+
Given NEW_PROTO = unserialize string PROTO_STR as 'custom_types.MessageWithOptional' Protobuf object
|
|
138
|
+
|
|
139
|
+
Given NEW_PROTO_TABLE = convert Protobuf object NEW_PROTO to name/value table
|
|
140
|
+
Then NEW_PROTO_TABLE == PROTO_TABLE
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
Scenario: Normal field when not set
|
|
144
|
+
### PRECONDITIONS - BEGIN
|
|
145
|
+
Given begin preconditions
|
|
146
|
+
|
|
147
|
+
Given PROTO = new Protobuf object of type 'custom_types.MessageWithOptional'
|
|
148
|
+
| Name | Value |
|
|
149
|
+
| 'id' | 0 |
|
|
150
|
+
| 'optional_text' | 'pipo' |
|
|
151
|
+
|
|
152
|
+
Given end preconditions
|
|
153
|
+
### PRECONDITIONS - END
|
|
154
|
+
|
|
155
|
+
Given PROTO_TABLE = convert Protobuf object PROTO to name/value table
|
|
156
|
+
Then table PROTO_TABLE is
|
|
157
|
+
| Name | Value |
|
|
158
|
+
| 'id' | 0 |
|
|
159
|
+
| 'text' | '' |
|
|
160
|
+
| 'optional_text' | 'pipo' |
|
|
161
|
+
|
|
162
|
+
Given PROTO_STR = serialize Protobuf object PROTO
|
|
163
|
+
|
|
164
|
+
Given NEW_PROTO = unserialize string PROTO_STR as 'custom_types.MessageWithOptional' Protobuf object
|
|
165
|
+
|
|
166
|
+
Given NEW_PROTO_TABLE = convert Protobuf object NEW_PROTO to name/value table
|
|
167
|
+
Then NEW_PROTO_TABLE == PROTO_TABLE
|
|
168
|
+
|
|
169
|
+
@repeated_assigned_by_list
|
|
170
|
+
Scenario: Repeated field assigned by list
|
|
171
|
+
|
|
172
|
+
### PRECONDITIONS - BEGIN
|
|
173
|
+
Given begin preconditions
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
Given end preconditions
|
|
177
|
+
### PRECONDITIONS - END
|
|
178
|
+
|
|
179
|
+
Given PROTO = new Protobuf object of type 'custom_types.MessageWithRepeated'
|
|
180
|
+
| Name | Value |
|
|
181
|
+
| 'id' | 0 |
|
|
182
|
+
| 'values' | [1, 2, 3] |
|
|
183
|
+
|
|
184
|
+
Given PROTO_STR = serialize Protobuf object PROTO
|
|
185
|
+
|
|
186
|
+
Given NEW_PROTO = unserialize string PROTO_STR as 'custom_types.MessageWithRepeated' Protobuf object
|
|
187
|
+
|
|
188
|
+
Given NEW_PROTO_TABLE = convert Protobuf object NEW_PROTO to name/value table
|
|
189
|
+
Then table NEW_PROTO_TABLE is
|
|
190
|
+
| Name | Value |
|
|
191
|
+
| 'id' | 0 |
|
|
192
|
+
| 'values' | [1, 2, 3] |
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
@enum_field
|
|
196
|
+
Scenario: Enum field
|
|
197
|
+
### PRECONDITIONS - BEGIN
|
|
198
|
+
Given begin preconditions
|
|
199
|
+
|
|
200
|
+
Given PROTO = new Protobuf object of type 'tutorial.AddressBook'
|
|
201
|
+
| Name | Value |
|
|
202
|
+
| 'people[0].id' | 0 |
|
|
203
|
+
| 'people[0].name' | 'name0' |
|
|
204
|
+
| 'people[0].email' | 'email0@test.com' |
|
|
205
|
+
| 'people[0].last_updated' | '2022-01-01T01:00:00Z' |
|
|
206
|
+
| 'people[0].phones[0].number' | '0623456789' |
|
|
207
|
+
| 'people[0].phones[0].type' | MOBILE |
|
|
208
|
+
#| 'people[0].phones[0].type' | 0 |
|
|
209
|
+
| 'people[0].phones[1].number' | '0123456789' |
|
|
210
|
+
#| 'people[0].phones[1].type' | HOME |
|
|
211
|
+
| 'people[0].phones[1].type' | 1 |
|
|
212
|
+
| 'people[0].phones[2].number' | '0923456789' |
|
|
213
|
+
| 'people[0].phones[2].type' | WORK |
|
|
214
|
+
#| 'people[0].phones[2].type' | 2 |
|
|
215
|
+
|
|
216
|
+
Given end preconditions
|
|
217
|
+
### PRECONDITIONS - END
|
|
218
|
+
|
|
219
|
+
# Get enum value
|
|
220
|
+
Given MOBILE_VALUE = value of Protobuf enum 'tutorial.Person.PhoneType.MOBILE'
|
|
221
|
+
Then MOBILE_VALUE == 0
|
|
222
|
+
Given HOME_VALUE = value of Protobuf enum 'tutorial.Person.PhoneType.HOME'
|
|
223
|
+
Then HOME_VALUE == 1
|
|
224
|
+
Given WORK_VALUE = value of Protobuf enum 'tutorial.Person.PhoneType.WORK'
|
|
225
|
+
Then WORK_VALUE == 2
|
|
226
|
+
|
|
227
|
+
# Verify enum value in a Protobuf message
|
|
228
|
+
Then PROTO.people[0].phones[0].type == MOBILE_VALUE
|
|
229
|
+
Then PROTO.people[0].phones[1].type == HOME_VALUE
|
|
230
|
+
Then PROTO.people[0].phones[2].type == WORK_VALUE
|
|
231
|
+
|
|
232
|
+
# Verify enum name by its value
|
|
233
|
+
Given PHONE_TYPE_NAME = name of value MOBILE_VALUE of Protobuf enum type 'tutorial.Person.PhoneType'
|
|
234
|
+
Then PHONE_TYPE_NAME == 'MOBILE'
|
|
235
|
+
|
|
236
|
+
# Verify message by convertion as a table
|
|
237
|
+
Given PROTO_TABLE = convert Protobuf object PROTO to name/value table with names and repeated uncollapsed
|
|
238
|
+
Then table PROTO_TABLE is
|
|
239
|
+
| Name | Value |
|
|
240
|
+
| 'people[0].name' | 'name0' |
|
|
241
|
+
| 'people[0].id' | 0 |
|
|
242
|
+
| 'people[0].email' | 'email0@test.com' |
|
|
243
|
+
| 'people[0].phones[0].number' | '0623456789' |
|
|
244
|
+
| 'people[0].phones[0].type' | MOBILE |
|
|
245
|
+
| 'people[0].phones[1].number' | '0123456789' |
|
|
246
|
+
| 'people[0].phones[1].type' | HOME |
|
|
247
|
+
| 'people[0].phones[2].number' | '0923456789' |
|
|
248
|
+
| 'people[0].phones[2].type' | WORK |
|
|
249
|
+
| 'people[0].last_updated.seconds' | 1640998800 |
|
|
250
|
+
| 'people[0].last_updated.nanos' | 0 |
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
@import_enum
|
|
254
|
+
Scenario: Import enum
|
|
255
|
+
Given import Protobuf enum type 'tutorial.Person.PhoneType'
|
|
256
|
+
Then PhoneType.MOBILE == 0
|
|
257
|
+
Then PhoneType.HOME == 1
|
|
258
|
+
Then PhoneType.WORK == 2
|
|
259
|
+
Then tutorial.Person.PhoneType.MOBILE == 0
|
|
260
|
+
Then tutorial.Person.PhoneType.HOME == 1
|
|
261
|
+
Then tutorial.Person.PhoneType.WORK == 2
|
|
262
|
+
|
|
263
|
+
Given import values of Protobuf enum type 'tutorial.Person.PhoneType'
|
|
264
|
+
Then MOBILE == 0
|
|
265
|
+
Then HOME == 1
|
|
266
|
+
Then WORK == 2
|
|
267
|
+
|
|
268
|
+
Given import values of Protobuf enum type 'tutorial.Person.PhoneType' with prefix 'PHONE_TYPE_'
|
|
269
|
+
Then PHONE_TYPE_MOBILE == 0
|
|
270
|
+
Then PHONE_TYPE_HOME == 1
|
|
271
|
+
Then PHONE_TYPE_WORK == 2
|
|
272
|
+
|
|
273
|
+
# Use imports in other sentences
|
|
274
|
+
Given VALUE = -1
|
|
275
|
+
Given if ${PHONE_TYPE_MOBILE} == 0:
|
|
276
|
+
Given VALUE = 0
|
|
277
|
+
Given end if
|
|
278
|
+
Then VALUE == 0
|
|
279
|
+
|
|
280
|
+
Given if ${PhoneType.HOME} == 1:
|
|
281
|
+
Given VALUE = 1
|
|
282
|
+
Given end if
|
|
283
|
+
Then VALUE == 1
|
|
284
|
+
|
|
285
|
+
Given if 2 == ${PhoneType.WORK}:
|
|
286
|
+
Given VALUE = 2
|
|
287
|
+
Given end if
|
|
288
|
+
Then VALUE == 2
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
@testing_solution
|
|
2
|
+
@python
|
|
3
|
+
Feature: Test python convert steps
|
|
4
|
+
|
|
5
|
+
@list_to_hexa
|
|
6
|
+
Scenario: Convert list to hexa strings
|
|
7
|
+
|
|
8
|
+
### PRECONDITIONS - BEGIN
|
|
9
|
+
Given begin preconditions
|
|
10
|
+
|
|
11
|
+
Given LIST_STR = ['v1', 'v2']
|
|
12
|
+
Given LIST_HEX_EXPECTED = ['7631', '7632']
|
|
13
|
+
|
|
14
|
+
Given end preconditions
|
|
15
|
+
### PRECONDITIONS - END
|
|
16
|
+
|
|
17
|
+
Given LIST_HEX = convert list LIST_STR of strings to list of hexadecimal strings
|
|
18
|
+
Then LIST_HEX == LIST_HEX_EXPECTED
|
|
19
|
+
|
|
20
|
+
|