Skip to content

Commit 2f342b1

Browse files
committed
Refactor cloud tests to a separate test library and CI job
1 parent 6e8ef10 commit 2f342b1

5 files changed

Lines changed: 79 additions & 50 deletions

File tree

.cargo/config.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ CLI_VERSION_OVERRIDE = "v1.3.1-priority.0"
55

66
[alias]
77
integ-test = ["run", "--package", "temporal-sdk-core", "--example", "integ_runner", "--"]
8+
cloud-test = ["run", "--package", "temporal-sdk-core", "--example", "integ_runner", "--", "--test-name", "cloud_tests"]
89
lint = ["clippy", "--workspace", "--examples", "--all-features",
910
"--test", "integ_tests", "--test", "heavy_tests", "--test", "manual_tests",
1011
"--", "--D", "warnings"]

.github/workflows/per-pr.yml

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,6 @@ jobs:
7676

7777
integ-tests:
7878
name: Integ tests
79-
env:
80-
TEMPORAL_CLOUD_ADDRESS: https://${{ vars.TEMPORAL_CLIENT_NAMESPACE }}.tmprl.cloud:7233
81-
TEMPORAL_CLOUD_NAMESPACE: ${{ vars.TEMPORAL_CLIENT_NAMESPACE }}
82-
TEMPORAL_CLIENT_CERT: ${{ secrets.TEMPORAL_CLIENT_CERT }}
83-
TEMPORAL_CLIENT_KEY: ${{ secrets.TEMPORAL_CLIENT_KEY }}
8479
timeout-minutes: 20
8580
strategy:
8681
fail-fast: false
@@ -111,6 +106,31 @@ jobs:
111106
- uses: Swatinem/rust-cache@v2
112107
- run: cargo integ-test
113108

109+
cloud-tests:
110+
if: github.repository_owner == 'temporalio'
111+
name: Cloud tests
112+
env:
113+
TEMPORAL_CLOUD_ADDRESS: https://${{ vars.TEMPORAL_CLIENT_NAMESPACE }}.tmprl.cloud:7233
114+
TEMPORAL_CLOUD_NAMESPACE: ${{ vars.TEMPORAL_CLIENT_NAMESPACE }}
115+
TEMPORAL_CLIENT_CERT: ${{ secrets.TEMPORAL_CLIENT_CERT }}
116+
TEMPORAL_CLIENT_KEY: ${{ secrets.TEMPORAL_CLIENT_KEY }}
117+
timeout-minutes: 20
118+
runs-on: ubuntu-latest
119+
steps:
120+
- uses: actions/checkout@v4
121+
- uses: dtolnay/rust-toolchain@stable
122+
with:
123+
toolchain: 1.85.0
124+
- name: Install protoc
125+
uses: arduino/setup-protoc@v3
126+
with:
127+
# TODO: Upgrade proto once https://github.com/arduino/setup-protoc/issues/99 is fixed
128+
version: '23.x'
129+
repo-token: ${{ secrets.GITHUB_TOKEN }}
130+
131+
- uses: Swatinem/rust-cache@v2
132+
- run: cargo cloud-test
133+
114134
docker-integ-tests:
115135
name: Docker integ tests
116136
env:

core/Cargo.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,11 @@ name = "global_metric_tests"
120120
path = "../tests/global_metric_tests.rs"
121121
test = false
122122

123+
[[test]]
124+
name = "cloud_tests"
125+
path = "../tests/cloud_tests.rs"
126+
test = false
127+
123128
[[bench]]
124129
name = "workflow_replay"
125130
harness = false

tests/cloud_tests.rs

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
use std::env;
2+
use std::str::FromStr;
3+
use url::Url;
4+
use temporal_client::{Client, ClientOptionsBuilder, ClientTlsConfig, RetryClient, TlsConfig, WorkflowClientTrait};
5+
6+
async fn get_client() -> RetryClient<Client> {
7+
let cloud_addr = env::var("TEMPORAL_CLOUD_ADDRESS").unwrap();
8+
let cloud_key = env::var("TEMPORAL_CLIENT_KEY").unwrap();
9+
10+
let client_cert = env::var("TEMPORAL_CLIENT_CERT")
11+
.expect("TEMPORAL_CLIENT_CERT must be set")
12+
.replace("\\n", "\n")
13+
.into_bytes();
14+
let client_private_key = cloud_key.replace("\\n", "\n").into_bytes();
15+
let sgo = ClientOptionsBuilder::default()
16+
.target_url(Url::from_str(&cloud_addr).unwrap())
17+
.client_name("tls_tester")
18+
.client_version("clientver")
19+
.tls_cfg(TlsConfig {
20+
client_tls_config: Some(ClientTlsConfig {
21+
client_cert,
22+
client_private_key,
23+
}),
24+
..Default::default()
25+
})
26+
.build()
27+
.unwrap();
28+
sgo
29+
.connect(
30+
env::var("TEMPORAL_CLOUD_NAMESPACE").expect("TEMPORAL_CLOUD_NAMESPACE must be set"),
31+
None,
32+
)
33+
.await
34+
.unwrap()
35+
}
36+
37+
#[tokio::test]
38+
async fn tls_test() {
39+
let con = get_client().await;
40+
con.list_workflow_executions(100, vec![], "".to_string())
41+
.await
42+
.unwrap();
43+
}
44+
45+
#[tokio::test]
46+
async fn grpc_message_too_large_test() {
47+
// TODO
48+
}

tests/main.rs

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -66,51 +66,6 @@ mod integ_tests {
6666
.await;
6767
}
6868

69-
#[tokio::test]
70-
async fn tls_test() {
71-
let cloud_addr = env::var("TEMPORAL_CLOUD_ADDRESS");
72-
let cloud_key = env::var("TEMPORAL_CLIENT_KEY");
73-
74-
let (cloud_addr, cloud_key) = if let (Ok(c), Ok(ck)) = (cloud_addr, cloud_key) {
75-
if ck.is_empty() {
76-
return; // secret not present in github, could be a fork, just skip
77-
}
78-
(c, ck)
79-
} else {
80-
// Skip the test
81-
return;
82-
};
83-
84-
let client_cert = env::var("TEMPORAL_CLIENT_CERT")
85-
.expect("TEMPORAL_CLIENT_CERT must be set")
86-
.replace("\\n", "\n")
87-
.into_bytes();
88-
let client_private_key = cloud_key.replace("\\n", "\n").into_bytes();
89-
let sgo = ClientOptionsBuilder::default()
90-
.target_url(Url::from_str(&cloud_addr).unwrap())
91-
.client_name("tls_tester")
92-
.client_version("clientver")
93-
.tls_cfg(TlsConfig {
94-
client_tls_config: Some(ClientTlsConfig {
95-
client_cert,
96-
client_private_key,
97-
}),
98-
..Default::default()
99-
})
100-
.build()
101-
.unwrap();
102-
let con = sgo
103-
.connect(
104-
env::var("TEMPORAL_CLOUD_NAMESPACE").expect("TEMPORAL_CLOUD_NAMESPACE must be set"),
105-
None,
106-
)
107-
.await
108-
.unwrap();
109-
con.list_workflow_executions(100, vec![], "".to_string())
110-
.await
111-
.unwrap();
112-
}
113-
11469
pub(crate) async fn mk_nexus_endpoint(starter: &mut CoreWfStarter) -> String {
11570
let client = starter.get_client().await;
11671
let endpoint = format!("mycoolendpoint-{}", rand_6_chars());

0 commit comments

Comments
 (0)