hybrid_platforms_conductor 32.17.0 → 33.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +36 -0
  3. data/README.md +6 -3
  4. data/bin/check-node +0 -1
  5. data/bin/deploy +0 -1
  6. data/bin/get_impacted_nodes +0 -1
  7. data/bin/last_deploys +12 -8
  8. data/bin/nodes_to_deploy +6 -6
  9. data/bin/setup +6 -6
  10. data/bin/topograph +1 -1
  11. data/docs/config_dsl.md +45 -1
  12. data/docs/executables.md +6 -7
  13. data/docs/executables/check-node.md +3 -3
  14. data/docs/executables/deploy.md +3 -3
  15. data/docs/executables/dump_nodes_json.md +3 -3
  16. data/docs/executables/test.md +3 -3
  17. data/docs/executables/topograph.md +3 -3
  18. data/docs/gen/mermaid/README.md-0.png +0 -0
  19. data/docs/gen/mermaid/docs/executables/check-node.md-0.png +0 -0
  20. data/docs/gen/mermaid/docs/executables/deploy.md-0.png +0 -0
  21. data/docs/gen/mermaid/docs/executables/free_ips.md-0.png +0 -0
  22. data/docs/gen/mermaid/docs/executables/get_impacted_nodes.md-0.png +0 -0
  23. data/docs/gen/mermaid/docs/executables/last_deploys.md-0.png +0 -0
  24. data/docs/gen/mermaid/docs/executables/nodes_to_deploy.md-0.png +0 -0
  25. data/docs/gen/mermaid/docs/executables/report.md-0.png +0 -0
  26. data/docs/gen/mermaid/docs/executables/run.md-0.png +0 -0
  27. data/docs/gen/mermaid/docs/executables/ssh_config.md-0.png +0 -0
  28. data/docs/gen/mermaid/docs/executables/test.md-0.png +0 -0
  29. data/docs/plugins.md +46 -0
  30. data/docs/plugins/connector/ssh.md +1 -1
  31. data/docs/plugins/log/remote_fs.md +26 -0
  32. data/docs/plugins/secrets_reader/cli.md +31 -0
  33. data/docs/plugins/secrets_reader/thycotic.md +46 -0
  34. data/docs/plugins/test/check_deploy_and_idempotence.md +1 -1
  35. data/docs/plugins/test/connection.md +1 -0
  36. data/docs/plugins/test/deploy_removes_root_access.md +1 -1
  37. data/docs/plugins/test/file_system.md +1 -0
  38. data/docs/plugins/test/hostname.md +1 -0
  39. data/docs/plugins/test/ip.md +1 -0
  40. data/docs/plugins/test/local_users.md +1 -0
  41. data/docs/plugins/test/mounts.md +1 -0
  42. data/docs/plugins/test/orphan_files.md +1 -0
  43. data/docs/plugins/test/ports.md +1 -0
  44. data/docs/plugins/test/spectre.md +1 -0
  45. data/docs/plugins/test/vulnerabilities.md +1 -0
  46. data/lib/hybrid_platforms_conductor/action.rb +4 -4
  47. data/lib/hybrid_platforms_conductor/actions_executor.rb +45 -43
  48. data/lib/hybrid_platforms_conductor/bitbucket.rb +5 -4
  49. data/lib/hybrid_platforms_conductor/cmd_runner.rb +13 -12
  50. data/lib/hybrid_platforms_conductor/cmdb.rb +2 -2
  51. data/lib/hybrid_platforms_conductor/common_config_dsl/bitbucket.rb +2 -1
  52. data/lib/hybrid_platforms_conductor/common_config_dsl/confluence.rb +2 -1
  53. data/lib/hybrid_platforms_conductor/common_config_dsl/file_system_tests.rb +5 -4
  54. data/lib/hybrid_platforms_conductor/common_config_dsl/github.rb +4 -3
  55. data/lib/hybrid_platforms_conductor/common_config_dsl/idempotence_tests.rb +2 -2
  56. data/lib/hybrid_platforms_conductor/config.rb +8 -4
  57. data/lib/hybrid_platforms_conductor/confluence.rb +1 -1
  58. data/lib/hybrid_platforms_conductor/connector.rb +5 -2
  59. data/lib/hybrid_platforms_conductor/core_extensions/cleanroom/fix_kwargs.rb +116 -0
  60. data/lib/hybrid_platforms_conductor/core_extensions/symbol/zero.rb +24 -0
  61. data/lib/hybrid_platforms_conductor/credentials.rb +39 -36
  62. data/lib/hybrid_platforms_conductor/current_dir_monitor.rb +4 -1
  63. data/lib/hybrid_platforms_conductor/deployer.rb +275 -224
  64. data/lib/hybrid_platforms_conductor/executable.rb +20 -15
  65. data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/config.rb +10 -7
  66. data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/host_ip.rb +1 -1
  67. data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/host_keys.rb +2 -2
  68. data/lib/hybrid_platforms_conductor/hpc_plugins/cmdb/platform_handlers.rb +4 -4
  69. data/lib/hybrid_platforms_conductor/hpc_plugins/connector/local.rb +2 -0
  70. data/lib/hybrid_platforms_conductor/hpc_plugins/connector/ssh.rb +45 -49
  71. data/lib/hybrid_platforms_conductor/hpc_plugins/log/my_log_plugin.rb.sample +100 -0
  72. data/lib/hybrid_platforms_conductor/hpc_plugins/log/remote_fs.rb +180 -0
  73. data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/serverless_chef.rb +68 -66
  74. data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/serverless_chef/dsl_parser.rb +13 -0
  75. data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/serverless_chef/recipes_tree_builder.rb +39 -38
  76. data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/yaml_inventory.rb +5 -4
  77. data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/docker.rb +43 -45
  78. data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/podman.rb +18 -20
  79. data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox.rb +118 -117
  80. data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox/proxmox_waiter.rb +39 -43
  81. data/lib/hybrid_platforms_conductor/hpc_plugins/provisioner/proxmox/reserve_proxmox_container +9 -13
  82. data/lib/hybrid_platforms_conductor/hpc_plugins/report/confluence.rb +2 -2
  83. data/lib/hybrid_platforms_conductor/hpc_plugins/report/mediawiki.rb +28 -21
  84. data/lib/hybrid_platforms_conductor/hpc_plugins/report/stdout.rb +26 -22
  85. data/lib/hybrid_platforms_conductor/hpc_plugins/secrets_reader/cli.rb +77 -0
  86. data/lib/hybrid_platforms_conductor/hpc_plugins/secrets_reader/my_secrets_reader_plugin.rb.sample +46 -0
  87. data/lib/hybrid_platforms_conductor/hpc_plugins/secrets_reader/thycotic.rb +90 -0
  88. data/lib/hybrid_platforms_conductor/hpc_plugins/test/bitbucket_conf.rb +3 -3
  89. data/lib/hybrid_platforms_conductor/hpc_plugins/test/check_deploy_and_idempotence.rb +4 -2
  90. data/lib/hybrid_platforms_conductor/hpc_plugins/test/connection.rb +3 -1
  91. data/lib/hybrid_platforms_conductor/hpc_plugins/test/deploy_freshness.rb +7 -21
  92. data/lib/hybrid_platforms_conductor/hpc_plugins/test/deploy_removes_root_access.rb +21 -19
  93. data/lib/hybrid_platforms_conductor/hpc_plugins/test/divergence.rb +2 -2
  94. data/lib/hybrid_platforms_conductor/hpc_plugins/test/executables.rb +2 -2
  95. data/lib/hybrid_platforms_conductor/hpc_plugins/test/file_system.rb +21 -22
  96. data/lib/hybrid_platforms_conductor/hpc_plugins/test/file_system_hdfs.rb +19 -21
  97. data/lib/hybrid_platforms_conductor/hpc_plugins/test/github_ci.rb +2 -3
  98. data/lib/hybrid_platforms_conductor/hpc_plugins/test/hostname.rb +3 -1
  99. data/lib/hybrid_platforms_conductor/hpc_plugins/test/idempotence.rb +2 -2
  100. data/lib/hybrid_platforms_conductor/hpc_plugins/test/ip.rb +4 -2
  101. data/lib/hybrid_platforms_conductor/hpc_plugins/test/jenkins_ci_conf.rb +21 -22
  102. data/lib/hybrid_platforms_conductor/hpc_plugins/test/jenkins_ci_masters_ok.rb +10 -12
  103. data/lib/hybrid_platforms_conductor/hpc_plugins/test/linear_strategy.rb +9 -9
  104. data/lib/hybrid_platforms_conductor/hpc_plugins/test/local_users.rb +5 -3
  105. data/lib/hybrid_platforms_conductor/hpc_plugins/test/mounts.rb +5 -3
  106. data/lib/hybrid_platforms_conductor/hpc_plugins/test/orphan_files.rb +13 -10
  107. data/lib/hybrid_platforms_conductor/hpc_plugins/test/ports.rb +5 -3
  108. data/lib/hybrid_platforms_conductor/hpc_plugins/test/private_ips.rb +5 -5
  109. data/lib/hybrid_platforms_conductor/hpc_plugins/test/public_ips.rb +5 -5
  110. data/lib/hybrid_platforms_conductor/hpc_plugins/test/spectre.rb +7 -7
  111. data/lib/hybrid_platforms_conductor/hpc_plugins/test/veids.rb +3 -3
  112. data/lib/hybrid_platforms_conductor/hpc_plugins/test/vulnerabilities.rb +27 -25
  113. data/lib/hybrid_platforms_conductor/hpc_plugins/test_report/confluence.rb +2 -2
  114. data/lib/hybrid_platforms_conductor/hpc_plugins/test_report/stdout.rb +8 -6
  115. data/lib/hybrid_platforms_conductor/io_router.rb +14 -13
  116. data/lib/hybrid_platforms_conductor/json_dumper.rb +2 -2
  117. data/lib/hybrid_platforms_conductor/log.rb +31 -0
  118. data/lib/hybrid_platforms_conductor/logger_helpers.rb +19 -16
  119. data/lib/hybrid_platforms_conductor/nodes_handler.rb +89 -71
  120. data/lib/hybrid_platforms_conductor/parallel_threads.rb +7 -11
  121. data/lib/hybrid_platforms_conductor/platform_handler.rb +7 -7
  122. data/lib/hybrid_platforms_conductor/platforms_handler.rb +5 -3
  123. data/lib/hybrid_platforms_conductor/plugin.rb +2 -2
  124. data/lib/hybrid_platforms_conductor/plugins.rb +14 -8
  125. data/lib/hybrid_platforms_conductor/provisioner.rb +4 -4
  126. data/lib/hybrid_platforms_conductor/report.rb +2 -2
  127. data/lib/hybrid_platforms_conductor/reports_handler.rb +3 -2
  128. data/lib/hybrid_platforms_conductor/secrets_reader.rb +31 -0
  129. data/lib/hybrid_platforms_conductor/services_handler.rb +32 -29
  130. data/lib/hybrid_platforms_conductor/test_only_remote_node.rb +18 -0
  131. data/lib/hybrid_platforms_conductor/test_report.rb +15 -18
  132. data/lib/hybrid_platforms_conductor/tests_runner.rb +116 -118
  133. data/lib/hybrid_platforms_conductor/thycotic.rb +28 -19
  134. data/lib/hybrid_platforms_conductor/topographer.rb +200 -190
  135. data/lib/hybrid_platforms_conductor/topographer/plugins/graphviz.rb +8 -8
  136. data/lib/hybrid_platforms_conductor/topographer/plugins/json.rb +4 -4
  137. data/lib/hybrid_platforms_conductor/version.rb +1 -1
  138. data/spec/hybrid_platforms_conductor_test.rb +33 -12
  139. data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/bash_spec.rb +18 -11
  140. data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/interactive_spec.rb +2 -2
  141. data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/remote_bash_spec.rb +32 -21
  142. data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/ruby_spec.rb +75 -49
  143. data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions/scp_spec.rb +27 -15
  144. data/spec/hybrid_platforms_conductor_test/api/actions_executor/actions_spec.rb +90 -59
  145. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connection_spec.rb +46 -44
  146. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/local/connectable_nodes_spec.rb +12 -8
  147. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/local/remote_actions_spec.rb +4 -7
  148. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/cli_options_spec.rb +21 -22
  149. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/config_dsl_spec.rb +23 -24
  150. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/connectable_nodes_spec.rb +10 -6
  151. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/connections_spec.rb +106 -75
  152. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/global_helpers_spec.rb +145 -126
  153. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/node_helpers_spec.rb +3 -3
  154. data/spec/hybrid_platforms_conductor_test/api/actions_executor/connectors/ssh/remote_actions_spec.rb +29 -25
  155. data/spec/hybrid_platforms_conductor_test/api/actions_executor/logging_spec.rb +167 -142
  156. data/spec/hybrid_platforms_conductor_test/api/actions_executor/parallel_spec.rb +272 -244
  157. data/spec/hybrid_platforms_conductor_test/api/actions_executor/timeout_spec.rb +16 -16
  158. data/spec/hybrid_platforms_conductor_test/api/cmd_runner_spec.rb +36 -36
  159. data/spec/hybrid_platforms_conductor_test/api/config_spec.rb +24 -22
  160. data/spec/hybrid_platforms_conductor_test/api/deployer/check_spec.rb +4 -2
  161. data/spec/hybrid_platforms_conductor_test/api/deployer/config_dsl_spec.rb +43 -5
  162. data/spec/hybrid_platforms_conductor_test/api/deployer/deploy_spec.rb +199 -216
  163. data/spec/hybrid_platforms_conductor_test/api/deployer/log_plugins/remote_fs_spec.rb +223 -0
  164. data/spec/hybrid_platforms_conductor_test/api/deployer/parse_deploy_output_spec.rb +55 -59
  165. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioner_spec.rb +36 -62
  166. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/podman_spec.rb +17 -17
  167. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/config_dsl_spec.rb +4 -4
  168. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/create_spec.rb +44 -51
  169. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/destroy_spec.rb +3 -3
  170. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/ip_spec.rb +12 -16
  171. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/destroy_vm_spec.rb +31 -19
  172. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/expired_containers_spec.rb +324 -266
  173. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/ips_assignment_spec.rb +89 -61
  174. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/other_lxc_containers_resources_spec.rb +117 -93
  175. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/pve_node_resources_spec.rb +71 -54
  176. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/retries_spec.rb +10 -8
  177. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/reserve_proxmox_container/vm_ids_assignment_spec.rb +80 -60
  178. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/start_spec.rb +1 -1
  179. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/state_spec.rb +1 -1
  180. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioners/proxmox/stop_spec.rb +1 -1
  181. data/spec/hybrid_platforms_conductor_test/api/deployer/secrets_reader_plugins/cli_spec.rb +64 -0
  182. data/spec/hybrid_platforms_conductor_test/api/deployer/secrets_reader_plugins/thycotic_spec.rb +268 -0
  183. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/config_spec.rb +8 -10
  184. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/host_ip_spec.rb +33 -24
  185. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/host_keys_spec.rb +64 -51
  186. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs/platform_handlers_spec.rb +3 -3
  187. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs_plugins_api_spec.rb +50 -51
  188. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/common_spec.rb +91 -81
  189. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/config_dsl_spec.rb +14 -16
  190. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/git_diff_impacts_spec.rb +51 -75
  191. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/nodes_selectors_spec.rb +35 -26
  192. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/platform_handlers_plugins_api_spec.rb +24 -16
  193. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/several_platforms_spec.rb +29 -19
  194. data/spec/hybrid_platforms_conductor_test/api/platform_handler_spec.rb +4 -4
  195. data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/config_dsl_spec.rb +2 -2
  196. data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/deploy_output_parsing_spec.rb +6 -6
  197. data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/diff_impacts_spec.rb +57 -99
  198. data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/inventory_spec.rb +4 -4
  199. data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/packaging_spec.rb +32 -35
  200. data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/services_deployment_spec.rb +10 -10
  201. data/spec/hybrid_platforms_conductor_test/api/platforms_handler_spec.rb +38 -27
  202. data/spec/hybrid_platforms_conductor_test/api/plugins_spec.rb +46 -52
  203. data/spec/hybrid_platforms_conductor_test/api/reports_handler_spec.rb +2 -2
  204. data/spec/hybrid_platforms_conductor_test/api/services_handler/actions_to_deploy_spec.rb +90 -58
  205. data/spec/hybrid_platforms_conductor_test/api/services_handler/deploy_allowed_spec.rb +38 -34
  206. data/spec/hybrid_platforms_conductor_test/api/services_handler/log_info_spec.rb +11 -9
  207. data/spec/hybrid_platforms_conductor_test/api/services_handler/package_spec.rb +193 -171
  208. data/spec/hybrid_platforms_conductor_test/api/services_handler/parse_deploy_output_spec.rb +66 -54
  209. data/spec/hybrid_platforms_conductor_test/api/services_handler/prepare_for_deploy_spec.rb +147 -133
  210. data/spec/hybrid_platforms_conductor_test/api/tests_runner/common_spec.rb +69 -49
  211. data/spec/hybrid_platforms_conductor_test/api/tests_runner/global_spec.rb +5 -4
  212. data/spec/hybrid_platforms_conductor_test/api/tests_runner/node_check_spec.rb +8 -5
  213. data/spec/hybrid_platforms_conductor_test/api/tests_runner/node_spec.rb +8 -5
  214. data/spec/hybrid_platforms_conductor_test/api/tests_runner/node_ssh_spec.rb +30 -27
  215. data/spec/hybrid_platforms_conductor_test/api/tests_runner/platform_spec.rb +12 -9
  216. data/spec/hybrid_platforms_conductor_test/api/tests_runner/reports_spec.rb +48 -47
  217. data/spec/hybrid_platforms_conductor_test/api/tests_runner/test_plugins/bitbucket_conf_spec.rb +5 -5
  218. data/spec/hybrid_platforms_conductor_test/api/tests_runner/test_plugins/github_ci_spec.rb +5 -5
  219. data/spec/hybrid_platforms_conductor_test/api/tests_runner/test_reports_plugins/confluence_spec.rb +5 -5
  220. data/spec/hybrid_platforms_conductor_test/cmdb_plugins/test_cmdb.rb +9 -9
  221. data/spec/hybrid_platforms_conductor_test/cmdb_plugins/{test_cmdb2.rb → test_cmdb_2.rb} +6 -6
  222. data/spec/hybrid_platforms_conductor_test/cmdb_plugins/test_cmdb_others.rb +3 -3
  223. data/spec/hybrid_platforms_conductor_test/cmdb_plugins/{test_cmdb_others2.rb → test_cmdb_others_2.rb} +2 -2
  224. data/spec/hybrid_platforms_conductor_test/docs_spec.rb +1 -1
  225. data/spec/hybrid_platforms_conductor_test/executables/{check-node_spec.rb → check_node_spec.rb} +4 -6
  226. data/spec/hybrid_platforms_conductor_test/executables/deploy_spec.rb +4 -6
  227. data/spec/hybrid_platforms_conductor_test/executables/get_impacted_nodes_spec.rb +76 -77
  228. data/spec/hybrid_platforms_conductor_test/executables/last_deploys_spec.rb +159 -113
  229. data/spec/hybrid_platforms_conductor_test/executables/nodes_to_deploy_spec.rb +299 -160
  230. data/spec/hybrid_platforms_conductor_test/executables/options/actions_executor_spec.rb +4 -6
  231. data/spec/hybrid_platforms_conductor_test/executables/options/cmd_runner_spec.rb +3 -5
  232. data/spec/hybrid_platforms_conductor_test/executables/options/common_spec.rb +8 -8
  233. data/spec/hybrid_platforms_conductor_test/executables/options/deployer_spec.rb +12 -196
  234. data/spec/hybrid_platforms_conductor_test/executables/options/nodes_handler_spec.rb +9 -10
  235. data/spec/hybrid_platforms_conductor_test/executables/options/nodes_selectors_spec.rb +9 -10
  236. data/spec/hybrid_platforms_conductor_test/executables/options/reports_handler_spec.rb +1 -1
  237. data/spec/hybrid_platforms_conductor_test/executables/options/tests_runner_spec.rb +22 -22
  238. data/spec/hybrid_platforms_conductor_test/executables/report_spec.rb +22 -16
  239. data/spec/hybrid_platforms_conductor_test/executables/run_spec.rb +32 -32
  240. data/spec/hybrid_platforms_conductor_test/executables/ssh_config_spec.rb +7 -9
  241. data/spec/hybrid_platforms_conductor_test/executables/test_spec.rb +3 -5
  242. data/spec/hybrid_platforms_conductor_test/helpers/actions_executor_helpers.rb +2 -2
  243. data/spec/hybrid_platforms_conductor_test/helpers/cmd_runner_helpers.rb +4 -3
  244. data/spec/hybrid_platforms_conductor_test/helpers/cmdb_helpers.rb +2 -2
  245. data/spec/hybrid_platforms_conductor_test/helpers/config_helpers.rb +1 -1
  246. data/spec/hybrid_platforms_conductor_test/helpers/connector_ssh_helpers.rb +12 -13
  247. data/spec/hybrid_platforms_conductor_test/helpers/deployer_helpers.rb +245 -56
  248. data/spec/hybrid_platforms_conductor_test/helpers/executables_helpers.rb +11 -11
  249. data/spec/hybrid_platforms_conductor_test/helpers/nodes_handler_helpers.rb +1 -1
  250. data/spec/hybrid_platforms_conductor_test/helpers/platforms_handler_helpers.rb +39 -28
  251. data/spec/hybrid_platforms_conductor_test/helpers/plugins_helpers.rb +1 -1
  252. data/spec/hybrid_platforms_conductor_test/helpers/provisioner_proxmox_helpers.rb +86 -111
  253. data/spec/hybrid_platforms_conductor_test/helpers/reports_handler_helpers.rb +1 -1
  254. data/spec/hybrid_platforms_conductor_test/helpers/serverless_chef_helpers.rb +3 -3
  255. data/spec/hybrid_platforms_conductor_test/helpers/services_handler_helpers.rb +1 -1
  256. data/spec/hybrid_platforms_conductor_test/helpers/tests_runner_helpers.rb +1 -1
  257. data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem/hpc_plugins/test_plugin_type/{test_plugin_id1.rb → test_plugin_id_1.rb} +0 -0
  258. data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem/hpc_plugins/test_plugin_type/{test_plugin_id2.rb → test_plugin_id_2.rb} +0 -0
  259. data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem2/sub_dir/hpc_plugins/test_plugin_type/{test_plugin_id3.rb → test_plugin_id_3.rb} +0 -0
  260. data/spec/hybrid_platforms_conductor_test/mocked_lib/my_test_gem2/sub_dir/hpc_plugins/{test_plugin_type2/test_plugin_id4.rb → test_plugin_type_2/test_plugin_id_4.rb} +0 -0
  261. data/spec/hybrid_platforms_conductor_test/platform_handler_plugins/test.rb +1 -1
  262. data/spec/hybrid_platforms_conductor_test/platform_handler_plugins/{test2.rb → test_2.rb} +0 -0
  263. data/spec/hybrid_platforms_conductor_test/rubocop_spec.rb +31 -0
  264. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/1_node/nodes/node.json +3 -3
  265. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/data_bags/nodes/node.json +3 -3
  266. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/recipes/cookbooks/test_cookbook_2/libraries/default.rb +1 -0
  267. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/several_cookbooks/other_cookbooks/test_cookbook_2/libraries/default.rb +1 -0
  268. data/spec/hybrid_platforms_conductor_test/shared_examples/deployer.rb +952 -0
  269. data/spec/hybrid_platforms_conductor_test/test_connector.rb +3 -3
  270. data/spec/hybrid_platforms_conductor_test/test_log_no_read_plugin.rb +84 -0
  271. data/spec/hybrid_platforms_conductor_test/test_log_plugin.rb +105 -0
  272. data/spec/hybrid_platforms_conductor_test/test_plugins/global.rb +1 -0
  273. data/spec/hybrid_platforms_conductor_test/test_plugins/node.rb +1 -0
  274. data/spec/hybrid_platforms_conductor_test/test_plugins/node_check.rb +1 -0
  275. data/spec/hybrid_platforms_conductor_test/test_plugins/platform.rb +1 -0
  276. data/spec/hybrid_platforms_conductor_test/test_plugins/several_checks.rb +2 -2
  277. data/spec/hybrid_platforms_conductor_test/test_secrets_reader_plugin.rb +45 -0
  278. data/spec/hybrid_platforms_conductor_test/tests_report_plugin.rb +5 -6
  279. data/spec/spec_helper.rb +17 -18
  280. data/tools/check_md +16 -20
  281. data/tools/generate_mermaid +1 -1
  282. metadata +195 -144
  283. data/spec/hybrid_platforms_conductor_test/helpers/deployer_test_helpers.rb +0 -916
