temporalio 0.1.1 → 0.2.0

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 (585) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +4035 -0
  3. data/Cargo.toml +25 -0
  4. data/Gemfile +20 -0
  5. data/LICENSE +16 -15
  6. data/README.md +455 -195
  7. data/Rakefile +387 -0
  8. data/ext/Cargo.toml +25 -0
  9. data/lib/temporalio/activity/complete_async_error.rb +11 -0
  10. data/lib/temporalio/activity/context.rb +82 -77
  11. data/lib/temporalio/activity/definition.rb +77 -0
  12. data/lib/temporalio/activity/info.rb +42 -46
  13. data/lib/temporalio/activity.rb +49 -65
  14. data/lib/temporalio/api/batch/v1/message.rb +31 -0
  15. data/lib/temporalio/api/cloud/cloudservice/v1/request_response.rb +93 -0
  16. data/lib/temporalio/api/cloud/cloudservice/v1/service.rb +25 -0
  17. data/lib/temporalio/api/cloud/cloudservice.rb +3 -0
  18. data/lib/temporalio/api/cloud/identity/v1/message.rb +36 -0
  19. data/lib/temporalio/api/cloud/namespace/v1/message.rb +35 -0
  20. data/lib/temporalio/api/cloud/operation/v1/message.rb +27 -0
  21. data/lib/temporalio/api/cloud/region/v1/message.rb +23 -0
  22. data/lib/temporalio/api/command/v1/message.rb +46 -0
  23. data/lib/temporalio/api/common/v1/grpc_status.rb +23 -0
  24. data/lib/temporalio/api/common/v1/message.rb +41 -0
  25. data/lib/temporalio/api/enums/v1/batch_operation.rb +22 -0
  26. data/lib/temporalio/api/enums/v1/command_type.rb +21 -0
  27. data/lib/temporalio/api/enums/v1/common.rb +26 -0
  28. data/lib/temporalio/api/enums/v1/event_type.rb +21 -0
  29. data/lib/temporalio/api/enums/v1/failed_cause.rb +26 -0
  30. data/lib/temporalio/api/enums/v1/namespace.rb +23 -0
  31. data/lib/temporalio/api/enums/v1/query.rb +22 -0
  32. data/lib/temporalio/api/enums/v1/reset.rb +23 -0
  33. data/lib/temporalio/api/enums/v1/schedule.rb +21 -0
  34. data/lib/temporalio/api/enums/v1/task_queue.rb +25 -0
  35. data/lib/temporalio/api/enums/v1/update.rb +22 -0
  36. data/lib/temporalio/api/enums/v1/workflow.rb +30 -0
  37. data/lib/temporalio/api/errordetails/v1/message.rb +42 -0
  38. data/lib/temporalio/api/export/v1/message.rb +24 -0
  39. data/lib/temporalio/api/failure/v1/message.rb +35 -0
  40. data/lib/temporalio/api/filter/v1/message.rb +27 -0
  41. data/lib/temporalio/api/history/v1/message.rb +90 -0
  42. data/lib/temporalio/api/namespace/v1/message.rb +31 -0
  43. data/lib/temporalio/api/nexus/v1/message.rb +40 -0
  44. data/lib/temporalio/api/operatorservice/v1/request_response.rb +49 -0
  45. data/lib/temporalio/api/operatorservice/v1/service.rb +23 -0
  46. data/lib/temporalio/api/operatorservice.rb +3 -0
  47. data/lib/temporalio/api/protocol/v1/message.rb +23 -0
  48. data/lib/temporalio/api/query/v1/message.rb +27 -0
  49. data/lib/temporalio/api/replication/v1/message.rb +26 -0
  50. data/lib/temporalio/api/schedule/v1/message.rb +42 -0
  51. data/lib/temporalio/api/sdk/v1/enhanced_stack_trace.rb +25 -0
  52. data/lib/temporalio/api/sdk/v1/task_complete_metadata.rb +21 -0
  53. data/lib/temporalio/api/sdk/v1/user_metadata.rb +23 -0
  54. data/lib/temporalio/api/sdk/v1/workflow_metadata.rb +23 -0
  55. data/lib/temporalio/api/taskqueue/v1/message.rb +45 -0
  56. data/lib/temporalio/api/update/v1/message.rb +33 -0
  57. data/lib/temporalio/api/version/v1/message.rb +26 -0
  58. data/lib/temporalio/api/workflow/v1/message.rb +43 -0
  59. data/lib/temporalio/api/workflowservice/v1/request_response.rb +189 -0
  60. data/lib/temporalio/api/workflowservice/v1/service.rb +23 -0
  61. data/lib/temporalio/api/workflowservice.rb +3 -0
  62. data/lib/temporalio/api.rb +13 -0
  63. data/lib/temporalio/cancellation.rb +150 -0
  64. data/lib/temporalio/client/activity_id_reference.rb +32 -0
  65. data/lib/temporalio/client/async_activity_handle.rb +110 -0
  66. data/lib/temporalio/client/connection/cloud_service.rb +648 -0
  67. data/lib/temporalio/client/connection/operator_service.rb +249 -0
  68. data/lib/temporalio/client/connection/service.rb +41 -0
  69. data/lib/temporalio/client/connection/workflow_service.rb +1218 -0
  70. data/lib/temporalio/client/connection.rb +270 -0
  71. data/lib/temporalio/client/interceptor.rb +316 -0
  72. data/lib/temporalio/client/workflow_execution.rb +103 -0
  73. data/lib/temporalio/client/workflow_execution_count.rb +36 -0
  74. data/lib/temporalio/client/workflow_execution_status.rb +18 -0
  75. data/lib/temporalio/client/workflow_handle.rb +380 -177
  76. data/lib/temporalio/client/workflow_query_reject_condition.rb +14 -0
  77. data/lib/temporalio/client/workflow_update_handle.rb +67 -0
  78. data/lib/temporalio/client/workflow_update_wait_stage.rb +17 -0
  79. data/lib/temporalio/client.rb +366 -93
  80. data/lib/temporalio/common_enums.rb +24 -0
  81. data/lib/temporalio/converters/data_converter.rb +102 -0
  82. data/lib/temporalio/converters/failure_converter.rb +200 -0
  83. data/lib/temporalio/converters/payload_codec.rb +26 -0
  84. data/lib/temporalio/converters/payload_converter/binary_null.rb +34 -0
  85. data/lib/temporalio/converters/payload_converter/binary_plain.rb +35 -0
  86. data/lib/temporalio/converters/payload_converter/binary_protobuf.rb +42 -0
  87. data/lib/temporalio/converters/payload_converter/composite.rb +62 -0
  88. data/lib/temporalio/converters/payload_converter/encoding.rb +35 -0
  89. data/lib/temporalio/converters/payload_converter/json_plain.rb +44 -0
  90. data/lib/temporalio/converters/payload_converter/json_protobuf.rb +41 -0
  91. data/lib/temporalio/converters/payload_converter.rb +73 -0
  92. data/lib/temporalio/converters.rb +9 -0
  93. data/lib/temporalio/error/failure.rb +119 -94
  94. data/lib/temporalio/error.rb +147 -0
  95. data/lib/temporalio/internal/bridge/api/activity_result/activity_result.rb +34 -0
  96. data/lib/temporalio/internal/bridge/api/activity_task/activity_task.rb +31 -0
  97. data/lib/temporalio/internal/bridge/api/child_workflow/child_workflow.rb +33 -0
  98. data/lib/temporalio/internal/bridge/api/common/common.rb +26 -0
  99. data/lib/temporalio/internal/bridge/api/core_interface.rb +36 -0
  100. data/lib/temporalio/internal/bridge/api/external_data/external_data.rb +27 -0
  101. data/lib/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rb +52 -0
  102. data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +54 -0
  103. data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +30 -0
  104. data/lib/temporalio/internal/bridge/api.rb +3 -0
  105. data/lib/temporalio/internal/bridge/client.rb +90 -0
  106. data/lib/temporalio/internal/bridge/runtime.rb +53 -0
  107. data/lib/temporalio/internal/bridge/testing.rb +46 -0
  108. data/lib/temporalio/internal/bridge/worker.rb +83 -0
  109. data/lib/temporalio/internal/bridge.rb +36 -0
  110. data/lib/temporalio/internal/client/implementation.rb +525 -0
  111. data/lib/temporalio/internal/proto_utils.rb +54 -0
  112. data/lib/temporalio/internal/worker/activity_worker.rb +345 -0
  113. data/lib/temporalio/internal/worker/multi_runner.rb +169 -0
  114. data/lib/temporalio/internal.rb +7 -0
  115. data/lib/temporalio/retry_policy.rb +39 -80
  116. data/lib/temporalio/runtime.rb +259 -13
  117. data/lib/temporalio/scoped_logger.rb +96 -0
  118. data/lib/temporalio/search_attributes.rb +300 -0
  119. data/lib/temporalio/testing/activity_environment.rb +132 -0
  120. data/lib/temporalio/testing/workflow_environment.rb +113 -88
  121. data/lib/temporalio/testing.rb +4 -169
  122. data/lib/temporalio/version.rb +3 -1
  123. data/lib/temporalio/worker/activity_executor/fiber.rb +49 -0
  124. data/lib/temporalio/worker/activity_executor/thread_pool.rb +254 -0
  125. data/lib/temporalio/worker/activity_executor.rb +55 -0
  126. data/lib/temporalio/worker/interceptor.rb +88 -0
  127. data/lib/temporalio/worker/tuner.rb +151 -0
  128. data/lib/temporalio/worker.rb +385 -163
  129. data/lib/temporalio/workflow_history.rb +22 -0
  130. data/lib/temporalio.rb +2 -7
  131. data/temporalio.gemspec +20 -39
  132. metadata +131 -712
  133. data/bridge/Cargo.lock +0 -2997
  134. data/bridge/Cargo.toml +0 -29
  135. data/bridge/sdk-core/ARCHITECTURE.md +0 -76
  136. data/bridge/sdk-core/Cargo.toml +0 -2
  137. data/bridge/sdk-core/LICENSE.txt +0 -23
  138. data/bridge/sdk-core/README.md +0 -117
  139. data/bridge/sdk-core/arch_docs/diagrams/README.md +0 -10
  140. data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +0 -40
  141. data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +0 -1
  142. data/bridge/sdk-core/arch_docs/sticky_queues.md +0 -51
  143. data/bridge/sdk-core/client/Cargo.toml +0 -40
  144. data/bridge/sdk-core/client/LICENSE.txt +0 -23
  145. data/bridge/sdk-core/client/src/lib.rs +0 -1462
  146. data/bridge/sdk-core/client/src/metrics.rs +0 -174
  147. data/bridge/sdk-core/client/src/raw.rs +0 -932
  148. data/bridge/sdk-core/client/src/retry.rs +0 -763
  149. data/bridge/sdk-core/client/src/workflow_handle/mod.rs +0 -185
  150. data/bridge/sdk-core/core/Cargo.toml +0 -129
  151. data/bridge/sdk-core/core/LICENSE.txt +0 -23
  152. data/bridge/sdk-core/core/benches/workflow_replay.rs +0 -76
  153. data/bridge/sdk-core/core/src/abstractions.rs +0 -355
  154. data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +0 -1049
  155. data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +0 -221
  156. data/bridge/sdk-core/core/src/core_tests/determinism.rs +0 -270
  157. data/bridge/sdk-core/core/src/core_tests/local_activities.rs +0 -1046
  158. data/bridge/sdk-core/core/src/core_tests/mod.rs +0 -100
  159. data/bridge/sdk-core/core/src/core_tests/queries.rs +0 -893
  160. data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +0 -65
  161. data/bridge/sdk-core/core/src/core_tests/workers.rs +0 -257
  162. data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +0 -124
  163. data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +0 -2433
  164. data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +0 -609
  165. data/bridge/sdk-core/core/src/internal_flags.rs +0 -136
  166. data/bridge/sdk-core/core/src/lib.rs +0 -289
  167. data/bridge/sdk-core/core/src/pollers/mod.rs +0 -54
  168. data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +0 -297
  169. data/bridge/sdk-core/core/src/protosext/mod.rs +0 -428
  170. data/bridge/sdk-core/core/src/replay/mod.rs +0 -215
  171. data/bridge/sdk-core/core/src/retry_logic.rs +0 -202
  172. data/bridge/sdk-core/core/src/telemetry/log_export.rs +0 -190
  173. data/bridge/sdk-core/core/src/telemetry/metrics.rs +0 -462
  174. data/bridge/sdk-core/core/src/telemetry/mod.rs +0 -423
  175. data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +0 -83
  176. data/bridge/sdk-core/core/src/test_help/mod.rs +0 -939
  177. data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +0 -536
  178. data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +0 -89
  179. data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +0 -1278
  180. data/bridge/sdk-core/core/src/worker/activities.rs +0 -557
  181. data/bridge/sdk-core/core/src/worker/client/mocks.rs +0 -107
  182. data/bridge/sdk-core/core/src/worker/client.rs +0 -389
  183. data/bridge/sdk-core/core/src/worker/mod.rs +0 -677
  184. data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +0 -35
  185. data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +0 -99
  186. data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +0 -1111
  187. data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +0 -964
  188. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +0 -294
  189. data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +0 -168
  190. data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +0 -918
  191. data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +0 -137
  192. data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +0 -158
  193. data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +0 -130
  194. data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +0 -1525
  195. data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +0 -324
  196. data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +0 -179
  197. data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +0 -659
  198. data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +0 -439
  199. data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +0 -435
  200. data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +0 -175
  201. data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +0 -249
  202. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +0 -85
  203. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +0 -1280
  204. data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +0 -269
  205. data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +0 -213
  206. data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +0 -1305
  207. data/bridge/sdk-core/core/src/worker/workflow/mod.rs +0 -1276
  208. data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +0 -128
  209. data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +0 -125
  210. data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +0 -85
  211. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +0 -117
  212. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +0 -24
  213. data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +0 -715
  214. data/bridge/sdk-core/core-api/Cargo.toml +0 -33
  215. data/bridge/sdk-core/core-api/LICENSE.txt +0 -23
  216. data/bridge/sdk-core/core-api/src/errors.rs +0 -62
  217. data/bridge/sdk-core/core-api/src/lib.rs +0 -113
  218. data/bridge/sdk-core/core-api/src/telemetry.rs +0 -141
  219. data/bridge/sdk-core/core-api/src/worker.rs +0 -161
  220. data/bridge/sdk-core/etc/deps.svg +0 -162
  221. data/bridge/sdk-core/etc/dynamic-config.yaml +0 -2
  222. data/bridge/sdk-core/etc/otel-collector-config.yaml +0 -36
  223. data/bridge/sdk-core/etc/prometheus.yaml +0 -6
  224. data/bridge/sdk-core/etc/regen-depgraph.sh +0 -5
  225. data/bridge/sdk-core/fsm/Cargo.toml +0 -18
  226. data/bridge/sdk-core/fsm/LICENSE.txt +0 -23
  227. data/bridge/sdk-core/fsm/README.md +0 -3
  228. data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +0 -27
  229. data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +0 -23
  230. data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +0 -650
  231. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +0 -8
  232. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +0 -18
  233. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +0 -12
  234. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +0 -41
  235. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +0 -14
  236. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +0 -11
  237. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +0 -32
  238. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +0 -31
  239. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +0 -46
  240. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +0 -29
  241. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +0 -12
  242. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +0 -32
  243. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +0 -18
  244. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +0 -5
  245. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +0 -11
  246. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +0 -5
  247. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +0 -11
  248. data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +0 -5
  249. data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +0 -14
  250. data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +0 -23
  251. data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +0 -254
  252. data/bridge/sdk-core/fsm/src/lib.rs +0 -2
  253. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
  254. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
  255. data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
  256. data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
  257. data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
  258. data/bridge/sdk-core/integ-with-otel.sh +0 -7
  259. data/bridge/sdk-core/protos/api_upstream/README.md +0 -9
  260. data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +0 -40
  261. data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -9
  262. data/bridge/sdk-core/protos/api_upstream/build/go.mod +0 -7
  263. data/bridge/sdk-core/protos/api_upstream/build/go.sum +0 -5
  264. data/bridge/sdk-core/protos/api_upstream/build/tools.go +0 -29
  265. data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +0 -141
  266. data/bridge/sdk-core/protos/api_upstream/go.mod +0 -6
  267. data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +0 -89
  268. data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +0 -248
  269. data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +0 -123
  270. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +0 -47
  271. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +0 -52
  272. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +0 -56
  273. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +0 -170
  274. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +0 -123
  275. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +0 -51
  276. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +0 -50
  277. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +0 -41
  278. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +0 -60
  279. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +0 -59
  280. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +0 -56
  281. data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +0 -122
  282. data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +0 -108
  283. data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +0 -114
  284. data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +0 -56
  285. data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +0 -787
  286. data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +0 -99
  287. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +0 -124
  288. data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +0 -80
  289. data/bridge/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +0 -57
  290. data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +0 -61
  291. data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +0 -55
  292. data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +0 -379
  293. data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +0 -63
  294. data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +0 -108
  295. data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +0 -111
  296. data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +0 -59
  297. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +0 -146
  298. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +0 -1199
  299. data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +0 -415
  300. data/bridge/sdk-core/protos/grpc/health/v1/health.proto +0 -63
  301. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +0 -79
  302. data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +0 -80
  303. data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +0 -78
  304. data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +0 -16
  305. data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +0 -31
  306. data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +0 -31
  307. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +0 -270
  308. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +0 -305
  309. data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +0 -35
  310. data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +0 -38
  311. data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +0 -13
  312. data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +0 -141
  313. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +0 -63
  314. data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +0 -90
  315. data/bridge/sdk-core/rustfmt.toml +0 -1
  316. data/bridge/sdk-core/sdk/Cargo.toml +0 -48
  317. data/bridge/sdk-core/sdk/LICENSE.txt +0 -23
  318. data/bridge/sdk-core/sdk/src/activity_context.rs +0 -230
  319. data/bridge/sdk-core/sdk/src/app_data.rs +0 -37
  320. data/bridge/sdk-core/sdk/src/interceptors.rs +0 -50
  321. data/bridge/sdk-core/sdk/src/lib.rs +0 -861
  322. data/bridge/sdk-core/sdk/src/payload_converter.rs +0 -11
  323. data/bridge/sdk-core/sdk/src/workflow_context/options.rs +0 -295
  324. data/bridge/sdk-core/sdk/src/workflow_context.rs +0 -694
  325. data/bridge/sdk-core/sdk/src/workflow_future.rs +0 -500
  326. data/bridge/sdk-core/sdk-core-protos/Cargo.toml +0 -33
  327. data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +0 -23
  328. data/bridge/sdk-core/sdk-core-protos/build.rs +0 -142
  329. data/bridge/sdk-core/sdk-core-protos/src/constants.rs +0 -7
  330. data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +0 -557
  331. data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +0 -234
  332. data/bridge/sdk-core/sdk-core-protos/src/lib.rs +0 -2088
  333. data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +0 -48
  334. data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +0 -14
  335. data/bridge/sdk-core/test-utils/Cargo.toml +0 -38
  336. data/bridge/sdk-core/test-utils/src/canned_histories.rs +0 -1389
  337. data/bridge/sdk-core/test-utils/src/histfetch.rs +0 -28
  338. data/bridge/sdk-core/test-utils/src/lib.rs +0 -709
  339. data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +0 -50
  340. data/bridge/sdk-core/test-utils/src/workflows.rs +0 -29
  341. data/bridge/sdk-core/tests/fuzzy_workflow.rs +0 -130
  342. data/bridge/sdk-core/tests/heavy_tests.rs +0 -265
  343. data/bridge/sdk-core/tests/integ_tests/client_tests.rs +0 -36
  344. data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +0 -150
  345. data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +0 -223
  346. data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +0 -239
  347. data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +0 -90
  348. data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +0 -314
  349. data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +0 -151
  350. data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +0 -902
  351. data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +0 -61
  352. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +0 -60
  353. data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +0 -51
  354. data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +0 -51
  355. data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +0 -64
  356. data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +0 -47
  357. data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +0 -669
  358. data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +0 -54
  359. data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +0 -92
  360. data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +0 -228
  361. data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +0 -94
  362. data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +0 -171
  363. data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +0 -85
  364. data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +0 -120
  365. data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +0 -77
  366. data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +0 -596
  367. data/bridge/sdk-core/tests/main.rs +0 -103
  368. data/bridge/sdk-core/tests/runner.rs +0 -132
  369. data/bridge/sdk-core/tests/wf_input_replay.rs +0 -32
  370. data/bridge/src/connection.rs +0 -202
  371. data/bridge/src/lib.rs +0 -494
  372. data/bridge/src/runtime.rs +0 -54
  373. data/bridge/src/test_server.rs +0 -153
  374. data/bridge/src/worker.rs +0 -197
  375. data/ext/Rakefile +0 -9
  376. data/lib/gen/dependencies/gogoproto/gogo_pb.rb +0 -14
  377. data/lib/gen/temporal/api/batch/v1/message_pb.rb +0 -50
  378. data/lib/gen/temporal/api/command/v1/message_pb.rb +0 -160
  379. data/lib/gen/temporal/api/common/v1/message_pb.rb +0 -73
  380. data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +0 -33
  381. data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +0 -37
  382. data/lib/gen/temporal/api/enums/v1/common_pb.rb +0 -42
  383. data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +0 -68
  384. data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +0 -79
  385. data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +0 -37
  386. data/lib/gen/temporal/api/enums/v1/query_pb.rb +0 -31
  387. data/lib/gen/temporal/api/enums/v1/reset_pb.rb +0 -24
  388. data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +0 -28
  389. data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +0 -30
  390. data/lib/gen/temporal/api/enums/v1/update_pb.rb +0 -25
  391. data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +0 -89
  392. data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +0 -84
  393. data/lib/gen/temporal/api/failure/v1/message_pb.rb +0 -83
  394. data/lib/gen/temporal/api/filter/v1/message_pb.rb +0 -40
  395. data/lib/gen/temporal/api/history/v1/message_pb.rb +0 -498
  396. data/lib/gen/temporal/api/namespace/v1/message_pb.rb +0 -64
  397. data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +0 -88
  398. data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +0 -20
  399. data/lib/gen/temporal/api/protocol/v1/message_pb.rb +0 -30
  400. data/lib/gen/temporal/api/query/v1/message_pb.rb +0 -38
  401. data/lib/gen/temporal/api/replication/v1/message_pb.rb +0 -37
  402. data/lib/gen/temporal/api/schedule/v1/message_pb.rb +0 -149
  403. data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +0 -23
  404. data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +0 -73
  405. data/lib/gen/temporal/api/testservice/v1/request_response_pb.rb +0 -49
  406. data/lib/gen/temporal/api/testservice/v1/service_pb.rb +0 -21
  407. data/lib/gen/temporal/api/update/v1/message_pb.rb +0 -72
  408. data/lib/gen/temporal/api/version/v1/message_pb.rb +0 -41
  409. data/lib/gen/temporal/api/workflow/v1/message_pb.rb +0 -111
  410. data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +0 -798
  411. data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +0 -20
  412. data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +0 -62
  413. data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +0 -61
  414. data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +0 -61
  415. data/lib/gen/temporal/sdk/core/common/common_pb.rb +0 -26
  416. data/lib/gen/temporal/sdk/core/core_interface_pb.rb +0 -40
  417. data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +0 -31
  418. data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +0 -171
  419. data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +0 -200
  420. data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +0 -41
  421. data/lib/temporalio/bridge/connect_options.rb +0 -15
  422. data/lib/temporalio/bridge/error.rb +0 -8
  423. data/lib/temporalio/bridge/retry_config.rb +0 -24
  424. data/lib/temporalio/bridge/tls_options.rb +0 -19
  425. data/lib/temporalio/bridge.rb +0 -14
  426. data/lib/temporalio/client/implementation.rb +0 -340
  427. data/lib/temporalio/connection/retry_config.rb +0 -44
  428. data/lib/temporalio/connection/service.rb +0 -20
  429. data/lib/temporalio/connection/test_service.rb +0 -92
  430. data/lib/temporalio/connection/tls_options.rb +0 -51
  431. data/lib/temporalio/connection/workflow_service.rb +0 -731
  432. data/lib/temporalio/connection.rb +0 -86
  433. data/lib/temporalio/data_converter.rb +0 -191
  434. data/lib/temporalio/error/workflow_failure.rb +0 -19
  435. data/lib/temporalio/errors.rb +0 -40
  436. data/lib/temporalio/failure_converter/base.rb +0 -26
  437. data/lib/temporalio/failure_converter/basic.rb +0 -319
  438. data/lib/temporalio/failure_converter.rb +0 -7
  439. data/lib/temporalio/interceptor/activity_inbound.rb +0 -22
  440. data/lib/temporalio/interceptor/activity_outbound.rb +0 -24
  441. data/lib/temporalio/interceptor/chain.rb +0 -28
  442. data/lib/temporalio/interceptor/client.rb +0 -127
  443. data/lib/temporalio/interceptor.rb +0 -22
  444. data/lib/temporalio/payload_codec/base.rb +0 -32
  445. data/lib/temporalio/payload_converter/base.rb +0 -24
  446. data/lib/temporalio/payload_converter/bytes.rb +0 -27
  447. data/lib/temporalio/payload_converter/composite.rb +0 -49
  448. data/lib/temporalio/payload_converter/encoding_base.rb +0 -35
  449. data/lib/temporalio/payload_converter/json.rb +0 -26
  450. data/lib/temporalio/payload_converter/nil.rb +0 -26
  451. data/lib/temporalio/payload_converter.rb +0 -14
  452. data/lib/temporalio/retry_state.rb +0 -35
  453. data/lib/temporalio/testing/time_skipping_handle.rb +0 -32
  454. data/lib/temporalio/testing/time_skipping_interceptor.rb +0 -23
  455. data/lib/temporalio/timeout_type.rb +0 -29
  456. data/lib/temporalio/worker/activity_runner.rb +0 -114
  457. data/lib/temporalio/worker/activity_worker.rb +0 -164
  458. data/lib/temporalio/worker/reactor.rb +0 -46
  459. data/lib/temporalio/worker/runner.rb +0 -63
  460. data/lib/temporalio/worker/sync_worker.rb +0 -124
  461. data/lib/temporalio/worker/thread_pool_executor.rb +0 -51
  462. data/lib/temporalio/workflow/async.rb +0 -46
  463. data/lib/temporalio/workflow/execution_info.rb +0 -54
  464. data/lib/temporalio/workflow/execution_status.rb +0 -36
  465. data/lib/temporalio/workflow/future.rb +0 -138
  466. data/lib/temporalio/workflow/id_reuse_policy.rb +0 -36
  467. data/lib/temporalio/workflow/info.rb +0 -76
  468. data/lib/temporalio/workflow/query_reject_condition.rb +0 -33
  469. data/lib/thermite_patch.rb +0 -33
  470. data/sig/async.rbs +0 -17
  471. data/sig/protobuf.rbs +0 -16
  472. data/sig/protos/dependencies/gogoproto/gogo.rbs +0 -914
  473. data/sig/protos/google/protobuf/any.rbs +0 -157
  474. data/sig/protos/google/protobuf/descriptor.rbs +0 -2825
  475. data/sig/protos/google/protobuf/duration.rbs +0 -114
  476. data/sig/protos/google/protobuf/empty.rbs +0 -36
  477. data/sig/protos/google/protobuf/timestamp.rbs +0 -145
  478. data/sig/protos/google/protobuf/wrappers.rbs +0 -358
  479. data/sig/protos/temporal/api/batch/v1/message.rbs +0 -300
  480. data/sig/protos/temporal/api/command/v1/message.rbs +0 -1399
  481. data/sig/protos/temporal/api/common/v1/message.rbs +0 -528
  482. data/sig/protos/temporal/api/enums/v1/batch_operation.rbs +0 -79
  483. data/sig/protos/temporal/api/enums/v1/command_type.rbs +0 -68
  484. data/sig/protos/temporal/api/enums/v1/common.rbs +0 -118
  485. data/sig/protos/temporal/api/enums/v1/event_type.rbs +0 -264
  486. data/sig/protos/temporal/api/enums/v1/failed_cause.rbs +0 -277
  487. data/sig/protos/temporal/api/enums/v1/namespace.rbs +0 -108
  488. data/sig/protos/temporal/api/enums/v1/query.rbs +0 -81
  489. data/sig/protos/temporal/api/enums/v1/reset.rbs +0 -44
  490. data/sig/protos/temporal/api/enums/v1/schedule.rbs +0 -72
  491. data/sig/protos/temporal/api/enums/v1/task_queue.rbs +0 -92
  492. data/sig/protos/temporal/api/enums/v1/update.rbs +0 -64
  493. data/sig/protos/temporal/api/enums/v1/workflow.rbs +0 -371
  494. data/sig/protos/temporal/api/errordetails/v1/message.rbs +0 -551
  495. data/sig/protos/temporal/api/failure/v1/message.rbs +0 -581
  496. data/sig/protos/temporal/api/filter/v1/message.rbs +0 -171
  497. data/sig/protos/temporal/api/history/v1/message.rbs +0 -4609
  498. data/sig/protos/temporal/api/namespace/v1/message.rbs +0 -410
  499. data/sig/protos/temporal/api/operatorservice/v1/request_response.rbs +0 -643
  500. data/sig/protos/temporal/api/operatorservice/v1/service.rbs +0 -17
  501. data/sig/protos/temporal/api/protocol/v1/message.rbs +0 -84
  502. data/sig/protos/temporal/api/query/v1/message.rbs +0 -182
  503. data/sig/protos/temporal/api/replication/v1/message.rbs +0 -148
  504. data/sig/protos/temporal/api/schedule/v1/message.rbs +0 -1488
  505. data/sig/protos/temporal/api/sdk/v1/task_complete_metadata.rbs +0 -110
  506. data/sig/protos/temporal/api/taskqueue/v1/message.rbs +0 -486
  507. data/sig/protos/temporal/api/testservice/v1/request_response.rbs +0 -249
  508. data/sig/protos/temporal/api/testservice/v1/service.rbs +0 -15
  509. data/sig/protos/temporal/api/update/v1/message.rbs +0 -489
  510. data/sig/protos/temporal/api/version/v1/message.rbs +0 -184
  511. data/sig/protos/temporal/api/workflow/v1/message.rbs +0 -824
  512. data/sig/protos/temporal/api/workflowservice/v1/request_response.rbs +0 -7250
  513. data/sig/protos/temporal/api/workflowservice/v1/service.rbs +0 -22
  514. data/sig/protos/temporal/sdk/core/activity_result/activity_result.rbs +0 -380
  515. data/sig/protos/temporal/sdk/core/activity_task/activity_task.rbs +0 -386
  516. data/sig/protos/temporal/sdk/core/child_workflow/child_workflow.rbs +0 -323
  517. data/sig/protos/temporal/sdk/core/common/common.rbs +0 -62
  518. data/sig/protos/temporal/sdk/core/core_interface.rbs +0 -101
  519. data/sig/protos/temporal/sdk/core/external_data/external_data.rbs +0 -119
  520. data/sig/protos/temporal/sdk/core/workflow_activation/workflow_activation.rbs +0 -1473
  521. data/sig/protos/temporal/sdk/core/workflow_commands/workflow_commands.rbs +0 -1784
  522. data/sig/protos/temporal/sdk/core/workflow_completion/workflow_completion.rbs +0 -180
  523. data/sig/ruby.rbs +0 -12
  524. data/sig/temporalio/activity/context.rbs +0 -29
  525. data/sig/temporalio/activity/info.rbs +0 -43
  526. data/sig/temporalio/activity.rbs +0 -19
  527. data/sig/temporalio/bridge/connect_options.rbs +0 -19
  528. data/sig/temporalio/bridge/error.rbs +0 -8
  529. data/sig/temporalio/bridge/retry_config.rbs +0 -21
  530. data/sig/temporalio/bridge/tls_options.rbs +0 -17
  531. data/sig/temporalio/bridge.rbs +0 -71
  532. data/sig/temporalio/client/implementation.rbs +0 -38
  533. data/sig/temporalio/client/workflow_handle.rbs +0 -41
  534. data/sig/temporalio/client.rbs +0 -35
  535. data/sig/temporalio/connection/retry_config.rbs +0 -37
  536. data/sig/temporalio/connection/service.rbs +0 -14
  537. data/sig/temporalio/connection/test_service.rbs +0 -13
  538. data/sig/temporalio/connection/tls_options.rbs +0 -43
  539. data/sig/temporalio/connection/workflow_service.rbs +0 -48
  540. data/sig/temporalio/connection.rbs +0 -30
  541. data/sig/temporalio/data_converter.rbs +0 -35
  542. data/sig/temporalio/error/failure.rbs +0 -121
  543. data/sig/temporalio/error/workflow_failure.rbs +0 -9
  544. data/sig/temporalio/errors.rbs +0 -36
  545. data/sig/temporalio/failure_converter/base.rbs +0 -12
  546. data/sig/temporalio/failure_converter/basic.rbs +0 -86
  547. data/sig/temporalio/failure_converter.rbs +0 -5
  548. data/sig/temporalio/interceptor/activity_inbound.rbs +0 -21
  549. data/sig/temporalio/interceptor/activity_outbound.rbs +0 -10
  550. data/sig/temporalio/interceptor/chain.rbs +0 -24
  551. data/sig/temporalio/interceptor/client.rbs +0 -148
  552. data/sig/temporalio/interceptor.rbs +0 -6
  553. data/sig/temporalio/payload_codec/base.rbs +0 -12
  554. data/sig/temporalio/payload_converter/base.rbs +0 -12
  555. data/sig/temporalio/payload_converter/bytes.rbs +0 -9
  556. data/sig/temporalio/payload_converter/composite.rbs +0 -19
  557. data/sig/temporalio/payload_converter/encoding_base.rbs +0 -14
  558. data/sig/temporalio/payload_converter/json.rbs +0 -9
  559. data/sig/temporalio/payload_converter/nil.rbs +0 -9
  560. data/sig/temporalio/payload_converter.rbs +0 -5
  561. data/sig/temporalio/retry_policy.rbs +0 -25
  562. data/sig/temporalio/retry_state.rbs +0 -20
  563. data/sig/temporalio/runtime.rbs +0 -12
  564. data/sig/temporalio/testing/time_skipping_handle.rbs +0 -15
  565. data/sig/temporalio/testing/time_skipping_interceptor.rbs +0 -13
  566. data/sig/temporalio/testing/workflow_environment.rbs +0 -22
  567. data/sig/temporalio/testing.rbs +0 -35
  568. data/sig/temporalio/timeout_type.rbs +0 -15
  569. data/sig/temporalio/version.rbs +0 -3
  570. data/sig/temporalio/worker/activity_runner.rbs +0 -35
  571. data/sig/temporalio/worker/activity_worker.rbs +0 -44
  572. data/sig/temporalio/worker/reactor.rbs +0 -22
  573. data/sig/temporalio/worker/runner.rbs +0 -21
  574. data/sig/temporalio/worker/sync_worker.rbs +0 -23
  575. data/sig/temporalio/worker/thread_pool_executor.rbs +0 -23
  576. data/sig/temporalio/worker.rbs +0 -46
  577. data/sig/temporalio/workflow/async.rbs +0 -9
  578. data/sig/temporalio/workflow/execution_info.rbs +0 -55
  579. data/sig/temporalio/workflow/execution_status.rbs +0 -21
  580. data/sig/temporalio/workflow/future.rbs +0 -40
  581. data/sig/temporalio/workflow/id_reuse_policy.rbs +0 -15
  582. data/sig/temporalio/workflow/info.rbs +0 -55
  583. data/sig/temporalio/workflow/query_reject_condition.rbs +0 -14
  584. data/sig/temporalio.rbs +0 -2
  585. data/sig/thermite_patch.rbs +0 -15
