@@ -129,19 +129,30 @@ public async Task SuspendAndResume_Reason_IsExternalizedByClient()
129129 await server . Client . SuspendInstanceAsync ( instanceId , largeReason1 , this . TimeoutToken ) ;
130130 await server . Client . WaitForInstanceStartAsync ( instanceId , this . TimeoutToken ) ;
131131
132- // verify it is suspended
133- OrchestrationMetadata ? status = await server . Client . GetInstanceAsync ( instanceId , getInputsAndOutputs : false , this . TimeoutToken ) ;
134- Assert . NotNull ( status ) ;
135- Assert . Equal ( OrchestrationRuntimeStatus . Suspended , status ! . RuntimeStatus ) ;
132+ // poll up to 5 seconds to verify it is suspended
133+ var deadline1 = DateTime . UtcNow . AddSeconds ( 5 ) ;
134+ while ( true )
135+ {
136+ OrchestrationMetadata ? status1 = await server . Client . GetInstanceAsync ( instanceId , getInputsAndOutputs : false , this . TimeoutToken ) ;
137+ if ( status1 is not null && status1 . RuntimeStatus == OrchestrationRuntimeStatus . Suspended )
138+ {
139+ break ;
140+ }
136141
142+ if ( DateTime . UtcNow >= deadline1 )
143+ {
144+ Assert . NotNull ( status1 ) ;
145+ Assert . Equal ( OrchestrationRuntimeStatus . Suspended , status1 ! . RuntimeStatus ) ;
146+ }
147+ }
137148 // Resume with large reason (should be externalized by client)
138149 await server . Client . ResumeInstanceAsync ( instanceId , largeReason2 , this . TimeoutToken ) ;
139150
140151 // verify it is resumed (poll up to 5 seconds)
141152 var deadline = DateTime . UtcNow . AddSeconds ( 5 ) ;
142153 while ( true )
143154 {
144- status = await server . Client . GetInstanceAsync ( instanceId , getInputsAndOutputs : false , this . TimeoutToken ) ;
155+ OrchestrationMetadata ? status = await server . Client . GetInstanceAsync ( instanceId , getInputsAndOutputs : false , this . TimeoutToken ) ;
145156 if ( status is not null && status . RuntimeStatus == OrchestrationRuntimeStatus . Running )
146157 {
147158 break ;
0 commit comments