holado 0.10.1__py3-none-any.whl → 0.11.0__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/common/context/session_context.py +1 -1
- {holado-0.10.1.dist-info → holado-0.11.0.dist-info}/METADATA +1 -1
- {holado-0.10.1.dist-info → holado-0.11.0.dist-info}/RECORD +33 -59
- holado_core/common/tools/path_manager.py +2 -2
- holado_docker/tests/behave/steps/__init__.py +1 -1
- holado_python/standard_library/ssl/resources/certificates/tcpbin.crt +16 -16
- holado_python/standard_library/ssl/resources/certificates/tcpbin.key +26 -26
- holado_report/campaign/campaign_manager.py +2 -2
- holado_report/report/builders/failure_report_builder.py +1 -1
- holado_report/report/builders/short_scenario_failed_report_builder.py +1 -1
- holado_report/report/builders/summary_scenario_by_category_report_builder.py +87 -0
- holado_report/report/builders/summary_scenario_failed_report_builder.py +1 -1
- holado_report/report/builders/summary_scenario_report_builder.py +1 -1
- holado_report/report/report_manager.py +40 -10
- holado_test/__init__.py +1 -1
- holado_test/{test_server → tools/test_server}/server/Dockerfile +6 -16
- holado_test/{test_server → tools/test_server}/server/core/server_context.py +1 -1
- holado_test/{test_server → tools/test_server}/server/rest/run.py +1 -1
- test_holado/features/Test/test_host_controller.feature +13 -0
- test_holado/logging.conf +1 -1
- holado_docker/tests/behave/steps/tools/docker_controller/client_steps.py +0 -97
- holado_docker/tools/docker_controller/client/rest/docker_controller_client.py +0 -143
- holado_docker/tools/docker_controller/server/Dockerfile +0 -70
- holado_docker/tools/docker_controller/server/grpc/README +0 -2
- holado_docker/tools/docker_controller/server/grpc/__init__.py +0 -26
- holado_docker/tools/docker_controller/server/grpc/proto/compile_proto.py +0 -60
- holado_docker/tools/docker_controller/server/grpc/proto/definitions/docker_controler.proto +0 -63
- holado_docker/tools/docker_controller/server/requirements.txt +0 -2
- holado_docker/tools/docker_controller/server/rest/README +0 -2
- holado_docker/tools/docker_controller/server/rest/api/__init__.py +0 -40
- holado_docker/tools/docker_controller/server/rest/api/config.py +0 -57
- holado_docker/tools/docker_controller/server/rest/api/container.py +0 -55
- holado_docker/tools/docker_controller/server/rest/api/os.py +0 -47
- holado_docker/tools/docker_controller/server/rest/openapi.yaml +0 -265
- holado_docker/tools/docker_controller/server/rest/run.py +0 -31
- holado_docker/tools/docker_controller/server/run_docker_controller_in_docker.sh +0 -102
- holado_docker/tools/docker_viewer/client/rest/docker_viewer_client.py +0 -40
- holado_docker/tools/docker_viewer/docker_viewer_manager.py +0 -44
- holado_docker/tools/docker_viewer/server/Dockerfile +0 -70
- holado_docker/tools/docker_viewer/server/requirements.txt +0 -2
- holado_docker/tools/docker_viewer/server/rest/README +0 -2
- holado_docker/tools/docker_viewer/server/rest/api/__init__.py +0 -40
- holado_docker/tools/docker_viewer/server/rest/initialize_holado.py +0 -72
- holado_docker/tools/docker_viewer/server/rest/openapi.yaml +0 -58
- holado_docker/tools/docker_viewer/server/rest/run.py +0 -31
- holado_docker/tools/docker_viewer/server/run_docker_viewer_in_docker.sh +0 -101
- holado_test/test_server/server/rest/initialize_holado.py +0 -72
- test_holado/features/Test/test_docker_controller.feature +0 -13
- {holado-0.10.1.dist-info → holado-0.11.0.dist-info}/WHEEL +0 -0
- {holado-0.10.1.dist-info → holado-0.11.0.dist-info}/licenses/LICENSE +0 -0
- /holado_test/{test_server → tools/test_server}/client/rest/test_server_client.py +0 -0
- /holado_test/{test_server → tools/test_server}/server/core/server_manager.py +0 -0
- /holado_test/{test_server → tools/test_server}/server/requirements.txt +0 -0
- /holado_test/{test_server → tools/test_server}/server/rest/README +0 -0
- /holado_test/{test_server → tools/test_server}/server/rest/api/__init__.py +0 -0
- /holado_test/{test_server → tools/test_server}/server/rest/api/campaign/__init__.py +0 -0
- /holado_test/{test_server → tools/test_server}/server/rest/api/campaign/scenario.py +0 -0
- {holado_docker/tools/docker_controller → holado_test/tools/test_server}/server/rest/initialize_holado.py +0 -0
- /holado_test/{test_server → tools/test_server}/server/rest/logging.conf +0 -0
- /holado_test/{test_server → tools/test_server}/server/rest/openapi.yaml +0 -0
- /holado_test/{test_server → tools/test_server}/server/run_test_server_in_docker.sh +0 -0
|
@@ -337,7 +337,7 @@ class SessionContext(Context):
|
|
|
337
337
|
category_validation, status_validation, step_failed, step_number = ReportManager.get_current_scenario_status_information(scenario)
|
|
338
338
|
if status_validation != "Passed":
|
|
339
339
|
msg_list = []
|
|
340
|
-
category_str = f"
|
|
340
|
+
category_str = f" => {category_validation}" if category_validation else ""
|
|
341
341
|
if step_failed is not None:
|
|
342
342
|
msg_list.append(f"Scenario {status_validation}{category_str}: [scenario in {scenario.filename} at l.{scenario.line} - step {step_number} (l.{step_failed.line})]")
|
|
343
343
|
else:
|
|
@@ -4,7 +4,7 @@ holado/common/__init__.py,sha256=ZjXM-FRQgnfzRNXqcvJOGewDHVRR-U5-ugStSs8U2Xs,152
|
|
|
4
4
|
holado/common/context/__init__.py,sha256=3jJBLm8myrYF9jbdV1EhIA6BtnlmjX33eeoDpTzwmLA,1604
|
|
5
5
|
holado/common/context/context.py,sha256=MV8A6JSpUcTcfia_QzjyDLybQC50rZ-NA0ffotnHXQY,11994
|
|
6
6
|
holado/common/context/service_manager.py,sha256=LaCn8ukE1aqJynmwoexAYj5hCkdb_F3hXRtUBGqorUE,14087
|
|
7
|
-
holado/common/context/session_context.py,sha256=
|
|
7
|
+
holado/common/context/session_context.py,sha256=IWxkeYnMSVImNyamTd3PXZSFIkXY96qFyAlC1y8s0J4,23475
|
|
8
8
|
holado/common/handlers/__init__.py,sha256=d0KDUpaAAw1eBXyX08gaRh4RECnJlXjYQ0TcU-Ndicc,1372
|
|
9
9
|
holado/common/handlers/enums.py,sha256=ieqKVoukEiNyfE3KrKmMOImdbFS1ocUMud8JHe2xNLs,1662
|
|
10
10
|
holado/common/handlers/object.py,sha256=rDaav8zHTYfKVEaLtEdeXMxYXATGVcs2a7um1f5MvCs,7205
|
|
@@ -126,7 +126,7 @@ holado_core/common/tables/comparators/table_with_header_comparator.py,sha256=j7B
|
|
|
126
126
|
holado_core/common/tables/converters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
127
127
|
holado_core/common/tables/converters/table_converter.py,sha256=PD7NJoxtejpr4aS1l3YKcXW1aEn1xBxdi4Ljs5G7R4g,10251
|
|
128
128
|
holado_core/common/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
129
|
-
holado_core/common/tools/path_manager.py,sha256=
|
|
129
|
+
holado_core/common/tools/path_manager.py,sha256=XeQ8tS2S5XZn3L65LYXsOhNDe166uO8X2sxnwXqZbVE,10932
|
|
130
130
|
holado_core/common/tools/string_tools.py,sha256=bQuMlI_yS7OoSPFL7qyfyXkrnjC8xHVpIsfmEC6JxhI,5590
|
|
131
131
|
holado_core/common/tools/tools.py,sha256=zkDz7u8S_02bfyN6K-p7-Ey_SkDxzu9DJljnczY0OAo,9683
|
|
132
132
|
holado_core/common/tools/comparators/comparator.py,sha256=K4LcXIRORHX5vkmDibI6P6Bu1L-6Xezb63ZzzOMKrWY,6812
|
|
@@ -192,34 +192,7 @@ holado_django/tests/behave/steps/django_server_steps.py,sha256=XAnKDUXJxsZ4L7-PY
|
|
|
192
192
|
holado_docker/__init__.py,sha256=CtGYR7aEkaCdAHPDAsu_ErjpVtYE0yz9wbgbfRUwS8s,1574
|
|
193
193
|
holado_docker/sdk/docker/docker_client.py,sha256=rh1VLtcefIAZY88FMz7eyh1mFrWn3vVxop6TlC9t2sU,14138
|
|
194
194
|
holado_docker/sdk/docker/docker_service.py,sha256=SvMSIZ7XTCbC7q5rur03lJhJVSHL3uIq1dBQz9oDpkw,3767
|
|
195
|
-
holado_docker/tests/behave/steps/__init__.py,sha256=
|
|
196
|
-
holado_docker/tests/behave/steps/tools/docker_controller/client_steps.py,sha256=6E_tI5YkIppszJXB8_E0B2OmyS6YxzhF4uB89sd6dLs,4809
|
|
197
|
-
holado_docker/tools/docker_controller/client/rest/docker_controller_client.py,sha256=s4tDe4JktpxZL_piGmtc5NnoMwy4PmstgAvsjwPFMjU,6239
|
|
198
|
-
holado_docker/tools/docker_controller/server/Dockerfile,sha256=zuSkj3HYDhvpjOSXmxL4oDqhN7dRB1YTX5Fyur1cuDY,1774
|
|
199
|
-
holado_docker/tools/docker_controller/server/requirements.txt,sha256=0RvLV3t2DyBR2FsbAd1WVEcbsVc6FVUN2horQJU4POo,57
|
|
200
|
-
holado_docker/tools/docker_controller/server/run_docker_controller_in_docker.sh,sha256=HPNEv51CAgEm0KZ3b3fV4pHwv5v6VDQAwomTnnL4mxY,3421
|
|
201
|
-
holado_docker/tools/docker_controller/server/grpc/README,sha256=cNOly0Lfsfz_qyhTqLGmELOXzAgZbByNUowuYrUnJa0,132
|
|
202
|
-
holado_docker/tools/docker_controller/server/grpc/__init__.py,sha256=QBkE1ydbCvARUimeSY2PvBkZ-Jp0bCv6k_l89a_8zNw,1551
|
|
203
|
-
holado_docker/tools/docker_controller/server/grpc/proto/compile_proto.py,sha256=NjcStLaAO_zKcSprrcGscq3R_4anh55QeguXLq6SPjo,2191
|
|
204
|
-
holado_docker/tools/docker_controller/server/grpc/proto/definitions/docker_controler.proto,sha256=n9bsXaQfnZX-R5HvfquCVt3QjpFtDJSH6p8gnTjm06k,1650
|
|
205
|
-
holado_docker/tools/docker_controller/server/rest/README,sha256=-uqu3drdPXkPkU4ha1IKcXGBHFIBEWH-uiTT74DExwE,167
|
|
206
|
-
holado_docker/tools/docker_controller/server/rest/initialize_holado.py,sha256=UxNphXyjs-xraorzMWjDe6-QYw_Q3mtykyY-ENYZB1o,3464
|
|
207
|
-
holado_docker/tools/docker_controller/server/rest/openapi.yaml,sha256=8mhJdAYi-wftxdStsD6el0j1Zo8zqx1MzwqZndyKhMY,6864
|
|
208
|
-
holado_docker/tools/docker_controller/server/rest/run.py,sha256=4bEcRbobax-b8MugINb852Tdg6r-nQlfa8_bfil8xDE,2011
|
|
209
|
-
holado_docker/tools/docker_controller/server/rest/api/__init__.py,sha256=FlLRagAiw1LDxnF0CmW7Y6bVXuj8x6volT8-DuHTTVY,2427
|
|
210
|
-
holado_docker/tools/docker_controller/server/rest/api/config.py,sha256=Ln__1bsigSzJZ-Iy3MQgmiZMnpBxC3TCQE0O72g5cAs,2459
|
|
211
|
-
holado_docker/tools/docker_controller/server/rest/api/container.py,sha256=6D612WF4chpDCzr4MBzZXzELxi-yOwrgxCxSBBVMcVo,2673
|
|
212
|
-
holado_docker/tools/docker_controller/server/rest/api/os.py,sha256=EA3DCxGBCnMd2XJyn9kb6IWmtbaPIyv5UfZypCNzkhY,2123
|
|
213
|
-
holado_docker/tools/docker_viewer/docker_viewer_manager.py,sha256=tSLuIUdYjJoZIFUc1k4WnrRTUtjjTAmNTbrDmS-8SjI,2287
|
|
214
|
-
holado_docker/tools/docker_viewer/client/rest/docker_viewer_client.py,sha256=XNBt7QE-Elz9wUT32hdft7vU0ytcY8f-0AvlDZ8NWMo,2005
|
|
215
|
-
holado_docker/tools/docker_viewer/server/Dockerfile,sha256=012m7y_jg1Jh0NoqJSUTnmG9OppX2zlcFe-KhB71cVA,1750
|
|
216
|
-
holado_docker/tools/docker_viewer/server/requirements.txt,sha256=0RvLV3t2DyBR2FsbAd1WVEcbsVc6FVUN2horQJU4POo,57
|
|
217
|
-
holado_docker/tools/docker_viewer/server/run_docker_viewer_in_docker.sh,sha256=qwy4JErJvv09qgzp5yjEI4skVTsfQjHeu8NVxZmAKwU,3138
|
|
218
|
-
holado_docker/tools/docker_viewer/server/rest/README,sha256=1FMg-U_D9pUMBVmZJsirOXHFLTciDL5jB-Yqzp9U6uM,163
|
|
219
|
-
holado_docker/tools/docker_viewer/server/rest/initialize_holado.py,sha256=UxNphXyjs-xraorzMWjDe6-QYw_Q3mtykyY-ENYZB1o,3464
|
|
220
|
-
holado_docker/tools/docker_viewer/server/rest/openapi.yaml,sha256=ZBjVs7Ld1VCdTBk7FgZXEvUACtn6aDdv8cHDE669YZc,1715
|
|
221
|
-
holado_docker/tools/docker_viewer/server/rest/run.py,sha256=jgJgmFFdppadLBahWU8Yw8-PdA5HJzBTDCPTPHGRzbA,2007
|
|
222
|
-
holado_docker/tools/docker_viewer/server/rest/api/__init__.py,sha256=FlLRagAiw1LDxnF0CmW7Y6bVXuj8x6volT8-DuHTTVY,2427
|
|
195
|
+
holado_docker/tests/behave/steps/__init__.py,sha256=BHp8TYE_X4lWn4B8A51nXSYaJlczuiDVJLcKMy7p0Lw,1267
|
|
223
196
|
holado_examples/projects/server_rest/server_rest_example/initialize_holado.py,sha256=UxNphXyjs-xraorzMWjDe6-QYw_Q3mtykyY-ENYZB1o,3464
|
|
224
197
|
holado_examples/projects/server_rest/server_rest_example/rest_server.py,sha256=xMLHBwGBdBvT0DYOpGBuvnSXNjEu3cvU9ty_h187QW4,1887
|
|
225
198
|
holado_examples/projects/server_rest/server_rest_example/rest_api/db.sqlite3,sha256=LBFAfNepksCk8npTt9QtnG7CVtDKbZM7kmy13wv1Er0,131072
|
|
@@ -363,8 +336,8 @@ holado_python/standard_library/ssl/resources/certificates/NOTES.txt,sha256=GlPGG
|
|
|
363
336
|
holado_python/standard_library/ssl/resources/certificates/localhost.crt,sha256=iLmZpDuOQVawUlbZkb72g2-uv1c4SAmRJOrm4Th5anY,1123
|
|
364
337
|
holado_python/standard_library/ssl/resources/certificates/localhost.key,sha256=lP2NCvB9mr2E5sk8whA8FyQRcyU6H7sdWkJeKz80Hyc,1704
|
|
365
338
|
holado_python/standard_library/ssl/resources/certificates/rootCACert.pem,sha256=ECQDZ8OHRfqpZHCu6JRLMUjiONaPIhKZQF0-kidVrWQ,1424
|
|
366
|
-
holado_python/standard_library/ssl/resources/certificates/tcpbin.crt,sha256=
|
|
367
|
-
holado_python/standard_library/ssl/resources/certificates/tcpbin.key,sha256=
|
|
339
|
+
holado_python/standard_library/ssl/resources/certificates/tcpbin.crt,sha256=irlQEaUfHPFbeDFcvZwtyneZxoM6s6KFLgXa6N_io6E,1237
|
|
340
|
+
holado_python/standard_library/ssl/resources/certificates/tcpbin.key,sha256=fq0j9a8lrCUS8Jo6vS0a_FoZOwO5OfFb2Fa19u3xd9Y,1704
|
|
368
341
|
holado_python/tests/behave/steps/__init__.py,sha256=TWEk-kBTTDHi9I4nuu48nufmNMdZ9FHAhPZv0A_cWzc,1661
|
|
369
342
|
holado_python/tests/behave/steps/convert_steps.py,sha256=bZqRvJVp_u6fSPpdu4ne9NwVyZmui7R-AVdO2-H-I1A,2728
|
|
370
343
|
holado_python/tests/behave/steps/iterable_steps.py,sha256=f4vGIWBH8Qnjq69Q-ZBluYyctQ8SKauazTc41dsktZA,4041
|
|
@@ -392,19 +365,20 @@ holado_redis/tools/redis/TODO.txt,sha256=cmFyx6qS6_FgL1Ph0OWRsWch6MQaklfv1j0qBO2
|
|
|
392
365
|
holado_redis/tools/redis/redis_client.py,sha256=KWuOrnwTcwt5xkD3rtI_l07v164Y_bsoo1kE0IGzqaQ,8316
|
|
393
366
|
holado_redis/tools/redis/redis_manager.py,sha256=tMO0XrCZTCfGdByFfgWXk9R-I_TUPLO9wXMQf8yCYcQ,1814
|
|
394
367
|
holado_report/__init__.py,sha256=3wtu5g9d4d-AICmLZclPQrw2MS-FJL9CyiVO1n2MYWA,1868
|
|
395
|
-
holado_report/campaign/campaign_manager.py,sha256=
|
|
368
|
+
holado_report/campaign/campaign_manager.py,sha256=fZtxvtFc7_BZm3KGZNMYh0p8SJ-znEX89MlEY6Gp3aE,8748
|
|
396
369
|
holado_report/report/execution_historic.py,sha256=M4lYoZwyrSivRa17Q39GOAgROnr0oBvIZX5BNcO5Mnc,6951
|
|
397
|
-
holado_report/report/report_manager.py,sha256=
|
|
370
|
+
holado_report/report/report_manager.py,sha256=KiKMiZbjYa7-0yH8zs8KQdqz5VyZwwSAHizDYRwGGp8,16624
|
|
398
371
|
holado_report/report/analyze/execution_historic_manager.py,sha256=FMKKPguXOvWNxjF7Q8DodHHsH-2ci9pFzrTV41B8nL4,4556
|
|
399
372
|
holado_report/report/analyze/scenario_duration_manager.py,sha256=Preaxu83qFKGfbvQnzolhSXztZ4i5Zo_Bnxx8tNA80Q,12468
|
|
400
373
|
holado_report/report/builders/detailed_scenario_failed_report_builder.py,sha256=hOXxHYniL9mpN-U7YTW5xVEaE4Z-GlPq8ltT_iNJan4,7892
|
|
401
|
-
holado_report/report/builders/failure_report_builder.py,sha256=
|
|
374
|
+
holado_report/report/builders/failure_report_builder.py,sha256=WLLlLgLbEyYJNENEoxSkQQSf11DDoKpSa4kdaq7eV8U,6533
|
|
402
375
|
holado_report/report/builders/json_execution_historic_report_builder.py,sha256=M7OGUvkqNRTG5Td7fO96tv1SJEzRzjm0pl1W02v052E,5929
|
|
403
376
|
holado_report/report/builders/report_builder.py,sha256=5qlhxbdTkSN7p9q6EADkpHQGPDVEHquIhgA3mK2Ck2k,2261
|
|
404
|
-
holado_report/report/builders/short_scenario_failed_report_builder.py,sha256=
|
|
377
|
+
holado_report/report/builders/short_scenario_failed_report_builder.py,sha256=50pXhWX8xwIDZWSFaBejzMUlS9a0GRXqA82d84V3udk,4012
|
|
405
378
|
holado_report/report/builders/summary_report_builder.py,sha256=v4LG3W5x_y4FH0kh_5MRaG8pyPOV2GfhlBImsW4BJrs,3954
|
|
406
|
-
holado_report/report/builders/
|
|
407
|
-
holado_report/report/builders/
|
|
379
|
+
holado_report/report/builders/summary_scenario_by_category_report_builder.py,sha256=1rzuF4KFPzO5jFuvC_OKvsnNMRrzW3zG5nU5GUSux1U,4274
|
|
380
|
+
holado_report/report/builders/summary_scenario_failed_report_builder.py,sha256=uqf86SUAiIQLRQOV0A434oR8Bj4e_DtxqRsy-pe84p4,3063
|
|
381
|
+
holado_report/report/builders/summary_scenario_report_builder.py,sha256=ZtOg5SWgFUsOJyG-KLybT-8twTX3CwmuFTVIaWJXXZ8,3865
|
|
408
382
|
holado_report/report/reports/base_report.py,sha256=NGnWe66uyvT4bCjhd3upwVpc6yQ2gyVNFhcy-3LeQsE,6850
|
|
409
383
|
holado_report/report/reports/feature_report.py,sha256=i0wpk3LQLArVjWDsP9UcNSJzAUWwLhe73HNyfye2gYQ,4810
|
|
410
384
|
holado_report/report/reports/scenario_report.py,sha256=eMyqw9EzaKMmX3pGFJN1rqAOQ5eqO2ISZdxAfK3XQR4,2945
|
|
@@ -486,7 +460,7 @@ holado_system/tests/behave/steps/__init__.py,sha256=7LrCSTHk5oHNuEsr4IhJuNDsohtR
|
|
|
486
460
|
holado_system/tests/behave/steps/system/commands_steps.py,sha256=uYiojPpYPkfif8l8afRrJ0sj-wFBE4j1x67BDMNs76Q,3901
|
|
487
461
|
holado_system/tests/behave/steps/system/file_steps.py,sha256=-RPUGEjsYfzWIMRDiQRalmvspPZIPP8YMzSZvSI4-p8,9966
|
|
488
462
|
holado_system/tests/behave/steps/system/system_steps.py,sha256=2XrZwuAaYDjB_HvPgxZq9MpYB_Zo7FVZ0DYcmtKht2s,3778
|
|
489
|
-
holado_test/__init__.py,sha256=
|
|
463
|
+
holado_test/__init__.py,sha256=abDwvbUJHzY0WII3x6oBwMLOvZhG2o0nMpNdba6Lifw,1750
|
|
490
464
|
holado_test/test_config.py,sha256=yQK2jNHEGltGc3fmsAgcsKN4y3_nuldZHD45XEMrsQA,1575
|
|
491
465
|
holado_test/behave/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
492
466
|
holado_test/behave/behave.py,sha256=IiqT_F45C-xVY2T8sKDPV7NsFCiGNzb8xpoTaXD-PXg,17708
|
|
@@ -502,24 +476,24 @@ holado_test/common/context/step_context.py,sha256=jknJVU0OrzRaqlTJyhwBFjr9uKPe1d
|
|
|
502
476
|
holado_test/common/exceptions/undefined_step_exception.py,sha256=SHHX22iz4Ip-V4Y3aM2EJFDt30CCS5EaauN6KB-JORo,1461
|
|
503
477
|
holado_test/scenario/step_tools.py,sha256=iNay6tQPUi4sG-a8PY5LbbLpX0PRakkOj3ls98aEbHM,26375
|
|
504
478
|
holado_test/scenario/tester_tools.py,sha256=Tv035FyXPjQ46Ep8KuPOjOvzJFvxnbv9EsrSihUzAwg,2479
|
|
505
|
-
holado_test/test_server/client/rest/test_server_client.py,sha256=WJG-_FLSg1YuRXUBX-5RXd-97XEnUv1UfTvyvQnXLo4,5317
|
|
506
|
-
holado_test/test_server/server/Dockerfile,sha256=TR_xUU2YLmKYWeGUaRRZRhaBHKHa4Y_1nqQDquK843w,1744
|
|
507
|
-
holado_test/test_server/server/requirements.txt,sha256=c2iNG9IZZogAEC9oSWRTWEF9-OHW0vRtijPNK4P6_xY,45
|
|
508
|
-
holado_test/test_server/server/run_test_server_in_docker.sh,sha256=ISNvFT1dBM6aiw5Iv6yBhInn7L8ZYyz_7EDK_X1eCvk,3121
|
|
509
|
-
holado_test/test_server/server/core/server_context.py,sha256=aDl5rOJpxG9MT_jpymL0ST9z7FpoNOBAk5dLGAPGXas,1223
|
|
510
|
-
holado_test/test_server/server/core/server_manager.py,sha256=PW5ShUdnbdq6E3Ou87C5feXuJRc1V7qADkmGItLIi3A,2890
|
|
511
|
-
holado_test/test_server/server/rest/README,sha256=J_LIXWFxtxc8okQGZ8Kk0dMSRra9oUzbMP_ylCe4pTo,161
|
|
512
|
-
holado_test/test_server/server/rest/initialize_holado.py,sha256=UxNphXyjs-xraorzMWjDe6-QYw_Q3mtykyY-ENYZB1o,3464
|
|
513
|
-
holado_test/test_server/server/rest/logging.conf,sha256=yeNIHFQCYlDmkdLlQ3NCoMuxpUNn6i8ZDAzOUna_2aA,1282
|
|
514
|
-
holado_test/test_server/server/rest/openapi.yaml,sha256=4Juf_QggWo7z9te3_sS96TxxARWU1MtFkJZAilEsxr8,1027
|
|
515
|
-
holado_test/test_server/server/rest/run.py,sha256=xS_uCK7X3XqcuvpSSesW7xx9PE6FbFvwj0CqxBDWIks,2389
|
|
516
|
-
holado_test/test_server/server/rest/api/__init__.py,sha256=4QcsiWhFX0sGhJYuoqUUfwEYb6ceIDlFFlU1q3ls7Xc,1442
|
|
517
|
-
holado_test/test_server/server/rest/api/campaign/__init__.py,sha256=btZb20N5k7_WbowNAC1C7yYDUkwPnUU5QUmh-jO0bhg,1586
|
|
518
|
-
holado_test/test_server/server/rest/api/campaign/scenario.py,sha256=4eTIScEGL0GKD7g6aIPHJVvaVbwz487zlEg9mRQv84Y,1737
|
|
519
479
|
holado_test/tests/behave/steps/__init__.py,sha256=rdqrp-UN7vRplIqORx4sXyKwMUkptRizyLWudsmYehM,1362
|
|
520
480
|
holado_test/tests/behave/steps/scenario/exception_steps.py,sha256=ZIE92Dz7a6O_c0jAP_0dj6Hc0tnW6YRgNKd4_aBpeR0,4054
|
|
521
481
|
holado_test/tests/behave/steps/scenario/scenario_steps.py,sha256=RfM5Lh4sduKeYSD1NzUxtQ8705O7nausoz_gnpAJQB0,4616
|
|
522
482
|
holado_test/tests/behave/steps/scenario/tester_steps.py,sha256=zEm36-su8jrqe0uv8ai4xN97j3_p2jmcPv_-jRRu688,2997
|
|
483
|
+
holado_test/tools/test_server/client/rest/test_server_client.py,sha256=WJG-_FLSg1YuRXUBX-5RXd-97XEnUv1UfTvyvQnXLo4,5317
|
|
484
|
+
holado_test/tools/test_server/server/Dockerfile,sha256=gjLXjz7toyCUhtUjrZAF77QucWVy_e5ebI2aBaB0Qjc,1470
|
|
485
|
+
holado_test/tools/test_server/server/requirements.txt,sha256=c2iNG9IZZogAEC9oSWRTWEF9-OHW0vRtijPNK4P6_xY,45
|
|
486
|
+
holado_test/tools/test_server/server/run_test_server_in_docker.sh,sha256=ISNvFT1dBM6aiw5Iv6yBhInn7L8ZYyz_7EDK_X1eCvk,3121
|
|
487
|
+
holado_test/tools/test_server/server/core/server_context.py,sha256=90ZRSvWLkkuxZ7SB99SOPnLt_U9rRlXEvVSo4VVRnuM,1229
|
|
488
|
+
holado_test/tools/test_server/server/core/server_manager.py,sha256=PW5ShUdnbdq6E3Ou87C5feXuJRc1V7qADkmGItLIi3A,2890
|
|
489
|
+
holado_test/tools/test_server/server/rest/README,sha256=J_LIXWFxtxc8okQGZ8Kk0dMSRra9oUzbMP_ylCe4pTo,161
|
|
490
|
+
holado_test/tools/test_server/server/rest/initialize_holado.py,sha256=UxNphXyjs-xraorzMWjDe6-QYw_Q3mtykyY-ENYZB1o,3464
|
|
491
|
+
holado_test/tools/test_server/server/rest/logging.conf,sha256=yeNIHFQCYlDmkdLlQ3NCoMuxpUNn6i8ZDAzOUna_2aA,1282
|
|
492
|
+
holado_test/tools/test_server/server/rest/openapi.yaml,sha256=4Juf_QggWo7z9te3_sS96TxxARWU1MtFkJZAilEsxr8,1027
|
|
493
|
+
holado_test/tools/test_server/server/rest/run.py,sha256=OpDBkjBX_ZoNfwTWc2VV7dINALjp7ZrGUUiDaSEHQVU,2395
|
|
494
|
+
holado_test/tools/test_server/server/rest/api/__init__.py,sha256=4QcsiWhFX0sGhJYuoqUUfwEYb6ceIDlFFlU1q3ls7Xc,1442
|
|
495
|
+
holado_test/tools/test_server/server/rest/api/campaign/__init__.py,sha256=btZb20N5k7_WbowNAC1C7yYDUkwPnUU5QUmh-jO0bhg,1586
|
|
496
|
+
holado_test/tools/test_server/server/rest/api/campaign/scenario.py,sha256=4eTIScEGL0GKD7g6aIPHJVvaVbwz487zlEg9mRQv84Y,1737
|
|
523
497
|
holado_value/__init__.py,sha256=60VyLyWux76dFwn03uH4Fz3R6itf6fqKu0pQUdvwblU,1561
|
|
524
498
|
holado_value/common/tables/value_table.py,sha256=fJgb-HWdlMwHOAx5CS38sPiVrjGelEiQBbG9HuHqe-A,1726
|
|
525
499
|
holado_value/common/tables/value_table_cell.py,sha256=vCL8uSTEKOpI9G5f0epgJMArFxQidfWTCRHBZbdrsjc,3344
|
|
@@ -554,7 +528,7 @@ test_holado/__main__.py,sha256=PVdCX8V_RGRzbQQKVxf7eyt8a10XfUJ1pcaajGgIlus,1509
|
|
|
554
528
|
test_holado/build_docker_image_to_test_holado_in_docker.sh,sha256=B3hbi0yKnEC-t9S18o6ZR27AU1bqiuptwOqm6H7tv8s,142
|
|
555
529
|
test_holado/environment.py,sha256=SLGJ2v1BoyP_s_KucvuQJLnWPzPJAD6cS4C8eBNaJW8,2381
|
|
556
530
|
test_holado/initialize_holado.py,sha256=IPYH-GYNiHV5-7ZCCH6CFmPpmACsPrTV74TYz3MRjpA,3102
|
|
557
|
-
test_holado/logging.conf,sha256=
|
|
531
|
+
test_holado/logging.conf,sha256=vsCMsRnvSMHl6nBmRqG7kBYC3qshAcxiAg5iUUw1Udw,1318
|
|
558
532
|
test_holado/test_holado_session_context.py,sha256=qOB_i2k8mYjkR3-q2uv0B04xFc1K3p-K20ttYwe1Z18,1364
|
|
559
533
|
test_holado/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
560
534
|
test_holado/features/NonReg/api/REST.feature,sha256=yAhCpWk7HbHztkdwkfcU-TrfnJVoOzHvYMmk9pUy50A,689
|
|
@@ -620,7 +594,7 @@ test_holado/features/NonReg/tools/sFTP.feature,sha256=LWhkOSlvCGN90qx3zXSlZrgWZs
|
|
|
620
594
|
test_holado/features/NonReg/tools/S3/boto3_client.feature,sha256=mAGMcyQRSy3VSAzkGUKIGM00F_OD8hfXZv1JYWztpqU,3384
|
|
621
595
|
test_holado/features/NonReg/tools/S3/minio_client.feature,sha256=c2i36-ehegxQbBBKR57Y5TTmdJK6fV4tGI6ksvHtyA8,3778
|
|
622
596
|
test_holado/features/Test/logger.feature,sha256=Ptiq79z3P2aMNJYRSRuMvhArc_4P3Ey6Rv1RolGRIBw,531
|
|
623
|
-
test_holado/features/Test/
|
|
597
|
+
test_holado/features/Test/test_host_controller.feature,sha256=DTihcXDXY7-II0vcVvrMfPC51KexssB96fIgAPdpeYk,342
|
|
624
598
|
test_holado/features/Test/test_parameter.feature,sha256=Yu5RycNfqUWN2O7F5u52lGEydhALeG5NmSZnyifGbK4,378
|
|
625
599
|
test_holado/resources/proto/definitions/protobuf/custom_types/field_types.proto,sha256=d2QU_j-qKB6pdvUKQCGv-gSgBOPW6QcBaKrQMqZ_kNM,398
|
|
626
600
|
test_holado/resources/proto/definitions/protobuf/protobuf.dev/tutorial/addressbook.proto,sha256=rxzTe354X-R2UeKi6i7mjcTavPvQctLRPPrWYYsWZBU,1362
|
|
@@ -671,7 +645,7 @@ test_holado/tools/django/api_rest/api_rest/api1/serializers.py,sha256=o_YxFr-tgC
|
|
|
671
645
|
test_holado/tools/django/api_rest/api_rest/api1/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
|
|
672
646
|
test_holado/tools/django/api_rest/api_rest/api1/views.py,sha256=kOt2xT6bxO47_z__5yYR9kcYIWWv4qYzpX0K8Tqonik,758
|
|
673
647
|
test_holado/tools/django/api_rest/api_rest/api1/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
674
|
-
holado-0.
|
|
675
|
-
holado-0.
|
|
676
|
-
holado-0.
|
|
677
|
-
holado-0.
|
|
648
|
+
holado-0.11.0.dist-info/METADATA,sha256=jgeXxMQkW9hPhsCkZoSWN_wgLsguag3f0_JWpDqbIGk,7672
|
|
649
|
+
holado-0.11.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
650
|
+
holado-0.11.0.dist-info/licenses/LICENSE,sha256=IgGmNlcFHnbp7UWrLJqAFvs_HIgjJDTmjCNRircJLsk,1070
|
|
651
|
+
holado-0.11.0.dist-info/RECORD,,
|
|
@@ -158,13 +158,13 @@ class PathManager(object):
|
|
|
158
158
|
else:
|
|
159
159
|
return base_path
|
|
160
160
|
|
|
161
|
-
def get_reports_path(self, name=None):
|
|
161
|
+
def get_reports_path(self, name=None, with_application_group=True):
|
|
162
162
|
base_path = os.getenv('HOLADO_OUTPUT_BASEDIR')
|
|
163
163
|
if base_path is None:
|
|
164
164
|
base_path = os.path.join(self.get_user_home_path(), '.holado', 'output')
|
|
165
165
|
|
|
166
166
|
res = os.path.join(base_path, "reports")
|
|
167
|
-
if Config.application_group is not None:
|
|
167
|
+
if with_application_group and Config.application_group is not None:
|
|
168
168
|
res = os.path.join(res, Config.application_group)
|
|
169
169
|
if name is not None:
|
|
170
170
|
res = os.path.join(res, name)
|
|
@@ -2,20 +2,20 @@
|
|
|
2
2
|
MIIDZTCCAk2gAwIBAgIBKjANBgkqhkiG9w0BAQsFADCBizELMAkGA1UEBhMCVVMx
|
|
3
3
|
CzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMQ8wDQYDVQQKDAZ0
|
|
4
4
|
Y3BiaW4xDDAKBgNVBAsMA29wczETMBEGA1UEAwwKdGNwYmluLmNvbTEjMCEGCSqG
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
FOLuMowBSAZfV5v82LmlaIIOvU/
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
5
|
+
SIb3DQEJARYUaGFycnliYWdkaUBnbWFpbC5jb20wHhcNMjUxMDIyMDkwOTA0WhcN
|
|
6
|
+
MjUxMDIzMDkwOTA0WjAcMRowGAYDVQQDDBF0Y3BiaW4uY29tLWNsaWVudDCCASIw
|
|
7
|
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKxBxWBybXhqGWMhtI3vpad9SP9k
|
|
8
|
+
0IsZSIHRRPI27FU/kfoTfMrQayKVggdlyenD3OojsEfNd8mvjz9ApIpogouYgZD4
|
|
9
|
+
0zqHT8G4B15RASWP2K20WWNuKr7HgvraPwTbjDbtg8XU4kwgGOs1XftPhSi9N2DU
|
|
10
|
+
/O6sEkgprqpkNAAZvn8bHRTpDB4FMqbTmH3ojawtz6PeW4I9YJLvbYFYwmmYrNpD
|
|
11
|
+
L5pLnfyt6MS5/x5MGlpvcCaiQU3hWS8JOKpgP6XrIIsu65fQC+UU4MJIYg/StGPj
|
|
12
|
+
rJ7eRBUoi11tGMCfF38AtYUgdNXdVjDM93F+Oks8tVGSZ9d7cwQknKMUgwECAwEA
|
|
13
|
+
AaNCMEAwHQYDVR0OBBYEFBOraPFlFALkITNnlh3s4B564QvFMB8GA1UdIwQYMBaA
|
|
14
|
+
FOLuMowBSAZfV5v82LmlaIIOvU/DMA0GCSqGSIb3DQEBCwUAA4IBAQA/LgtD4+3x
|
|
15
|
+
myJUWPz8TAJ41zIK2AxUgLmlinQnKzvXdHFjJZtYQPxadOdZon7q3Jw7J2FpaQLh
|
|
16
|
+
cc1h9pKIVaPXiR6I4CStKzw6peBtKJ2oN6uaZpSCQza+TC7Bg50uMbJmW+ph8tkY
|
|
17
|
+
t2wmNFh6Q3+yC8kxQM5u0Cg2NDYGepwNhdUfVy1HpgLaM8Gr5gPSD01p1fyb7pcJ
|
|
18
|
+
MWBK0kK6f0JcxZsIvSVuDX4Fc51LppEqv1THL5G4q3sWacksy0VG/izxLgB3hXs1
|
|
19
|
+
VJBUWAMgbvAjAV15XCmvC3k5mMlyIrfXRO8uPpD5iIDdgQQJ5/Bo4UPFGJPOkLV3
|
|
20
|
+
OEqtvNchmuBf
|
|
21
21
|
-----END CERTIFICATE-----
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
-----BEGIN PRIVATE KEY-----
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
2
|
+
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCsQcVgcm14ahlj
|
|
3
|
+
IbSN76WnfUj/ZNCLGUiB0UTyNuxVP5H6E3zK0GsilYIHZcnpw9zqI7BHzXfJr48/
|
|
4
|
+
QKSKaIKLmIGQ+NM6h0/BuAdeUQElj9ittFljbiq+x4L62j8E24w27YPF1OJMIBjr
|
|
5
|
+
NV37T4UovTdg1PzurBJIKa6qZDQAGb5/Gx0U6QweBTKm05h96I2sLc+j3luCPWCS
|
|
6
|
+
722BWMJpmKzaQy+aS538rejEuf8eTBpab3AmokFN4VkvCTiqYD+l6yCLLuuX0Avl
|
|
7
|
+
FODCSGIP0rRj46ye3kQVKItdbRjAnxd/ALWFIHTV3VYwzPdxfjpLPLVRkmfXe3ME
|
|
8
|
+
JJyjFIMBAgMBAAECggEBAIfNwqJrFEseuq0g4YwVJ3CIoYhYHuHLKRLPvZ+IFYKP
|
|
9
|
+
/7I8suHittQpMr5KTYly1TPytwOkxY/ITRL9D7ve8SzFK0D0KvO1wfdj8ss06caH
|
|
10
|
+
RbiMuvxc2m5WNLk4Xv6haEXVs1HAqDiEBaFKDbIX209m/cXlpRM1raQe2ImVPjnk
|
|
11
|
+
xtdzpLYgRIf4MHtjAI22knlsSgypay6cpUF+PArmgepmsIaw+ioy5ItSWTmvq8QU
|
|
12
|
+
9KhnEtdn8UOciLiP2rnLgql+qF8RCL9R/NTTZo+kC00AMEliQBFaLHsLHuFuAQwT
|
|
13
|
+
6X9ueOtEOAewWhhelScbfub5ZlVwvvWhawLqoyGiRZECgYEA1TAlMXhZCrtAIyk/
|
|
14
|
+
Q0dCbrMl24Mr6Yv+PC8Z9N/EC5UrddPwk2W4/L+e8kU6XyyJ4Gw3ZQgJd8gTb1/0
|
|
15
|
+
zpnaFXdK2VhyHxWz3UNzQ4lRuMVB1qK/5/yByqRhysKczzhufhf2XuIcDqiYsWHg
|
|
16
|
+
C4VwpQAQSp9Vbcpd1biXEv1O8AMCgYEAztliCAXlExU3DmcRWbV0RpIjREAm9f6w
|
|
17
|
+
uX8RRuFYZsHVY1pEkv5iACjofeZz9s/EC8QGo4ixcELEou5pFX1HYFyjjw2CwBmS
|
|
18
|
+
a63l5KJyQcChF2tkDaEFsspM0Tri001h8LpChep6cZK4CkHkJ3MTXD4mqa+vpYgr
|
|
19
|
+
RDUwZhdYu6sCgYBO0nE9/Dg3zonlNi/sySEX2ubpZXNL83W5fNTFBCLxAWNDOmxd
|
|
20
|
+
oyOlV5gGDXCKleYYcwp8MV+GyRPefwT9ikbm3uduutPfCGArM/AfDVuIzG4OVLhN
|
|
21
|
+
pr+6U9LQa+ocd8nqlyOBa2piRRXHp991gw3mA8MCRC0K3eKZzZkV7VBNTwKBgCTu
|
|
22
|
+
UP9ntgebMRJEOqfOquzyqJNF9O7Uw07LLhV+pF7sWqH7euTXwD2REDlyTOATJkiH
|
|
23
|
+
fjvyauPFOABzGpX4oSbGQ3mGCwMrTaYmDTat/kJZFynsRZfdWPwb/G0a22aomUT2
|
|
24
|
+
rGvmemgOrwc9znNwq1M70YFYWb7vOfJaoMKJhpEzAoGBAKQCWrZWZRBEeid9QsQ3
|
|
25
|
+
SVedImc8PN5IOC0vyydrkF5qV8LYsPmqMzfkOx0XAx6xrEUyjtSzZRgz/na1EzE6
|
|
26
|
+
juGFIBW30Dx3Ej2A/pKQ7/Yuhdrhl5Nd/Dv5sBgtziBeC+5PYI0XqCV7nIGGOu2/
|
|
27
|
+
8SjHFk7En45EM/cT8l/VahAv
|
|
28
28
|
-----END PRIVATE KEY-----
|
|
@@ -82,7 +82,7 @@ class CampaignManager(object):
|
|
|
82
82
|
self.import_campaign_reports(report_path)
|
|
83
83
|
|
|
84
84
|
def __get_campaigns_report_paths(self, since_datetime):
|
|
85
|
-
reports_path = SessionContext.instance().path_manager.get_reports_path()
|
|
85
|
+
reports_path = SessionContext.instance().path_manager.get_reports_path(name="test_runner", with_application_group=False)
|
|
86
86
|
file_paths = SessionContext.instance().path_manager.find_files(reports_path, subdir_relative_path='report_summary_scenario_all.txt', since_datetime=since_datetime)
|
|
87
87
|
return [os.path.dirname(p) for p in file_paths]
|
|
88
88
|
|
|
@@ -185,7 +185,7 @@ class CampaignManager(object):
|
|
|
185
185
|
scenario_name = parts[1]
|
|
186
186
|
status_info = parts[-1]
|
|
187
187
|
|
|
188
|
-
m = re.match(r"^(.*?)(?: \(.*\))?$", status_info)
|
|
188
|
+
m = re.match(r"^(.*?)(?: \(.*\)| => .*)?$", status_info)
|
|
189
189
|
status = m.group(1)
|
|
190
190
|
|
|
191
191
|
self.update_or_add_campaign_scenario(camp_id, scenario_name, status=status, status_at_str=status_dt_str)
|
|
@@ -48,7 +48,7 @@ class FailureReportBuilder(ReportBuilder):
|
|
|
48
48
|
if step_error_message not in self.__failures:
|
|
49
49
|
self.__failures[step_error_message] = []
|
|
50
50
|
|
|
51
|
-
category_str = f"
|
|
51
|
+
category_str = f" => {category_validation}" if category_validation else ""
|
|
52
52
|
if self.__file_format == 'txt':
|
|
53
53
|
msg_list = []
|
|
54
54
|
msg_list.append(f"scenario in {scenario.filename} at l.{scenario.line} - step {step_number} (l.{step_failed.line}) - {status_validation}{category_str}")
|
|
@@ -49,7 +49,7 @@ class ShortScenarioFailedReportBuilder(ReportBuilder):
|
|
|
49
49
|
self.__open_file_if_needed()
|
|
50
50
|
|
|
51
51
|
msg_list = []
|
|
52
|
-
category_str = f"
|
|
52
|
+
category_str = f" => {category_validation}" if category_validation else ""
|
|
53
53
|
if step_failed is not None:
|
|
54
54
|
msg_list.append(f"scenario in {scenario.filename} at l.{scenario.line} - step {step_number} (l.{step_failed.line}) - {status_validation}{category_str}")
|
|
55
55
|
else:
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
|
|
2
|
+
#################################################
|
|
3
|
+
# HolAdo (Holistic Automation do)
|
|
4
|
+
#
|
|
5
|
+
# (C) Copyright 2021-2025 by Eric Klumpp
|
|
6
|
+
#
|
|
7
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
8
|
+
#
|
|
9
|
+
# The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
10
|
+
|
|
11
|
+
# The Software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the Software.
|
|
12
|
+
#################################################
|
|
13
|
+
|
|
14
|
+
import logging
|
|
15
|
+
from holado_report.report.builders.report_builder import ReportBuilder
|
|
16
|
+
from holado_system.system.filesystem.file import File
|
|
17
|
+
|
|
18
|
+
logger = logging.getLogger(__name__)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class SummaryScenarioByCategoryReportBuilder(ReportBuilder):
|
|
23
|
+
def __init__(self, filepath, exclude_categories=['Always Success']):
|
|
24
|
+
self.__filepath = filepath
|
|
25
|
+
self.__exclude_categories = exclude_categories
|
|
26
|
+
self.__scenarios_by_category = {}
|
|
27
|
+
self.__categories_order = [
|
|
28
|
+
'Regression',
|
|
29
|
+
'Always Failed',
|
|
30
|
+
'Random',
|
|
31
|
+
'Regression but Not Relevant',
|
|
32
|
+
'Always Not Relevant',
|
|
33
|
+
'Random but Not Relevant',
|
|
34
|
+
'Fixed',
|
|
35
|
+
'Always Success',
|
|
36
|
+
'Unknown'
|
|
37
|
+
]
|
|
38
|
+
|
|
39
|
+
def build(self):
|
|
40
|
+
'''
|
|
41
|
+
The file is built after each scenario
|
|
42
|
+
'''
|
|
43
|
+
pass
|
|
44
|
+
|
|
45
|
+
def after_scenario(self, scenario, scenario_report=None):
|
|
46
|
+
from holado_report.report.report_manager import ReportManager
|
|
47
|
+
category_validation, status_validation, step_failed, step_number = ReportManager.get_current_scenario_status_information(scenario)
|
|
48
|
+
|
|
49
|
+
if category_validation is not None:
|
|
50
|
+
ind = category_validation.find(' (')
|
|
51
|
+
category = category_validation[:ind] if ind > 0 else category_validation
|
|
52
|
+
|
|
53
|
+
# Manage excluded categories
|
|
54
|
+
if category in self.__exclude_categories:
|
|
55
|
+
return
|
|
56
|
+
|
|
57
|
+
# Add scenario information into category
|
|
58
|
+
category_str = f" => {category_validation}" if category_validation else ""
|
|
59
|
+
if step_failed is not None:
|
|
60
|
+
scenario_txt = f"scenario in {scenario.filename} at l.{scenario.line} - step {step_number} (l.{step_failed.line}) - {status_validation}{category_str}"
|
|
61
|
+
else:
|
|
62
|
+
scenario_txt = f"scenario in {scenario.filename} at l.{scenario.line} - step ? (missing step implementation ?) - {status_validation}{category_str}"
|
|
63
|
+
|
|
64
|
+
if category not in self.__scenarios_by_category:
|
|
65
|
+
self.__scenarios_by_category[category] = []
|
|
66
|
+
self.__scenarios_by_category[category].append(scenario_txt)
|
|
67
|
+
|
|
68
|
+
# Update categories order with unexpected category
|
|
69
|
+
if category not in self.__categories_order:
|
|
70
|
+
self.__categories_order.append(category)
|
|
71
|
+
|
|
72
|
+
self.__update_file()
|
|
73
|
+
|
|
74
|
+
def __update_file(self):
|
|
75
|
+
with File(self.__filepath, mode='wt', auto_flush=False) as fout:
|
|
76
|
+
for category in self.__categories_order:
|
|
77
|
+
if category in self.__scenarios_by_category:
|
|
78
|
+
fout.writelines([
|
|
79
|
+
f"## {category}",
|
|
80
|
+
""
|
|
81
|
+
])
|
|
82
|
+
fout.writelines(self.__scenarios_by_category[category])
|
|
83
|
+
fout.writelines([
|
|
84
|
+
""
|
|
85
|
+
""
|
|
86
|
+
])
|
|
87
|
+
|
|
@@ -44,7 +44,7 @@ class SummaryScenarioFailedReportBuilder(ReportBuilder):
|
|
|
44
44
|
|
|
45
45
|
def __file_fail_add_scenario(self, scenario, category_validation, status_validation, step_failed, step_number):
|
|
46
46
|
self.__open_file_if_needed()
|
|
47
|
-
category_str = f"
|
|
47
|
+
category_str = f" => {category_validation}" if category_validation else ""
|
|
48
48
|
if step_failed is not None:
|
|
49
49
|
self.__file_fail.write(f"scenario in {scenario.filename} at l.{scenario.line} - step {step_number} (l.{step_failed.line}) - {status_validation}{category_str}\n")
|
|
50
50
|
else:
|
|
@@ -63,7 +63,7 @@ class SummaryScenarioReportBuilder(ReportBuilder):
|
|
|
63
63
|
dt = DateTime.now()
|
|
64
64
|
dt_str = DateTime.datetime_2_str(dt, FORMAT_DATETIME_HUMAN_SECOND)
|
|
65
65
|
|
|
66
|
-
category_str = f"
|
|
66
|
+
category_str = f" => {category_validation}" if category_validation else ""
|
|
67
67
|
if text:
|
|
68
68
|
self.__file.write(f"{dt_str} - {scenario.filename} at l.{scenario.line} - {text} - {status_validation}{category_str}\n")
|
|
69
69
|
else:
|
|
@@ -23,6 +23,7 @@ from holado_report.report.reports.base_report import BaseReport
|
|
|
23
23
|
from holado_scripting.common.tools.evaluate_parameters import EvaluateParameters
|
|
24
24
|
from holado_report.report.builders.summary_scenario_report_builder import SummaryScenarioReportBuilder
|
|
25
25
|
from holado_report.report.builders.failure_report_builder import FailureReportBuilder
|
|
26
|
+
from holado_report.report.builders.summary_scenario_by_category_report_builder import SummaryScenarioByCategoryReportBuilder
|
|
26
27
|
# from holado_core.scenario.scenario_duration_manager import ScenarioDurationManager
|
|
27
28
|
|
|
28
29
|
logger = logging.getLogger(__name__)
|
|
@@ -66,6 +67,9 @@ class ReportManager(BaseReport):
|
|
|
66
67
|
fn = self.get_path("report_summary_scenario_failed.txt")
|
|
67
68
|
self.add_report_builder(SummaryScenarioFailedReportBuilder(fn))
|
|
68
69
|
|
|
70
|
+
fn = self.get_path("report_summary_scenario_failed_by_category.txt")
|
|
71
|
+
self.add_report_builder(SummaryScenarioByCategoryReportBuilder(fn))
|
|
72
|
+
|
|
69
73
|
fn = self.get_path("report_summary_scenario_all.txt")
|
|
70
74
|
self.add_report_builder(SummaryScenarioReportBuilder(fn))
|
|
71
75
|
|
|
@@ -232,33 +236,59 @@ class ReportManager(BaseReport):
|
|
|
232
236
|
if cls._get_test_server_client().is_available:
|
|
233
237
|
# Get scenario execution statuses
|
|
234
238
|
scenario_name = f"{scenario.filename} at l.{scenario.line}"
|
|
235
|
-
sce_hist = cls._get_test_server_client().get_scenario_history(scenario_name=scenario_name, size=
|
|
236
|
-
statuses = [s['status'] for s in sce_hist[0]['statuses']] if sce_hist else []
|
|
239
|
+
sce_hist = cls._get_test_server_client().get_scenario_history(scenario_name=scenario_name, size=29)
|
|
240
|
+
statuses = [s['status'] for s in reversed(sce_hist[0]['statuses'])] if sce_hist else []
|
|
237
241
|
statuses.append(status)
|
|
238
242
|
|
|
239
243
|
# Get scenario status sequences
|
|
240
244
|
passed_sequences = []
|
|
245
|
+
is_failed_relevant = None
|
|
241
246
|
for status in statuses:
|
|
242
247
|
if status == 'Passed':
|
|
243
248
|
passed = True
|
|
244
249
|
elif status.startswith("Failed"):
|
|
245
250
|
passed = False
|
|
251
|
+
if status == "Failed":
|
|
252
|
+
is_failed_relevant = True
|
|
253
|
+
elif is_failed_relevant is None:
|
|
254
|
+
is_failed_relevant = False
|
|
246
255
|
else:
|
|
247
256
|
continue
|
|
248
|
-
|
|
249
|
-
|
|
257
|
+
|
|
258
|
+
if len(passed_sequences) == 0 or passed != passed_sequences[-1][0]:
|
|
259
|
+
passed_sequences.append([passed, 1])
|
|
260
|
+
else:
|
|
261
|
+
passed_sequences[-1][1] += 1
|
|
250
262
|
|
|
251
263
|
# Compute category
|
|
252
264
|
if passed_sequences:
|
|
265
|
+
nb_exec = sum([x[1] for x in passed_sequences])
|
|
266
|
+
last_passed, last_nb_times = passed_sequences[-1]
|
|
253
267
|
if len(passed_sequences) == 1:
|
|
254
|
-
|
|
268
|
+
if last_passed:
|
|
269
|
+
category = f'Always Success ({last_nb_times})'
|
|
270
|
+
elif is_failed_relevant:
|
|
271
|
+
category = f'Always Failed ({last_nb_times})'
|
|
272
|
+
else:
|
|
273
|
+
category = f'Always Not Relevant ({last_nb_times})'
|
|
274
|
+
elif last_passed and len(passed_sequences) in [2, 3]:
|
|
275
|
+
category = f'Fixed ({last_nb_times} success / {nb_exec})'
|
|
255
276
|
elif len(passed_sequences) > 2:
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
277
|
+
nb_fail = sum([x[1] for x in passed_sequences if not x[0]])
|
|
278
|
+
if is_failed_relevant:
|
|
279
|
+
category = f'Random ({nb_fail} fails / {nb_exec})'
|
|
280
|
+
else:
|
|
281
|
+
category = f'Random but Not Relevant ({nb_fail} fails / {nb_exec})'
|
|
282
|
+
elif not last_passed:
|
|
283
|
+
if is_failed_relevant:
|
|
284
|
+
category = f'Regression ({last_nb_times} fails / {nb_exec})'
|
|
285
|
+
else:
|
|
286
|
+
category = f'Regression but Not Relevant ({last_nb_times} fails / {nb_exec})'
|
|
259
287
|
else:
|
|
260
|
-
category = '
|
|
261
|
-
|
|
288
|
+
category = f'Unknown (unmanaged sequence: {passed_sequences})'
|
|
289
|
+
|
|
290
|
+
logger.debug(f"Category of scenario '{scenario}': {category} (computed from last statuses: {statuses})")
|
|
291
|
+
|
|
262
292
|
cls._scenario_status_information_by_uid[scenario_uid] = [category, status, step_failed, step_nb]
|
|
263
293
|
|
|
264
294
|
return cls._scenario_status_information_by_uid[scenario_uid]
|
holado_test/__init__.py
CHANGED
|
@@ -23,7 +23,7 @@ def register():
|
|
|
23
23
|
from holado_test.behave.behave_manager import BehaveManager
|
|
24
24
|
SessionContext.instance().services.register_service_type("behave_manager", BehaveManager)
|
|
25
25
|
|
|
26
|
-
from holado_test.test_server.client.rest.test_server_client import TestServerClient
|
|
26
|
+
from holado_test.tools.test_server.client.rest.test_server_client import TestServerClient
|
|
27
27
|
SessionContext.instance().services.register_service_type("test_server_client", TestServerClient.new_client)
|
|
28
28
|
|
|
29
29
|
|
|
@@ -1,20 +1,14 @@
|
|
|
1
1
|
### Build
|
|
2
2
|
|
|
3
3
|
#FROM python:3.12.9-alpine3.21 AS build
|
|
4
|
-
FROM python:3.12.11-alpine3.22 AS build
|
|
4
|
+
#FROM python:3.12.11-alpine3.22 AS build
|
|
5
|
+
FROM python:3.12.12-alpine3.22 AS build
|
|
5
6
|
|
|
6
7
|
# Install to build python requirements
|
|
7
8
|
RUN apk update \
|
|
8
9
|
&& apk --no-cache --update add build-base \
|
|
9
10
|
&& apk --update add alpine-sdk \
|
|
10
|
-
&& apk add libffi-dev
|
|
11
|
-
&& apk add postgresql-dev gcc python3-dev musl-dev \
|
|
12
|
-
&& apk add protobuf-dev
|
|
13
|
-
|
|
14
|
-
# Add tools
|
|
15
|
-
RUN apk --no-cache add bash \
|
|
16
|
-
&& apk --no-cache add nano \
|
|
17
|
-
&& apk --no-cache add curl
|
|
11
|
+
&& apk add libffi-dev
|
|
18
12
|
|
|
19
13
|
# Create user
|
|
20
14
|
RUN addgroup appuser \
|
|
@@ -39,12 +33,8 @@ RUN python -m venv /code/env \
|
|
|
39
33
|
### Runtime
|
|
40
34
|
|
|
41
35
|
#FROM python:3.12.9-alpine3.21 AS runtime
|
|
42
|
-
FROM python:3.12.11-alpine3.22 AS runtime
|
|
43
|
-
|
|
44
|
-
# Install for python requirements
|
|
45
|
-
#RUN apk update \
|
|
46
|
-
# && apk --no-cache add libstdc++ \
|
|
47
|
-
# && apk --no-cache add postgresql-dev gcc python3-dev musl-dev
|
|
36
|
+
#FROM python:3.12.11-alpine3.22 AS runtime
|
|
37
|
+
FROM python:3.12.12-alpine3.22 AS runtime
|
|
48
38
|
|
|
49
39
|
# Add tools
|
|
50
40
|
RUN apk --no-cache add bash \
|
|
@@ -59,7 +49,7 @@ USER appuser
|
|
|
59
49
|
# Copy /code from build
|
|
60
50
|
COPY --chown=appuser --from=build /code /code
|
|
61
51
|
|
|
62
|
-
# Copy
|
|
52
|
+
# Copy test server sources
|
|
63
53
|
COPY --chown=appuser ./rest /code/test_server
|
|
64
54
|
|
|
65
55
|
# Activate permanently python venv
|
|
@@ -21,7 +21,7 @@ class TestServerSessionContext(SessionContext):
|
|
|
21
21
|
|
|
22
22
|
# Register new modules
|
|
23
23
|
|
|
24
|
-
from holado_test.test_server.server.core.server_manager import TestServerManager
|
|
24
|
+
from holado_test.tools.test_server.server.core.server_manager import TestServerManager
|
|
25
25
|
self.services.register_service_type("server_manager", TestServerManager,
|
|
26
26
|
lambda m: m.initialize(self.resource_manager) )
|
|
27
27
|
|