@@ -1,39 +1,43 @@
1
1
  describe HybridPlatformsConductor::ActionsExecutor do
2
2
 
3
- context 'checking parallel runs' do
3
+ context 'when checking parallel runs' do
4
4
 
5
5
  # Get a test platform to test parallel runs
6
6
  #
7
7
  # Parameters::
8
- # * Proc: Code called with platform setup
9
- def with_test_platform_for_parallel_tests
10
- with_test_platform_for_executor(nodes: {
11
- 'node1' => {},
12
- 'node2' => {},
13
- 'node3' => {},
14
- 'node4' => {}
15
- }) do
16
- yield
17
- end
8
+ # * *block* (Proc): Code called with platform setup
9
+ def with_test_platform_for_parallel_tests(&block)
10
+ with_test_platform_for_executor(
11
+ nodes: {
12
+ 'node1' => {},
13
+ 'node2' => {},
14
+ 'node3' => {},
15
+ 'node4' => {}
16
+ },
17
+ &block
18
+ )
18
19
  end
19
20
 
20
21
  it 'executes a simple command on several nodes in parallel' do
21
22
  with_test_platform_for_parallel_tests do
22
23
  nodes_executed = []
23
- test_actions_executor.execute_actions({
24
- 'node1' => { test_action: { code: proc do
25
- sleep 2
26
- nodes_executed << 'node1'
27
- end } },
28
- 'node2' => { test_action: { code: proc do
29
- sleep 3
30
- nodes_executed << 'node2'
31
- end } },
32
- 'node3' => { test_action: { code: proc do
33
- sleep 1
34
- nodes_executed << 'node3'
35
- end } }
36
- }, concurrent: true)
24
+ test_actions_executor.execute_actions(
25
+ {
26
+ 'node1' => { test_action: { code: proc do
27
+ sleep 2
28
+ nodes_executed << 'node1'
29
+ end } },
30
+ 'node2' => { test_action: { code: proc do
31
+ sleep 3
32
+ nodes_executed << 'node2'
33
+ end } },
34
+ 'node3' => { test_action: { code: proc do
35
+ sleep 1
36
+ nodes_executed << 'node3'
37
+ end } }
38
+ },
39
+ concurrent: true
40
+ )
37
41
  expect(nodes_executed).to eq %w[node3 node1 node2]
