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, ui_port: nil, search_attributes: [], 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: [], dev_server_download_ttl: nil) {|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: [], test_server_download_ttl: nil) {|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.
233 234 235 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 233 def initialize(client) @client = client end |
Instance Attribute Details
#client ⇒ Client (readonly)
Returns Client for the server.
21 22 23 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 21 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, ui_port: nil, search_attributes: [], 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: [], dev_server_download_ttl: nil) {|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.
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 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 61 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 ui_port: nil, search_attributes: [], 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: [], dev_server_download_ttl: nil, & ) # Add search attribute args unless search_attributes.empty? dev_server_extra_args += search_attributes.flat_map do |key| raise 'Search attribute must be Key' unless key.is_a?(SearchAttributes::Key) ['--search-attribute', "#{key.name}=#{SearchAttributes::IndexedValueType::PROTO_NAMES[key.type]}"] end end = 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:, ui_port: ui ? ui_port : nil, log_format: dev_server_log_format, log_level: dev_server_log_level, extra_args: dev_server_extra_args, download_ttl: dev_server_download_ttl ) _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: [], test_server_download_ttl: nil) {|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.
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 153 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: [], test_server_download_ttl: nil, & ) = 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, download_ttl: test_server_download_ttl ) _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.
272 273 274 275 276 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 272 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.
263 264 265 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 263 def current_time Time.now end |
#shutdown ⇒ Object
Shutdown this workflow environment.
238 239 240 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 238 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.
253 254 255 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 253 def sleep(duration) Kernel.sleep(duration) end |
#supports_time_skipping? ⇒ Boolean
Returns Whether this environment supports time skipping.
243 244 245 |
# File 'lib/temporalio/testing/workflow_environment.rb', line 243 def supports_time_skipping? false end |