@@ -1,435 +0,0 @@
1
- #![allow(clippy::large_enum_variant)]
2
-
3
- use super::{
4
- workflow_machines::MachineResponse, Cancellable, EventInfo, NewMachineWithCommand,
5
- OnEventWrapper, WFMachinesAdapter,
6
- };
7
- use crate::worker::workflow::{machines::HistEventData, WFMachinesError};
8
- use rustfsm::{fsm, MachineError, StateMachine, TransitionResult};
9
- use std::convert::TryFrom;
10
- use temporal_sdk_core_protos::{
11
- coresdk::{
12
- workflow_activation::FireTimer,
13
- workflow_commands::{CancelTimer, StartTimer},
14
- HistoryEventId,
15
- },
16
- temporal::api::{
17
- command::v1::Command,
18
- enums::v1::{CommandType, EventType},
19
- history::v1::{history_event, HistoryEvent, TimerFiredEventAttributes},
20
- },
21
- };
22
-
23
- fsm! {
24
- pub(super) name TimerMachine;
25
- command TimerMachineCommand;
26
- error WFMachinesError;
27
- shared_state SharedState;
28
-
29
- Created --(Schedule, on_schedule) --> StartCommandCreated;
30
-
31
- StartCommandCreated --(CommandStartTimer) --> StartCommandCreated;
32
- StartCommandCreated --(TimerStarted(HistoryEventId), on_timer_started) --> StartCommandRecorded;
33
- StartCommandCreated --(Cancel, shared on_cancel) --> Canceled;
34
-
35
- StartCommandRecorded --(TimerFired(TimerFiredEventAttributes), shared on_timer_fired) --> Fired;
36
- StartCommandRecorded --(Cancel, shared on_cancel) --> CancelTimerCommandCreated;
37
-
38
- CancelTimerCommandCreated --(Cancel) --> CancelTimerCommandCreated;
39
- CancelTimerCommandCreated
40
- --(CommandCancelTimer, on_command_cancel_timer) --> CancelTimerCommandSent;
41
-
42
- CancelTimerCommandSent --(TimerCanceled) --> Canceled;
43
-
44
- // Ignore any spurious cancellations after resolution
45
- Canceled --(Cancel) --> Canceled;
46
- Fired --(Cancel) --> Fired;
47
- }
48
-
49
- #[derive(Debug, derive_more::Display)]
50
- pub(super) enum TimerMachineCommand {
51
- Complete,
52
- IssueCancelCmd(Command),
53
- // We don't issue activations for timer cancellations. Lang SDK is expected to cancel
54
- // it's own timers when user calls cancel, and they cannot be cancelled by any other
55
- // means.
56
- }
57
-
58
- #[derive(Default, Clone)]
59
- pub(super) struct SharedState {
60
- attrs: StartTimer,
61
- cancelled_before_sent: bool,
62
- }
63
-
64
- /// Creates a new, scheduled, timer as a [CancellableCommand]
65
- pub(super) fn new_timer(attribs: StartTimer) -> NewMachineWithCommand {
66
- let (timer, add_cmd) = TimerMachine::new_scheduled(attribs);
67
- NewMachineWithCommand {
68
- command: add_cmd,
69
- machine: timer.into(),
70
- }
71
- }
72
-
73
- impl TimerMachine {
74
- /// Create a new timer and immediately schedule it
75
- fn new_scheduled(attribs: StartTimer) -> (Self, Command) {
76
- let mut s = Self::new(attribs);
77
- OnEventWrapper::on_event_mut(&mut s, TimerMachineEvents::Schedule)
78
- .expect("Scheduling timers doesn't fail");
79
- let cmd = Command {
80
- command_type: CommandType::StartTimer as i32,
81
- attributes: Some(s.shared_state().attrs.clone().into()),
82
- };
83
- (s, cmd)
84
- }
85
-
86
- fn new(attribs: StartTimer) -> Self {
87
- Self {
88
- state: Created {}.into(),
89
- shared_state: SharedState {
90
- attrs: attribs,
91
- cancelled_before_sent: false,
92
- },
93
- }
94
- }
95
- }
96
-
97
- impl TryFrom<HistEventData> for TimerMachineEvents {
98
- type Error = WFMachinesError;
99
-
100
- fn try_from(e: HistEventData) -> Result<Self, Self::Error> {
101
- let e = e.event;
102
- Ok(match e.event_type() {
103
- EventType::TimerStarted => Self::TimerStarted(e.event_id),
104
- EventType::TimerCanceled => Self::TimerCanceled,
105
- EventType::TimerFired => {
106
- if let Some(history_event::Attributes::TimerFiredEventAttributes(attrs)) =
107
- e.attributes
108
- {
109
- Self::TimerFired(attrs)
110
- } else {
111
- return Err(WFMachinesError::Fatal(format!(
112
- "Timer fired attribs were unset: {e}"
113
- )));
114
- }
115
- }
116
- _ => {
117
- return Err(WFMachinesError::Nondeterminism(format!(
118
- "Timer machine does not handle this event: {e}"
119
- )))
120
- }
121
- })
122
- }
123
- }
124
-
125
- impl TryFrom<CommandType> for TimerMachineEvents {
126
- type Error = ();
127
-
128
- fn try_from(c: CommandType) -> Result<Self, Self::Error> {
129
- Ok(match c {
130
- CommandType::StartTimer => Self::CommandStartTimer,
131
- CommandType::CancelTimer => Self::CommandCancelTimer,
132
- _ => return Err(()),
133
- })
134
- }
135
- }
136
-
137
- #[derive(Default, Clone)]
138
- pub(super) struct Created {}
139
-
140
- impl Created {
141
- pub(super) fn on_schedule(self) -> TimerMachineTransition<StartCommandCreated> {
142
- TransitionResult::default()
143
- }
144
- }
145
-
146
- #[derive(Default, Clone)]
147
- pub(super) struct CancelTimerCommandCreated {}
148
-
149
- impl CancelTimerCommandCreated {
150
- pub(super) fn on_command_cancel_timer(self) -> TimerMachineTransition<CancelTimerCommandSent> {
151
- TransitionResult::ok(vec![], CancelTimerCommandSent::default())
152
- }
153
- }
154
-
155
- #[derive(Default, Clone)]
156
- pub(super) struct CancelTimerCommandSent {}
157
-
158
- #[derive(Default, Clone)]
159
- pub(super) struct Canceled {}
160
-
161
- impl From<CancelTimerCommandSent> for Canceled {
162
- fn from(_: CancelTimerCommandSent) -> Self {
163
- Self::default()
164
- }
165
- }
166
-
167
- #[derive(Default, Clone)]
168
- pub(super) struct Fired {}
169
-
170
- #[derive(Default, Clone)]
171
- pub(super) struct StartCommandCreated {}
172
-
173
- impl StartCommandCreated {
174
- pub(super) fn on_timer_started(
175
- self,
176
- _id: HistoryEventId,
177
- ) -> TimerMachineTransition<StartCommandRecorded> {
178
- TransitionResult::default()
179
- }
180
-
181
- pub(super) fn on_cancel(self, dat: SharedState) -> TimerMachineTransition<Canceled> {
182
- TransitionResult::ok_shared(
183
- vec![],
184
- Canceled::default(),
185
- SharedState {
186
- cancelled_before_sent: true,
187
- ..dat
188
- },
189
- )
190
- }
191
- }
192
-
193
- #[derive(Default, Clone)]
194
- pub(super) struct StartCommandRecorded {}
195
-
196
- impl StartCommandRecorded {
197
- pub(super) fn on_timer_fired(
198
- self,
199
- dat: SharedState,
200
- attrs: TimerFiredEventAttributes,
201
- ) -> TimerMachineTransition<Fired> {
202
- if dat.attrs.seq.to_string() == attrs.timer_id {
203
- TransitionResult::ok(vec![TimerMachineCommand::Complete], Fired::default())
204
- } else {
205
- TransitionResult::Err(WFMachinesError::Fatal(format!(
206
- "Timer fired event did not have expected timer id {}, it was {}!",
207
- dat.attrs.seq, attrs.timer_id
208
- )))
209
- }
210
- }
211
-
212
- pub(super) fn on_cancel(
213
- self,
214
- dat: SharedState,
215
- ) -> TimerMachineTransition<CancelTimerCommandCreated> {
216
- let cmd = Command {
217
- command_type: CommandType::CancelTimer as i32,
218
- attributes: Some(CancelTimer { seq: dat.attrs.seq }.into()),
219
- };
220
- TransitionResult::ok(
221
- vec![TimerMachineCommand::IssueCancelCmd(cmd)],
222
- CancelTimerCommandCreated::default(),
223
- )
224
- }
225
- }
226
-
227
- impl WFMachinesAdapter for TimerMachine {
228
- fn adapt_response(
229
- &self,
230
- my_command: TimerMachineCommand,
231
- _event_info: Option<EventInfo>,
232
- ) -> Result<Vec<MachineResponse>, WFMachinesError> {
233
- Ok(match my_command {
234
- // Fire the completion
235
- TimerMachineCommand::Complete => vec![FireTimer {
236
- seq: self.shared_state.attrs.seq,
237
- }
238
- .into()],
239
- TimerMachineCommand::IssueCancelCmd(c) => vec![MachineResponse::IssueNewCommand(c)],
240
- })
241
- }
242
-
243
- fn matches_event(&self, event: &HistoryEvent) -> bool {
244
- matches!(
245
- event.event_type(),
246
- EventType::TimerStarted | EventType::TimerCanceled | EventType::TimerFired
247
- )
248
- }
249
- }
250
-
251
- impl Cancellable for TimerMachine {
252
- fn cancel(&mut self) -> Result<Vec<MachineResponse>, MachineError<Self::Error>> {
253
- Ok(
254
- match OnEventWrapper::on_event_mut(self, TimerMachineEvents::Cancel)?.pop() {
255
- Some(TimerMachineCommand::IssueCancelCmd(cmd)) => {
256
- vec![MachineResponse::IssueNewCommand(cmd)]
257
- }
258
- None => vec![],
259
- x => panic!("Invalid cancel event response {x:?}"),
260
- },
261
- )
262
- }
263
-
264
- fn was_cancelled_before_sent_to_server(&self) -> bool {
265
- self.shared_state().cancelled_before_sent
266
- }
267
- }
268
-
269
- #[cfg(test)]
270
- mod test {
271
- use super::*;
272
- use crate::{
273
- replay::TestHistoryBuilder, test_help::canned_histories, worker::workflow::ManagedWFFunc,
274
- };
275
- use rstest::{fixture, rstest};
276
- use std::{mem::discriminant, time::Duration};
277
- use temporal_sdk::{CancellableFuture, WfContext, WorkflowFunction};
278
-
279
- #[fixture]
280
- fn happy_wfm() -> ManagedWFFunc {
281
- /*
282
- We have two versions of this test, one which processes the history in two calls, and one
283
- which replays all of it in one go. Both versions must produce the same two activations.
284
- However, The former will iterate the machines three times and the latter will iterate
285
- them twice.
286
-
287
- There are two workflow tasks, so it seems we should iterate two times, but the reason
288
- for the extra iteration in the incremental version is that we need to "wait" for the
289
- timer to fire. In the all-in-one-go test, the timer is created and resolved in the same
290
- task, hence no extra loop.
291
- */
292
- let func = WorkflowFunction::new(|command_sink: WfContext| async move {
293
- command_sink.timer(Duration::from_secs(5)).await;
294
- Ok(().into())
295
- });
296
-
297
- let t = canned_histories::single_timer("1");
298
- assert_eq!(2, t.get_full_history_info().unwrap().wf_task_count());
299
- ManagedWFFunc::new(t, func, vec![])
300
- }
301
-
302
- #[rstest]
303
- #[tokio::test]
304
- async fn test_fire_happy_path_inc(mut happy_wfm: ManagedWFFunc) {
305
- happy_wfm.get_next_activation().await.unwrap();
306
- let commands = happy_wfm.get_server_commands().commands;
307
- assert_eq!(commands.len(), 1);
308
- assert_eq!(commands[0].command_type, CommandType::StartTimer as i32);
309
-
310
- happy_wfm.get_next_activation().await.unwrap();
311
- let commands = happy_wfm.get_server_commands().commands;
312
- assert_eq!(commands.len(), 1);
313
- assert_eq!(commands.len(), 1);
314
- assert_eq!(
315
- commands[0].command_type,
316
- CommandType::CompleteWorkflowExecution as i32
317
- );
318
- happy_wfm.shutdown().await.unwrap();
319
- }
320
-
321
- #[rstest]
322
- #[tokio::test]
323
- async fn test_fire_happy_path_full(mut happy_wfm: ManagedWFFunc) {
324
- happy_wfm.process_all_activations().await.unwrap();
325
- let commands = happy_wfm.get_server_commands().commands;
326
- assert_eq!(commands.len(), 1);
327
- assert_eq!(
328
- commands[0].command_type,
329
- CommandType::CompleteWorkflowExecution as i32
330
- );
331
- happy_wfm.shutdown().await.unwrap();
332
- }
333
-
334
- #[tokio::test]
335
- async fn mismatched_timer_ids_errors() {
336
- let func = WorkflowFunction::new(|command_sink: WfContext| async move {
337
- command_sink.timer(Duration::from_secs(5)).await;
338
- Ok(().into())
339
- });
340
-
341
- let t = canned_histories::single_timer("badid");
342
- let mut wfm = ManagedWFFunc::new(t, func, vec![]);
343
- let act = wfm.process_all_activations().await;
344
- assert!(act
345
- .unwrap_err()
346
- .to_string()
347
- .contains("Timer fired event did not have expected timer id 1"));
348
- wfm.shutdown().await.unwrap();
349
- }
350
-
351
- #[fixture]
352
- fn cancellation_setup() -> ManagedWFFunc {
353
- let func = WorkflowFunction::new(|ctx: WfContext| async move {
354
- let cancel_timer_fut = ctx.timer(Duration::from_secs(500));
355
- ctx.timer(Duration::from_secs(5)).await;
356
- // Cancel the first timer after having waited on the second
357
- cancel_timer_fut.cancel(&ctx);
358
- cancel_timer_fut.await;
359
- Ok(().into())
360
- });
361
-
362
- let t = canned_histories::cancel_timer("2", "1");
363
- ManagedWFFunc::new(t, func, vec![])
364
- }
365
-
366
- #[rstest]
367
- #[tokio::test]
368
- async fn incremental_cancellation(#[from(cancellation_setup)] mut wfm: ManagedWFFunc) {
369
- wfm.get_next_activation().await.unwrap();
370
- let commands = wfm.get_server_commands().commands;
371
- assert_eq!(commands.len(), 2);
372
- assert_eq!(commands[0].command_type, CommandType::StartTimer as i32);
373
- assert_eq!(commands[1].command_type, CommandType::StartTimer as i32);
374
-
375
- wfm.get_next_activation().await.unwrap();
376
- let commands = wfm.get_server_commands().commands;
377
- assert_eq!(commands.len(), 2);
378
- assert_eq!(commands[0].command_type, CommandType::CancelTimer as i32);
379
- assert_eq!(
380
- commands[1].command_type,
381
- CommandType::CompleteWorkflowExecution as i32
382
- );
383
-
384
- assert!(wfm.get_next_activation().await.unwrap().jobs.is_empty());
385
- let commands = wfm.get_server_commands().commands;
386
- // There should be no commands - the wf completed at the same time the timer was cancelled
387
- assert_eq!(commands.len(), 0);
388
- wfm.shutdown().await.unwrap();
389
- }
390
-
391
- #[rstest]
392
- #[tokio::test]
393
- async fn full_cancellation(#[from(cancellation_setup)] mut wfm: ManagedWFFunc) {
394
- wfm.process_all_activations().await.unwrap();
395
- let commands = wfm.get_server_commands().commands;
396
- // There should be no commands - the wf completed at the same time the timer was cancelled
397
- assert_eq!(commands.len(), 0);
398
- wfm.shutdown().await.unwrap();
399
- }
400
-
401
- #[tokio::test]
402
- async fn cancel_before_sent_to_server() {
403
- let func = WorkflowFunction::new(|ctx: WfContext| async move {
404
- let cancel_timer_fut = ctx.timer(Duration::from_secs(500));
405
- // Immediately cancel the timer
406
- cancel_timer_fut.cancel(&ctx);
407
- cancel_timer_fut.await;
408
- Ok(().into())
409
- });
410
-
411
- let mut t = TestHistoryBuilder::default();
412
- t.add_by_type(EventType::WorkflowExecutionStarted);
413
- t.add_full_wf_task();
414
- t.add_workflow_execution_completed();
415
- let mut wfm = ManagedWFFunc::new(t, func, vec![]);
416
-
417
- wfm.process_all_activations().await.unwrap();
418
- let commands = wfm.get_server_commands().commands;
419
- assert_eq!(commands.len(), 0);
420
- wfm.shutdown().await.unwrap();
421
- }
422
-
423
- #[test]
424
- fn cancels_ignored_terminal() {
425
- for state in [TimerMachineState::Canceled(Canceled {}), Fired {}.into()] {
426
- let mut s = TimerMachine {
427
- state: state.clone(),
428
- shared_state: Default::default(),
429
- };
430
- let cmds = s.cancel().unwrap();
431
- assert_eq!(cmds.len(), 0);
432
- assert_eq!(discriminant(&state), discriminant(&s.state));
433
- }
434
- }
435
- }
@@ -1,175 +0,0 @@
1
- //! Look, I'm not happy about the code in here, and you shouldn't be either. This is all an awful,
2
- //! dirty hack to work around the fact that there's no such thing as "run this after all unit tests"
3
- //! in stable Rust. Don't do the things in here. They're bad. This is test only code, and should
4
- //! never ever be removed from behind `#[cfg(test)]` compilation.
5
-
6
- use dashmap::{mapref::entry::Entry, DashMap, DashSet};
7
- use std::{
8
- path::PathBuf,
9
- sync::{
10
- mpsc::{sync_channel, SyncSender},
11
- Mutex,
12
- },
13
- thread::JoinHandle,
14
- time::Duration,
15
- };
16
-
17
- // During test we want to know about which transitions we've covered in state machines
18
- lazy_static::lazy_static! {
19
- static ref COVERED_TRANSITIONS: DashMap<String, DashSet<CoveredTransition>>
20
- = DashMap::new();
21
- static ref COVERAGE_SENDER: SyncSender<(String, CoveredTransition)> =
22
- spawn_save_coverage_at_end();
23
- static ref THREAD_HANDLE: Mutex<Option<JoinHandle<()>>> = Mutex::new(None);
24
- }
25
-
26
- #[derive(Eq, PartialEq, Hash, Debug)]
27
- struct CoveredTransition {
28
- from_state: String,
29
- to_state: String,
30
- event: String,
31
- }
32
-
33
- pub fn add_coverage(machine_name: String, from_state: String, to_state: String, event: String) {
34
- let ct = CoveredTransition {
35
- from_state,
36
- to_state,
37
- event,
38
- };
39
- let _ = COVERAGE_SENDER.send((machine_name, ct));
40
- }
41
-
42
- fn spawn_save_coverage_at_end() -> SyncSender<(String, CoveredTransition)> {
43
- let (tx, rx) = sync_channel(1000);
44
- let handle = std::thread::spawn(move || {
45
- // Assume that, if the entire program hasn't run a state machine transition in the
46
- // last second that we are probably done running all the tests. This is to avoid
47
- // needing to instrument every single test.
48
- while let Ok((machine_name, ct)) = rx.recv_timeout(Duration::from_secs(1)) {
49
- match COVERED_TRANSITIONS.entry(machine_name) {
50
- Entry::Occupied(o) => {
51
- o.get().insert(ct);
52
- }
53
- Entry::Vacant(v) => {
54
- v.insert({
55
- let ds = DashSet::new();
56
- ds.insert(ct);
57
- ds
58
- });
59
- }
60
- }
61
- }
62
- });
63
- *THREAD_HANDLE.lock().unwrap() = Some(handle);
64
- tx
65
- }
66
-
67
- #[cfg(test)]
68
- mod machine_coverage_report {
69
- use super::*;
70
- use crate::worker::workflow::machines::{
71
- activity_state_machine::ActivityMachine,
72
- cancel_external_state_machine::CancelExternalMachine,
73
- cancel_workflow_state_machine::CancelWorkflowMachine,
74
- child_workflow_state_machine::ChildWorkflowMachine,
75
- complete_workflow_state_machine::CompleteWorkflowMachine,
76
- continue_as_new_workflow_state_machine::ContinueAsNewWorkflowMachine,
77
- fail_workflow_state_machine::FailWorkflowMachine,
78
- local_activity_state_machine::LocalActivityMachine,
79
- modify_workflow_properties_state_machine::ModifyWorkflowPropertiesMachine,
80
- patch_state_machine::PatchMachine, signal_external_state_machine::SignalExternalMachine,
81
- timer_state_machine::TimerMachine,
82
- upsert_search_attributes_state_machine::UpsertSearchAttributesMachine,
83
- workflow_task_state_machine::WorkflowTaskMachine,
84
- };
85
- use rustfsm::StateMachine;
86
- use std::{fs::File, io::Write};
87
-
88
- // This "test" needs to exist so that we have a way to join the spawned thread. Otherwise
89
- // it'll just get abandoned.
90
- #[test]
91
- // Use `cargo test -- --include-ignored` to run this. We don't want to bother with it by default
92
- // because it takes a minimum of a second.
93
- #[ignore]
94
- fn reporter() {
95
- // Make sure thread handle exists
96
- let _ = &*COVERAGE_SENDER;
97
- // Join it
98
- THREAD_HANDLE
99
- .lock()
100
- .unwrap()
101
- .take()
102
- .unwrap()
103
- .join()
104
- .unwrap();
105
-
106
- // Gather visualizations for all machines
107
- let mut activity = ActivityMachine::visualizer().to_owned();
108
- let mut timer = TimerMachine::visualizer().to_owned();
109
- let mut child_wf = ChildWorkflowMachine::visualizer().to_owned();
110
- let mut complete_wf = CompleteWorkflowMachine::visualizer().to_owned();
111
- let mut wf_task = WorkflowTaskMachine::visualizer().to_owned();
112
- let mut fail_wf = FailWorkflowMachine::visualizer().to_owned();
113
- let mut cont_as_new = ContinueAsNewWorkflowMachine::visualizer().to_owned();
114
- let mut cancel_wf = CancelWorkflowMachine::visualizer().to_owned();
115
- let mut version = PatchMachine::visualizer().to_owned();
116
- let mut signal_ext = SignalExternalMachine::visualizer().to_owned();
117
- let mut cancel_ext = CancelExternalMachine::visualizer().to_owned();
118
- let mut la_mach = LocalActivityMachine::visualizer().to_owned();
119
- let mut upsert_search_attr = UpsertSearchAttributesMachine::visualizer().to_owned();
120
- let mut modify_wf_props = ModifyWorkflowPropertiesMachine::visualizer().to_owned();
121
-
122
- // This isn't at all efficient but doesn't need to be.
123
- // Replace transitions in the vizzes with green color if they are covered.
124
- for item in COVERED_TRANSITIONS.iter() {
125
- let (machine, coverage) = item.pair();
126
- match machine.as_ref() {
127
- m @ "ActivityMachine" => cover_transitions(m, &mut activity, coverage),
128
- m @ "TimerMachine" => cover_transitions(m, &mut timer, coverage),
129
- m @ "ChildWorkflowMachine" => cover_transitions(m, &mut child_wf, coverage),
130
- m @ "CompleteWorkflowMachine" => cover_transitions(m, &mut complete_wf, coverage),
131
- m @ "WorkflowTaskMachine" => cover_transitions(m, &mut wf_task, coverage),
132
- m @ "FailWorkflowMachine" => cover_transitions(m, &mut fail_wf, coverage),
133
- m @ "ContinueAsNewWorkflowMachine" => {
134
- cover_transitions(m, &mut cont_as_new, coverage);
135
- }
136
- m @ "CancelWorkflowMachine" => cover_transitions(m, &mut cancel_wf, coverage),
137
- m @ "PatchMachine" => cover_transitions(m, &mut version, coverage),
138
- m @ "SignalExternalMachine" => cover_transitions(m, &mut signal_ext, coverage),
139
- m @ "CancelExternalMachine" => cover_transitions(m, &mut cancel_ext, coverage),
140
- m @ "LocalActivityMachine" => cover_transitions(m, &mut la_mach, coverage),
141
- m @ "UpsertSearchAttributesMachine" => {
142
- cover_transitions(m, &mut upsert_search_attr, coverage)
143
- }
144
- m @ "ModifyWorkflowPropertiesMachine" => {
145
- cover_transitions(m, &mut modify_wf_props, coverage)
146
- }
147
- m => panic!("Unknown machine {m}"),
148
- }
149
- }
150
- }
151
-
152
- fn cover_transitions(machine: &str, viz: &mut String, cov: &DashSet<CoveredTransition>) {
153
- for trans in cov.iter() {
154
- let find_line = format!(
155
- "{} --> {}: {}",
156
- trans.from_state, trans.to_state, trans.event
157
- );
158
- if let Some(start) = viz.find(&find_line) {
159
- let new_line = format!(
160
- "{} -[#blue]-> {}: {}",
161
- trans.from_state, trans.to_state, trans.event
162
- );
163
- viz.replace_range(start..start + find_line.len(), &new_line);
164
- }
165
- }
166
-
167
- // Dump the updated viz to a file
168
- let mut d = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
169
- d.push("machine_coverage");
170
- std::fs::create_dir_all(&d).unwrap();
171
- d.push(format!("{machine}_Coverage.puml"));
172
- let mut file = File::create(d).unwrap();
173
- file.write_all(viz.as_bytes()).unwrap();
174
- }
175
- }