@temporalio/core-bridge 1.14.2-canary-release-testing.0 → 1.16.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 (233) hide show
  1. package/Cargo.lock +794 -650
  2. package/bridge-macros/src/derive_tryintojs.rs +40 -0
  3. package/lib/native.d.ts +24 -3
  4. package/package.json +4 -4
  5. package/releases/aarch64-apple-darwin/index.node +0 -0
  6. package/releases/aarch64-unknown-linux-gnu/index.node +0 -0
  7. package/releases/x86_64-apple-darwin/index.node +0 -0
  8. package/releases/x86_64-pc-windows-msvc/index.node +0 -0
  9. package/releases/x86_64-unknown-linux-gnu/index.node +0 -0
  10. package/sdk-core/.github/workflows/per-pr.yml +6 -6
  11. package/sdk-core/AGENTS.md +42 -31
  12. package/sdk-core/Cargo.toml +4 -1
  13. package/sdk-core/README.md +19 -13
  14. package/sdk-core/crates/client/Cargo.toml +4 -0
  15. package/sdk-core/crates/client/README.md +139 -0
  16. package/sdk-core/crates/client/src/async_activity_handle.rs +297 -0
  17. package/sdk-core/crates/client/src/callback_based.rs +7 -0
  18. package/sdk-core/crates/client/src/errors.rs +294 -0
  19. package/sdk-core/crates/client/src/{raw.rs → grpc.rs} +370 -159
  20. package/sdk-core/crates/client/src/lib.rs +920 -1326
  21. package/sdk-core/crates/client/src/metrics.rs +24 -33
  22. package/sdk-core/crates/client/src/options_structs.rs +457 -0
  23. package/sdk-core/crates/client/src/replaceable.rs +5 -4
  24. package/sdk-core/crates/client/src/request_extensions.rs +8 -9
  25. package/sdk-core/crates/client/src/retry.rs +99 -54
  26. package/sdk-core/crates/client/src/{worker/mod.rs → worker.rs} +104 -29
  27. package/sdk-core/crates/client/src/workflow_handle.rs +826 -0
  28. package/sdk-core/crates/common/Cargo.toml +62 -3
  29. package/sdk-core/crates/common/build.rs +742 -12
  30. package/sdk-core/crates/common/protos/api_upstream/.github/workflows/ci.yml +2 -0
  31. package/sdk-core/crates/common/protos/api_upstream/.github/workflows/create-release.yml +0 -5
  32. package/sdk-core/crates/common/protos/api_upstream/Makefile +2 -1
  33. package/sdk-core/crates/common/protos/api_upstream/README.md +8 -0
  34. package/sdk-core/crates/common/protos/api_upstream/cmd/check-path-conflicts/main.go +137 -0
  35. package/sdk-core/crates/common/protos/api_upstream/openapi/openapiv2.json +3329 -2647
  36. package/sdk-core/crates/common/protos/api_upstream/openapi/openapiv3.yaml +2734 -708
  37. package/sdk-core/crates/common/protos/api_upstream/temporal/api/activity/v1/message.proto +155 -3
  38. package/sdk-core/crates/common/protos/api_upstream/temporal/api/command/v1/message.proto +26 -0
  39. package/sdk-core/crates/common/protos/api_upstream/temporal/api/common/v1/message.proto +8 -1
  40. package/sdk-core/crates/common/protos/api_upstream/temporal/api/deployment/v1/message.proto +27 -1
  41. package/sdk-core/crates/common/protos/api_upstream/temporal/api/enums/v1/activity.proto +81 -0
  42. package/sdk-core/crates/common/protos/api_upstream/temporal/api/enums/v1/event_type.proto +4 -0
  43. package/sdk-core/crates/common/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +4 -0
  44. package/sdk-core/crates/common/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +15 -0
  45. package/sdk-core/crates/common/protos/api_upstream/temporal/api/enums/v1/workflow.proto +63 -15
  46. package/sdk-core/crates/common/protos/api_upstream/temporal/api/errordetails/v1/message.proto +8 -0
  47. package/sdk-core/crates/common/protos/api_upstream/temporal/api/failure/v1/message.proto +1 -0
  48. package/sdk-core/crates/common/protos/api_upstream/temporal/api/history/v1/message.proto +111 -17
  49. package/sdk-core/crates/common/protos/api_upstream/temporal/api/namespace/v1/message.proto +21 -0
  50. package/sdk-core/crates/common/protos/api_upstream/temporal/api/nexus/v1/message.proto +20 -1
  51. package/sdk-core/crates/common/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +4 -0
  52. package/sdk-core/crates/common/protos/api_upstream/temporal/api/schedule/v1/message.proto +2 -2
  53. package/sdk-core/crates/common/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +2 -0
  54. package/sdk-core/crates/common/protos/api_upstream/temporal/api/worker/v1/message.proto +4 -7
  55. package/sdk-core/crates/common/protos/api_upstream/temporal/api/workflow/v1/message.proto +80 -22
  56. package/sdk-core/crates/common/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +347 -23
  57. package/sdk-core/crates/common/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +242 -43
  58. package/sdk-core/crates/common/protos/local/temporal/sdk/core/core_interface.proto +15 -0
  59. package/sdk-core/crates/common/protos/local/temporal/sdk/core/nexus/nexus.proto +9 -2
  60. package/sdk-core/crates/common/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +8 -0
  61. package/sdk-core/crates/common/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +22 -5
  62. package/sdk-core/crates/common/src/activity_definition.rs +20 -0
  63. package/sdk-core/crates/common/src/data_converters.rs +770 -0
  64. package/sdk-core/crates/common/src/envconfig.rs +5 -0
  65. package/sdk-core/crates/common/src/lib.rs +15 -211
  66. package/sdk-core/crates/common/src/payload_visitor.rs +648 -0
  67. package/sdk-core/crates/common/src/priority.rs +110 -0
  68. package/sdk-core/crates/common/src/protos/canned_histories.rs +19 -0
  69. package/sdk-core/crates/common/src/protos/history_builder.rs +45 -0
  70. package/sdk-core/crates/common/src/protos/history_info.rs +2 -0
  71. package/sdk-core/crates/common/src/protos/mod.rs +134 -27
  72. package/sdk-core/crates/common/src/protos/task_token.rs +3 -3
  73. package/sdk-core/crates/common/src/protos/utilities.rs +11 -0
  74. package/sdk-core/crates/{sdk-core → common}/src/telemetry/log_export.rs +11 -16
  75. package/sdk-core/crates/common/src/telemetry/metrics/core.rs +125 -0
  76. package/sdk-core/crates/common/src/telemetry/metrics.rs +272 -225
  77. package/sdk-core/crates/{sdk-core → common}/src/telemetry/otel.rs +8 -13
  78. package/sdk-core/crates/{sdk-core → common}/src/telemetry/prometheus_meter.rs +49 -50
  79. package/sdk-core/crates/{sdk-core → common}/src/telemetry/prometheus_server.rs +2 -3
  80. package/sdk-core/crates/common/src/telemetry.rs +278 -19
  81. package/sdk-core/crates/common/src/worker.rs +68 -636
  82. package/sdk-core/crates/common/src/workflow_definition.rs +60 -0
  83. package/sdk-core/crates/macros/Cargo.toml +5 -1
  84. package/sdk-core/crates/macros/src/activities_definitions.rs +585 -0
  85. package/sdk-core/crates/macros/src/fsm_impl.rs +507 -0
  86. package/sdk-core/crates/macros/src/lib.rs +138 -512
  87. package/sdk-core/crates/macros/src/macro_utils.rs +106 -0
  88. package/sdk-core/crates/macros/src/workflow_definitions.rs +1224 -0
  89. package/sdk-core/crates/sdk/Cargo.toml +19 -6
  90. package/sdk-core/crates/sdk/README.md +415 -0
  91. package/sdk-core/crates/sdk/src/activities.rs +417 -0
  92. package/sdk-core/crates/sdk/src/interceptors.rs +1 -1
  93. package/sdk-core/crates/sdk/src/lib.rs +759 -442
  94. package/sdk-core/crates/sdk/src/workflow_context/options.rs +64 -35
  95. package/sdk-core/crates/sdk/src/workflow_context.rs +1033 -289
  96. package/sdk-core/crates/sdk/src/workflow_future.rs +277 -213
  97. package/sdk-core/crates/sdk/src/workflows.rs +711 -0
  98. package/sdk-core/crates/sdk-core/Cargo.toml +59 -65
  99. package/sdk-core/crates/sdk-core/benches/workflow_replay_bench.rs +45 -54
  100. package/sdk-core/crates/sdk-core/machine_coverage/ActivityMachine_Coverage.puml +1 -1
  101. package/sdk-core/crates/sdk-core/src/abstractions.rs +6 -10
  102. package/sdk-core/crates/sdk-core/src/core_tests/activity_tasks.rs +6 -5
  103. package/sdk-core/crates/sdk-core/src/core_tests/mod.rs +22 -21
  104. package/sdk-core/crates/sdk-core/src/core_tests/queries.rs +21 -25
  105. package/sdk-core/crates/sdk-core/src/core_tests/replay_flag.rs +7 -10
  106. package/sdk-core/crates/sdk-core/src/core_tests/updates.rs +14 -17
  107. package/sdk-core/crates/sdk-core/src/core_tests/workers.rs +647 -27
  108. package/sdk-core/crates/sdk-core/src/core_tests/workflow_tasks.rs +46 -41
  109. package/sdk-core/crates/sdk-core/src/ephemeral_server/mod.rs +13 -16
  110. package/sdk-core/crates/sdk-core/src/histfetch.rs +20 -10
  111. package/sdk-core/crates/sdk-core/src/lib.rs +60 -123
  112. package/sdk-core/crates/sdk-core/src/pollers/mod.rs +4 -9
  113. package/sdk-core/crates/sdk-core/src/pollers/poll_buffer.rs +411 -32
  114. package/sdk-core/crates/sdk-core/src/protosext/mod.rs +2 -2
  115. package/sdk-core/crates/sdk-core/src/replay/mod.rs +14 -5
  116. package/sdk-core/crates/sdk-core/src/telemetry/metrics.rs +183 -198
  117. package/sdk-core/crates/sdk-core/src/telemetry/mod.rs +3 -281
  118. package/sdk-core/crates/sdk-core/src/test_help/integ_helpers.rs +35 -16
  119. package/sdk-core/crates/sdk-core/src/test_help/unit_helpers.rs +3 -6
  120. package/sdk-core/crates/sdk-core/src/worker/activities/activity_heartbeat_manager.rs +1 -0
  121. package/sdk-core/crates/sdk-core/src/worker/activities/local_activities.rs +11 -14
  122. package/sdk-core/crates/sdk-core/src/worker/activities.rs +16 -19
  123. package/sdk-core/crates/sdk-core/src/worker/client/mocks.rs +11 -5
  124. package/sdk-core/crates/sdk-core/src/worker/client.rs +104 -86
  125. package/sdk-core/crates/sdk-core/src/worker/heartbeat.rs +10 -14
  126. package/sdk-core/crates/sdk-core/src/worker/mod.rs +1175 -241
  127. package/sdk-core/crates/sdk-core/src/worker/nexus.rs +150 -23
  128. package/sdk-core/crates/sdk-core/src/worker/slot_provider.rs +2 -2
  129. package/sdk-core/crates/sdk-core/src/worker/tuner/fixed_size.rs +2 -2
  130. package/sdk-core/crates/sdk-core/src/worker/tuner/resource_based.rs +25 -27
  131. package/sdk-core/crates/sdk-core/src/worker/tuner.rs +64 -44
  132. package/sdk-core/crates/sdk-core/src/worker/workflow/driven_workflow.rs +9 -3
  133. package/sdk-core/crates/sdk-core/src/worker/workflow/machines/patch_state_machine.rs +5 -8
  134. package/sdk-core/crates/sdk-core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +21 -22
  135. package/sdk-core/crates/sdk-core/src/worker/workflow/machines/workflow_machines.rs +28 -4
  136. package/sdk-core/crates/sdk-core/src/worker/workflow/managed_run.rs +20 -41
  137. package/sdk-core/crates/sdk-core/src/worker/workflow/mod.rs +50 -9
  138. package/sdk-core/crates/sdk-core/src/worker/workflow/run_cache.rs +4 -7
  139. package/sdk-core/crates/sdk-core/src/worker/workflow/wft_extraction.rs +2 -4
  140. package/sdk-core/crates/sdk-core/src/worker/workflow/wft_poller.rs +8 -9
  141. package/sdk-core/crates/sdk-core/src/worker/workflow/workflow_stream.rs +1 -3
  142. package/sdk-core/crates/sdk-core/tests/activities_procmacro.rs +6 -0
  143. package/sdk-core/crates/sdk-core/tests/activities_trybuild/basic_pass.rs +54 -0
  144. package/sdk-core/crates/sdk-core/tests/activities_trybuild/invalid_self_type_fail.rs +18 -0
  145. package/sdk-core/crates/sdk-core/tests/activities_trybuild/invalid_self_type_fail.stderr +5 -0
  146. package/sdk-core/crates/sdk-core/tests/activities_trybuild/missing_context_fail.rs +14 -0
  147. package/sdk-core/crates/sdk-core/tests/activities_trybuild/missing_context_fail.stderr +5 -0
  148. package/sdk-core/crates/sdk-core/tests/activities_trybuild/multi_arg_pass.rs +48 -0
  149. package/sdk-core/crates/sdk-core/tests/activities_trybuild/no_input_pass.rs +14 -0
  150. package/sdk-core/crates/sdk-core/tests/activities_trybuild/no_return_type_pass.rs +19 -0
  151. package/sdk-core/crates/sdk-core/tests/cloud_tests.rs +14 -5
  152. package/sdk-core/crates/sdk-core/tests/common/activity_functions.rs +55 -0
  153. package/sdk-core/crates/sdk-core/tests/common/mod.rs +281 -236
  154. package/sdk-core/crates/sdk-core/tests/common/workflows.rs +41 -28
  155. package/sdk-core/crates/sdk-core/tests/global_metric_tests.rs +9 -14
  156. package/sdk-core/crates/sdk-core/tests/heavy_tests/fuzzy_workflow.rs +73 -66
  157. package/sdk-core/crates/sdk-core/tests/heavy_tests.rs +306 -268
  158. package/sdk-core/crates/sdk-core/tests/integ_tests/async_activity_client_tests.rs +230 -0
  159. package/sdk-core/crates/sdk-core/tests/integ_tests/client_tests.rs +94 -57
  160. package/sdk-core/crates/sdk-core/tests/integ_tests/data_converter_tests.rs +381 -0
  161. package/sdk-core/crates/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +37 -38
  162. package/sdk-core/crates/sdk-core/tests/integ_tests/heartbeat_tests.rs +49 -40
  163. package/sdk-core/crates/sdk-core/tests/integ_tests/metrics_tests.rs +447 -300
  164. package/sdk-core/crates/sdk-core/tests/integ_tests/pagination_tests.rs +50 -45
  165. package/sdk-core/crates/sdk-core/tests/integ_tests/polling_tests.rs +157 -157
  166. package/sdk-core/crates/sdk-core/tests/integ_tests/queries_tests.rs +103 -89
  167. package/sdk-core/crates/sdk-core/tests/integ_tests/update_tests.rs +609 -463
  168. package/sdk-core/crates/sdk-core/tests/integ_tests/visibility_tests.rs +80 -62
  169. package/sdk-core/crates/sdk-core/tests/integ_tests/worker_heartbeat_tests.rs +389 -265
  170. package/sdk-core/crates/sdk-core/tests/integ_tests/worker_tests.rs +250 -185
  171. package/sdk-core/crates/sdk-core/tests/integ_tests/worker_versioning_tests.rs +52 -49
  172. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_client_tests.rs +180 -0
  173. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/activities.rs +437 -327
  174. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +82 -58
  175. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +56 -30
  176. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +364 -251
  177. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/client_interactions.rs +552 -0
  178. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +110 -46
  179. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +243 -149
  180. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/eager.rs +98 -32
  181. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +1475 -1040
  182. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +73 -43
  183. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/nexus.rs +402 -245
  184. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/patches.rs +343 -207
  185. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/queries.rs +415 -0
  186. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/replay.rs +96 -36
  187. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/resets.rs +155 -140
  188. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/signals.rs +183 -113
  189. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +85 -44
  190. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/timers.rs +142 -48
  191. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +73 -56
  192. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests.rs +365 -242
  193. package/sdk-core/crates/sdk-core/tests/main.rs +22 -16
  194. package/sdk-core/crates/sdk-core/tests/manual_tests.rs +233 -187
  195. package/sdk-core/crates/sdk-core/tests/runner.rs +4 -6
  196. package/sdk-core/crates/sdk-core/tests/shared_tests/mod.rs +73 -27
  197. package/sdk-core/crates/sdk-core/tests/shared_tests/priority.rs +107 -84
  198. package/sdk-core/crates/sdk-core/tests/workflows_procmacro.rs +6 -0
  199. package/sdk-core/crates/sdk-core/tests/workflows_trybuild/async_query_fail.rs +26 -0
  200. package/sdk-core/crates/sdk-core/tests/workflows_trybuild/async_query_fail.stderr +5 -0
  201. package/sdk-core/crates/sdk-core/tests/workflows_trybuild/basic_pass.rs +49 -0
  202. package/sdk-core/crates/sdk-core/tests/workflows_trybuild/minimal_pass.rs +21 -0
  203. package/sdk-core/crates/sdk-core/tests/workflows_trybuild/mut_query_fail.rs +26 -0
  204. package/sdk-core/crates/sdk-core/tests/workflows_trybuild/mut_query_fail.stderr +5 -0
  205. package/sdk-core/crates/sdk-core/tests/workflows_trybuild/sync_run_fail.rs +21 -0
  206. package/sdk-core/crates/sdk-core/tests/workflows_trybuild/sync_run_fail.stderr +5 -0
  207. package/sdk-core/crates/sdk-core-c-bridge/Cargo.toml +8 -1
  208. package/sdk-core/crates/sdk-core-c-bridge/include/temporal-sdk-core-c-bridge.h +37 -26
  209. package/sdk-core/crates/sdk-core-c-bridge/src/client.rs +180 -87
  210. package/sdk-core/crates/sdk-core-c-bridge/src/lib.rs +89 -5
  211. package/sdk-core/crates/sdk-core-c-bridge/src/metric.rs +10 -16
  212. package/sdk-core/crates/sdk-core-c-bridge/src/runtime.rs +59 -67
  213. package/sdk-core/crates/sdk-core-c-bridge/src/testing.rs +10 -10
  214. package/sdk-core/crates/sdk-core-c-bridge/src/tests/context.rs +57 -22
  215. package/sdk-core/crates/sdk-core-c-bridge/src/tests/mod.rs +108 -12
  216. package/sdk-core/crates/sdk-core-c-bridge/src/tests/utils.rs +9 -52
  217. package/sdk-core/crates/sdk-core-c-bridge/src/worker.rs +74 -91
  218. package/sdk-core/rustfmt.toml +2 -1
  219. package/src/client.rs +206 -289
  220. package/src/helpers/try_into_js.rs +88 -2
  221. package/src/metrics.rs +277 -35
  222. package/src/runtime.rs +94 -45
  223. package/src/testing.rs +9 -16
  224. package/src/worker.rs +86 -68
  225. package/ts/native.ts +39 -3
  226. package/sdk-core/crates/client/src/workflow_handle/mod.rs +0 -212
  227. package/sdk-core/crates/common/src/errors.rs +0 -85
  228. package/sdk-core/crates/common/tests/worker_task_types_test.rs +0 -129
  229. package/sdk-core/crates/macros/LICENSE.txt +0 -21
  230. package/sdk-core/crates/sdk/src/activity_context.rs +0 -238
  231. package/sdk-core/crates/sdk/src/app_data.rs +0 -37
  232. package/sdk-core/crates/sdk-core/tests/integ_tests/activity_functions.rs +0 -5
  233. package/sdk-core/crates/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +0 -61