38
42
  end
39
43
  end
@@ -46,76 +50,81 @@ describe HybridPlatformsConductor::ActionsExecutor do
46
50
  # * node2: 1---2-----3
47
51
  # * node3: ------1-2-----3
48
52
  # * Time : 0 1 2 3 4 5 6 7 8
49
- expect(test_actions_executor.execute_actions({
50
- 'node1' => [
51
- {
52
- test_action: { code: proc do |stdout, stderr|
53
- sleep 1
54
- stdout << 'node1_action1 '
55
- actions_executed << 'node1_action1'
56
- end }
57
- },
58
- {
59
- test_action: { code: proc do |stdout, stderr|
60
- sleep 5
61
- stdout << 'node1_action2 '
62
- actions_executed << 'node1_action2'
63
- end }
64
- },
65
- {
66
- test_action: { code: proc do |stdout, stderr|
67
- sleep 2
68
- stdout << 'node1_action3'
69
- actions_executed << 'node1_action3'
70
- end }
71
- }
72
- ],
73
- 'node2' => [
74
- {
75
- test_action: { code: proc do |stdout, stderr|
76
- stdout << 'node2_action1 '
77
- actions_executed << 'node2_action1'
78
- end }
79
- },
80
- {
81
- test_action: { code: proc do |stdout, stderr|
82
- sleep 2
83
- stdout << 'node2_action2 '
84
- actions_executed << 'node2_action2'
85
- end }
86
- },
87
- {
88
- test_action: { code: proc do |stdout, stderr|
89
- sleep 3
90
- stdout << 'node2_action3'
91
- actions_executed << 'node2_action3'
92
- end }
93
- }
94
- ],
95
- 'node3' => [
96
- {
97
- test_action: { code: proc do |stdout, stderr|
98
- sleep 3
99
- stdout << 'node3_action1 '
100
- actions_executed << 'node3_action1'
101
- end }
102
- },
53
+ expect(
54
+ test_actions_executor.execute_actions(
103
55
  {
104
- test_action: { code: proc do |stdout, stderr|
105
- sleep 1
106
- stdout << 'node3_action2 '
107
- actions_executed << 'node3_action2'
108
- end }
56
+ 'node1' => [
57
+ {
58
+ test_action: { code: proc do |stdout|
59
+ sleep 1
60
+ stdout << 'node1_action1 '
61
+ actions_executed << 'node1_action1'
62
+ end }
63
+ },
64
+ {
65
+ test_action: { code: proc do |stdout|
66
+ sleep 5
67
+ stdout << 'node1_action2 '
68
+ actions_executed << 'node1_action2'
69
+ end }
70
+ },
71
+ {
72
+ test_action: { code: proc do |stdout|
73
+ sleep 2
74
+ stdout << 'node1_action3'
75
+ actions_executed << 'node1_action3'
76
+ end }
77
+ }
78
+ ],
79
+ 'node2' => [
80
+ {
81
+ test_action: { code: proc do |stdout|
82
+ stdout << 'node2_action1 '
83
+ actions_executed << 'node2_action1'
84
+ end }
85
+ },
86
+ {
87
+ test_action: { code: proc do |stdout|
88
+ sleep 2
89
+ stdout << 'node2_action2 '
90
+ actions_executed << 'node2_action2'
91
+ end }
92
+ },
93
+ {
94
+ test_action: { code: proc do |stdout|
95
+ sleep 3
96
+ stdout << 'node2_action3'
97
+ actions_executed << 'node2_action3'
98
+ end }
99
+ }
100
+ ],
101
+ 'node3' => [
102
+ {
103
+ test_action: { code: proc do |stdout|
104
+ sleep 3
105
+ stdout << 'node3_action1 '
106
+ actions_executed << 'node3_action1'
107
+ end }
108
+ },
109
+ {
110
+ test_action: { code: proc do |stdout|
111
+ sleep 1
112
+ stdout << 'node3_action2 '
113
+ actions_executed << 'node3_action2'
114
+ end }
115
+ },
116
+ {
117
+ test_action: { code: proc do |stdout|
118
+ sleep 3
119
+ stdout << 'node3_action3'
120
+ actions_executed << 'node3_action3'
121
+ end }
122
+ }
123
+ ]
109
124
  },
110
- {
111
- test_action: { code: proc do |stdout, stderr|
112
- sleep 3
113
- stdout << 'node3_action3'
114
- actions_executed << 'node3_action3'
115
- end }
116
- }
117
- ]
118
- }, concurrent: true)).to eq(
125
+ concurrent: true
126
+ )
127
+ ).to eq(
119
128
  'node1' => [0, 'node1_action1 node1_action2 node1_action3', ''],
120
129
  'node2' => [0, 'node2_action1 node2_action2 node2_action3', ''],
121
130
  'node3' => [0, 'node3_action1 node3_action2 node3_action3', '']
@@ -136,82 +145,89 @@ describe HybridPlatformsConductor::ActionsExecutor do
136
145
 
137
146
  it 'executes several commands on several nodes with timeout on different actions depending on the node, in parallel' do
138
147
  with_test_platform_for_parallel_tests do
139
- expect(test_actions_executor.execute_actions(
140
- {
141
- 'node1' => [
142
- { bash: 'sleep 1 && echo Node11' },
143
- { bash: 'sleep 5 && echo Node12' }
144
- ],
145
- 'node2' => [
146
- { bash: 'echo Node21' },
147
- { bash: 'sleep 1 && echo Node22' }
148
- ],
149
- 'node3' => [
150
- { bash: 'sleep 1 && echo Node31' },
151
- { bash: 'sleep 1 && echo Node32' },
152
- { bash: 'sleep 5 && echo Node33' }
153
- ],
154
- 'node4' => [
155
- { bash: 'sleep 5 && echo Node41' }
156
- ]
157
- },
158
- timeout: 3,
159
- concurrent: true
160
- )).to eq(
161
- 'node1' => [:timeout, "Node11\n", ''],
162
- 'node2' => [0, "Node21\nNode22\n", ''],
163
- 'node3' => [:timeout, "Node31\nNode32\n", ''],
164
- 'node4' => [:timeout, '', '']
148
+ expect(
149
+ test_actions_executor.execute_actions(
150
+ {
151
+ 'node1' => [
152
+ { bash: 'sleep 1 && echo Node11' },
153
+ { bash: 'sleep 5 && echo Node12' }
154
+ ],
155
+ 'node2' => [
156
+ { bash: 'echo Node21' },
157
+ { bash: 'sleep 1 && echo Node22' }
158
+ ],
159
+ 'node3' => [
160
+ { bash: 'sleep 1 && echo Node31' },
161
+ { bash: 'sleep 1 && echo Node32' },
162
+ { bash: 'sleep 5 && echo Node33' }
163
+ ],
164
+ 'node4' => [
165
+ { bash: 'sleep 5 && echo Node41' }
166
+ ]
167
+ },
168
+ timeout: 3,
169
+ concurrent: true
170
+ )
171
+ ).to eq(
172
+ 'node1' => [:timeout, "Node11\n", ''],
173
+ 'node2' => [0, "Node21\nNode22\n", ''],
174
+ 'node3' => [:timeout, "Node31\nNode32\n", ''],
175
+ 'node4' => [:timeout, '', '']
165
176
  )
166
177
  end
167
178
  end
168
179
 
169
180
  it 'executes several actions on several nodes and returns the corresponding stdout and stderr correctly in parallel' do
170
181
  with_test_platform_for_parallel_tests do
171
- expect(test_actions_executor.execute_actions({
172
- 'node1' => [
173
- { test_action: { code: proc do |stdout, stderr|
174
- stdout << 'node1_action1_stdout '
175
- stderr << 'node1_action1_stderr '
176
- end } },
177
- { test_action: { code: proc do |stdout, stderr|
178
- stdout << 'node1_action2_stdout '
179
- stderr << 'node1_action2_stderr '
180
- end } },
181
- { test_action: { code: proc do |stdout, stderr|
182
- stdout << 'node1_action3_stdout'
183
- stderr << 'node1_action3_stderr'
184
- end } }
185
- ],
186
- 'node2' => [
187
- { test_action: { code: proc do |stdout, stderr|
188
- stdout << 'node2_action1_stdout '
189
- stderr << 'node2_action1_stderr '
190
- end } },
191
- { test_action: { code: proc do |stdout, stderr|
192
- stdout << 'node2_action2_stdout '
193
- stderr << 'node2_action2_stderr '
194
- end } },
195
- { test_action: { code: proc do |stdout, stderr|
196
- stdout << 'node2_action3_stdout'
197
- stderr << 'node2_action3_stderr'
198
- end } }
199
- ],
200
- 'node3' => [
201
- { test_action: { code: proc do |stdout, stderr|
202
- stdout << 'node3_action1_stdout '
203
- stderr << 'node3_action1_stderr '
204
- end } },
205
- { test_action: { code: proc do |stdout, stderr|
206
- stdout << 'node3_action2_stdout '
207
- stderr << 'node3_action2_stderr '
208
- end } },
209
- { test_action: { code: proc do |stdout, stderr|
210
- stdout << 'node3_action3_stdout'
211
- stderr << 'node3_action3_stderr'
212
- end } }
213
- ]
214
- }, concurrent: true)).to eq(
182
+ expect(
183
+ test_actions_executor.execute_actions(
184
+ {
185
+ 'node1' => [
186
+ { test_action: { code: proc do |stdout, stderr|
187
+ stdout << 'node1_action1_stdout '
188
+ stderr << 'node1_action1_stderr '
189
+ end } },
190
+ { test_action: { code: proc do |stdout, stderr|
191
+ stdout << 'node1_action2_stdout '
192
+ stderr << 'node1_action2_stderr '
193
+ end } },
194
+ { test_action: { code: proc do |stdout, stderr|
195
+ stdout << 'node1_action3_stdout'
196
+ stderr << 'node1_action3_stderr'
197
+ end } }
198
+ ],
199
+ 'node2' => [
200
+ { test_action: { code: proc do |stdout, stderr|
201
+ stdout << 'node2_action1_stdout '
202
+ stderr << 'node2_action1_stderr '
203
+ end } },
204
+ { test_action: { code: proc do |stdout, stderr|
205
+ stdout << 'node2_action2_stdout '
206
+ stderr << 'node2_action2_stderr '
207
+ end } },
208
+ { test_action: { code: proc do |stdout, stderr|
209
+ stdout << 'node2_action3_stdout'
210
+ stderr << 'node2_action3_stderr'
211
+ end } }
212
+ ],
213
+ 'node3' => [
214
+ { test_action: { code: proc do |stdout, stderr|
215
+ stdout << 'node3_action1_stdout '
216
+ stderr << 'node3_action1_stderr '
217
+ end } },
218
+ { test_action: { code: proc do |stdout, stderr|
219
+ stdout << 'node3_action2_stdout '
220
+ stderr << 'node3_action2_stderr '
221
+ end } },
222
+ { test_action: { code: proc do |stdout, stderr|
223
+ stdout << 'node3_action3_stdout'
224
+ stderr << 'node3_action3_stderr'
225
+ end } }
226
+ ]
227
+ },
228
+ concurrent: true
229
+ )
230
+ ).to eq(
215
231
  'node1' => [0, 'node1_action1_stdout node1_action2_stdout node1_action3_stdout', 'node1_action1_stderr node1_action2_stderr node1_action3_stderr'],
216
232
  'node2' => [0, 'node2_action1_stdout node2_action2_stdout node2_action3_stdout', 'node2_action1_stderr node2_action2_stderr node2_action3_stderr'],
217
233
  'node3' => [0, 'node3_action1_stdout node3_action2_stdout node3_action3_stdout', 'node3_action1_stderr node3_action2_stderr node3_action3_stderr']
@@ -222,65 +238,71 @@ describe HybridPlatformsConductor::ActionsExecutor do
222
238
  it 'executes several actions on several nodes and returns the corresponding stdout and stderr correctly in parallel and in files' do
223
239
  with_repository do |logs_repository|
224
240
  with_test_platform_for_parallel_tests do
225
- expect(test_actions_executor.execute_actions({
226
- 'node1' => [
227
- { test_action: { code: proc do |stdout, stderr|
228
- stdout << 'node1_action1_stdout '
229
- sleep 1
230
- stderr << 'node1_action1_stderr '
231
- sleep 1
232
- end } },
233
- { test_action: { code: proc do |stdout, stderr|
234
- stdout << 'node1_action2_stdout '
235
- sleep 1
236
- stderr << 'node1_action2_stderr '
237
- sleep 1
238
- end } },
239
- { test_action: { code: proc do |stdout, stderr|
240
- stdout << 'node1_action3_stdout'
241
- sleep 1
242
- stderr << 'node1_action3_stderr'
243
- end } }
244
- ],
245
- 'node2' => [
246
- { test_action: { code: proc do |stdout, stderr|
247
- stdout << 'node2_action1_stdout '
248
- sleep 1
249
- stderr << 'node2_action1_stderr '
250
- sleep 1
251
- end } },
252
- { test_action: { code: proc do |stdout, stderr|
253
- stdout << 'node2_action2_stdout '
254
- sleep 1
255
- stderr << 'node2_action2_stderr '
256
- sleep 1
257
- end } },
258
- { test_action: { code: proc do |stdout, stderr|
259
- stdout << 'node2_action3_stdout'
260
- sleep 1
261
- stderr << 'node2_action3_stderr'
262
- end } }
263
- ],
264
- 'node3' => [
265
- { test_action: { code: proc do |stdout, stderr|
266
- stdout << 'node3_action1_stdout '
267
- sleep 1
268
- stderr << 'node3_action1_stderr '
269
- sleep 1
270
- end } },
271
- { test_action: { code: proc do |stdout, stderr|
272
- stdout << 'node3_action2_stdout '
273
- sleep 1
274
- stderr << 'node3_action2_stderr '
275
- sleep 1
276
- end } },
277
- { test_action: { code: proc do |stdout, stderr|
278
- stdout << 'node3_action3_stdout'
279
- sleep 1
280
- stderr << 'node3_action3_stderr'
281
- end } }
282
- ]
283
- }, concurrent: true, log_to_dir: logs_repository)).to eq(
241
+ expect(
242
+ test_actions_executor.execute_actions(
243
+ {
244
+ 'node1' => [
245
+ { test_action: { code: proc do |stdout, stderr|
246
+ stdout << 'node1_action1_stdout '
247
+ sleep 1
248
+ stderr << 'node1_action1_stderr '
249
+ sleep 1
250
+ end } },
251
+ { test_action: { code: proc do |stdout, stderr|
252
+ stdout << 'node1_action2_stdout '
253
+ sleep 1
254
+ stderr << 'node1_action2_stderr '
255
+ sleep 1
256
+ end } },
257
+ { test_action: { code: proc do |stdout, stderr|
258
+ stdout << 'node1_action3_stdout'
259
+ sleep 1
260
+ stderr << 'node1_action3_stderr'
261
+ end } }
262
+ ],
263
+ 'node2' => [
264
+ { test_action: { code: proc do |stdout, stderr|
265
+ stdout << 'node2_action1_stdout '
266
+ sleep 1
267
+ stderr << 'node2_action1_stderr '
268
+ sleep 1
269
+ end } },
270
+ { test_action: { code: proc do |stdout, stderr|
271
+ stdout << 'node2_action2_stdout '
272
+ sleep 1
273
+ stderr << 'node2_action2_stderr '
274
+ sleep 1
275
+ end } },
276
+ { test_action: { code: proc do |stdout, stderr|
277
+ stdout << 'node2_action3_stdout'
278
+ sleep 1
279
+ stderr << 'node2_action3_stderr'
280
+ end } }
281
+ ],
282
+ 'node3' => [
283
+ { test_action: { code: proc do |stdout, stderr|
284
+ stdout << 'node3_action1_stdout '
285
+ sleep 1
286
+ stderr << 'node3_action1_stderr '
287
+ sleep 1
288
+ end } },
289
+ { test_action: { code: proc do |stdout, stderr|
290
+ stdout << 'node3_action2_stdout '
291
+ sleep 1
292
+ stderr << 'node3_action2_stderr '
293
+ sleep 1
294
+ end } },
295
+ { test_action: { code: proc do |stdout, stderr|
296
+ stdout << 'node3_action3_stdout'
297
+ sleep 1
298
+ stderr << 'node3_action3_stderr'
299
+ end } }
300
+ ]
301
+ },
302
+ concurrent: true,
303
+ log_to_dir: logs_repository
304
+ )
305
+ ).to eq(
284
306
  'node1' => [0, 'node1_action1_stdout node1_action2_stdout node1_action3_stdout', 'node1_action1_stderr node1_action2_stderr node1_action3_stderr'],
285
307
  'node2' => [0, 'node2_action1_stdout node2_action2_stdout node2_action3_stdout', 'node2_action1_stderr node2_action2_stderr node2_action3_stderr'],
286
308
  'node3' => [0, 'node3_action1_stdout node3_action2_stdout node3_action3_stdout', 'node3_action1_stderr node3_action2_stderr node3_action3_stderr']
@@ -297,28 +319,34 @@ describe HybridPlatformsConductor::ActionsExecutor do
297
319
 
298
320
  it 'executes the same actions on several nodes and returns the corresponding stdout and stderr correctly in parallel and in files' do
299
321
  with_repository do |logs_repository|
300
- with_test_platform(nodes: { 'node1' => {}, 'node2' => {}, 'node3' => {} }) do
301
- expect(test_actions_executor.execute_actions({
302
- %w[node1 node2 node3] => [
303
- { ruby: proc do |stdout, stderr, action|
304
- stdout << "#{action.node}_action1_stdout "
305
- sleep 1
306
- stderr << "#{action.node}_action1_stderr "
307
- sleep 1
308
- end },
309
- { ruby: proc do |stdout, stderr, action|
310
- stdout << "#{action.node}_action2_stdout "
311
- sleep 1
312
- stderr << "#{action.node}_action2_stderr "
313
- sleep 1
314
- end },
315
- { ruby: proc do |stdout, stderr, action|
316
- stdout << "#{action.node}_action3_stdout"
317
- sleep 1
318
- stderr << "#{action.node}_action3_stderr"
319
- end }
320
- ]
321
- }, concurrent: true, log_to_dir: logs_repository)).to eq(
322
+ with_test_platform({ nodes: { 'node1' => {}, 'node2' => {}, 'node3' => {} } }) do
323
+ expect(
324
+ test_actions_executor.execute_actions(
325
+ {
326
+ %w[node1 node2 node3] => [
327
+ { ruby: proc do |stdout, stderr, action|
328
+ stdout << "#{action.node}_action1_stdout "
329
+ sleep 1
330
+ stderr << "#{action.node}_action1_stderr "
331
+ sleep 1
332
+ end },
333
+ { ruby: proc do |stdout, stderr, action|
334
+ stdout << "#{action.node}_action2_stdout "
335
+ sleep 1
336
+ stderr << "#{action.node}_action2_stderr "
337
+ sleep 1
338
+ end },
339
+ { ruby: proc do |stdout, stderr, action|
340
+ stdout << "#{action.node}_action3_stdout"
341
+ sleep 1
342
+ stderr << "#{action.node}_action3_stderr"
343
+ end }
344
+ ]
345
+ },
346
+ concurrent: true,
347
+ log_to_dir: logs_repository
348
+ )
349
+ ).to eq(
322
350
  'node1' => [0, 'node1_action1_stdout node1_action2_stdout node1_action3_stdout', 'node1_action1_stderr node1_action2_stderr node1_action3_stderr'],
323
351
  'node2' => [0, 'node2_action1_stdout node2_action2_stdout node2_action3_stdout', 'node2_action1_stderr node2_action2_stderr node2_action3_stderr'],
324
352
  'node3' => [0, 'node3_action1_stdout node3_action2_stdout node3_action3_stdout', 'node3_action1_stderr node3_action2_stderr node3_action3_stderr']