@@ -59,4 +59,36 @@ public async Task Submit_With_EffectTime_Should_Succeed_Later()
5959 status = await ITTestHelper . GetTranStatus ( gid ) ;
6060 Assert . Equal ( "succeed" , status ) ;
6161 }
62+
63+ [ Fact ]
64+ public async Task Submit_With_Delay_Should_Succeed_Later ( )
65+ {
66+ var provider = ITTestHelper . AddDtmHttp ( ) ;
67+ var transFactory = provider . GetRequiredService < Dtmcli . IDtmTransFactory > ( ) ;
68+
69+ var gid = "msgTestGid" + Guid . NewGuid ( ) . ToString ( ) ;
70+ Msg msg = transFactory . NewMsg ( gid ) ;
71+ msg . SetDelay ( TimeSpan . FromSeconds ( 10 ) ) ;
72+
73+ var req = ITTestHelper . GenBusiReq ( false , false ) ;
74+ var busiUrl = ITTestHelper . BuisHttpUrl ;
75+ msg . Add ( busiUrl + "/busi.Busi/TransOut" , req )
76+ . Add ( busiUrl + "/busi.Busi/TransIn" , req ) ;
77+
78+ await msg . Prepare ( busiUrl + "/busi.Busi/QueryPrepared_404" ) ;
79+ await msg . Submit ( ) ;
80+
81+ // Since the downstream execution is delayed by 10 seconds, it will be 'submitted' after 2 seconds and 'succeed' after 15 seconds
82+ await Task . Delay ( TimeSpan . FromSeconds ( 0 ) ) ;
83+ var status = await ITTestHelper . GetTranStatus ( gid ) ;
84+ Assert . Equal ( "submitted" , status ) ;
85+
86+ await Task . Delay ( TimeSpan . FromSeconds ( 2 ) ) ;
87+ status = await ITTestHelper . GetTranStatus ( gid ) ;
88+ Assert . Equal ( "submitted" , status ) ;
89+
90+ await Task . Delay ( TimeSpan . FromSeconds ( 13 ) ) ;
91+ status = await ITTestHelper . GetTranStatus ( gid ) ;
92+ Assert . Equal ( "succeed" , status ) ;
93+ }
6294}
0 commit comments