Class: Temporalio::Testing::WorkflowEnvironment
- Inherits:
-
Object
- Object
- Temporalio::Testing::WorkflowEnvironment
- Defined in:
- lib/temporalio/testing/workflow_environment.rb
Overview
Test environment with a Temporal server for running workflows and more.
Instance Attribute Summary collapse
-
#client ⇒ Client
readonly
Client for the server.
Class Method Summary collapse
-
.start_local(namespace: 'default', data_converter: Converters::DataConverter.default, interceptors: [], logger: Logger.new($stdout, level: Logger::WARN), default_workflow_query_reject_condition: nil, ip: '127.0.0.1', port: nil, ui: false, runtime: Runtime.default, dev_server_existing_path: nil, dev_server_database_filename: nil, dev_server_log_format: 'pretty', dev_server_log_level: 'warn', dev_server_download_version: 'default', dev_server_download_dest_dir: nil, dev_server_extra_args: []) {|environment| ... } ⇒ WorkflowEnvironment, Object
Start a local dev server.
-
.start_time_skipping(data_converter: Converters::DataConverter.default, interceptors: [], logger: Logger.new($stdout, level: Logger::WARN), default_workflow_query_reject_condition: nil, port: nil, runtime: Runtime.default, test_server_existing_path: nil, test_server_download_version: 'default', test_server_download_dest_dir: nil, test_server_extra_args: []) {|environment| ... } ⇒ WorkflowEnvironment, Object
Start a time-skipping test server.
Instance Method Summary collapse
-
#auto_time_skipping_disabled { ... } ⇒ Object
Run a block with automatic time skipping disabled.
-
#current_time ⇒ Time
Current time of the environment.
-
#initialize(client) ⇒ WorkflowEnvironment
constructor
Create workflow environment to an existing server with the given client.
-
#shutdown ⇒ Object
Shutdown this workflow environment.
-
#sleep(duration) ⇒ Object
Advanced time.
-
#supports_time_skipping? ⇒ Boolean
Whether this environment supports time skipping.
Constructor Details
#initialize(client) ⇒ WorkflowEnvironment
Create workflow environment to an existing server with the given client.
210 211 212 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 210 def initialize(client) @client = client end |
Instance Attribute Details
#client ⇒ Client (readonly)
Returns Client for the server.
20 21 22 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 20 def client @client end |
Class Method Details
.start_local(namespace: 'default', data_converter: Converters::DataConverter.default, interceptors: [], logger: Logger.new($stdout, level: Logger::WARN), default_workflow_query_reject_condition: nil, ip: '127.0.0.1', port: nil, ui: false, runtime: Runtime.default, dev_server_existing_path: nil, dev_server_database_filename: nil, dev_server_log_format: 'pretty', dev_server_log_level: 'warn', dev_server_download_version: 'default', dev_server_download_dest_dir: nil, dev_server_extra_args: []) {|environment| ... } ⇒ WorkflowEnvironment, Object
Start a local dev server. This is a full Temporal dev server from the CLI that by default downloaded to tmp if not already present. The dev server is run as a child process. All options that start with dev_server_
are for this specific implementation and therefore are not stable and may be changed as the underlying implementation changes.
If a block is given it is passed the environment and the environment is shut down after. If a block is not given, the environment is returned and #shutdown needs to be called manually.
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 56 def self.start_local( namespace: 'default', data_converter: Converters::DataConverter.default, interceptors: [], logger: Logger.new($stdout, level: Logger::WARN), default_workflow_query_reject_condition: nil, ip: '127.0.0.1', port: nil, ui: false, # rubocop:disable Naming/MethodParameterName runtime: Runtime.default, dev_server_existing_path: nil, dev_server_database_filename: nil, dev_server_log_format: 'pretty', dev_server_log_level: 'warn', dev_server_download_version: 'default', dev_server_download_dest_dir: nil, dev_server_extra_args: [], & ) = Internal::Bridge::Testing::EphemeralServer::StartDevServerOptions.new( existing_path: dev_server_existing_path, sdk_name: 'sdk-ruby', sdk_version: VERSION, download_version: dev_server_download_version, download_dest_dir: dev_server_download_dest_dir, namespace:, ip:, port:, database_filename: dev_server_database_filename, ui:, log_format: dev_server_log_format, log_level: dev_server_log_level, extra_args: dev_server_extra_args ) _with_core_server( core_server: Internal::Bridge::Testing::EphemeralServer.start_dev_server( runtime._core_runtime, ), namespace:, data_converter:, interceptors:, logger:, default_workflow_query_reject_condition:, runtime:, supports_time_skipping: false, & # steep:ignore ) end |
.start_time_skipping(data_converter: Converters::DataConverter.default, interceptors: [], logger: Logger.new($stdout, level: Logger::WARN), default_workflow_query_reject_condition: nil, port: nil, runtime: Runtime.default, test_server_existing_path: nil, test_server_download_version: 'default', test_server_download_dest_dir: nil, test_server_extra_args: []) {|environment| ... } ⇒ WorkflowEnvironment, Object
Start a time-skipping test server. This server can skip time but may not have all of the Temporal features of the start_local form. By default, the server is downloaded to tmp if not already present. The test server is run as a child process. All options that start with test_server_
are for this specific implementation and therefore are not stable and may be changed as the underlying implementation changes.
If a block is given it is passed the environment and the environment is shut down after. If a block is not given, the environment is returned and #shutdown needs to be called manually.
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 132 def self.start_time_skipping( data_converter: Converters::DataConverter.default, interceptors: [], logger: Logger.new($stdout, level: Logger::WARN), default_workflow_query_reject_condition: nil, port: nil, runtime: Runtime.default, test_server_existing_path: nil, test_server_download_version: 'default', test_server_download_dest_dir: nil, test_server_extra_args: [], & ) = Internal::Bridge::Testing::EphemeralServer::StartTestServerOptions.new( existing_path: test_server_existing_path, sdk_name: 'sdk-ruby', sdk_version: VERSION, download_version: test_server_download_version, download_dest_dir: test_server_download_dest_dir, port:, extra_args: test_server_extra_args ) _with_core_server( core_server: Internal::Bridge::Testing::EphemeralServer.start_test_server( runtime._core_runtime, ), namespace: 'default', data_converter:, interceptors:, logger:, default_workflow_query_reject_condition:, runtime:, supports_time_skipping: true, & # steep:ignore ) end |
Instance Method Details
#auto_time_skipping_disabled { ... } ⇒ Object
Run a block with automatic time skipping disabled. This just runs the block for environments that don’t support time skipping.
249 250 251 252 253 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 249 def auto_time_skipping_disabled(&) raise 'Block required' unless block_given? yield end |
#current_time ⇒ Time
Current time of the environment.
If this server supports time skipping, this will be the current time as known to the environment. If it does not, this is a standard Time.now.
240 241 242 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 240 def current_time Time.now end |
#shutdown ⇒ Object
Shutdown this workflow environment.
215 216 217 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 215 def shutdown # Do nothing by default end |
#sleep(duration) ⇒ Object
Advanced time.
If this server supports time skipping, this will immediately advance time and return. If it does not, this is a standard sleep.
230 231 232 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 230 def sleep(duration) Kernel.sleep(duration) end |
#supports_time_skipping? ⇒ Boolean
Returns Whether this environment supports time skipping.
220 221 222 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 220 def supports_time_skipping? false end |