@@ -8,16 +8,36 @@ use test_counter::TestCounter;
88
99const LOCALHOST : & str = "http://localhost:3000" ;
1010
11+ #[ cfg( all( target_arch = "wasm32" , feature = "web" ) ) ]
12+ static WEB_DB_NAME : OnceLock < String > = OnceLock :: new ( ) ;
13+
14+ #[ cfg( all( target_arch = "wasm32" , feature = "web" ) ) ]
15+ pub ( crate ) fn set_web_db_name ( db_name : String ) {
16+ WEB_DB_NAME . set ( db_name) . expect ( "WASM DB name was already initialized" ) ;
17+ }
18+
1119fn db_name_or_panic ( ) -> String {
12- std:: env:: var ( "SPACETIME_SDK_TEST_DB_NAME" ) . expect ( "Failed to read db name from env" )
20+ #[ cfg( all( target_arch = "wasm32" , feature = "web" ) ) ]
21+ {
22+ return WEB_DB_NAME
23+ . get ( )
24+ . cloned ( )
25+ . expect ( "Failed to read db name from wasm runner" ) ;
26+ }
27+
28+ #[ cfg( not( all( target_arch = "wasm32" , feature = "web" ) ) ) ]
29+ {
30+ std:: env:: var ( "SPACETIME_SDK_TEST_DB_NAME" ) . expect ( "Failed to read db name from env" )
31+ }
1332}
1433
1534#[ cfg( not( target_arch = "wasm32" ) ) ]
1635fn main ( ) {
17- dispatch ( ) ;
36+ // Keep a single async execution path so native and wasm exercise the same logic.
37+ tokio:: runtime:: Runtime :: new ( ) . unwrap ( ) . block_on ( dispatch ( ) ) ;
1838}
1939
20- pub ( crate ) fn dispatch ( ) {
40+ pub ( crate ) async fn dispatch ( ) {
2141 let disconnect_test_counter = TestCounter :: new ( ) ;
2242 let disconnect_result = disconnect_test_counter. add_test ( "disconnect" ) ;
2343
@@ -62,20 +82,20 @@ pub(crate) fn dispatch() {
6282 None => disconnect_result ( Ok ( ( ) ) ) ,
6383 }
6484 } ) ;
65- let connection = build_connection ( connection) ;
85+ let connection = build_connection ( connection) . await ;
6686
6787 #[ cfg( not( target_arch = "wasm32" ) ) ]
6888 let join_handle = connection. run_threaded ( ) ;
6989 #[ cfg( target_arch = "wasm32" ) ]
7090 connection. run_background_task ( ) ;
7191
72- connect_test_counter . wait_for_all ( ) ;
92+ wait_for_all ( & connect_test_counter ) . await ;
7393
74- connection . disconnect ( ) . unwrap ( ) ;
94+ disconnect_connection ( & connection ) . await ;
7595 #[ cfg( not( target_arch = "wasm32" ) ) ]
7696 join_handle. join ( ) . unwrap ( ) ;
7797
78- disconnect_test_counter . wait_for_all ( ) ;
98+ wait_for_all ( & disconnect_test_counter ) . await ;
7999
80100 let reconnect_test_counter = TestCounter :: new ( ) ;
81101 let reconnected_result = reconnect_test_counter. add_test ( "on_reconnect" ) ;
@@ -88,7 +108,7 @@ pub(crate) fn dispatch() {
88108 } )
89109 . with_database_name ( db_name_or_panic ( ) )
90110 . with_uri ( LOCALHOST ) ;
91- let new_connection = build_connection ( new_connection) ;
111+ let new_connection = build_connection ( new_connection) . await ;
92112
93113 new_connection
94114 . subscription_builder ( )
0 commit comments