Skip to content

Commit 936b158

Browse files
authored
cleanup(pubsub): run subscriber samples in parallel (#5454)
Our subscriber samples each run for 10s. We currently have 3, and I am going to add 3 more. We should run them all in parallel to save time. At the moment this shaves ~20s off the build time. Related to #4685
1 parent 0f851ea commit 936b158

1 file changed

Lines changed: 25 additions & 6 deletions

File tree

src/pubsub/examples/src/lib.rs

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,24 +45,43 @@ pub async fn run_subscription_samples(
4545
) -> anyhow::Result<()> {
4646
let client = SubscriptionAdmin::builder().build().await?;
4747
let project_id = std::env::var("GOOGLE_CLOUD_PROJECT")?;
48-
4948
let topic_id = topic_name.split("/").last().unwrap();
49+
50+
// Our subscriber examples each take 10 seconds to complete, so we run them
51+
// in parallel.
52+
let mut slow_tasks = JoinSet::new();
53+
5054
let id = random_subscription_id();
5155
subscription_names.push(format!("projects/{project_id}/subscriptions/{id}"));
5256
subscription::create_pull_subscription::sample(&client, &project_id, topic_id, &id).await?;
5357
subscription::list_subscriptions::sample(&client, &project_id).await?;
5458

55-
subscriber::quickstart_subscriber::sample(&project_id, &id).await?;
56-
subscriber::subscriber_stream::sample(&project_id, &id).await?;
57-
58-
subscription::delete_subscription::sample(&client, &project_id, &id).await?;
59+
slow_tasks.spawn({
60+
let (project_id, id) = (project_id.clone(), id.clone());
61+
async move { subscriber::quickstart_subscriber::sample(&project_id, &id).await }
62+
});
63+
slow_tasks.spawn({
64+
let (project_id, id) = (project_id.clone(), id.clone());
65+
async move { subscriber::subscriber_stream::sample(&project_id, &id).await }
66+
});
5967

6068
let id = random_subscription_id();
6169
subscription_names.push(format!("projects/{project_id}/subscriptions/{id}"));
6270
subscription::create_subscription_exactly_once::sample(&client, &project_id, topic_id, &id)
6371
.await?;
64-
subscriber::exactly_once::sample(&project_id, &id).await?;
72+
slow_tasks.spawn({
73+
let (project_id, id) = (project_id.clone(), id.clone());
74+
async move { subscriber::exactly_once::sample(&project_id, &id).await }
75+
});
76+
77+
// Await the result of the slow subscriber examples.
78+
while let Some(task) = slow_tasks.join_next().await {
79+
task??;
80+
}
6581

82+
// Test our delete subscription sample. Which ID we choose does not matter.
83+
// The caller will clean up all the others.
84+
subscription::delete_subscription::sample(&client, &project_id, &id).await?;
6685
Ok(())
6786
}
6887

0 commit comments

Comments
 (0)