Skip to content

Commit 1dece51

Browse files
committed
new test helper
1 parent b39194e commit 1dece51

8 files changed

Lines changed: 51 additions & 113 deletions

File tree

tests/common/mod.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ use temporal_sdk::{
3939
},
4040
};
4141
use temporal_sdk_core::{
42-
ClientOptions, ClientOptionsBuilder, CoreRuntime, RuntimeOptionsBuilder, WorkerConfigBuilder,
43-
init_replay_worker, init_worker,
42+
ClientOptions, ClientOptionsBuilder, CoreRuntime, RuntimeOptions, RuntimeOptionsBuilder,
43+
WorkerConfigBuilder, init_replay_worker, init_worker,
4444
replay::{HistoryForReplay, ReplayWorkerInput},
4545
telemetry::{build_otlp_metric_exporter, start_prometheus_metric_exporter},
4646
};
@@ -811,6 +811,13 @@ pub(crate) fn get_integ_telem_options() -> TelemetryOptions {
811811
.unwrap()
812812
}
813813

814+
pub(crate) fn get_integ_runtime_options(telemopts: TelemetryOptions) -> RuntimeOptions {
815+
RuntimeOptionsBuilder::default()
816+
.telemetry_options(telemopts)
817+
.build()
818+
.unwrap()
819+
}
820+
814821
#[async_trait::async_trait(?Send)]
815822
pub(crate) trait WorkflowHandleExt {
816823
async fn fetch_history_and_replay(

tests/global_metric_tests.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22
#[allow(dead_code)]
33
mod common;
44

5+
use crate::common::get_integ_runtime_options;
56
use common::CoreWfStarter;
67
use parking_lot::Mutex;
78
use std::{sync::Arc, time::Duration};
89
use temporal_sdk_core::{
9-
CoreRuntime, RuntimeOptionsBuilder,
10+
CoreRuntime,
1011
telemetry::{build_otlp_metric_exporter, construct_filter_string, telemetry_init_global},
1112
};
1213
use temporal_sdk_core_api::telemetry::{
@@ -79,12 +80,8 @@ async fn otel_errors_logged_as_errors() {
7980
})
8081
.build()
8182
.unwrap();
82-
let runtimeopts = RuntimeOptionsBuilder::default()
83-
.telemetry_options(telemopts)
84-
.build()
85-
.unwrap();
8683

87-
let rt = CoreRuntime::new_assume_tokio(runtimeopts).unwrap();
84+
let rt = CoreRuntime::new_assume_tokio(get_integ_runtime_options(telemopts)).unwrap();
8885
let mut starter = CoreWfStarter::new_with_runtime("otel_errors_logged_as_errors", rt);
8986
let _worker = starter.get_worker().await;
9087

tests/heavy_tests.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#[allow(dead_code)]
33
mod common;
44

5+
use crate::common::get_integ_runtime_options;
56
use common::{
67
CoreWfStarter, init_integ_telem, prom_metrics, rand_6_chars, workflows::la_problem_workflow,
78
};
@@ -19,9 +20,7 @@ use std::{
1920
};
2021
use temporal_client::{GetWorkflowResultOpts, WfClientExt, WorkflowClientTrait, WorkflowOptions};
2122
use temporal_sdk::{ActContext, ActivityOptions, WfContext, WorkflowResult};
22-
use temporal_sdk_core::{
23-
CoreRuntime, ResourceBasedTuner, ResourceSlotOptions, RuntimeOptionsBuilder,
24-
};
23+
use temporal_sdk_core::{CoreRuntime, ResourceBasedTuner, ResourceSlotOptions};
2524
use temporal_sdk_core_api::worker::PollerBehavior;
2625
use temporal_sdk_core_protos::{
2726
coresdk::{AsJsonPayloadExt, workflow_commands::ActivityCancellationType},
@@ -196,11 +195,7 @@ async fn workflow_load() {
196195
// cause us to encounter the tracing span drop bug
197196
telemopts.logging = None;
198197
init_integ_telem();
199-
let runtimeopts = RuntimeOptionsBuilder::default()
200-
.telemetry_options(telemopts)
201-
.build()
202-
.unwrap();
203-
let rt = CoreRuntime::new_assume_tokio(runtimeopts).unwrap();
198+
let rt = CoreRuntime::new_assume_tokio(get_integ_runtime_options(telemopts)).unwrap();
204199
let mut starter = CoreWfStarter::new_with_runtime("workflow_load", rt);
205200
starter
206201
.worker_config

tests/integ_tests/metrics_tests.rs

Lines changed: 18 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use crate::common::get_integ_runtime_options;
12
use crate::{
23
common::{
34
ANY_PORT, CoreWfStarter, NAMESPACE, OTEL_URL_ENV_VAR, PROMETHEUS_QUERY_API,
@@ -22,8 +23,7 @@ use temporal_sdk::{
2223
NexusOperationOptions, WfContext,
2324
};
2425
use temporal_sdk_core::{
25-
CoreRuntime, FixedSizeSlotSupplier, RuntimeOptionsBuilder, TokioRuntimeBuilder, TunerBuilder,
26-
init_worker,
26+
CoreRuntime, FixedSizeSlotSupplier, TokioRuntimeBuilder, TunerBuilder, init_worker,
2727
telemetry::{WORKFLOW_TASK_EXECUTION_LATENCY_HISTOGRAM_NAME, build_otlp_metric_exporter},
2828
};
2929
use temporal_sdk_core_api::{
@@ -98,11 +98,7 @@ async fn prometheus_metrics_exported(
9898
});
9999
}
100100
let (telemopts, addr, _aborter) = prom_metrics(Some(opts_builder.build().unwrap()));
101-
let runtimeopts = RuntimeOptionsBuilder::default()
102-
.telemetry_options(telemopts)
103-
.build()
104-
.unwrap();
105-
let rt = CoreRuntime::new_assume_tokio(runtimeopts).unwrap();
101+
let rt = CoreRuntime::new_assume_tokio(get_integ_runtime_options(telemopts)).unwrap();
106102
let opts = get_integ_server_options();
107103
let mut raw_client = opts
108104
.connect_no_namespace(rt.telemetry().get_temporal_metric_meter())
@@ -153,11 +149,7 @@ async fn prometheus_metrics_exported(
153149
async fn one_slot_worker_reports_available_slot() {
154150
let (telemopts, addr, _aborter) = prom_metrics(None);
155151
let tq = "one_slot_worker_tq";
156-
let runtimeopts = RuntimeOptionsBuilder::default()
157-
.telemetry_options(telemopts)
158-
.build()
159-
.unwrap();
160-
let rt = CoreRuntime::new_assume_tokio(runtimeopts).unwrap();
152+
let rt = CoreRuntime::new_assume_tokio(get_integ_runtime_options(telemopts)).unwrap();
161153

162154
let worker_cfg = WorkerConfigBuilder::default()
163155
.namespace(NAMESPACE)
@@ -410,11 +402,7 @@ async fn query_of_closed_workflow_doesnt_tick_terminal_metric(
410402
completion: workflow_command::Variant,
411403
) {
412404
let (telemopts, addr, _aborter) = prom_metrics(None);
413-
let runtimeopts = RuntimeOptionsBuilder::default()
414-
.telemetry_options(telemopts)
415-
.build()
416-
.unwrap();
417-
let rt = CoreRuntime::new_assume_tokio(runtimeopts).unwrap();
405+
let rt = CoreRuntime::new_assume_tokio(get_integ_runtime_options(telemopts)).unwrap();
418406
let mut starter =
419407
CoreWfStarter::new_with_runtime("query_of_closed_workflow_doesnt_tick_terminal_metric", rt);
420408
// Disable cache to ensure replay happens completely
@@ -536,11 +524,11 @@ async fn query_of_closed_workflow_doesnt_tick_terminal_metric(
536524

537525
#[test]
538526
fn runtime_new() {
539-
let runtimeopts = RuntimeOptionsBuilder::default()
540-
.telemetry_options(get_integ_telem_options())
541-
.build()
542-
.unwrap();
543-
let mut rt = CoreRuntime::new(runtimeopts, TokioRuntimeBuilder::default()).unwrap();
527+
let mut rt = CoreRuntime::new(
528+
get_integ_runtime_options(get_integ_telem_options()),
529+
TokioRuntimeBuilder::default(),
530+
)
531+
.unwrap();
544532
let handle = rt.tokio_handle();
545533
let _rt = handle.enter();
546534
let (telemopts, addr, _aborter) = prom_metrics(None);
@@ -586,11 +574,7 @@ async fn latency_metrics(
586574
.build()
587575
.unwrap(),
588576
));
589-
let runtimeopts = RuntimeOptionsBuilder::default()
590-
.telemetry_options(telemopts)
591-
.build()
592-
.unwrap();
593-
let rt = CoreRuntime::new_assume_tokio(runtimeopts).unwrap();
577+
let rt = CoreRuntime::new_assume_tokio(get_integ_runtime_options(telemopts)).unwrap();
594578
let mut starter = CoreWfStarter::new_with_runtime("latency_metrics", rt);
595579
let worker = starter.get_worker().await;
596580
starter.start_wf().await;
@@ -644,11 +628,7 @@ async fn latency_metrics(
644628
#[tokio::test]
645629
async fn request_fail_codes() {
646630
let (telemopts, addr, _aborter) = prom_metrics(None);
647-
let runtimeopts = RuntimeOptionsBuilder::default()
648-
.telemetry_options(telemopts)
649-
.build()
650-
.unwrap();
651-
let rt = CoreRuntime::new_assume_tokio(runtimeopts).unwrap();
631+
let rt = CoreRuntime::new_assume_tokio(get_integ_runtime_options(telemopts)).unwrap();
652632
let opts = get_integ_server_options();
653633
let mut client = opts
654634
.connect(NAMESPACE, rt.telemetry().get_temporal_metric_meter())
@@ -691,11 +671,8 @@ async fn request_fail_codes_otel() {
691671
let mut telemopts = TelemetryOptionsBuilder::default();
692672
let exporter = Arc::new(exporter);
693673
telemopts.metrics(exporter as Arc<dyn CoreMeter>);
694-
let runtimeopts = RuntimeOptionsBuilder::default()
695-
.telemetry_options(telemopts.build().unwrap())
696-
.build()
674+
let rt = CoreRuntime::new_assume_tokio(get_integ_runtime_options(telemopts.build().unwrap()))
697675
.unwrap();
698-
let rt = CoreRuntime::new_assume_tokio(runtimeopts).unwrap();
699676
let opts = get_integ_server_options();
700677
let mut client = opts
701678
.connect(NAMESPACE, rt.telemetry().get_temporal_metric_meter())
@@ -745,11 +722,7 @@ async fn docker_metrics_with_prometheus(
745722
.metric_prefix(test_uid.clone())
746723
.build()
747724
.unwrap();
748-
let runtimeopts = RuntimeOptionsBuilder::default()
749-
.telemetry_options(telemopts)
750-
.build()
751-
.unwrap();
752-
let rt = CoreRuntime::new_assume_tokio(runtimeopts).unwrap();
725+
let rt = CoreRuntime::new_assume_tokio(get_integ_runtime_options(telemopts)).unwrap();
753726
let test_name = "docker_metrics_with_prometheus";
754727
let mut starter = CoreWfStarter::new_with_runtime(test_name, rt);
755728
let worker = starter.get_worker().await;
@@ -803,11 +776,7 @@ async fn docker_metrics_with_prometheus(
803776
#[tokio::test]
804777
async fn activity_metrics() {
805778
let (telemopts, addr, _aborter) = prom_metrics(None);
806-
let runtimeopts = RuntimeOptionsBuilder::default()
807-
.telemetry_options(telemopts)
808-
.build()
809-
.unwrap();
810-
let rt = CoreRuntime::new_assume_tokio(runtimeopts).unwrap();
779+
let rt = CoreRuntime::new_assume_tokio(get_integ_runtime_options(telemopts)).unwrap();
811780
let wf_name = "activity_metrics";
812781
let mut starter = CoreWfStarter::new_with_runtime(wf_name, rt);
813782
starter
@@ -941,11 +910,7 @@ async fn activity_metrics() {
941910
#[tokio::test]
942911
async fn nexus_metrics() {
943912
let (telemopts, addr, _aborter) = prom_metrics(None);
944-
let runtimeopts = RuntimeOptionsBuilder::default()
945-
.telemetry_options(telemopts)
946-
.build()
947-
.unwrap();
948-
let rt = CoreRuntime::new_assume_tokio(runtimeopts).unwrap();
913+
let rt = CoreRuntime::new_assume_tokio(get_integ_runtime_options(telemopts)).unwrap();
949914
let wf_name = "nexus_metrics";
950915
let mut starter = CoreWfStarter::new_with_runtime(wf_name, rt);
951916
starter.worker_config.no_remote_activities(true);
@@ -1122,11 +1087,7 @@ async fn nexus_metrics() {
11221087
#[tokio::test]
11231088
async fn evict_on_complete_does_not_count_as_forced_eviction() {
11241089
let (telemopts, addr, _aborter) = prom_metrics(None);
1125-
let runtimeopts = RuntimeOptionsBuilder::default()
1126-
.telemetry_options(telemopts)
1127-
.build()
1128-
.unwrap();
1129-
let rt = CoreRuntime::new_assume_tokio(runtimeopts).unwrap();
1090+
let rt = CoreRuntime::new_assume_tokio(get_integ_runtime_options(telemopts)).unwrap();
11301091
let wf_name = "evict_on_complete_does_not_count_as_forced_eviction";
11311092
let mut starter = CoreWfStarter::new_with_runtime(wf_name, rt);
11321093
starter.worker_config.no_remote_activities(true);
@@ -1209,11 +1170,7 @@ where
12091170
#[tokio::test]
12101171
async fn metrics_available_from_custom_slot_supplier() {
12111172
let (telemopts, addr, _aborter) = prom_metrics(None);
1212-
let runtimeopts = RuntimeOptionsBuilder::default()
1213-
.telemetry_options(telemopts)
1214-
.build()
1215-
.unwrap();
1216-
let rt = CoreRuntime::new_assume_tokio(runtimeopts).unwrap();
1173+
let rt = CoreRuntime::new_assume_tokio(get_integ_runtime_options(telemopts)).unwrap();
12171174
let mut starter =
12181175
CoreWfStarter::new_with_runtime("metrics_available_from_custom_slot_supplier", rt);
12191176
starter.worker_config.no_remote_activities(true);

tests/integ_tests/workflow_tests.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ mod stickyness;
1818
mod timers;
1919
mod upsert_search_attrs;
2020

21+
use crate::common::get_integ_runtime_options;
2122
use crate::{
2223
common::{
2324
CoreWfStarter, history_from_proto_binary, init_core_and_create_wf,
@@ -35,7 +36,7 @@ use temporal_sdk::{
3536
ActivityOptions, LocalActivityOptions, TimerOptions, WfContext, interceptors::WorkerInterceptor,
3637
};
3738
use temporal_sdk_core::{
38-
CoreRuntime, RuntimeOptionsBuilder,
39+
CoreRuntime,
3940
replay::HistoryForReplay,
4041
test_help::{MockPollCfg, WorkerTestHelpers, drain_pollers_and_shutdown},
4142
};
@@ -67,7 +68,6 @@ use temporal_sdk_core_protos::{
6768
test_utils::schedule_activity_cmd,
6869
};
6970
use tokio::{join, sync::Notify, time::sleep};
70-
7171
// TODO: We should get expected histories for these tests and confirm that the history at the end
7272
// matches.
7373

@@ -764,11 +764,7 @@ async fn nondeterminism_errors_fail_workflow_when_configured_to(
764764
#[values(true, false)] whole_worker: bool,
765765
) {
766766
let (telemopts, addr, _aborter) = prom_metrics(None);
767-
let runtimeopts = RuntimeOptionsBuilder::default()
768-
.telemetry_options(telemopts)
769-
.build()
770-
.unwrap();
771-
let rt = CoreRuntime::new_assume_tokio(runtimeopts).unwrap();
767+
let rt = CoreRuntime::new_assume_tokio(get_integ_runtime_options(telemopts)).unwrap();
772768
let wf_name = "nondeterminism_errors_fail_workflow_when_configured_to";
773769
let mut starter = CoreWfStarter::new_with_runtime(wf_name, rt);
774770
starter.worker_config.no_remote_activities(true);

tests/main.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,12 @@ mod integ_tests {
2727
mod workflow_tests;
2828

2929
use crate::common::{
30-
CoreWfStarter, get_integ_server_options, get_integ_telem_options, rand_6_chars,
30+
CoreWfStarter, get_integ_runtime_options, get_integ_server_options,
31+
get_integ_telem_options, rand_6_chars,
3132
};
3233
use std::time::Duration;
3334
use temporal_client::{NamespacedClient, WorkflowService};
34-
use temporal_sdk_core::{CoreRuntime, RuntimeOptionsBuilder, init_worker};
35+
use temporal_sdk_core::{CoreRuntime, init_worker};
3536
use temporal_sdk_core_api::worker::WorkerConfigBuilder;
3637
use temporal_sdk_core_protos::temporal::api::{
3738
nexus::v1::{EndpointSpec, EndpointTarget, endpoint_target},
@@ -44,11 +45,9 @@ mod integ_tests {
4445
#[ignore] // Really a compile time check more than anything
4546
async fn lang_bridge_example() {
4647
let opts = get_integ_server_options();
47-
let runtimeopts = RuntimeOptionsBuilder::default()
48-
.telemetry_options(get_integ_telem_options())
49-
.build()
50-
.unwrap();
51-
let runtime = CoreRuntime::new_assume_tokio(runtimeopts).unwrap();
48+
let runtime =
49+
CoreRuntime::new_assume_tokio(get_integ_runtime_options(get_integ_telem_options()))
50+
.unwrap();
5251
let mut retrying_client = opts
5352
.connect_no_namespace(runtime.telemetry().get_temporal_metric_meter())
5453
.await

tests/manual_tests.rs

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#[allow(dead_code)]
66
mod common;
77

8+
use crate::common::get_integ_runtime_options;
89
use common::{CoreWfStarter, prom_metrics, rand_6_chars};
910
use futures_util::{
1011
StreamExt,
@@ -20,7 +21,7 @@ use std::{
2021
};
2122
use temporal_client::{GetWorkflowResultOpts, WfClientExt, WorkflowClientTrait, WorkflowOptions};
2223
use temporal_sdk::{ActContext, ActivityOptions, WfContext};
23-
use temporal_sdk_core::{CoreRuntime, RuntimeOptionsBuilder};
24+
use temporal_sdk_core::CoreRuntime;
2425
use temporal_sdk_core_api::{telemetry::PrometheusExporterOptionsBuilder, worker::PollerBehavior};
2526
use temporal_sdk_core_protos::coresdk::AsJsonPayloadExt;
2627
use tracing::info;
@@ -41,11 +42,7 @@ async fn poller_load_spiky() {
4142
} else {
4243
prom_metrics(None)
4344
};
44-
let runtimeopts = RuntimeOptionsBuilder::default()
45-
.telemetry_options(telemopts)
46-
.build()
47-
.unwrap();
48-
let rt = CoreRuntime::new_assume_tokio(runtimeopts).unwrap();
45+
let rt = CoreRuntime::new_assume_tokio(get_integ_runtime_options(telemopts)).unwrap();
4946
let mut starter = CoreWfStarter::new_with_runtime("poller_load", rt);
5047
starter
5148
.worker_config
@@ -204,11 +201,7 @@ async fn poller_load_sustained() {
204201
} else {
205202
prom_metrics(None)
206203
};
207-
let runtimeopts = RuntimeOptionsBuilder::default()
208-
.telemetry_options(telemopts)
209-
.build()
210-
.unwrap();
211-
let rt = CoreRuntime::new_assume_tokio(runtimeopts).unwrap();
204+
let rt = CoreRuntime::new_assume_tokio(get_integ_runtime_options(telemopts)).unwrap();
212205
let mut starter = CoreWfStarter::new_with_runtime("poller_load", rt);
213206
starter
214207
.worker_config
@@ -299,11 +292,7 @@ async fn poller_load_spike_then_sustained() {
299292
} else {
300293
prom_metrics(None)
301294
};
302-
let runtimeopts = RuntimeOptionsBuilder::default()
303-
.telemetry_options(telemopts)
304-
.build()
305-
.unwrap();
306-
let rt = CoreRuntime::new_assume_tokio(runtimeopts).unwrap();
295+
let rt = CoreRuntime::new_assume_tokio(get_integ_runtime_options(telemopts)).unwrap();
307296
let mut starter = CoreWfStarter::new_with_runtime("poller_load", rt);
308297
starter
309298
.worker_config

0 commit comments

Comments
 (0)