@@ -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