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.
- checksums.yaml +4 -4
- data/Cargo.lock +4035 -0
- data/Cargo.toml +25 -0
- data/Gemfile +20 -0
- data/LICENSE +16 -15
- data/README.md +455 -195
- data/Rakefile +387 -0
- data/ext/Cargo.toml +25 -0
- data/lib/temporalio/activity/complete_async_error.rb +11 -0
- data/lib/temporalio/activity/context.rb +82 -77
- data/lib/temporalio/activity/definition.rb +77 -0
- data/lib/temporalio/activity/info.rb +42 -46
- data/lib/temporalio/activity.rb +49 -65
- data/lib/temporalio/api/batch/v1/message.rb +31 -0
- data/lib/temporalio/api/cloud/cloudservice/v1/request_response.rb +93 -0
- data/lib/temporalio/api/cloud/cloudservice/v1/service.rb +25 -0
- data/lib/temporalio/api/cloud/cloudservice.rb +3 -0
- data/lib/temporalio/api/cloud/identity/v1/message.rb +36 -0
- data/lib/temporalio/api/cloud/namespace/v1/message.rb +35 -0
- data/lib/temporalio/api/cloud/operation/v1/message.rb +27 -0
- data/lib/temporalio/api/cloud/region/v1/message.rb +23 -0
- data/lib/temporalio/api/command/v1/message.rb +46 -0
- data/lib/temporalio/api/common/v1/grpc_status.rb +23 -0
- data/lib/temporalio/api/common/v1/message.rb +41 -0
- data/lib/temporalio/api/enums/v1/batch_operation.rb +22 -0
- data/lib/temporalio/api/enums/v1/command_type.rb +21 -0
- data/lib/temporalio/api/enums/v1/common.rb +26 -0
- data/lib/temporalio/api/enums/v1/event_type.rb +21 -0
- data/lib/temporalio/api/enums/v1/failed_cause.rb +26 -0
- data/lib/temporalio/api/enums/v1/namespace.rb +23 -0
- data/lib/temporalio/api/enums/v1/query.rb +22 -0
- data/lib/temporalio/api/enums/v1/reset.rb +23 -0
- data/lib/temporalio/api/enums/v1/schedule.rb +21 -0
- data/lib/temporalio/api/enums/v1/task_queue.rb +25 -0
- data/lib/temporalio/api/enums/v1/update.rb +22 -0
- data/lib/temporalio/api/enums/v1/workflow.rb +30 -0
- data/lib/temporalio/api/errordetails/v1/message.rb +42 -0
- data/lib/temporalio/api/export/v1/message.rb +24 -0
- data/lib/temporalio/api/failure/v1/message.rb +35 -0
- data/lib/temporalio/api/filter/v1/message.rb +27 -0
- data/lib/temporalio/api/history/v1/message.rb +90 -0
- data/lib/temporalio/api/namespace/v1/message.rb +31 -0
- data/lib/temporalio/api/nexus/v1/message.rb +40 -0
- data/lib/temporalio/api/operatorservice/v1/request_response.rb +49 -0
- data/lib/temporalio/api/operatorservice/v1/service.rb +23 -0
- data/lib/temporalio/api/operatorservice.rb +3 -0
- data/lib/temporalio/api/protocol/v1/message.rb +23 -0
- data/lib/temporalio/api/query/v1/message.rb +27 -0
- data/lib/temporalio/api/replication/v1/message.rb +26 -0
- data/lib/temporalio/api/schedule/v1/message.rb +42 -0
- data/lib/temporalio/api/sdk/v1/enhanced_stack_trace.rb +25 -0
- data/lib/temporalio/api/sdk/v1/task_complete_metadata.rb +21 -0
- data/lib/temporalio/api/sdk/v1/user_metadata.rb +23 -0
- data/lib/temporalio/api/sdk/v1/workflow_metadata.rb +23 -0
- data/lib/temporalio/api/taskqueue/v1/message.rb +45 -0
- data/lib/temporalio/api/update/v1/message.rb +33 -0
- data/lib/temporalio/api/version/v1/message.rb +26 -0
- data/lib/temporalio/api/workflow/v1/message.rb +43 -0
- data/lib/temporalio/api/workflowservice/v1/request_response.rb +189 -0
- data/lib/temporalio/api/workflowservice/v1/service.rb +23 -0
- data/lib/temporalio/api/workflowservice.rb +3 -0
- data/lib/temporalio/api.rb +13 -0
- data/lib/temporalio/cancellation.rb +150 -0
- data/lib/temporalio/client/activity_id_reference.rb +32 -0
- data/lib/temporalio/client/async_activity_handle.rb +110 -0
- data/lib/temporalio/client/connection/cloud_service.rb +648 -0
- data/lib/temporalio/client/connection/operator_service.rb +249 -0
- data/lib/temporalio/client/connection/service.rb +41 -0
- data/lib/temporalio/client/connection/workflow_service.rb +1218 -0
- data/lib/temporalio/client/connection.rb +270 -0
- data/lib/temporalio/client/interceptor.rb +316 -0
- data/lib/temporalio/client/workflow_execution.rb +103 -0
- data/lib/temporalio/client/workflow_execution_count.rb +36 -0
- data/lib/temporalio/client/workflow_execution_status.rb +18 -0
- data/lib/temporalio/client/workflow_handle.rb +380 -177
- data/lib/temporalio/client/workflow_query_reject_condition.rb +14 -0
- data/lib/temporalio/client/workflow_update_handle.rb +67 -0
- data/lib/temporalio/client/workflow_update_wait_stage.rb +17 -0
- data/lib/temporalio/client.rb +366 -93
- data/lib/temporalio/common_enums.rb +24 -0
- data/lib/temporalio/converters/data_converter.rb +102 -0
- data/lib/temporalio/converters/failure_converter.rb +200 -0
- data/lib/temporalio/converters/payload_codec.rb +26 -0
- data/lib/temporalio/converters/payload_converter/binary_null.rb +34 -0
- data/lib/temporalio/converters/payload_converter/binary_plain.rb +35 -0
- data/lib/temporalio/converters/payload_converter/binary_protobuf.rb +42 -0
- data/lib/temporalio/converters/payload_converter/composite.rb +62 -0
- data/lib/temporalio/converters/payload_converter/encoding.rb +35 -0
- data/lib/temporalio/converters/payload_converter/json_plain.rb +44 -0
- data/lib/temporalio/converters/payload_converter/json_protobuf.rb +41 -0
- data/lib/temporalio/converters/payload_converter.rb +73 -0
- data/lib/temporalio/converters.rb +9 -0
- data/lib/temporalio/error/failure.rb +119 -94
- data/lib/temporalio/error.rb +147 -0
- data/lib/temporalio/internal/bridge/api/activity_result/activity_result.rb +34 -0
- data/lib/temporalio/internal/bridge/api/activity_task/activity_task.rb +31 -0
- data/lib/temporalio/internal/bridge/api/child_workflow/child_workflow.rb +33 -0
- data/lib/temporalio/internal/bridge/api/common/common.rb +26 -0
- data/lib/temporalio/internal/bridge/api/core_interface.rb +36 -0
- data/lib/temporalio/internal/bridge/api/external_data/external_data.rb +27 -0
- data/lib/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rb +52 -0
- data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +54 -0
- data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +30 -0
- data/lib/temporalio/internal/bridge/api.rb +3 -0
- data/lib/temporalio/internal/bridge/client.rb +90 -0
- data/lib/temporalio/internal/bridge/runtime.rb +53 -0
- data/lib/temporalio/internal/bridge/testing.rb +46 -0
- data/lib/temporalio/internal/bridge/worker.rb +83 -0
- data/lib/temporalio/internal/bridge.rb +36 -0
- data/lib/temporalio/internal/client/implementation.rb +525 -0
- data/lib/temporalio/internal/proto_utils.rb +54 -0
- data/lib/temporalio/internal/worker/activity_worker.rb +345 -0
- data/lib/temporalio/internal/worker/multi_runner.rb +169 -0
- data/lib/temporalio/internal.rb +7 -0
- data/lib/temporalio/retry_policy.rb +39 -80
- data/lib/temporalio/runtime.rb +259 -13
- data/lib/temporalio/scoped_logger.rb +96 -0
- data/lib/temporalio/search_attributes.rb +300 -0
- data/lib/temporalio/testing/activity_environment.rb +132 -0
- data/lib/temporalio/testing/workflow_environment.rb +113 -88
- data/lib/temporalio/testing.rb +4 -169
- data/lib/temporalio/version.rb +3 -1
- data/lib/temporalio/worker/activity_executor/fiber.rb +49 -0
- data/lib/temporalio/worker/activity_executor/thread_pool.rb +254 -0
- data/lib/temporalio/worker/activity_executor.rb +55 -0
- data/lib/temporalio/worker/interceptor.rb +88 -0
- data/lib/temporalio/worker/tuner.rb +151 -0
- data/lib/temporalio/worker.rb +385 -163
- data/lib/temporalio/workflow_history.rb +22 -0
- data/lib/temporalio.rb +2 -7
- data/temporalio.gemspec +20 -39
- metadata +131 -712
- data/bridge/Cargo.lock +0 -2997
- data/bridge/Cargo.toml +0 -29
- data/bridge/sdk-core/ARCHITECTURE.md +0 -76
- data/bridge/sdk-core/Cargo.toml +0 -2
- data/bridge/sdk-core/LICENSE.txt +0 -23
- data/bridge/sdk-core/README.md +0 -117
- data/bridge/sdk-core/arch_docs/diagrams/README.md +0 -10
- data/bridge/sdk-core/arch_docs/diagrams/sticky_queues.puml +0 -40
- data/bridge/sdk-core/arch_docs/diagrams/workflow_internals.svg +0 -1
- data/bridge/sdk-core/arch_docs/sticky_queues.md +0 -51
- data/bridge/sdk-core/client/Cargo.toml +0 -40
- data/bridge/sdk-core/client/LICENSE.txt +0 -23
- data/bridge/sdk-core/client/src/lib.rs +0 -1462
- data/bridge/sdk-core/client/src/metrics.rs +0 -174
- data/bridge/sdk-core/client/src/raw.rs +0 -932
- data/bridge/sdk-core/client/src/retry.rs +0 -763
- data/bridge/sdk-core/client/src/workflow_handle/mod.rs +0 -185
- data/bridge/sdk-core/core/Cargo.toml +0 -129
- data/bridge/sdk-core/core/LICENSE.txt +0 -23
- data/bridge/sdk-core/core/benches/workflow_replay.rs +0 -76
- data/bridge/sdk-core/core/src/abstractions.rs +0 -355
- data/bridge/sdk-core/core/src/core_tests/activity_tasks.rs +0 -1049
- data/bridge/sdk-core/core/src/core_tests/child_workflows.rs +0 -221
- data/bridge/sdk-core/core/src/core_tests/determinism.rs +0 -270
- data/bridge/sdk-core/core/src/core_tests/local_activities.rs +0 -1046
- data/bridge/sdk-core/core/src/core_tests/mod.rs +0 -100
- data/bridge/sdk-core/core/src/core_tests/queries.rs +0 -893
- data/bridge/sdk-core/core/src/core_tests/replay_flag.rs +0 -65
- data/bridge/sdk-core/core/src/core_tests/workers.rs +0 -257
- data/bridge/sdk-core/core/src/core_tests/workflow_cancels.rs +0 -124
- data/bridge/sdk-core/core/src/core_tests/workflow_tasks.rs +0 -2433
- data/bridge/sdk-core/core/src/ephemeral_server/mod.rs +0 -609
- data/bridge/sdk-core/core/src/internal_flags.rs +0 -136
- data/bridge/sdk-core/core/src/lib.rs +0 -289
- data/bridge/sdk-core/core/src/pollers/mod.rs +0 -54
- data/bridge/sdk-core/core/src/pollers/poll_buffer.rs +0 -297
- data/bridge/sdk-core/core/src/protosext/mod.rs +0 -428
- data/bridge/sdk-core/core/src/replay/mod.rs +0 -215
- data/bridge/sdk-core/core/src/retry_logic.rs +0 -202
- data/bridge/sdk-core/core/src/telemetry/log_export.rs +0 -190
- data/bridge/sdk-core/core/src/telemetry/metrics.rs +0 -462
- data/bridge/sdk-core/core/src/telemetry/mod.rs +0 -423
- data/bridge/sdk-core/core/src/telemetry/prometheus_server.rs +0 -83
- data/bridge/sdk-core/core/src/test_help/mod.rs +0 -939
- data/bridge/sdk-core/core/src/worker/activities/activity_heartbeat_manager.rs +0 -536
- data/bridge/sdk-core/core/src/worker/activities/activity_task_poller_stream.rs +0 -89
- data/bridge/sdk-core/core/src/worker/activities/local_activities.rs +0 -1278
- data/bridge/sdk-core/core/src/worker/activities.rs +0 -557
- data/bridge/sdk-core/core/src/worker/client/mocks.rs +0 -107
- data/bridge/sdk-core/core/src/worker/client.rs +0 -389
- data/bridge/sdk-core/core/src/worker/mod.rs +0 -677
- data/bridge/sdk-core/core/src/worker/workflow/bridge.rs +0 -35
- data/bridge/sdk-core/core/src/worker/workflow/driven_workflow.rs +0 -99
- data/bridge/sdk-core/core/src/worker/workflow/history_update.rs +0 -1111
- data/bridge/sdk-core/core/src/worker/workflow/machines/activity_state_machine.rs +0 -964
- data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_external_state_machine.rs +0 -294
- data/bridge/sdk-core/core/src/worker/workflow/machines/cancel_workflow_state_machine.rs +0 -168
- data/bridge/sdk-core/core/src/worker/workflow/machines/child_workflow_state_machine.rs +0 -918
- data/bridge/sdk-core/core/src/worker/workflow/machines/complete_workflow_state_machine.rs +0 -137
- data/bridge/sdk-core/core/src/worker/workflow/machines/continue_as_new_workflow_state_machine.rs +0 -158
- data/bridge/sdk-core/core/src/worker/workflow/machines/fail_workflow_state_machine.rs +0 -130
- data/bridge/sdk-core/core/src/worker/workflow/machines/local_activity_state_machine.rs +0 -1525
- data/bridge/sdk-core/core/src/worker/workflow/machines/mod.rs +0 -324
- data/bridge/sdk-core/core/src/worker/workflow/machines/modify_workflow_properties_state_machine.rs +0 -179
- data/bridge/sdk-core/core/src/worker/workflow/machines/patch_state_machine.rs +0 -659
- data/bridge/sdk-core/core/src/worker/workflow/machines/signal_external_state_machine.rs +0 -439
- data/bridge/sdk-core/core/src/worker/workflow/machines/timer_state_machine.rs +0 -435
- data/bridge/sdk-core/core/src/worker/workflow/machines/transition_coverage.rs +0 -175
- data/bridge/sdk-core/core/src/worker/workflow/machines/upsert_search_attributes_state_machine.rs +0 -249
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines/local_acts.rs +0 -85
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_machines.rs +0 -1280
- data/bridge/sdk-core/core/src/worker/workflow/machines/workflow_task_state_machine.rs +0 -269
- data/bridge/sdk-core/core/src/worker/workflow/managed_run/managed_wf_test.rs +0 -213
- data/bridge/sdk-core/core/src/worker/workflow/managed_run.rs +0 -1305
- data/bridge/sdk-core/core/src/worker/workflow/mod.rs +0 -1276
- data/bridge/sdk-core/core/src/worker/workflow/run_cache.rs +0 -128
- data/bridge/sdk-core/core/src/worker/workflow/wft_extraction.rs +0 -125
- data/bridge/sdk-core/core/src/worker/workflow/wft_poller.rs +0 -85
- data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/saved_wf_inputs.rs +0 -117
- data/bridge/sdk-core/core/src/worker/workflow/workflow_stream/tonic_status_serde.rs +0 -24
- data/bridge/sdk-core/core/src/worker/workflow/workflow_stream.rs +0 -715
- data/bridge/sdk-core/core-api/Cargo.toml +0 -33
- data/bridge/sdk-core/core-api/LICENSE.txt +0 -23
- data/bridge/sdk-core/core-api/src/errors.rs +0 -62
- data/bridge/sdk-core/core-api/src/lib.rs +0 -113
- data/bridge/sdk-core/core-api/src/telemetry.rs +0 -141
- data/bridge/sdk-core/core-api/src/worker.rs +0 -161
- data/bridge/sdk-core/etc/deps.svg +0 -162
- data/bridge/sdk-core/etc/dynamic-config.yaml +0 -2
- data/bridge/sdk-core/etc/otel-collector-config.yaml +0 -36
- data/bridge/sdk-core/etc/prometheus.yaml +0 -6
- data/bridge/sdk-core/etc/regen-depgraph.sh +0 -5
- data/bridge/sdk-core/fsm/Cargo.toml +0 -18
- data/bridge/sdk-core/fsm/LICENSE.txt +0 -23
- data/bridge/sdk-core/fsm/README.md +0 -3
- data/bridge/sdk-core/fsm/rustfsm_procmacro/Cargo.toml +0 -27
- data/bridge/sdk-core/fsm/rustfsm_procmacro/LICENSE.txt +0 -23
- data/bridge/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +0 -650
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/progress.rs +0 -8
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.rs +0 -18
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dupe_transitions_fail.stderr +0 -12
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/dynamic_dest_pass.rs +0 -41
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.rs +0 -14
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/forgot_name_fail.stderr +0 -11
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_arg_pass.rs +0 -32
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/handler_pass.rs +0 -31
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/medium_complex_pass.rs +0 -46
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.rs +0 -29
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +0 -12
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/simple_pass.rs +0 -32
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.rs +0 -18
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/struct_event_variant_fail.stderr +0 -5
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.rs +0 -11
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_more_item_event_variant_fail.stderr +0 -5
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.rs +0 -11
- data/bridge/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/tuple_zero_item_event_variant_fail.stderr +0 -5
- data/bridge/sdk-core/fsm/rustfsm_trait/Cargo.toml +0 -14
- data/bridge/sdk-core/fsm/rustfsm_trait/LICENSE.txt +0 -23
- data/bridge/sdk-core/fsm/rustfsm_trait/src/lib.rs +0 -254
- data/bridge/sdk-core/fsm/src/lib.rs +0 -2
- data/bridge/sdk-core/histories/evict_while_la_running_no_interference-16_history.bin +0 -0
- data/bridge/sdk-core/histories/evict_while_la_running_no_interference-23_history.bin +0 -0
- data/bridge/sdk-core/histories/evict_while_la_running_no_interference-85_history.bin +0 -0
- data/bridge/sdk-core/histories/fail_wf_task.bin +0 -0
- data/bridge/sdk-core/histories/timer_workflow_history.bin +0 -0
- data/bridge/sdk-core/integ-with-otel.sh +0 -7
- data/bridge/sdk-core/protos/api_upstream/README.md +0 -9
- data/bridge/sdk-core/protos/api_upstream/api-linter.yaml +0 -40
- data/bridge/sdk-core/protos/api_upstream/buf.yaml +0 -9
- data/bridge/sdk-core/protos/api_upstream/build/go.mod +0 -7
- data/bridge/sdk-core/protos/api_upstream/build/go.sum +0 -5
- data/bridge/sdk-core/protos/api_upstream/build/tools.go +0 -29
- data/bridge/sdk-core/protos/api_upstream/dependencies/gogoproto/gogo.proto +0 -141
- data/bridge/sdk-core/protos/api_upstream/go.mod +0 -6
- data/bridge/sdk-core/protos/api_upstream/temporal/api/batch/v1/message.proto +0 -89
- data/bridge/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +0 -248
- data/bridge/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +0 -123
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto +0 -47
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/command_type.proto +0 -52
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +0 -56
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/event_type.proto +0 -170
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +0 -123
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +0 -51
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/query.proto +0 -50
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +0 -41
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/schedule.proto +0 -60
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +0 -59
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/update.proto +0 -56
- data/bridge/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +0 -122
- data/bridge/sdk-core/protos/api_upstream/temporal/api/errordetails/v1/message.proto +0 -108
- data/bridge/sdk-core/protos/api_upstream/temporal/api/failure/v1/message.proto +0 -114
- data/bridge/sdk-core/protos/api_upstream/temporal/api/filter/v1/message.proto +0 -56
- data/bridge/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +0 -787
- data/bridge/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +0 -99
- data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/request_response.proto +0 -124
- data/bridge/sdk-core/protos/api_upstream/temporal/api/operatorservice/v1/service.proto +0 -80
- data/bridge/sdk-core/protos/api_upstream/temporal/api/protocol/v1/message.proto +0 -57
- data/bridge/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +0 -61
- data/bridge/sdk-core/protos/api_upstream/temporal/api/replication/v1/message.proto +0 -55
- data/bridge/sdk-core/protos/api_upstream/temporal/api/schedule/v1/message.proto +0 -379
- data/bridge/sdk-core/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto +0 -63
- data/bridge/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +0 -108
- data/bridge/sdk-core/protos/api_upstream/temporal/api/update/v1/message.proto +0 -111
- data/bridge/sdk-core/protos/api_upstream/temporal/api/version/v1/message.proto +0 -59
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflow/v1/message.proto +0 -146
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +0 -1199
- data/bridge/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +0 -415
- data/bridge/sdk-core/protos/grpc/health/v1/health.proto +0 -63
- data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +0 -79
- data/bridge/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +0 -80
- data/bridge/sdk-core/protos/local/temporal/sdk/core/child_workflow/child_workflow.proto +0 -78
- data/bridge/sdk-core/protos/local/temporal/sdk/core/common/common.proto +0 -16
- data/bridge/sdk-core/protos/local/temporal/sdk/core/core_interface.proto +0 -31
- data/bridge/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +0 -31
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_activation/workflow_activation.proto +0 -270
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_commands/workflow_commands.proto +0 -305
- data/bridge/sdk-core/protos/local/temporal/sdk/core/workflow_completion/workflow_completion.proto +0 -35
- data/bridge/sdk-core/protos/testsrv_upstream/api-linter.yaml +0 -38
- data/bridge/sdk-core/protos/testsrv_upstream/buf.yaml +0 -13
- data/bridge/sdk-core/protos/testsrv_upstream/dependencies/gogoproto/gogo.proto +0 -141
- data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/request_response.proto +0 -63
- data/bridge/sdk-core/protos/testsrv_upstream/temporal/api/testservice/v1/service.proto +0 -90
- data/bridge/sdk-core/rustfmt.toml +0 -1
- data/bridge/sdk-core/sdk/Cargo.toml +0 -48
- data/bridge/sdk-core/sdk/LICENSE.txt +0 -23
- data/bridge/sdk-core/sdk/src/activity_context.rs +0 -230
- data/bridge/sdk-core/sdk/src/app_data.rs +0 -37
- data/bridge/sdk-core/sdk/src/interceptors.rs +0 -50
- data/bridge/sdk-core/sdk/src/lib.rs +0 -861
- data/bridge/sdk-core/sdk/src/payload_converter.rs +0 -11
- data/bridge/sdk-core/sdk/src/workflow_context/options.rs +0 -295
- data/bridge/sdk-core/sdk/src/workflow_context.rs +0 -694
- data/bridge/sdk-core/sdk/src/workflow_future.rs +0 -500
- data/bridge/sdk-core/sdk-core-protos/Cargo.toml +0 -33
- data/bridge/sdk-core/sdk-core-protos/LICENSE.txt +0 -23
- data/bridge/sdk-core/sdk-core-protos/build.rs +0 -142
- data/bridge/sdk-core/sdk-core-protos/src/constants.rs +0 -7
- data/bridge/sdk-core/sdk-core-protos/src/history_builder.rs +0 -557
- data/bridge/sdk-core/sdk-core-protos/src/history_info.rs +0 -234
- data/bridge/sdk-core/sdk-core-protos/src/lib.rs +0 -2088
- data/bridge/sdk-core/sdk-core-protos/src/task_token.rs +0 -48
- data/bridge/sdk-core/sdk-core-protos/src/utilities.rs +0 -14
- data/bridge/sdk-core/test-utils/Cargo.toml +0 -38
- data/bridge/sdk-core/test-utils/src/canned_histories.rs +0 -1389
- data/bridge/sdk-core/test-utils/src/histfetch.rs +0 -28
- data/bridge/sdk-core/test-utils/src/lib.rs +0 -709
- data/bridge/sdk-core/test-utils/src/wf_input_saver.rs +0 -50
- data/bridge/sdk-core/test-utils/src/workflows.rs +0 -29
- data/bridge/sdk-core/tests/fuzzy_workflow.rs +0 -130
- data/bridge/sdk-core/tests/heavy_tests.rs +0 -265
- data/bridge/sdk-core/tests/integ_tests/client_tests.rs +0 -36
- data/bridge/sdk-core/tests/integ_tests/ephemeral_server_tests.rs +0 -150
- data/bridge/sdk-core/tests/integ_tests/heartbeat_tests.rs +0 -223
- data/bridge/sdk-core/tests/integ_tests/metrics_tests.rs +0 -239
- data/bridge/sdk-core/tests/integ_tests/polling_tests.rs +0 -90
- data/bridge/sdk-core/tests/integ_tests/queries_tests.rs +0 -314
- data/bridge/sdk-core/tests/integ_tests/visibility_tests.rs +0 -151
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/activities.rs +0 -902
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/appdata_propagation.rs +0 -61
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +0 -60
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +0 -51
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +0 -51
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +0 -64
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +0 -47
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +0 -669
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/modify_wf_properties.rs +0 -54
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/patches.rs +0 -92
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/replay.rs +0 -228
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/resets.rs +0 -94
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/signals.rs +0 -171
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +0 -85
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/timers.rs +0 -120
- data/bridge/sdk-core/tests/integ_tests/workflow_tests/upsert_search_attrs.rs +0 -77
- data/bridge/sdk-core/tests/integ_tests/workflow_tests.rs +0 -596
- data/bridge/sdk-core/tests/main.rs +0 -103
- data/bridge/sdk-core/tests/runner.rs +0 -132
- data/bridge/sdk-core/tests/wf_input_replay.rs +0 -32
- data/bridge/src/connection.rs +0 -202
- data/bridge/src/lib.rs +0 -494
- data/bridge/src/runtime.rs +0 -54
- data/bridge/src/test_server.rs +0 -153
- data/bridge/src/worker.rs +0 -197
- data/ext/Rakefile +0 -9
- data/lib/gen/dependencies/gogoproto/gogo_pb.rb +0 -14
- data/lib/gen/temporal/api/batch/v1/message_pb.rb +0 -50
- data/lib/gen/temporal/api/command/v1/message_pb.rb +0 -160
- data/lib/gen/temporal/api/common/v1/message_pb.rb +0 -73
- data/lib/gen/temporal/api/enums/v1/batch_operation_pb.rb +0 -33
- data/lib/gen/temporal/api/enums/v1/command_type_pb.rb +0 -37
- data/lib/gen/temporal/api/enums/v1/common_pb.rb +0 -42
- data/lib/gen/temporal/api/enums/v1/event_type_pb.rb +0 -68
- data/lib/gen/temporal/api/enums/v1/failed_cause_pb.rb +0 -79
- data/lib/gen/temporal/api/enums/v1/namespace_pb.rb +0 -37
- data/lib/gen/temporal/api/enums/v1/query_pb.rb +0 -31
- data/lib/gen/temporal/api/enums/v1/reset_pb.rb +0 -24
- data/lib/gen/temporal/api/enums/v1/schedule_pb.rb +0 -28
- data/lib/gen/temporal/api/enums/v1/task_queue_pb.rb +0 -30
- data/lib/gen/temporal/api/enums/v1/update_pb.rb +0 -25
- data/lib/gen/temporal/api/enums/v1/workflow_pb.rb +0 -89
- data/lib/gen/temporal/api/errordetails/v1/message_pb.rb +0 -84
- data/lib/gen/temporal/api/failure/v1/message_pb.rb +0 -83
- data/lib/gen/temporal/api/filter/v1/message_pb.rb +0 -40
- data/lib/gen/temporal/api/history/v1/message_pb.rb +0 -498
- data/lib/gen/temporal/api/namespace/v1/message_pb.rb +0 -64
- data/lib/gen/temporal/api/operatorservice/v1/request_response_pb.rb +0 -88
- data/lib/gen/temporal/api/operatorservice/v1/service_pb.rb +0 -20
- data/lib/gen/temporal/api/protocol/v1/message_pb.rb +0 -30
- data/lib/gen/temporal/api/query/v1/message_pb.rb +0 -38
- data/lib/gen/temporal/api/replication/v1/message_pb.rb +0 -37
- data/lib/gen/temporal/api/schedule/v1/message_pb.rb +0 -149
- data/lib/gen/temporal/api/sdk/v1/task_complete_metadata_pb.rb +0 -23
- data/lib/gen/temporal/api/taskqueue/v1/message_pb.rb +0 -73
- data/lib/gen/temporal/api/testservice/v1/request_response_pb.rb +0 -49
- data/lib/gen/temporal/api/testservice/v1/service_pb.rb +0 -21
- data/lib/gen/temporal/api/update/v1/message_pb.rb +0 -72
- data/lib/gen/temporal/api/version/v1/message_pb.rb +0 -41
- data/lib/gen/temporal/api/workflow/v1/message_pb.rb +0 -111
- data/lib/gen/temporal/api/workflowservice/v1/request_response_pb.rb +0 -798
- data/lib/gen/temporal/api/workflowservice/v1/service_pb.rb +0 -20
- data/lib/gen/temporal/sdk/core/activity_result/activity_result_pb.rb +0 -62
- data/lib/gen/temporal/sdk/core/activity_task/activity_task_pb.rb +0 -61
- data/lib/gen/temporal/sdk/core/child_workflow/child_workflow_pb.rb +0 -61
- data/lib/gen/temporal/sdk/core/common/common_pb.rb +0 -26
- data/lib/gen/temporal/sdk/core/core_interface_pb.rb +0 -40
- data/lib/gen/temporal/sdk/core/external_data/external_data_pb.rb +0 -31
- data/lib/gen/temporal/sdk/core/workflow_activation/workflow_activation_pb.rb +0 -171
- data/lib/gen/temporal/sdk/core/workflow_commands/workflow_commands_pb.rb +0 -200
- data/lib/gen/temporal/sdk/core/workflow_completion/workflow_completion_pb.rb +0 -41
- data/lib/temporalio/bridge/connect_options.rb +0 -15
- data/lib/temporalio/bridge/error.rb +0 -8
- data/lib/temporalio/bridge/retry_config.rb +0 -24
- data/lib/temporalio/bridge/tls_options.rb +0 -19
- data/lib/temporalio/bridge.rb +0 -14
- data/lib/temporalio/client/implementation.rb +0 -340
- data/lib/temporalio/connection/retry_config.rb +0 -44
- data/lib/temporalio/connection/service.rb +0 -20
- data/lib/temporalio/connection/test_service.rb +0 -92
- data/lib/temporalio/connection/tls_options.rb +0 -51
- data/lib/temporalio/connection/workflow_service.rb +0 -731
- data/lib/temporalio/connection.rb +0 -86
- data/lib/temporalio/data_converter.rb +0 -191
- data/lib/temporalio/error/workflow_failure.rb +0 -19
- data/lib/temporalio/errors.rb +0 -40
- data/lib/temporalio/failure_converter/base.rb +0 -26
- data/lib/temporalio/failure_converter/basic.rb +0 -319
- data/lib/temporalio/failure_converter.rb +0 -7
- data/lib/temporalio/interceptor/activity_inbound.rb +0 -22
- data/lib/temporalio/interceptor/activity_outbound.rb +0 -24
- data/lib/temporalio/interceptor/chain.rb +0 -28
- data/lib/temporalio/interceptor/client.rb +0 -127
- data/lib/temporalio/interceptor.rb +0 -22
- data/lib/temporalio/payload_codec/base.rb +0 -32
- data/lib/temporalio/payload_converter/base.rb +0 -24
- data/lib/temporalio/payload_converter/bytes.rb +0 -27
- data/lib/temporalio/payload_converter/composite.rb +0 -49
- data/lib/temporalio/payload_converter/encoding_base.rb +0 -35
- data/lib/temporalio/payload_converter/json.rb +0 -26
- data/lib/temporalio/payload_converter/nil.rb +0 -26
- data/lib/temporalio/payload_converter.rb +0 -14
- data/lib/temporalio/retry_state.rb +0 -35
- data/lib/temporalio/testing/time_skipping_handle.rb +0 -32
- data/lib/temporalio/testing/time_skipping_interceptor.rb +0 -23
- data/lib/temporalio/timeout_type.rb +0 -29
- data/lib/temporalio/worker/activity_runner.rb +0 -114
- data/lib/temporalio/worker/activity_worker.rb +0 -164
- data/lib/temporalio/worker/reactor.rb +0 -46
- data/lib/temporalio/worker/runner.rb +0 -63
- data/lib/temporalio/worker/sync_worker.rb +0 -124
- data/lib/temporalio/worker/thread_pool_executor.rb +0 -51
- data/lib/temporalio/workflow/async.rb +0 -46
- data/lib/temporalio/workflow/execution_info.rb +0 -54
- data/lib/temporalio/workflow/execution_status.rb +0 -36
- data/lib/temporalio/workflow/future.rb +0 -138
- data/lib/temporalio/workflow/id_reuse_policy.rb +0 -36
- data/lib/temporalio/workflow/info.rb +0 -76
- data/lib/temporalio/workflow/query_reject_condition.rb +0 -33
- data/lib/thermite_patch.rb +0 -33
- data/sig/async.rbs +0 -17
- data/sig/protobuf.rbs +0 -16
- data/sig/protos/dependencies/gogoproto/gogo.rbs +0 -914
- data/sig/protos/google/protobuf/any.rbs +0 -157
- data/sig/protos/google/protobuf/descriptor.rbs +0 -2825
- data/sig/protos/google/protobuf/duration.rbs +0 -114
- data/sig/protos/google/protobuf/empty.rbs +0 -36
- data/sig/protos/google/protobuf/timestamp.rbs +0 -145
- data/sig/protos/google/protobuf/wrappers.rbs +0 -358
- data/sig/protos/temporal/api/batch/v1/message.rbs +0 -300
- data/sig/protos/temporal/api/command/v1/message.rbs +0 -1399
- data/sig/protos/temporal/api/common/v1/message.rbs +0 -528
- data/sig/protos/temporal/api/enums/v1/batch_operation.rbs +0 -79
- data/sig/protos/temporal/api/enums/v1/command_type.rbs +0 -68
- data/sig/protos/temporal/api/enums/v1/common.rbs +0 -118
- data/sig/protos/temporal/api/enums/v1/event_type.rbs +0 -264
- data/sig/protos/temporal/api/enums/v1/failed_cause.rbs +0 -277
- data/sig/protos/temporal/api/enums/v1/namespace.rbs +0 -108
- data/sig/protos/temporal/api/enums/v1/query.rbs +0 -81
- data/sig/protos/temporal/api/enums/v1/reset.rbs +0 -44
- data/sig/protos/temporal/api/enums/v1/schedule.rbs +0 -72
- data/sig/protos/temporal/api/enums/v1/task_queue.rbs +0 -92
- data/sig/protos/temporal/api/enums/v1/update.rbs +0 -64
- data/sig/protos/temporal/api/enums/v1/workflow.rbs +0 -371
- data/sig/protos/temporal/api/errordetails/v1/message.rbs +0 -551
- data/sig/protos/temporal/api/failure/v1/message.rbs +0 -581
- data/sig/protos/temporal/api/filter/v1/message.rbs +0 -171
- data/sig/protos/temporal/api/history/v1/message.rbs +0 -4609
- data/sig/protos/temporal/api/namespace/v1/message.rbs +0 -410
- data/sig/protos/temporal/api/operatorservice/v1/request_response.rbs +0 -643
- data/sig/protos/temporal/api/operatorservice/v1/service.rbs +0 -17
- data/sig/protos/temporal/api/protocol/v1/message.rbs +0 -84
- data/sig/protos/temporal/api/query/v1/message.rbs +0 -182
- data/sig/protos/temporal/api/replication/v1/message.rbs +0 -148
- data/sig/protos/temporal/api/schedule/v1/message.rbs +0 -1488
- data/sig/protos/temporal/api/sdk/v1/task_complete_metadata.rbs +0 -110
- data/sig/protos/temporal/api/taskqueue/v1/message.rbs +0 -486
- data/sig/protos/temporal/api/testservice/v1/request_response.rbs +0 -249
- data/sig/protos/temporal/api/testservice/v1/service.rbs +0 -15
- data/sig/protos/temporal/api/update/v1/message.rbs +0 -489
- data/sig/protos/temporal/api/version/v1/message.rbs +0 -184
- data/sig/protos/temporal/api/workflow/v1/message.rbs +0 -824
- data/sig/protos/temporal/api/workflowservice/v1/request_response.rbs +0 -7250
- data/sig/protos/temporal/api/workflowservice/v1/service.rbs +0 -22
- data/sig/protos/temporal/sdk/core/activity_result/activity_result.rbs +0 -380
- data/sig/protos/temporal/sdk/core/activity_task/activity_task.rbs +0 -386
- data/sig/protos/temporal/sdk/core/child_workflow/child_workflow.rbs +0 -323
- data/sig/protos/temporal/sdk/core/common/common.rbs +0 -62
- data/sig/protos/temporal/sdk/core/core_interface.rbs +0 -101
- data/sig/protos/temporal/sdk/core/external_data/external_data.rbs +0 -119
- data/sig/protos/temporal/sdk/core/workflow_activation/workflow_activation.rbs +0 -1473
- data/sig/protos/temporal/sdk/core/workflow_commands/workflow_commands.rbs +0 -1784
- data/sig/protos/temporal/sdk/core/workflow_completion/workflow_completion.rbs +0 -180
- data/sig/ruby.rbs +0 -12
- data/sig/temporalio/activity/context.rbs +0 -29
- data/sig/temporalio/activity/info.rbs +0 -43
- data/sig/temporalio/activity.rbs +0 -19
- data/sig/temporalio/bridge/connect_options.rbs +0 -19
- data/sig/temporalio/bridge/error.rbs +0 -8
- data/sig/temporalio/bridge/retry_config.rbs +0 -21
- data/sig/temporalio/bridge/tls_options.rbs +0 -17
- data/sig/temporalio/bridge.rbs +0 -71
- data/sig/temporalio/client/implementation.rbs +0 -38
- data/sig/temporalio/client/workflow_handle.rbs +0 -41
- data/sig/temporalio/client.rbs +0 -35
- data/sig/temporalio/connection/retry_config.rbs +0 -37
- data/sig/temporalio/connection/service.rbs +0 -14
- data/sig/temporalio/connection/test_service.rbs +0 -13
- data/sig/temporalio/connection/tls_options.rbs +0 -43
- data/sig/temporalio/connection/workflow_service.rbs +0 -48
- data/sig/temporalio/connection.rbs +0 -30
- data/sig/temporalio/data_converter.rbs +0 -35
- data/sig/temporalio/error/failure.rbs +0 -121
- data/sig/temporalio/error/workflow_failure.rbs +0 -9
- data/sig/temporalio/errors.rbs +0 -36
- data/sig/temporalio/failure_converter/base.rbs +0 -12
- data/sig/temporalio/failure_converter/basic.rbs +0 -86
- data/sig/temporalio/failure_converter.rbs +0 -5
- data/sig/temporalio/interceptor/activity_inbound.rbs +0 -21
- data/sig/temporalio/interceptor/activity_outbound.rbs +0 -10
- data/sig/temporalio/interceptor/chain.rbs +0 -24
- data/sig/temporalio/interceptor/client.rbs +0 -148
- data/sig/temporalio/interceptor.rbs +0 -6
- data/sig/temporalio/payload_codec/base.rbs +0 -12
- data/sig/temporalio/payload_converter/base.rbs +0 -12
- data/sig/temporalio/payload_converter/bytes.rbs +0 -9
- data/sig/temporalio/payload_converter/composite.rbs +0 -19
- data/sig/temporalio/payload_converter/encoding_base.rbs +0 -14
- data/sig/temporalio/payload_converter/json.rbs +0 -9
- data/sig/temporalio/payload_converter/nil.rbs +0 -9
- data/sig/temporalio/payload_converter.rbs +0 -5
- data/sig/temporalio/retry_policy.rbs +0 -25
- data/sig/temporalio/retry_state.rbs +0 -20
- data/sig/temporalio/runtime.rbs +0 -12
- data/sig/temporalio/testing/time_skipping_handle.rbs +0 -15
- data/sig/temporalio/testing/time_skipping_interceptor.rbs +0 -13
- data/sig/temporalio/testing/workflow_environment.rbs +0 -22
- data/sig/temporalio/testing.rbs +0 -35
- data/sig/temporalio/timeout_type.rbs +0 -15
- data/sig/temporalio/version.rbs +0 -3
- data/sig/temporalio/worker/activity_runner.rbs +0 -35
- data/sig/temporalio/worker/activity_worker.rbs +0 -44
- data/sig/temporalio/worker/reactor.rbs +0 -22
- data/sig/temporalio/worker/runner.rbs +0 -21
- data/sig/temporalio/worker/sync_worker.rbs +0 -23
- data/sig/temporalio/worker/thread_pool_executor.rbs +0 -23
- data/sig/temporalio/worker.rbs +0 -46
- data/sig/temporalio/workflow/async.rbs +0 -9
- data/sig/temporalio/workflow/execution_info.rbs +0 -55
- data/sig/temporalio/workflow/execution_status.rbs +0 -21
- data/sig/temporalio/workflow/future.rbs +0 -40
- data/sig/temporalio/workflow/id_reuse_policy.rbs +0 -15
- data/sig/temporalio/workflow/info.rbs +0 -55
- data/sig/temporalio/workflow/query_reject_condition.rbs +0 -14
- data/sig/temporalio.rbs +0 -2
- data/sig/thermite_patch.rbs +0 -15
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'temporalio/activity'
|
|
4
|
+
require 'temporalio/cancellation'
|
|
5
|
+
require 'temporalio/converters/payload_converter'
|
|
6
|
+
require 'temporalio/worker/activity_executor'
|
|
7
|
+
|
|
8
|
+
module Temporalio
|
|
9
|
+
module Testing
|
|
10
|
+
# Test environment for testing activities.
|
|
11
|
+
#
|
|
12
|
+
# Users can create this environment and then use {run} to execute activities on it. Often, since mutable things like
|
|
13
|
+
# cancellation can be set, users create this for each activity that is run. There is no real performance penalty for
|
|
14
|
+
# creating an environment for every run.
|
|
15
|
+
class ActivityEnvironment
|
|
16
|
+
# @return [Activity::Info] The activity info used by default. This is frozen, but can be dup'd and mutated to pass
|
|
17
|
+
# in to {initialize}.
|
|
18
|
+
def self.default_info
|
|
19
|
+
@default_info ||= Activity::Info.new(
|
|
20
|
+
activity_id: 'test',
|
|
21
|
+
activity_type: 'unknown',
|
|
22
|
+
attempt: 1,
|
|
23
|
+
current_attempt_scheduled_time: Time.at(0),
|
|
24
|
+
heartbeat_details: [],
|
|
25
|
+
heartbeat_timeout: nil,
|
|
26
|
+
local?: false,
|
|
27
|
+
schedule_to_close_timeout: 1.0,
|
|
28
|
+
scheduled_time: Time.at(0),
|
|
29
|
+
start_to_close_timeout: 1.0,
|
|
30
|
+
started_time: Time.at(0),
|
|
31
|
+
task_queue: 'test',
|
|
32
|
+
task_token: String.new('test', encoding: Encoding::ASCII_8BIT),
|
|
33
|
+
workflow_id: 'test',
|
|
34
|
+
workflow_namespace: 'default',
|
|
35
|
+
workflow_run_id: 'test-run',
|
|
36
|
+
workflow_type: 'test'
|
|
37
|
+
).freeze
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Create a test environment for activities.
|
|
41
|
+
#
|
|
42
|
+
# @param info [Activity::Info] Value for {Activity::Context#info}.
|
|
43
|
+
# @param on_heartbeat [Proc(Array), nil] Proc that is called with all heartbeat details when
|
|
44
|
+
# {Activity::Context#heartbeat} is called.
|
|
45
|
+
# @param cancellation [Cancellation] Value for {Activity::Context#cancellation}.
|
|
46
|
+
# @param worker_shutdown_cancellation [Cancellation] Value for {Activity::Context#worker_shutdown_cancellation}.
|
|
47
|
+
# @param payload_converter [Converters::PayloadConverter] Value for {Activity::Context#payload_converter}.
|
|
48
|
+
# @param logger [Logger] Value for {Activity::Context#logger}.
|
|
49
|
+
# @param activity_executors [Hash<Symbol, Worker::ActivityExecutor>] Executors that activities can run within.
|
|
50
|
+
def initialize(
|
|
51
|
+
info: ActivityEnvironment.default_info,
|
|
52
|
+
on_heartbeat: nil,
|
|
53
|
+
cancellation: Cancellation.new,
|
|
54
|
+
worker_shutdown_cancellation: Cancellation.new,
|
|
55
|
+
payload_converter: Converters::PayloadConverter.default,
|
|
56
|
+
logger: Logger.new(nil),
|
|
57
|
+
activity_executors: Worker::ActivityExecutor.defaults
|
|
58
|
+
)
|
|
59
|
+
@info = info
|
|
60
|
+
@on_heartbeat = on_heartbeat
|
|
61
|
+
@cancellation = cancellation
|
|
62
|
+
@worker_shutdown_cancellation = worker_shutdown_cancellation
|
|
63
|
+
@payload_converter = payload_converter
|
|
64
|
+
@logger = logger
|
|
65
|
+
@activity_executors = activity_executors
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Run an activity and returns its result or raises its exception.
|
|
69
|
+
#
|
|
70
|
+
# @param activity [Activity, Class<Activity>, Activity::Definition] Activity to run.
|
|
71
|
+
# @param args [Array<Object>] Arguments to the activity.
|
|
72
|
+
# @return Activity result.
|
|
73
|
+
def run(activity, *args)
|
|
74
|
+
defn = Activity::Definition.from_activity(activity)
|
|
75
|
+
executor = @activity_executors[defn.executor]
|
|
76
|
+
raise ArgumentError, "Unknown executor: #{defn.executor}" if executor.nil?
|
|
77
|
+
|
|
78
|
+
queue = Queue.new
|
|
79
|
+
executor.execute_activity(defn) do
|
|
80
|
+
Activity::Context._current_executor = executor
|
|
81
|
+
executor.set_activity_context(defn, Context.new(
|
|
82
|
+
info: @info.dup,
|
|
83
|
+
on_heartbeat: @on_heartbeat,
|
|
84
|
+
cancellation: @cancellation,
|
|
85
|
+
worker_shutdown_cancellation: @worker_shutdown_cancellation,
|
|
86
|
+
payload_converter: @payload_converter,
|
|
87
|
+
logger: @logger
|
|
88
|
+
))
|
|
89
|
+
queue.push([defn.proc.call(*args), nil])
|
|
90
|
+
rescue Exception => e # rubocop:disable Lint/RescueException Intentionally capturing all exceptions
|
|
91
|
+
queue.push([nil, e])
|
|
92
|
+
ensure
|
|
93
|
+
executor.set_activity_context(defn, nil)
|
|
94
|
+
Activity::Context._current_executor = nil
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
result, err = queue.pop
|
|
98
|
+
raise err unless err.nil?
|
|
99
|
+
|
|
100
|
+
result
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# @!visibility private
|
|
104
|
+
class Context < Activity::Context
|
|
105
|
+
attr_reader :info, :cancellation, :worker_shutdown_cancellation, :payload_converter, :logger
|
|
106
|
+
|
|
107
|
+
def initialize( # rubocop:disable Lint/MissingSuper
|
|
108
|
+
info: ActivityEnvironment.default_info,
|
|
109
|
+
on_heartbeat: nil,
|
|
110
|
+
cancellation: Cancellation.new,
|
|
111
|
+
worker_shutdown_cancellation: Cancellation.new,
|
|
112
|
+
payload_converter: Converters::PayloadConverter.default,
|
|
113
|
+
logger: Logger.new(nil)
|
|
114
|
+
)
|
|
115
|
+
@info = info
|
|
116
|
+
@on_heartbeat = on_heartbeat
|
|
117
|
+
@cancellation = cancellation
|
|
118
|
+
@worker_shutdown_cancellation = worker_shutdown_cancellation
|
|
119
|
+
@payload_converter = payload_converter
|
|
120
|
+
@logger = logger
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# @!visibility private
|
|
124
|
+
def heartbeat(*details)
|
|
125
|
+
@on_heartbeat&.call(details)
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
private_constant :Context
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
@@ -1,112 +1,137 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
2
3
|
require 'temporalio/client'
|
|
3
|
-
require 'temporalio/
|
|
4
|
+
require 'temporalio/converters'
|
|
5
|
+
require 'temporalio/internal/bridge/testing'
|
|
6
|
+
require 'temporalio/runtime'
|
|
7
|
+
require 'temporalio/version'
|
|
4
8
|
|
|
5
9
|
module Temporalio
|
|
6
10
|
module Testing
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
# Most developers will want to use the {Temporalio::Testing.start_time_skipping_environment} to
|
|
10
|
-
# start a test server process that automatically skips time as needed. Alternatively,
|
|
11
|
-
# {Temporalio::Testing.start_local_environment} may be used for a full, local Temporal server
|
|
12
|
-
# with more features.
|
|
13
|
-
#
|
|
14
|
-
# @note Unless using the above mentioned methods with an explicit block, you will need to call
|
|
15
|
-
# {#shutdown} after you're finished with this environment.
|
|
11
|
+
# Test environment with a Temporal server for running workflows and more.
|
|
16
12
|
class WorkflowEnvironment
|
|
17
|
-
# @return [
|
|
18
|
-
attr_reader :
|
|
19
|
-
|
|
20
|
-
# @return [String] A namespace for this environment.
|
|
21
|
-
attr_reader :namespace
|
|
22
|
-
|
|
23
|
-
# @api private
|
|
24
|
-
def initialize(server, connection, namespace)
|
|
25
|
-
@server = server
|
|
26
|
-
@connection = connection
|
|
27
|
-
@namespace = namespace
|
|
28
|
-
end
|
|
13
|
+
# @return [Client] Client for the server.
|
|
14
|
+
attr_reader :client
|
|
29
15
|
|
|
30
|
-
#
|
|
16
|
+
# Start a local dev server. This is a full Temporal dev server from the CLI that by default downloaded to tmp if
|
|
17
|
+
# not already present. The dev server is run as a child process. All options that start with +dev_server_+ are for
|
|
18
|
+
# this specific implementation and therefore are not stable and may be changed as the underlying implementation
|
|
19
|
+
# changes.
|
|
31
20
|
#
|
|
32
|
-
#
|
|
33
|
-
|
|
34
|
-
@client ||= begin
|
|
35
|
-
# TODO: Add a workflow interceptor for interpreting assertion error
|
|
36
|
-
interceptors = [TimeSkippingInterceptor.new(self)]
|
|
37
|
-
Temporalio::Client.new(connection, namespace, interceptors: interceptors)
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# Sleep in this environment.
|
|
21
|
+
# If a block is given it is passed the environment and the environment is shut down after. If a block is not
|
|
22
|
+
# given, the environment is returned and {shutdown} needs to be called manually.
|
|
42
23
|
#
|
|
43
|
-
#
|
|
44
|
-
#
|
|
24
|
+
# @param namespace [String] Namespace for the server.
|
|
25
|
+
# @param data_converter [Converters::DataConverter] Data converter for the client.
|
|
26
|
+
# @param interceptors [Array<Client::Interceptor>] Interceptors for the client.
|
|
27
|
+
# @param logger [Logger] Logger for the client.
|
|
28
|
+
# @param default_workflow_query_reject_condition [WorkflowQueryRejectCondition, nil] Default rejection condition
|
|
29
|
+
# for the client.
|
|
30
|
+
# @param ip [String] IP to bind to.
|
|
31
|
+
# @param port [Integer, nil] Port to bind on, or +nil+ for random.
|
|
32
|
+
# @param ui [Boolean] If +true+, also starts the UI.
|
|
33
|
+
# @param runtime [Runtime] Runtime for the server and client.
|
|
34
|
+
# @param dev_server_existing_path [String, nil] Existing CLI path to use instead of downloading and caching to
|
|
35
|
+
# tmp.
|
|
36
|
+
# @param dev_server_database_filename [String, nil] Persistent SQLite filename to use across local server runs.
|
|
37
|
+
# Default of +nil+ means in-memory only.
|
|
38
|
+
# @param dev_server_log_format [String] Log format for CLI dev server.
|
|
39
|
+
# @param dev_server_log_level [String] Log level for CLI dev server.
|
|
40
|
+
# @param dev_server_download_version [String] Version of dev server to download and cache.
|
|
41
|
+
# @param dev_server_download_dest_dir [String, nil] Where to download. Defaults to tmp.
|
|
42
|
+
# @param dev_server_extra_args [Array<String>] Any extra arguments for the CLI dev server.
|
|
45
43
|
#
|
|
46
|
-
# @
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
request = Temporalio::Api::TestService::V1::SleepRequest.new(
|
|
51
|
-
duration: Google::Protobuf::Duration.new(seconds: duration),
|
|
52
|
-
)
|
|
53
|
-
connection.test_service.unlock_time_skipping_with_sleep(request)
|
|
54
|
-
|
|
55
|
-
nil
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
# Get the current time known to this environment.
|
|
44
|
+
# @yield [environment] If a block is given, it is called with the environment and upon complete the environment is
|
|
45
|
+
# shutdown.
|
|
46
|
+
# @yieldparam environment [WorkflowEnvironment] Environment that is shut down upon block completion.
|
|
59
47
|
#
|
|
60
|
-
#
|
|
61
|
-
#
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
48
|
+
# @return [WorkflowEnvironment, Object] Started local server environment with client if there was no block given,
|
|
49
|
+
# or block result if block was given.
|
|
50
|
+
def self.start_local(
|
|
51
|
+
namespace: 'default',
|
|
52
|
+
data_converter: Converters::DataConverter.default,
|
|
53
|
+
interceptors: [],
|
|
54
|
+
logger: Logger.new($stdout, level: Logger::WARN),
|
|
55
|
+
default_workflow_query_reject_condition: nil,
|
|
56
|
+
ip: '127.0.0.1',
|
|
57
|
+
port: nil,
|
|
58
|
+
ui: false, # rubocop:disable Naming/MethodParameterName
|
|
59
|
+
runtime: Runtime.default,
|
|
60
|
+
dev_server_existing_path: nil,
|
|
61
|
+
dev_server_database_filename: nil,
|
|
62
|
+
dev_server_log_format: 'pretty',
|
|
63
|
+
dev_server_log_level: 'warn',
|
|
64
|
+
dev_server_download_version: 'default',
|
|
65
|
+
dev_server_download_dest_dir: nil,
|
|
66
|
+
dev_server_extra_args: []
|
|
67
|
+
)
|
|
68
|
+
server_options = Internal::Bridge::Testing::EphemeralServer::StartDevServerOptions.new(
|
|
69
|
+
existing_path: dev_server_existing_path,
|
|
70
|
+
sdk_name: 'sdk-ruby',
|
|
71
|
+
sdk_version: VERSION,
|
|
72
|
+
download_version: dev_server_download_version,
|
|
73
|
+
download_dest_dir: dev_server_download_dest_dir,
|
|
74
|
+
namespace:,
|
|
75
|
+
ip:,
|
|
76
|
+
port:,
|
|
77
|
+
database_filename: dev_server_database_filename,
|
|
78
|
+
ui:,
|
|
79
|
+
log_format: dev_server_log_format,
|
|
80
|
+
log_level: dev_server_log_level,
|
|
81
|
+
extra_args: dev_server_extra_args
|
|
82
|
+
)
|
|
83
|
+
core_server = Internal::Bridge::Testing::EphemeralServer.start_dev_server(runtime._core_runtime, server_options)
|
|
84
|
+
# Try to connect, shutdown if we can't
|
|
85
|
+
begin
|
|
86
|
+
client = Client.connect(
|
|
87
|
+
core_server.target,
|
|
88
|
+
namespace,
|
|
89
|
+
data_converter:,
|
|
90
|
+
interceptors:,
|
|
91
|
+
logger:,
|
|
92
|
+
default_workflow_query_reject_condition:,
|
|
93
|
+
runtime:
|
|
94
|
+
)
|
|
95
|
+
server = Ephemeral.new(client, core_server)
|
|
96
|
+
rescue StandardError
|
|
97
|
+
core_server.shutdown
|
|
98
|
+
raise
|
|
99
|
+
end
|
|
100
|
+
if block_given?
|
|
101
|
+
begin
|
|
102
|
+
yield server
|
|
103
|
+
ensure
|
|
104
|
+
server.shutdown
|
|
105
|
+
end
|
|
106
|
+
else
|
|
107
|
+
server
|
|
108
|
+
end
|
|
68
109
|
end
|
|
69
110
|
|
|
70
|
-
#
|
|
111
|
+
# Create workflow environment to an existing server with the given client.
|
|
71
112
|
#
|
|
72
|
-
# @
|
|
73
|
-
def
|
|
74
|
-
|
|
113
|
+
# @param client [Client] Client to existing server.
|
|
114
|
+
def initialize(client)
|
|
115
|
+
@client = client
|
|
75
116
|
end
|
|
76
117
|
|
|
77
|
-
#
|
|
118
|
+
# Shutdown this workflow environment.
|
|
78
119
|
def shutdown
|
|
79
|
-
|
|
120
|
+
# Do nothing by default
|
|
80
121
|
end
|
|
81
122
|
|
|
82
|
-
#
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
#
|
|
89
|
-
# @return [any] The return value of the block.
|
|
90
|
-
def with_time_skipping
|
|
91
|
-
return yield unless supports_time_skipping?
|
|
92
|
-
|
|
93
|
-
begin
|
|
94
|
-
# Unlock to start time skipping, lock again to stop it
|
|
95
|
-
connection.test_service.unlock_time_skipping(
|
|
96
|
-
Temporalio::Api::TestService::V1::UnlockTimeSkippingRequest.new,
|
|
97
|
-
)
|
|
123
|
+
# @!visibility private
|
|
124
|
+
class Ephemeral < WorkflowEnvironment
|
|
125
|
+
def initialize(client, core_server)
|
|
126
|
+
super(client)
|
|
127
|
+
@core_server = core_server
|
|
128
|
+
end
|
|
98
129
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
Temporalio::Api::TestService::V1::LockTimeSkippingRequest.new,
|
|
103
|
-
)
|
|
130
|
+
# @!visibility private
|
|
131
|
+
def shutdown
|
|
132
|
+
@core_server.shutdown
|
|
104
133
|
end
|
|
105
134
|
end
|
|
106
|
-
|
|
107
|
-
private
|
|
108
|
-
|
|
109
|
-
attr_reader :server
|
|
110
135
|
end
|
|
111
136
|
end
|
|
112
137
|
end
|
data/lib/temporalio/testing.rb
CHANGED
|
@@ -1,175 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
require 'temporalio/
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'temporalio/testing/activity_environment'
|
|
4
4
|
require 'temporalio/testing/workflow_environment'
|
|
5
|
-
require 'temporalio/version'
|
|
6
5
|
|
|
7
6
|
module Temporalio
|
|
7
|
+
# Module for all testing environments.
|
|
8
8
|
module Testing
|
|
9
|
-
DEFAULT_NAMESPACE = 'default'.freeze
|
|
10
|
-
|
|
11
|
-
class << self
|
|
12
|
-
# Start a full Temporal server locally, downloading if necessary.
|
|
13
|
-
#
|
|
14
|
-
# This environment is good for testing full server capabilities, but does not support time
|
|
15
|
-
# skipping like {.start_time_skipping} does.
|
|
16
|
-
# {Temporalio::Testing::WorkflowEnvironment#supports_time_skipping} will always return `false`
|
|
17
|
-
# for this environment. {Temporalio::Testing::WorkflowEnvironment#sleep} will sleep the actual
|
|
18
|
-
# amount of time and {Temporalio::Testing::WorkflowEnvironment#get_current_time}` will return
|
|
19
|
-
# the current time.
|
|
20
|
-
#
|
|
21
|
-
# Internally, this uses [Temporalite](https://github.com/temporalio/temporalite). Which is a
|
|
22
|
-
# self-contained binary for Temporal using Sqlite persistence. This will download Temporalite
|
|
23
|
-
# to a temporary directory by default if it has not already been downloaded before and
|
|
24
|
-
# `:existing_path` is not set.
|
|
25
|
-
#
|
|
26
|
-
# In the future, the Temporalite implementation may be changed to another implementation.
|
|
27
|
-
# Therefore, all `temporalite_` prefixed parameters are Temporalite specific and may not apply
|
|
28
|
-
# to newer versions.
|
|
29
|
-
#
|
|
30
|
-
# @param namespace [String] Namespace name to use for this environment.
|
|
31
|
-
# @param ip [String] IP address to bind to, or 127.0.0.1 by default.
|
|
32
|
-
# @param port [Integer] Port number to bind to, or an OS-provided port by default.
|
|
33
|
-
# @param download_dir [String] Directory to download binary to if a download is needed. If
|
|
34
|
-
# unset, this is the system's temporary directory.
|
|
35
|
-
# @param ui [Boolean] If `true`, will start a UI in Temporalite.
|
|
36
|
-
# @param temporalite_existing_path [String] Existing path to the Temporalite binary. If
|
|
37
|
-
# present, no download will be attempted to fetch the binary.
|
|
38
|
-
# @param temporalite_database_filename [String] Path to the Sqlite database to use for
|
|
39
|
-
# Temporalite. Unset default means only in-memory Sqlite will be used.
|
|
40
|
-
# @param temporalite_log_format [String] Log format for Temporalite.
|
|
41
|
-
# @param temporalite_log_level [String] Log level to use for Temporalite.
|
|
42
|
-
# @param temporalite_download_version [String] Specific Temporalite version to download.
|
|
43
|
-
# Defaults to `default` which downloads the version known to work best with this SDK.
|
|
44
|
-
# @param temporalite_extra_args [Array<String>] Extra arguments for the Temporalite binary.
|
|
45
|
-
#
|
|
46
|
-
# @yield Optionally you can provide a block which will ensure that the environment has been
|
|
47
|
-
# shut down after. The newly created {Temporalio::Testing::WorkflowEnvironment} will be
|
|
48
|
-
# passed into the block as a single argument. Alternatively you will need to call
|
|
49
|
-
# {Temporalio::Testing::WorkflowEnvironment#shutdown} explicitly after you're done with it.
|
|
50
|
-
#
|
|
51
|
-
# @return [Temporalio::Testing::WorkflowEnvironment] The newly started Temporalite workflow
|
|
52
|
-
# environment.
|
|
53
|
-
def start_local_environment(
|
|
54
|
-
namespace: DEFAULT_NAMESPACE,
|
|
55
|
-
ip: '127.0.0.1',
|
|
56
|
-
port: nil,
|
|
57
|
-
download_dir: nil,
|
|
58
|
-
ui: false,
|
|
59
|
-
temporalite_existing_path: nil,
|
|
60
|
-
temporalite_database_filename: nil,
|
|
61
|
-
temporalite_log_format: 'pretty',
|
|
62
|
-
temporalite_log_level: 'warn',
|
|
63
|
-
temporalite_download_version: 'default',
|
|
64
|
-
temporalite_extra_args: [],
|
|
65
|
-
&block
|
|
66
|
-
)
|
|
67
|
-
# TODO: Sync with the SDK's logger level when implemented
|
|
68
|
-
runtime = Temporalio::Runtime.instance
|
|
69
|
-
server = Temporalio::Bridge::TestServer.start_temporalite(
|
|
70
|
-
runtime.core_runtime,
|
|
71
|
-
temporalite_existing_path,
|
|
72
|
-
'sdk-ruby',
|
|
73
|
-
Temporalio::VERSION,
|
|
74
|
-
temporalite_download_version,
|
|
75
|
-
download_dir,
|
|
76
|
-
namespace,
|
|
77
|
-
ip,
|
|
78
|
-
port,
|
|
79
|
-
temporalite_database_filename,
|
|
80
|
-
ui,
|
|
81
|
-
temporalite_log_format,
|
|
82
|
-
temporalite_log_level,
|
|
83
|
-
temporalite_extra_args,
|
|
84
|
-
)
|
|
85
|
-
env = init_workflow_environment_for(server, namespace)
|
|
86
|
-
|
|
87
|
-
return env unless block
|
|
88
|
-
|
|
89
|
-
run_server(server, env, &block)
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
# Start a time skipping workflow environment.
|
|
93
|
-
#
|
|
94
|
-
# Time can be manually skipped forward using {Temporalio::Testing::WorkflowEnvironment#sleep}.
|
|
95
|
-
# The currently known time can be obtained via
|
|
96
|
-
# {Temporalio::Testing::WorkflowEnvironment#get_current_time}.
|
|
97
|
-
#
|
|
98
|
-
# @note Auto time skipping is not yet implemented.
|
|
99
|
-
#
|
|
100
|
-
# Internally, this environment lazily downloads a test-server binary for the current OS/arch
|
|
101
|
-
# into the temp directory if it is not already there. Then the executable is started and will
|
|
102
|
-
# be killed when {Temporalio::Testing::WorkflowEnvironment#shutdown} is called (which is
|
|
103
|
-
# implicitly done if a block is provided to this method).
|
|
104
|
-
#
|
|
105
|
-
# Users can reuse this environment for testing multiple independent workflows, but not
|
|
106
|
-
# concurrently. Time skipping, which is automatically done when awaiting a workflow result
|
|
107
|
-
# (pending implementation) and manually done on
|
|
108
|
-
# {Temporalio::Testing::WorkflowEnvironment#sleep}, is global to the environment, not to the
|
|
109
|
-
# workflow under test.
|
|
110
|
-
#
|
|
111
|
-
# In the future, the test server implementation may be changed to another implementation.
|
|
112
|
-
# Therefore, all `test_server_` prefixed parameters are test server specific and may not apply
|
|
113
|
-
# to newer versions.
|
|
114
|
-
#
|
|
115
|
-
# @param port [Integer] Port number to bind to, or an OS-provided port by default.
|
|
116
|
-
# @param download_dir [String] Directory to download binary to if a download is needed.
|
|
117
|
-
# If unset, this is the system's temporary directory.
|
|
118
|
-
# @param test_server_existing_path [String] Existing path to the test server binary. If
|
|
119
|
-
# present, no download will be attempted to fetch the binary.
|
|
120
|
-
# @param test_server_download_version [String] Specific test server version to download.
|
|
121
|
-
# Defaults to `default` which downloads the version known to work best with this SDK.
|
|
122
|
-
# @param test_server_extra_args [Array<String>] Extra arguments for the test server binary.
|
|
123
|
-
#
|
|
124
|
-
# @yield Optionally you can provide a block which will ensure that the environment has been
|
|
125
|
-
# shut down after. The newly created {Temporalio::Testing::WorkflowEnvironment} will be
|
|
126
|
-
# passed into the block as a single argument. Alternatively you will need to call
|
|
127
|
-
# {Temporalio::Testing::WorkflowEnvironment#shutdown} explicitly after you're done with it.
|
|
128
|
-
#
|
|
129
|
-
# @return [Temporalio::Testing::WorkflowEnvironment] The newly started TestServer workflow
|
|
130
|
-
# environment.
|
|
131
|
-
def start_time_skipping_environment(
|
|
132
|
-
port: nil,
|
|
133
|
-
download_dir: nil,
|
|
134
|
-
test_server_existing_path: nil,
|
|
135
|
-
test_server_download_version: 'default',
|
|
136
|
-
test_server_extra_args: [],
|
|
137
|
-
&block
|
|
138
|
-
)
|
|
139
|
-
# TODO: Use interceptors to inject a time skipping WorkflowHandle.
|
|
140
|
-
runtime = Temporalio::Runtime.instance
|
|
141
|
-
server = Temporalio::Bridge::TestServer.start(
|
|
142
|
-
runtime.core_runtime,
|
|
143
|
-
test_server_existing_path,
|
|
144
|
-
'sdk-ruby',
|
|
145
|
-
Temporalio::VERSION,
|
|
146
|
-
test_server_download_version,
|
|
147
|
-
download_dir,
|
|
148
|
-
port,
|
|
149
|
-
test_server_extra_args,
|
|
150
|
-
)
|
|
151
|
-
env = init_workflow_environment_for(server, DEFAULT_NAMESPACE)
|
|
152
|
-
|
|
153
|
-
return env unless block
|
|
154
|
-
|
|
155
|
-
run_server(server, env, &block)
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
private
|
|
159
|
-
|
|
160
|
-
def init_workflow_environment_for(server, namespace)
|
|
161
|
-
connection = Temporalio::Connection.new(server.target)
|
|
162
|
-
Temporalio::Testing::WorkflowEnvironment.new(server, connection, namespace)
|
|
163
|
-
rescue Temporalio::Bridge::Error # Shutdown if unable to connect to the server
|
|
164
|
-
server.shutdown
|
|
165
|
-
raise
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
def run_server(server, env, &block)
|
|
169
|
-
block.call(env)
|
|
170
|
-
ensure
|
|
171
|
-
server.shutdown
|
|
172
|
-
end
|
|
173
|
-
end
|
|
174
9
|
end
|
|
175
10
|
end
|
data/lib/temporalio/version.rb
CHANGED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'temporalio/error'
|
|
4
|
+
require 'temporalio/worker/activity_executor'
|
|
5
|
+
|
|
6
|
+
module Temporalio
|
|
7
|
+
class Worker
|
|
8
|
+
class ActivityExecutor
|
|
9
|
+
# Activity executor for scheduling activites as fibers.
|
|
10
|
+
class Fiber
|
|
11
|
+
# @return [Fiber] Default/shared Fiber executor instance.
|
|
12
|
+
def self.default
|
|
13
|
+
@default ||= new
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# @see ActivityExecutor.initialize_activity
|
|
17
|
+
def initialize_activity(defn)
|
|
18
|
+
# If there is not a current scheduler, we're going to preemptively
|
|
19
|
+
# fail the registration
|
|
20
|
+
return unless ::Fiber.current_scheduler.nil?
|
|
21
|
+
|
|
22
|
+
raise ArgumentError, "Activity '#{defn.name}' wants a fiber executor but no current fiber scheduler"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# @see ActivityExecutor.initialize_activity
|
|
26
|
+
def execute_activity(_defn, &)
|
|
27
|
+
::Fiber.schedule(&)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# @see ActivityExecutor.activity_context
|
|
31
|
+
def activity_context
|
|
32
|
+
::Fiber[:temporal_activity_context]
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# @see ActivityExecutor.set_activity_context
|
|
36
|
+
def set_activity_context(defn, context)
|
|
37
|
+
::Fiber[:temporal_activity_context] = context
|
|
38
|
+
# If they have opted in to raising on cancel, wire that up
|
|
39
|
+
return unless defn.cancel_raise
|
|
40
|
+
|
|
41
|
+
fiber = ::Fiber.current
|
|
42
|
+
context&.cancellation&.add_cancel_callback do
|
|
43
|
+
fiber.raise(Error::CanceledError.new('Activity canceled'))
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|