holado 0.11.2__py3-none-any.whl → 0.11.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of holado might be problematic. Click here for more details.

Files changed (48) hide show
  1. {holado-0.11.2.dist-info → holado-0.11.4.dist-info}/METADATA +2 -2
  2. {holado-0.11.2.dist-info → holado-0.11.4.dist-info}/RECORD +48 -14
  3. holado_ais/ais/ais_messages.py +2 -2
  4. holado_ais/tests/behave/steps/ais/ais_messages_steps.py +1 -1
  5. holado_core/common/resource/persisted_method_to_call_manager.py +1 -1
  6. holado_python/standard_library/ssl/resources/certificates/tcpbin.crt +16 -16
  7. holado_python/standard_library/ssl/resources/certificates/tcpbin.key +26 -26
  8. holado_report/report/builders/summary_by_category_report_builder.py +86 -0
  9. holado_report/report/report_manager.py +4 -0
  10. holado_test/tools/test_server/client/rest/test_server_client.py +20 -0
  11. holado_test/tools/test_server/server/rest/api/__init__.py +6 -5
  12. holado_test/tools/test_server/server/rest/openapi.yaml +11 -0
  13. holado_tools/__init__.py +38 -0
  14. holado_tools/scripts/execute_persisted_post_processes/execute_persisted_post_processes.py +36 -0
  15. holado_tools/scripts/execute_persisted_post_processes/execute_persisted_post_processes.sh +6 -0
  16. holado_tools/scripts/execute_persisted_post_processes/initialize_holado.py +62 -0
  17. holado_tools/tests/behave/steps/__init__.py +16 -0
  18. holado_tools/tests/behave/steps/tools/host_controller/client_steps.py +97 -0
  19. holado_tools/tools/host_controller/client/rest/host_controller_client.py +168 -0
  20. holado_tools/tools/host_controller/server/Dockerfile +60 -0
  21. holado_tools/tools/host_controller/server/grpc/README +2 -0
  22. holado_tools/tools/host_controller/server/grpc/__init__.py +26 -0
  23. holado_tools/tools/host_controller/server/grpc/proto/compile_proto.py +60 -0
  24. holado_tools/tools/host_controller/server/grpc/proto/definitions/docker_controler.proto +63 -0
  25. holado_tools/tools/host_controller/server/requirements.txt +2 -0
  26. holado_tools/tools/host_controller/server/rest/README +2 -0
  27. holado_tools/tools/host_controller/server/rest/api/__init__.py +24 -0
  28. holado_tools/tools/host_controller/server/rest/api/config.py +57 -0
  29. holado_tools/tools/host_controller/server/rest/api/docker/__init__.py +40 -0
  30. holado_tools/tools/host_controller/server/rest/api/docker/container.py +55 -0
  31. holado_tools/tools/host_controller/server/rest/api/os.py +47 -0
  32. holado_tools/tools/host_controller/server/rest/initialize_holado.py +72 -0
  33. holado_tools/tools/host_controller/server/rest/openapi.yaml +276 -0
  34. holado_tools/tools/host_controller/server/rest/run.py +31 -0
  35. holado_tools/tools/host_controller/server/run_host_controller_in_docker.sh +107 -0
  36. holado_tools/tools/host_viewer/client/rest/host_viewer_client.py +96 -0
  37. holado_tools/tools/host_viewer/server/Dockerfile +60 -0
  38. holado_tools/tools/host_viewer/server/requirements.txt +2 -0
  39. holado_tools/tools/host_viewer/server/rest/README +2 -0
  40. holado_tools/tools/host_viewer/server/rest/api/__init__.py +24 -0
  41. holado_tools/tools/host_viewer/server/rest/api/docker/__init__.py +40 -0
  42. holado_tools/tools/host_viewer/server/rest/initialize_holado.py +72 -0
  43. holado_tools/tools/host_viewer/server/rest/openapi.yaml +113 -0
  44. holado_tools/tools/host_viewer/server/rest/run.py +31 -0
  45. holado_tools/tools/host_viewer/server/run_host_viewer_in_docker.sh +107 -0
  46. test_holado/environment.py +7 -0
  47. {holado-0.11.2.dist-info → holado-0.11.4.dist-info}/WHEEL +0 -0
  48. {holado-0.11.2.dist-info → holado-0.11.4.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: holado
3
- Version: 0.11.2
3
+ Version: 0.11.4
4
4
  Summary: HolAdo framework
5
5
  Project-URL: Homepage, https://gitlab.com/holado_framework/python
6
6
  Project-URL: Issues, https://gitlab.com/holado_framework/python/-/issues
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 3.10
15
15
  Classifier: Programming Language :: Python :: 3.11
16
16
  Classifier: Programming Language :: Python :: 3.12
17
17
  Requires-Python: >=3.10
18
- Requires-Dist: behave==1.2.7.dev6
18
+ Requires-Dist: behave
19
19
  Requires-Dist: psutil
20
20
  Requires-Dist: pypika
21
21
  Requires-Dist: python-dateutil
@@ -14,14 +14,14 @@ holado/common/tools/gc_manager.py,sha256=TjQg7MisGRhxuiQ22hB3IuqNhnWCVEWpU253-rO
14
14
  holado_ais/__init__.py,sha256=Mudcgu_7p1hBDBs6LpSz757H4haB0yLHgT70sznG82c,1807
15
15
  holado_ais/ais/MaritimeIdentificationDigits.csv,sha256=r-uHt4wOvxlbA26af9e-N3BKbuiMf6ia3PN0ZGfYk2A,8547
16
16
  holado_ais/ais/ais_manager.py,sha256=QvN94JoUBbSXT08HABl2FNsAVOM-YCmQO5tN9COg6Rc,6496
17
- holado_ais/ais/ais_messages.py,sha256=J-GZJAY2RZpSS3OwzQJc6B_HsmdtRXLAcbfaP9APbUA,17414
17
+ holado_ais/ais/ais_messages.py,sha256=0jrhIFH6htUZkUinqKcPuUp2JMtnp0qKwYFAmUk-6w0,17414
18
18
  holado_ais/ais/ais_payload.py,sha256=mdOa_4JIbkFLK4_KUmQF5jUt1nLxvZhmIcqK8i-YY6w,1791
19
19
  holado_ais/ais/enums.py,sha256=bsqfJVg65fWiJwL_VlSKwKgTY0pLoDcI4T06aEOcQnw,1108
20
20
  holado_ais/ais/patch_pyais.py,sha256=M4Fa8GZubXx4auRsk5I1yQPC40IR1p-1iVZIc4PXFfk,49850
21
21
  holado_ais/tests/behave/steps/__init__.py,sha256=cM4YsjHIq0Tb9mTTJjvDojzhLwov6mc2RyjZz8XLVA8,1321
22
22
  holado_ais/tests/behave/steps/ais/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
23
  holado_ais/tests/behave/steps/ais/ais_manager_steps.py,sha256=nRtJUEyAzAqgm0UWwRUFAyOzhDxzRZKTGsEYU1DwE-Q,2170
24
- holado_ais/tests/behave/steps/ais/ais_messages_steps.py,sha256=XMBpCqtyRBQJ2ODRxRN-tVcWr7O72c2o0Yy-0Sd5phE,11741
24
+ holado_ais/tests/behave/steps/ais/ais_messages_steps.py,sha256=SJZlUyAvGOiEPjTa5qxrj_9y8ERcDJkmHcofzonvJDA,11741
25
25
  holado_binary/__init__.py,sha256=Gl285tg-QaPE-3etWwZql9sH26G7EnVoQn97B0NMvOI,1248
26
26
  holado_binary/ipc/binary.py,sha256=QYwK7jK4dzXRKprHMxnTxFljMy1LZDSXjMJ406yEOHk,5520
27
27
  holado_binary/ipc/bit_series.py,sha256=PNuW_OXGV8yeRrMHxMPImR75np52KpcDOfXXdDKObWw,15508
@@ -98,7 +98,7 @@ holado_core/common/inspectors/tools/inspect_builder.py,sha256=v7azgwciXHtO-o7gcg
98
98
  holado_core/common/inspectors/tools/inspect_context.py,sha256=lzhhO5HxG00c6uMPyIXEUz0FHA61VCNUZr_39ykZ8lQ,2700
99
99
  holado_core/common/inspectors/tools/inspect_parameters.py,sha256=2vXUpnZlP2cCYTvI9ddI6NGhONideoM1hBJ0vGdvPKo,7346
100
100
  holado_core/common/resource/persisted_data_manager.py,sha256=Thie2st70tFb2IDWb_3LeLx656WeiW5tpAkI4xc8wQA,6641
101
- holado_core/common/resource/persisted_method_to_call_manager.py,sha256=LJOCrl2gTa_hyXkt4mLhpsBfDAB3QEIxmcc7gJQop-k,14192
101
+ holado_core/common/resource/persisted_method_to_call_manager.py,sha256=xlP1xBPN0TdYrh1CBNyOU6EnzXp5KyXSJVTQC9ynlLQ,14188
102
102
  holado_core/common/resource/resource_manager.py,sha256=VP86iQ7_NZzQQ0uUpeev1PjgiejUuwKbV5RfGCNC5tI,7179
103
103
  holado_core/common/resource/table_data_manager.py,sha256=bigQGMwh1m3P6ZEO3wi2ftmvyEwpZhGbNCVtI794ops,6289
104
104
  holado_core/common/tables/__init__.py,sha256=i2-gExPOUa_AnmEPgZJQ2lAXeK02PLpPnjEqbsgj1Co,8
@@ -336,8 +336,8 @@ holado_python/standard_library/ssl/resources/certificates/NOTES.txt,sha256=GlPGG
336
336
  holado_python/standard_library/ssl/resources/certificates/localhost.crt,sha256=iLmZpDuOQVawUlbZkb72g2-uv1c4SAmRJOrm4Th5anY,1123
337
337
  holado_python/standard_library/ssl/resources/certificates/localhost.key,sha256=lP2NCvB9mr2E5sk8whA8FyQRcyU6H7sdWkJeKz80Hyc,1704
338
338
  holado_python/standard_library/ssl/resources/certificates/rootCACert.pem,sha256=ECQDZ8OHRfqpZHCu6JRLMUjiONaPIhKZQF0-kidVrWQ,1424
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
339
+ holado_python/standard_library/ssl/resources/certificates/tcpbin.crt,sha256=wfv4sQssCQ8BGpJQGCrhSCB2jW1Te9rzWaqpnBM05Yc,1237
340
+ holado_python/standard_library/ssl/resources/certificates/tcpbin.key,sha256=yrGFLYQ1i12IUjwX8tp6Su1rMYZINA6dzUa76elo5h0,1704
341
341
  holado_python/tests/behave/steps/__init__.py,sha256=TWEk-kBTTDHi9I4nuu48nufmNMdZ9FHAhPZv0A_cWzc,1661
342
342
  holado_python/tests/behave/steps/convert_steps.py,sha256=bZqRvJVp_u6fSPpdu4ne9NwVyZmui7R-AVdO2-H-I1A,2728
343
343
  holado_python/tests/behave/steps/iterable_steps.py,sha256=f4vGIWBH8Qnjq69Q-ZBluYyctQ8SKauazTc41dsktZA,4041
@@ -367,7 +367,7 @@ holado_redis/tools/redis/redis_manager.py,sha256=tMO0XrCZTCfGdByFfgWXk9R-I_TUPLO
367
367
  holado_report/__init__.py,sha256=3wtu5g9d4d-AICmLZclPQrw2MS-FJL9CyiVO1n2MYWA,1868
368
368
  holado_report/campaign/campaign_manager.py,sha256=fZtxvtFc7_BZm3KGZNMYh0p8SJ-znEX89MlEY6Gp3aE,8748
369
369
  holado_report/report/execution_historic.py,sha256=M4lYoZwyrSivRa17Q39GOAgROnr0oBvIZX5BNcO5Mnc,6951
370
- holado_report/report/report_manager.py,sha256=KiKMiZbjYa7-0yH8zs8KQdqz5VyZwwSAHizDYRwGGp8,16624
370
+ holado_report/report/report_manager.py,sha256=jOCWa4OxXgYSGimy0hnueKW7PqPOnM80at5NNQgJa4I,16878
371
371
  holado_report/report/analyze/execution_historic_manager.py,sha256=FMKKPguXOvWNxjF7Q8DodHHsH-2ci9pFzrTV41B8nL4,4556
372
372
  holado_report/report/analyze/scenario_duration_manager.py,sha256=Preaxu83qFKGfbvQnzolhSXztZ4i5Zo_Bnxx8tNA80Q,12468
373
373
  holado_report/report/builders/detailed_scenario_failed_report_builder.py,sha256=hOXxHYniL9mpN-U7YTW5xVEaE4Z-GlPq8ltT_iNJan4,7892
@@ -375,6 +375,7 @@ holado_report/report/builders/failure_report_builder.py,sha256=WLLlLgLbEyYJNENEo
375
375
  holado_report/report/builders/json_execution_historic_report_builder.py,sha256=M7OGUvkqNRTG5Td7fO96tv1SJEzRzjm0pl1W02v052E,5929
376
376
  holado_report/report/builders/report_builder.py,sha256=5qlhxbdTkSN7p9q6EADkpHQGPDVEHquIhgA3mK2Ck2k,2261
377
377
  holado_report/report/builders/short_scenario_failed_report_builder.py,sha256=50pXhWX8xwIDZWSFaBejzMUlS9a0GRXqA82d84V3udk,4012
378
+ holado_report/report/builders/summary_by_category_report_builder.py,sha256=5i_zWxIYabiFcMs0De3JDa4YptfDIbFYkVkvaXDRX5M,4496
378
379
  holado_report/report/builders/summary_report_builder.py,sha256=v4LG3W5x_y4FH0kh_5MRaG8pyPOV2GfhlBImsW4BJrs,3954
379
380
  holado_report/report/builders/summary_scenario_by_category_report_builder.py,sha256=1rzuF4KFPzO5jFuvC_OKvsnNMRrzW3zG5nU5GUSux1U,4274
380
381
  holado_report/report/builders/summary_scenario_failed_report_builder.py,sha256=uqf86SUAiIQLRQOV0A434oR8Bj4e_DtxqRsy-pe84p4,3063
@@ -480,7 +481,7 @@ holado_test/tests/behave/steps/__init__.py,sha256=rdqrp-UN7vRplIqORx4sXyKwMUkptR
480
481
  holado_test/tests/behave/steps/scenario/exception_steps.py,sha256=ZIE92Dz7a6O_c0jAP_0dj6Hc0tnW6YRgNKd4_aBpeR0,4054
481
482
  holado_test/tests/behave/steps/scenario/scenario_steps.py,sha256=RfM5Lh4sduKeYSD1NzUxtQ8705O7nausoz_gnpAJQB0,4616
482
483
  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/client/rest/test_server_client.py,sha256=Zoq5zWqWHHnysxMIki8zaQHaR8TFMM6U1xSbjeO7luY,6085
484
485
  holado_test/tools/test_server/server/Dockerfile,sha256=CDhwKszWuA_aSHrwruvN5oAU6g67MXbSO-coHmDNL9c,1485
485
486
  holado_test/tools/test_server/server/requirements.txt,sha256=c2iNG9IZZogAEC9oSWRTWEF9-OHW0vRtijPNK4P6_xY,45
486
487
  holado_test/tools/test_server/server/run_test_server_in_docker.sh,sha256=ISNvFT1dBM6aiw5Iv6yBhInn7L8ZYyz_7EDK_X1eCvk,3121
@@ -489,11 +490,44 @@ holado_test/tools/test_server/server/core/server_manager.py,sha256=PW5ShUdnbdq6E
489
490
  holado_test/tools/test_server/server/rest/README,sha256=J_LIXWFxtxc8okQGZ8Kk0dMSRra9oUzbMP_ylCe4pTo,161
490
491
  holado_test/tools/test_server/server/rest/initialize_holado.py,sha256=UxNphXyjs-xraorzMWjDe6-QYw_Q3mtykyY-ENYZB1o,3464
491
492
  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/openapi.yaml,sha256=ULzbZMhj-Iw6MGwZ7_7zxkOGiRjpFnqaT6OotgL9sjY,1248
493
494
  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/__init__.py,sha256=Y_kSr0l44kBpmWYsRRH93MXSyKM1veegaytzYFXkBA0,1407
495
496
  holado_test/tools/test_server/server/rest/api/campaign/__init__.py,sha256=btZb20N5k7_WbowNAC1C7yYDUkwPnUU5QUmh-jO0bhg,1586
496
497
  holado_test/tools/test_server/server/rest/api/campaign/scenario.py,sha256=4eTIScEGL0GKD7g6aIPHJVvaVbwz487zlEg9mRQv84Y,1737
498
+ holado_tools/__init__.py,sha256=JzUm55NIkeBynu1RieZ3QfZGw8v4NfFDzz6HS-bN7r8,1798
499
+ holado_tools/scripts/execute_persisted_post_processes/execute_persisted_post_processes.py,sha256=mkU6eqfOdwfrqXF2fJv8JT1Izu2B3pCBIy1PmNisqi0,2478
500
+ holado_tools/scripts/execute_persisted_post_processes/execute_persisted_post_processes.sh,sha256=VXgAjwMKkUg4-T4TfTTziep4wzOzEYjFWgAeTYboTNQ,244
501
+ holado_tools/scripts/execute_persisted_post_processes/initialize_holado.py,sha256=IPYH-GYNiHV5-7ZCCH6CFmPpmACsPrTV74TYz3MRjpA,3102
502
+ holado_tools/tests/behave/steps/__init__.py,sha256=SPh47LYMokcxbFhDa_JnlkIlyQav2D-hddf3J1ZlEbQ,1296
503
+ holado_tools/tests/behave/steps/tools/host_controller/client_steps.py,sha256=FOaeQ5xX4KGv7OVvMh2M8U0a-AfHuUNQU5p4av_K8z0,4786
504
+ holado_tools/tools/host_controller/client/rest/host_controller_client.py,sha256=OCMXvFcJ1Bz9W3AeG2Rdho3pTrWT48J2sJNQdICE4d0,7218
505
+ holado_tools/tools/host_controller/server/Dockerfile,sha256=wTy-ii7MuJULRiw5_2sUWj8ssw6WUJIhAcLY2KCL0lw,1508
506
+ holado_tools/tools/host_controller/server/requirements.txt,sha256=0RvLV3t2DyBR2FsbAd1WVEcbsVc6FVUN2horQJU4POo,57
507
+ holado_tools/tools/host_controller/server/run_host_controller_in_docker.sh,sha256=KEBTxcxFeViVpixLii1YXBbyZhvJKfmH604jGqBFxHc,3729
508
+ holado_tools/tools/host_controller/server/grpc/README,sha256=og8ClPR9Fu6CY-85IOPAESv4ks-Jebre-Aa78pBiaVw,130
509
+ holado_tools/tools/host_controller/server/grpc/__init__.py,sha256=QBkE1ydbCvARUimeSY2PvBkZ-Jp0bCv6k_l89a_8zNw,1551
510
+ holado_tools/tools/host_controller/server/grpc/proto/compile_proto.py,sha256=NjcStLaAO_zKcSprrcGscq3R_4anh55QeguXLq6SPjo,2191
511
+ holado_tools/tools/host_controller/server/grpc/proto/definitions/docker_controler.proto,sha256=n9bsXaQfnZX-R5HvfquCVt3QjpFtDJSH6p8gnTjm06k,1650
512
+ holado_tools/tools/host_controller/server/rest/README,sha256=10hiIdQw69iXubii8ZYZUrYrs2Q2k5QiTKpBBrBK1bc,165
513
+ holado_tools/tools/host_controller/server/rest/initialize_holado.py,sha256=UxNphXyjs-xraorzMWjDe6-QYw_Q3mtykyY-ENYZB1o,3464
514
+ holado_tools/tools/host_controller/server/rest/openapi.yaml,sha256=6MCJFmJ-fPeNOhhgELdVHCnsVej2YoyZ3ECwEMeUIsY,7121
515
+ holado_tools/tools/host_controller/server/rest/run.py,sha256=RQFxhVCH3K3uAHFdCVVKw2MAcVcufSvenVn6f6ABCGA,2009
516
+ holado_tools/tools/host_controller/server/rest/api/__init__.py,sha256=Y_kSr0l44kBpmWYsRRH93MXSyKM1veegaytzYFXkBA0,1407
517
+ holado_tools/tools/host_controller/server/rest/api/config.py,sha256=Ln__1bsigSzJZ-Iy3MQgmiZMnpBxC3TCQE0O72g5cAs,2459
518
+ holado_tools/tools/host_controller/server/rest/api/os.py,sha256=EA3DCxGBCnMd2XJyn9kb6IWmtbaPIyv5UfZypCNzkhY,2123
519
+ holado_tools/tools/host_controller/server/rest/api/docker/__init__.py,sha256=FlLRagAiw1LDxnF0CmW7Y6bVXuj8x6volT8-DuHTTVY,2427
520
+ holado_tools/tools/host_controller/server/rest/api/docker/container.py,sha256=6D612WF4chpDCzr4MBzZXzELxi-yOwrgxCxSBBVMcVo,2673
521
+ holado_tools/tools/host_viewer/client/rest/host_viewer_client.py,sha256=5-XFjImALKJwSG7H4eKL1QOsS5A-D7Y1kXrxONrZWK8,4360
522
+ holado_tools/tools/host_viewer/server/Dockerfile,sha256=dSdSaCAYZAjV4inHcLxjy8JlIqpo1lMNOSveAihvcOw,1484
523
+ holado_tools/tools/host_viewer/server/requirements.txt,sha256=0RvLV3t2DyBR2FsbAd1WVEcbsVc6FVUN2horQJU4POo,57
524
+ holado_tools/tools/host_viewer/server/run_host_viewer_in_docker.sh,sha256=XeJfyjPVj34-rK_9K_6C9iD0EiAZ2WVkoD1L5rvZzw4,3606
525
+ holado_tools/tools/host_viewer/server/rest/README,sha256=1FMg-U_D9pUMBVmZJsirOXHFLTciDL5jB-Yqzp9U6uM,163
526
+ holado_tools/tools/host_viewer/server/rest/initialize_holado.py,sha256=UxNphXyjs-xraorzMWjDe6-QYw_Q3mtykyY-ENYZB1o,3464
527
+ holado_tools/tools/host_viewer/server/rest/openapi.yaml,sha256=tU9N6eGW7ESxtbODyUeYDdKYUxQSNoTjHiUrvgqr5JM,3007
528
+ holado_tools/tools/host_viewer/server/rest/run.py,sha256=jgJgmFFdppadLBahWU8Yw8-PdA5HJzBTDCPTPHGRzbA,2007
529
+ holado_tools/tools/host_viewer/server/rest/api/__init__.py,sha256=Y_kSr0l44kBpmWYsRRH93MXSyKM1veegaytzYFXkBA0,1407
530
+ holado_tools/tools/host_viewer/server/rest/api/docker/__init__.py,sha256=FlLRagAiw1LDxnF0CmW7Y6bVXuj8x6volT8-DuHTTVY,2427
497
531
  holado_value/__init__.py,sha256=60VyLyWux76dFwn03uH4Fz3R6itf6fqKu0pQUdvwblU,1561
498
532
  holado_value/common/tables/value_table.py,sha256=fJgb-HWdlMwHOAx5CS38sPiVrjGelEiQBbG9HuHqe-A,1726
499
533
  holado_value/common/tables/value_table_cell.py,sha256=vCL8uSTEKOpI9G5f0epgJMArFxQidfWTCRHBZbdrsjc,3344
@@ -526,7 +560,7 @@ test_holado/Dockerfile_test_holado,sha256=zO6OUFnC1X9ZG7fPWWWfcWgZwnxif4WDE4ZDEm
526
560
  test_holado/__init__.py,sha256=TIHAHrF05rvz6-VDKuDBSBjasD6PxTxXvcXjMEC3D6E,54
527
561
  test_holado/__main__.py,sha256=PVdCX8V_RGRzbQQKVxf7eyt8a10XfUJ1pcaajGgIlus,1509
528
562
  test_holado/build_docker_image_to_test_holado_in_docker.sh,sha256=B3hbi0yKnEC-t9S18o6ZR27AU1bqiuptwOqm6H7tv8s,142
529
- test_holado/environment.py,sha256=SLGJ2v1BoyP_s_KucvuQJLnWPzPJAD6cS4C8eBNaJW8,2381
563
+ test_holado/environment.py,sha256=2K_VLB92bDfHh6e1EHVBp30Y8cgeVIjUI8C2ezPWXqA,2661
530
564
  test_holado/initialize_holado.py,sha256=IPYH-GYNiHV5-7ZCCH6CFmPpmACsPrTV74TYz3MRjpA,3102
531
565
  test_holado/logging.conf,sha256=vsCMsRnvSMHl6nBmRqG7kBYC3qshAcxiAg5iUUw1Udw,1318
532
566
  test_holado/test_holado_session_context.py,sha256=qOB_i2k8mYjkR3-q2uv0B04xFc1K3p-K20ttYwe1Z18,1364
@@ -646,7 +680,7 @@ test_holado/tools/django/api_rest/api_rest/api1/serializers.py,sha256=o_YxFr-tgC
646
680
  test_holado/tools/django/api_rest/api_rest/api1/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
647
681
  test_holado/tools/django/api_rest/api_rest/api1/views.py,sha256=kOt2xT6bxO47_z__5yYR9kcYIWWv4qYzpX0K8Tqonik,758
648
682
  test_holado/tools/django/api_rest/api_rest/api1/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
649
- holado-0.11.2.dist-info/METADATA,sha256=L3DvfWDcA_X7lolqA4a5NnxHE5FvhaSE2_8avKN8k8Y,7672
650
- holado-0.11.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
651
- holado-0.11.2.dist-info/licenses/LICENSE,sha256=IgGmNlcFHnbp7UWrLJqAFvs_HIgjJDTmjCNRircJLsk,1070
652
- holado-0.11.2.dist-info/RECORD,,
683
+ holado-0.11.4.dist-info/METADATA,sha256=w4vz367qdwA3K6pb1rwff-SLW8-4ivNAkAr_kuff5mc,7660
684
+ holado-0.11.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
685
+ holado-0.11.4.dist-info/licenses/LICENSE,sha256=IgGmNlcFHnbp7UWrLJqAFvs_HIgjJDTmjCNRircJLsk,1070
686
+ holado-0.11.4.dist-info/RECORD,,
@@ -93,7 +93,7 @@ class AISMessages(object):
93
93
  msg_dict = msg.asdict(enum_as_int=enum_as_int, ignore_spare=ignore_spare)
94
94
 
95
95
  # Extract tagblock of first sentence if present, and add tagblock information in result
96
- tag_block_str, _ = self.split_sentence_to_tab_block_and_message(sentences[0])
96
+ tag_block_str, _ = self.split_sentence_to_tag_block_and_message(sentences[0])
97
97
  if tag_block_str is None:
98
98
  tag_block_dict = None
99
99
  else:
@@ -283,7 +283,7 @@ class AISMessages(object):
283
283
 
284
284
  return res
285
285
 
286
- def split_sentence_to_tab_block_and_message(self, ais_sentence):
286
+ def split_sentence_to_tag_block_and_message(self, ais_sentence):
287
287
  if isinstance(ais_sentence, str):
288
288
  split_char = '\\'
289
289
  elif isinstance(ais_sentence, bytes):
@@ -208,7 +208,7 @@ if AISMessages.is_available():
208
208
  msg_var_name = StepTools.evaluate_variable_name(msg_var_name)
209
209
  ais_sentence = StepTools.evaluate_scenario_parameter(ais_sentence)
210
210
 
211
- tb, msg = __get_ais_messages().split_sentence_to_tab_block_and_message(ais_sentence)
211
+ tb, msg = __get_ais_messages().split_sentence_to_tag_block_and_message(ais_sentence)
212
212
 
213
213
  __get_variable_manager().register_variable(tb_var_name, tb)
214
214
  __get_variable_manager().register_variable(msg_var_name, msg)
@@ -99,7 +99,7 @@ class PersistedMethodToCallManager(PersistedDataManager):
99
99
  @param delete_on_fail: If True, delete method after its fail
100
100
  @param delete_on_success_after_fail: If True, delete method after its success even if it has previously failed
101
101
  """
102
- if self.__scope_name is not any_value:
102
+ if self.__scope_name is any_value:
103
103
  raise TechnicalException("To add a method to call, the scope name must be specified")
104
104
 
105
105
  # Define persisted data that can define if method is already persisted
@@ -2,20 +2,20 @@
2
2
  MIIDZTCCAk2gAwIBAgIBKjANBgkqhkiG9w0BAQsFADCBizELMAkGA1UEBhMCVVMx
3
3
  CzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMQ8wDQYDVQQKDAZ0
4
4
  Y3BiaW4xDDAKBgNVBAsMA29wczETMBEGA1UEAwwKdGNwYmluLmNvbTEjMCEGCSqG
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
5
+ SIb3DQEJARYUaGFycnliYWdkaUBnbWFpbC5jb20wHhcNMjUxMDI3MDkyNzQ4WhcN
6
+ MjUxMDI4MDkyNzQ4WjAcMRowGAYDVQQDDBF0Y3BiaW4uY29tLWNsaWVudDCCASIw
7
+ DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMDSXOJuPmc0k1e7OMyWKhIxcC44
8
+ wmG71lF8E/F11DW+yw3iiJ95ZvkiLuVEGnkMFS+iJJ0LLvCsNq71yVggbeEhRCVe
9
+ vY0RmfZMY3BA27ru3d4QK5Xuffb8eg8x3KRSaeD47ZFATzL5j4EVhsTLe5L2hOIE
10
+ ZAuc1C+mHbGdr23o2r9CqGLq3gl7JNRSjfOzzS1pvgoj/C6vsMViJutx0MYCd2Z6
11
+ 4CfPfRO0L1JXzU9GPq1HIDFUDEnopdMALA6KSRSOt0qLChKgKFqRS954e2PZYxwO
12
+ XqvHwD1vGwMl6t1gprSpsAPuaEv/1l8iuA7zHL1jiIergwsLDad1flFSulkCAwEA
13
+ AaNCMEAwHQYDVR0OBBYEFFaEMYPq4DeN+4OAfat4KVqgrWVLMB8GA1UdIwQYMBaA
14
+ FOLuMowBSAZfV5v82LmlaIIOvU/DMA0GCSqGSIb3DQEBCwUAA4IBAQAi3cHZCPtV
15
+ LgOXO4+5Z26Jx4wnqKmsWfEqdXKwcpTm5NKa+pyFcswNRAzk6HL6x2Bd1VO2tT71
16
+ PnDz6/YJWdJqzkCCCInPs5dvptE3ByFAG8nXGi+TE7FzQW8Pa5/d6Vcglxj6269B
17
+ rWdwfDZoFnSJAkRkTbeY6It1kqJB54+DIqVZNtVCQ7axh0Trpzk4B7QjHMvKJlwz
18
+ FPycVbH51IXYts9uHEtT5gdpSXA4hKuEc/p5kRkzomS/8vAolyh6lqkAMGly1tza
19
+ wTpCnzC6pZOJXinN75KplX5f+Wk4aMlchpocVqTPlTjHAzy/DceCGPieGgpx1EhG
20
+ TQm3tdNDnLkY
21
21
  -----END CERTIFICATE-----
@@ -1,28 +1,28 @@
1
1
  -----BEGIN PRIVATE KEY-----
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
2
+ MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDA0lzibj5nNJNX
3
+ uzjMlioSMXAuOMJhu9ZRfBPxddQ1vssN4oifeWb5Ii7lRBp5DBUvoiSdCy7wrDau
4
+ 9clYIG3hIUQlXr2NEZn2TGNwQNu67t3eECuV7n32/HoPMdykUmng+O2RQE8y+Y+B
5
+ FYbEy3uS9oTiBGQLnNQvph2xna9t6Nq/Qqhi6t4JeyTUUo3zs80tab4KI/wur7DF
6
+ YibrcdDGAndmeuAnz30TtC9SV81PRj6tRyAxVAxJ6KXTACwOikkUjrdKiwoSoCha
7
+ kUveeHtj2WMcDl6rx8A9bxsDJerdYKa0qbAD7mhL/9ZfIrgO8xy9Y4iHq4MLCw2n
8
+ dX5RUrpZAgMBAAECggEBAKPrse8EzaQrO/9fOEAkgIuK39VLh2RSrTYEh2fERa2T
9
+ D0g0hvUb3gB5oOhi5yZ0sSYXb4zaTwNnQ+2lIY/7sa2r/CTQz8+3YO3Trs1lNedK
10
+ 3e7ETGlfoFJx/MoiF3LSZRROSpgq1al+IxMX28Q9QEaFsB38oZiFsJT5YVD3voVt
11
+ 7jYr/yE6A7Nuq4A8EmpXTqNqdIGlBQ5Iq865KfUmqEM7vAJDzo/NPCf3CeCe5yzU
12
+ 31sL/odZpj0MJWsFe6P9k932cd47VdXZ84XCcXQHEkKZ6AVwv+EBQfSMfBJUp4pw
13
+ 4Cd112jzJR0Gdew6BTwytPHM55Pm7sx3Kx2/+1lr7CECgYEA8fqe1b6HXCC7RUDD
14
+ J2XDkPZbLdyjqWW0mGVps7xX3371BVndXjWTmrKgtLS64XclW9coLGhJMlNel7pO
15
+ dadC24naHF3qNXsTITgz9VJWG5MSNrzDHg4ZzYxllFxm1j7DiorDa4umzHu0w0d1
16
+ 7WUZFPP9fm3jlB5dv80HBSWIpWUCgYEAy/6SSGBJfv+hYJjPOtrneQxUGkpnw9mr
17
+ tqA4l2+vMlLJs6xvjgqytV8MgTAc750ASf3/lug497m/PlGxvwj6GwwT8zUhUmBb
18
+ pRJBS2EwHvJBcyeu2GVJJAqnbmoEVdywV21VjUSJ5PH5zg48wJAaJspttOOmmUTt
19
+ Ou+6eh7Ou+UCgYBbm8EENKR0KWQcfL8lLC6Us9+jBjPjjsCHLWWOCRDPaPYD95iJ
20
+ 8QiXeWbD4uQZNY0sLtFjtnt3lP5rvLm1awQxrwem05s2cgi0+90X0/sLZ2tu05me
21
+ yEHWgn92YmEAXTSUP6JqFa2pHnA5udUYcbzEJPbkJWASFEjzswAkX6hSzQKBgFpV
22
+ 67W9Xg6taWt7gBmSIvtJ6FyUIotqc042eZkmTjE81DGK5QPD3QvQgZscEVRS9HPP
23
+ 1UWgpMmfKf+Q8eOlOAyONq93EcCHB058XQniigrKQQ2bvyP5BoC9bxPIQw864aR1
24
+ uHMMrPwD5BnJ2EF2Dv6qmhaG0ZoCGgQFcVDvH6G5AoGAfrF8W04Is7Q0eSF6D296
25
+ BZgICLCNJUykBGp2jXecOHelpKBsSH95mPrwcUHxyxZJhp1iMdua5IAyyS0LkvDX
26
+ ElsFK7kaMbHJPvBhjhWXvB331qJAVjhnYuyiDENEuDJy40+dj+MXN0RFg7fGkz4a
27
+ m0HQFSt8G76mGDV6eQ+xdrc=
28
28
  -----END PRIVATE KEY-----
@@ -0,0 +1,86 @@
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 SummaryByCategoryReportBuilder(ReportBuilder):
23
+ def __init__(self, filepath):
24
+ self.__filepath = filepath
25
+ self.__counter_by_category = {}
26
+ self.__categories_order = [
27
+ 'Regression',
28
+ 'Always Failed',
29
+ 'Random',
30
+ 'Regression but Not Relevant',
31
+ 'Always Not Relevant',
32
+ 'Random but Not Relevant',
33
+ 'Always Success',
34
+ 'Fixed',
35
+ 'Unknown'
36
+ ]
37
+
38
+ def build(self):
39
+ '''
40
+ The file is built after each scenario
41
+ '''
42
+ pass
43
+
44
+ def after_scenario(self, scenario, scenario_report=None):
45
+ from holado_report.report.report_manager import ReportManager
46
+ category_validation, _, _, _ = ReportManager.get_current_scenario_status_information(scenario)
47
+
48
+ if category_validation is not None:
49
+ ind = category_validation.find(' (')
50
+ category = category_validation[:ind] if ind > 0 else category_validation
51
+
52
+ if category not in self.__counter_by_category:
53
+ self.__counter_by_category[category] = 0
54
+ self.__counter_by_category[category] += 1
55
+
56
+ # Update categories order with unexpected category
57
+ if category not in self.__categories_order:
58
+ self.__categories_order.append(category)
59
+
60
+ self.__update_file()
61
+
62
+ def __update_file(self):
63
+ list_by_group = {
64
+ 'Success': [(k,self.__counter_by_category[k]) for k in self.__categories_order
65
+ if k in self.__counter_by_category and k in ['Always Success', 'Fixed']],
66
+ 'Failed': [(k,self.__counter_by_category[k]) for k in self.__categories_order
67
+ if k in self.__counter_by_category and k in ['Regression', 'Always Failed', 'Random']],
68
+ 'Not Relevant': [(k,self.__counter_by_category[k]) for k in self.__categories_order
69
+ if k in self.__counter_by_category and k in ['Regression but Not Relevant', 'Always Not Relevant', 'Random but Not Relevant']]
70
+ }
71
+ others_list = [(k,v) for k,v in self.__counter_by_category.items()
72
+ if k not in ['Always Success', 'Fixed', 'Regression', 'Always Failed', 'Random', 'Regression but Not Relevant', 'Always Not Relevant', 'Random but Not Relevant']]
73
+
74
+ lines = []
75
+ for group_name, group_list in list_by_group.items():
76
+ if group_list:
77
+ lines.append(f"{group_name:>12s}: {sum([x[1] for x in group_list]):5d} ({' ; '.join([f'{x[0]}: {x[1]}' for x in group_list])})")
78
+ else:
79
+ lines.append(f"{group_name:>12s}: {0:5d}")
80
+ if others_list:
81
+ lines.append(f"{'Others':>12s}: {sum([x[1] for x in others_list]):5d} ({' ; '.join([f'{x[0]}: {x[1]}' for x in others_list])})")
82
+
83
+ with File(self.__filepath, mode='wt', auto_flush=False) as fout:
84
+ fout.writelines(lines)
85
+
86
+
@@ -24,6 +24,7 @@ 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
26
  from holado_report.report.builders.summary_scenario_by_category_report_builder import SummaryScenarioByCategoryReportBuilder
27
+ from holado_report.report.builders.summary_by_category_report_builder import SummaryByCategoryReportBuilder
27
28
  # from holado_core.scenario.scenario_duration_manager import ScenarioDurationManager
28
29
 
29
30
  logger = logging.getLogger(__name__)
@@ -86,6 +87,9 @@ class ReportManager(BaseReport):
86
87
  fn = self.get_path("report_summary.txt")
87
88
  self.add_report_builder(SummaryReportBuilder(fn))
88
89
 
90
+ fn = self.get_path("report_summary_by_category.txt")
91
+ self.add_report_builder(SummaryByCategoryReportBuilder(fn))
92
+
89
93
  @property
90
94
  def __feature_reports(self):
91
95
  return self.children_reports("feature")
@@ -21,6 +21,7 @@ from holado.common.handlers.undefined import undefined_argument, undefined_value
21
21
  import os
22
22
  from holado_core.common.tools.converters.converter import Converter
23
23
  from holado_core.common.exceptions.technical_exception import TechnicalException
24
+ from holado_core.common.handlers.wait import WaitFuncResult
24
25
 
25
26
  logger = logging.getLogger(__name__)
26
27
 
@@ -72,6 +73,8 @@ class TestServerClient(RestClient):
72
73
  logger.info(f"Test server is {'not ' if not self.__is_available else ''}available")
73
74
  return self.__is_available
74
75
 
76
+ # Monitoring
77
+
75
78
  def ping(self):
76
79
  url_parsed = urllib.parse.urlparse(self.url)
77
80
  netloc_pattern = r"(?P<host>.*?)(?::(?P<port>\d+))?$"
@@ -98,6 +101,23 @@ class TestServerClient(RestClient):
98
101
  logger.debug(f"Ping of test server succeeded for ({host}, {port})")
99
102
  return True
100
103
 
104
+ def is_healthy(self):
105
+ try:
106
+ response = self.get(f"health")
107
+ return response.status_code == 200
108
+ except:
109
+ return False
110
+
111
+ def wait_is_healthy(self, timeout_sec=300, do_raise_on_timeout=True):
112
+ logger.info("Waiting for test-server to be healthy...")
113
+ wait_context = WaitFuncResult(f"wait test-server is healthy", self.is_healthy)
114
+ wait_context.with_timeout(timeout_sec) \
115
+ .with_raise_on_timeout(do_raise_on_timeout) \
116
+ .with_process_in_thread(False)
117
+ wait_context.redo_until(True)
118
+ wait_context.execute()
119
+ logger.info("test-server is healthy")
120
+
101
121
 
102
122
  # Manage campaigns actions
103
123
 
@@ -11,13 +11,14 @@
11
11
  #################################################
12
12
 
13
13
  from flask.views import MethodView
14
- from holado.common.context.session_context import SessionContext
15
- import logging
14
+ # import logging
16
15
 
17
- logger = logging.getLogger(__name__)
16
+ # logger = logging.getLogger(__name__)
18
17
 
19
18
 
19
+ class HealthView(MethodView):
20
+
21
+ def get(self):
22
+ return {'status': 'healthy'}
20
23
 
21
- def _get_session_context():
22
- return SessionContext.instance()
23
24
 
@@ -5,6 +5,17 @@ info:
5
5
  description: |
6
6
  API exposed by Test Server.
7
7
  paths:
8
+ /health:
9
+ get:
10
+ description: "Healthcheck"
11
+ responses:
12
+ 200:
13
+ description: "Healthy"
14
+ content:
15
+ application/json:
16
+ schema:
17
+ type: "string"
18
+
8
19
  /campaign/update:
9
20
  put:
10
21
  description: "Update stored campaigns"
@@ -0,0 +1,38 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ #################################################
4
+ # HolAdo (Holistic Automation do)
5
+ #
6
+ # (C) Copyright 2021-2025 by Eric Klumpp
7
+ #
8
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
11
+
12
+ # The Software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the Software.
13
+ #################################################
14
+
15
+
16
+ def configure_module():
17
+ """
18
+ Configure this module
19
+ Example: set new attributes in holado.holado_config.Config class
20
+ """
21
+ pass
22
+
23
+ def dependencies():
24
+ """
25
+ Return None or the list of names of modules it depend on
26
+ """
27
+ return None
28
+
29
+ def register():
30
+ """
31
+ Register the services of this module
32
+ """
33
+ # from holado.common.context.session_context import SessionContext
34
+
35
+ # from holado_xxx.xxx import XXXManager
36
+ # SessionContext.instance().services.register_service_type("xxx_manager", XXXManager)
37
+ pass
38
+
@@ -0,0 +1,36 @@
1
+ #################################################
2
+ # HolAdo (Holistic Automation do)
3
+ #
4
+ # (C) Copyright 2021-2025 by Eric Klumpp
5
+ #
6
+ # 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:
7
+ #
8
+ # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
9
+
10
+ # 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.
11
+ #################################################
12
+
13
+ import logging
14
+
15
+ # Uncomment next lines to insert holado sources when using a clone of holado project rather than holado package
16
+ # from initialize_holado import insert_holado_source_paths # @UnresolvedImport
17
+ # insert_holado_source_paths()
18
+
19
+ # Initialize HolAdo
20
+ from holado import initialize_for_script
21
+ initialize_for_script(TSessionContext=None, use_holado_logger=True, logging_config_file_path=None,
22
+ log_level=logging.WARNING, log_time_in_utc=None, log_on_console=True, log_in_file=False,
23
+ config_kwargs={'application_group':'configuration'},
24
+ garbage_collector_periodicity=None)
25
+
26
+ # Script content
27
+ from holado.common.context.session_context import SessionContext
28
+ from holado_core.common.resource.persisted_method_to_call_manager import PersistedMethodToCallManager
29
+ from holado.common.handlers.undefined import any_value
30
+
31
+ persisted_method_to_call_manager = PersistedMethodToCallManager(scope_name=any_value)
32
+ persisted_method_to_call_manager.initialize(SessionContext.instance().resource_manager, SessionContext.instance().expression_evaluator)
33
+ if persisted_method_to_call_manager.does_persistent_db_exist():
34
+ persisted_method_to_call_manager.call_functions_and_methods(use="post_process")
35
+
36
+
@@ -0,0 +1,6 @@
1
+ #!/bin/bash
2
+
3
+ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
4
+
5
+ #${SCRIPT_DIR}/../../../run_test.sh -i /Configuration -t execute_persisted_post_processes
6
+ python3 "${SCRIPT_DIR}"/execute_persisted_post_processes.py
@@ -0,0 +1,62 @@
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
+
15
+ #################################################
16
+ # GOAL: Tools when using a clone of HolAdo project.
17
+ #
18
+ # This file contains methods usefull to initialize environments using a clone of HolAdo project.
19
+ #
20
+ # USAGE:
21
+ # - Copy this file in projects using HolAdo.
22
+ # - Define environment variable HOLADO_PATH with path to cloned HolAdo project.
23
+ # If HOLADO_PATH is defined, sources of cloned HolAdo project are used, else installed holado package is used.
24
+ #################################################
25
+
26
+
27
+
28
+ import os
29
+ import sys
30
+
31
+
32
+ def insert_sys_path(path, index=0):
33
+ """Insert a path in sys.path if it doesn't already exists.
34
+ """
35
+ if path not in sys.path:
36
+ sys.path.insert(index, path)
37
+
38
+ def insert_holado_source_paths(with_test_behave=True):
39
+ """Insert in sys.path all HolAdo source paths.
40
+ If environment variable HOLADO_PATH is defined with path to HolAdo project, following paths are inserted in sys.path:
41
+ - HOLADO_PATH/src: path to holado modules sources
42
+ - HOLADO_PATH/tests/behave (if with_test_behave==True): path to holado test sources, needed by testing solutions
43
+ """
44
+ holado_path = os.getenv('HOLADO_PATH')
45
+ if holado_path is None:
46
+ try:
47
+ import holado # @UnusedImport
48
+ except Exception as exc:
49
+ if "No module named" in str(exc):
50
+ raise Exception(f"If environment variable HOLADO_PATH is not defined with path to HolAdo project, 'holado' python package must be installed")
51
+ else:
52
+ raise exc
53
+ else:
54
+ # holado is installed, and all sources are already accessible
55
+ pass
56
+ else:
57
+ print(f"Using HolAdo project installed in '{holado_path}'")
58
+ insert_sys_path(os.path.join(holado_path, "src"))
59
+ if with_test_behave:
60
+ insert_sys_path(os.path.join(holado_path, "tests", "behave"))
61
+
62
+