@@ -2,8 +2,12 @@ use crate::common::{CoreWfStarter, init_core_and_create_wf};
2
2
  use assert_matches::assert_matches;
3
3
  use futures_util::{FutureExt, StreamExt, future::join_all, stream::FuturesUnordered};
4
4
  use std::time::{Duration, Instant};
5
- use temporalio_client::WorkflowClientTrait;
5
+ use temporalio_client::{
6
+ NamespacedClient, UntypedQuery, UntypedSignal, UntypedWorkflow, WorkflowExecutionInfo,
7
+ WorkflowQueryOptions, WorkflowSignalOptions, WorkflowTerminateOptions,
8
+ };
6
9
  use temporalio_common::{
10
+ data_converters::RawValue,
7
11
  prost_dur,
8
12
  protos::{
9
13
  coresdk::{
@@ -11,7 +15,7 @@ use temporalio_common::{
11
15
  workflow_commands::{QueryResult, QuerySuccess, StartTimer},
12
16
  workflow_completion::WorkflowActivationCompletion,
13
17
  },
14
- temporal::api::{failure::v1::Failure, query::v1::WorkflowQuery},
18
+ temporal::api::failure::v1::Failure,
15
19
  test_utils::start_timer_cmd,
16
20
  },
17
21
  };
@@ -45,20 +49,20 @@ async fn simple_query_legacy() {
45
49
  tokio::time::sleep(Duration::from_secs(1)).await;
46
50
  // Query after timer should have fired and there should be new WFT
47
51
  let query_fut = async {
48
- starter
49
- .get_client()
50
- .await
51
- .query_workflow_execution(
52
- workflow_id,
53
- task.run_id.to_string(),
54
- WorkflowQuery {
55
- query_type: "myquery".to_string(),
56
- query_args: Some(b"hi".into()),
57
- header: None,
58
- },
59
- )
60
- .await
61
- .unwrap()
52
+ WorkflowExecutionInfo {
53
+ namespace: starter.get_client().await.namespace(),
54
+ workflow_id,
55
+ run_id: Some(task.run_id.to_string()),
56
+ first_execution_run_id: None,
57
+ }
58
+ .bind_untyped(starter.get_client().await.clone())
59
+ .query(
60
+ UntypedQuery::new("myquery"),
61
+ RawValue::empty(),
62
+ WorkflowQueryOptions::default(),
63
+ )
64
+ .await
65
+ .unwrap()
62
66
  };
63
67
  let workflow_completions_future = async {
64
68
  // Give query a beat to get going
@@ -108,7 +112,7 @@ async fn simple_query_legacy() {
108
112
  };
109
113
  let (q_resp, _) = join!(query_fut, workflow_completions_future);
110
114
  // Ensure query response is as expected
111
- assert_eq!(&q_resp.unwrap()[0].data, query_resp);
115
+ assert_eq!(&q_resp.payloads[0].data, query_resp);
112
116
  }
113
117
 
114
118
  #[rstest]
@@ -192,20 +196,22 @@ async fn query_after_execution_complete(#[case] do_evict: bool) {
192
196
  for _ in 0..3 {
193
197
  let gw = starter.get_client().await.clone();
194
198
  let query_fut = async move {
195
- let q_resp = gw
196
- .query_workflow_execution(
197
- workflow_id.to_string(),
198
- run_id.to_string(),
199
- WorkflowQuery {
200
- query_type: "myquery".to_string(),
201
- query_args: Some(b"hi".into()),
202
- header: None,
203
- },
204
- )
205
- .await
206
- .unwrap();
199
+ let q_resp: RawValue = WorkflowExecutionInfo {
200
+ namespace: gw.namespace(),
201
+ workflow_id: workflow_id.to_string(),
202
+ run_id: Some(run_id.to_string()),
203
+ first_execution_run_id: None,
204
+ }
205
+ .bind_untyped(gw.clone())
206
+ .query(
207
+ UntypedQuery::new("myquery"),
208
+ RawValue::empty(),
209
+ WorkflowQueryOptions::default(),
210
+ )
211
+ .await
212
+ .unwrap();
207
213
  // Ensure query response is as expected
208
- assert_eq!(q_resp.unwrap()[0].data, query_resp);
214
+ assert_eq!(q_resp.payloads[0].data, query_resp);
209
215
  };
210
216
 
211
217
  query_futs.push(query_fut.boxed());
@@ -232,20 +238,20 @@ async fn fail_legacy_query(#[case] with_nde: bool) {
232
238
  core.complete_execution(&task.run_id).await;
233
239
  core.handle_eviction().await;
234
240
  let query_fut = async {
235
- starter
236
- .get_client()
237
- .await
238
- .query_workflow_execution(
239
- workflow_id.to_string(),
240
- task.run_id.to_string(),
241
- WorkflowQuery {
242
- query_type: "myquery".to_string(),
243
- query_args: Some(b"hi".into()),
244
- header: None,
245
- },
246
- )
247
- .await
248
- .unwrap_err()
241
+ WorkflowExecutionInfo {
242
+ namespace: starter.get_client().await.namespace(),
243
+ workflow_id: workflow_id.to_string(),
244
+ run_id: Some(task.run_id.to_string()),
245
+ first_execution_run_id: None,
246
+ }
247
+ .bind_untyped(starter.get_client().await.clone())
248
+ .query(
249
+ UntypedQuery::new("myquery"),
250
+ RawValue::empty(),
251
+ WorkflowQueryOptions::default(),
252
+ )
253
+ .await
254
+ .unwrap_err()
249
255
  };
250
256
  let query_responder = async {
251
257
  // Have to replay first since we've evicted
@@ -280,10 +286,11 @@ async fn fail_legacy_query(#[case] with_nde: bool) {
280
286
  };
281
287
  let (q_resp, _) = join!(query_fut, query_responder);
282
288
  // Ensure query response is a failure and has the right message
289
+ let err_msg = q_resp.to_string();
283
290
  if with_nde {
284
- assert!(q_resp.message().contains("TMPRL1100"));
291
+ assert!(err_msg.contains("TMPRL1100"));
285
292
  } else {
286
- assert_eq!(q_resp.message(), query_err);
293
+ assert!(err_msg.contains(query_err));
287
294
  }
288
295
  }
289
296
 
@@ -303,18 +310,20 @@ async fn multiple_concurrent_queries_no_new_history() {
303
310
  let client = starter.get_client().await;
304
311
  let num_queries = 10;
305
312
  let query_futs = (1..=num_queries).map(|_| async {
306
- client
307
- .query_workflow_execution(
308
- workflow_id.to_string(),
309
- task.run_id.to_string(),
310
- WorkflowQuery {
311
- query_type: "myquery".to_string(),
312
- query_args: Some(b"hi".into()),
313
- header: None,
314
- },
315
- )
316
- .await
317
- .unwrap();
313
+ WorkflowExecutionInfo {
314
+ namespace: client.namespace(),
315
+ workflow_id: workflow_id.to_string(),
316
+ run_id: Some(task.run_id.to_string()),
317
+ first_execution_run_id: None,
318
+ }
319
+ .bind_untyped(client.clone())
320
+ .query(
321
+ UntypedQuery::new("myquery"),
322
+ RawValue::empty(),
323
+ WorkflowQueryOptions::default(),
324
+ )
325
+ .await
326
+ .unwrap();
318
327
  });
319
328
  let complete_fut = async {
320
329
  for _ in 1..=num_queries {
@@ -345,7 +354,8 @@ async fn multiple_concurrent_queries_no_new_history() {
345
354
  join!(join_all(query_futs), complete_fut);
346
355
  // No need to properly finish
347
356
  client
348
- .terminate_workflow_execution(workflow_id, None)
357
+ .get_workflow_handle::<UntypedWorkflow>(workflow_id)
358
+ .terminate(WorkflowTerminateOptions::default())
349
359
  .await
350
360
  .unwrap();
351
361
  // This test should not take a long time. Things can still work, but if it takes a long time
@@ -370,18 +380,20 @@ async fn queries_handled_before_next_wft() {
370
380
  let client = starter.get_client().await;
371
381
  // Send two queries so that one of them is buffered
372
382
  let query_futs = (1..=2).map(|_| async {
373
- client
374
- .query_workflow_execution(
375
- workflow_id.to_string(),
376
- task.run_id.to_string(),
377
- WorkflowQuery {
378
- query_type: "myquery".to_string(),
379
- query_args: Some(b"hi".into()),
380
- header: None,
381
- },
382
- )
383
- .await
384
- .unwrap();
383
+ WorkflowExecutionInfo {
384
+ namespace: client.namespace(),
385
+ workflow_id: workflow_id.to_string(),
386
+ run_id: Some(task.run_id.to_string()),
387
+ first_execution_run_id: None,
388
+ }
389
+ .bind_untyped(client.clone())
390
+ .query(
391
+ UntypedQuery::new("myquery"),
392
+ RawValue::empty(),
393
+ WorkflowQueryOptions::default(),
394
+ )
395
+ .await
396
+ .unwrap();
385
397
  });
386
398
  let complete_fut = async {
387
399
  let task = core.poll_workflow_activation().await.unwrap();
@@ -393,16 +405,20 @@ async fn queries_handled_before_next_wft() {
393
405
  );
394
406
  // While handling the first query, signal the workflow so a new WFT is generated and the
395
407
  // second query is still in the buffer
396
- client
397
- .signal_workflow_execution(
398
- workflow_id.to_string(),
399
- task.run_id.to_string(),
400
- "blah".to_string(),
401
- None,
402
- None,
403
- )
404
- .await
405
- .unwrap();
408
+ WorkflowExecutionInfo {
409
+ namespace: client.namespace(),
410
+ workflow_id: workflow_id.to_string(),
411
+ run_id: Some(task.run_id.to_string()),
412
+ first_execution_run_id: None,
413
+ }
414
+ .bind_untyped(client.clone())
415
+ .signal(
416
+ UntypedSignal::new("blah"),
417
+ RawValue::empty(),
418
+ WorkflowSignalOptions::default(),
419
+ )
420
+ .await
421
+ .unwrap();
406
422
  tokio::time::sleep(Duration::from_millis(500)).await;
407
423
  core.complete_workflow_activation(WorkflowActivationCompletion::from_cmd(
408
424
  task.run_id,
@@ -465,13 +481,11 @@ async fn query_should_not_be_sent_if_wft_about_to_fail() {
465
481
  let workflow_id = starter.get_task_queue().to_string();
466
482
  let client = starter.get_client().await;
467
483
  // query straight away
468
- let query_fut = client.query_workflow_execution(
469
- workflow_id.to_string(),
470
- "".to_string(),
471
- WorkflowQuery {
472
- query_type: "myquery".to_string(),
473
- ..Default::default()
474
- },
484
+ let handle = client.get_workflow_handle::<UntypedWorkflow>(workflow_id.to_string());
485
+ let query_fut = handle.query(
486
+ UntypedQuery::new("myquery"),
487
+ RawValue::empty(),
488
+ WorkflowQueryOptions::default(),
475
489
  );
476
490
  // Poll for the task and respond with a task failure
477
491
  let poll_and_fail_fut = async {
@@ -528,6 +542,6 @@ async fn query_should_not_be_sent_if_wft_about_to_fail() {
528
542
  .unwrap();
529
543
  };
530
544
  let (qres, _) = join!(query_fut, poll_and_fail_fut);
531
- let qres = qres.unwrap().query_result.unwrap();
545
+ let qres = qres.unwrap();
532
546
  assert_eq!(qres.payloads[0].data, b"done");
533
547
  }