Skip to content

Commit ebb10f1

Browse files
authored
Merge pull request #109 from wooln/feature/intergration-test-delay-msg
test(msg): add MSG delay intergration tests for HTTP and gRPC
2 parents f04f17b + 83d76ae commit ebb10f1

4 files changed

Lines changed: 78 additions & 0 deletions

File tree

src/Dtmcli/Msg/Msg.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,16 @@ public Msg SetDelay(long delay)
152152
this._delay = delay;
153153
return this;
154154
}
155+
156+
/// <summary>
157+
/// Set delay to call branch
158+
/// </summary>
159+
/// <returns></returns>
160+
public Msg SetDelay(TimeSpan delay)
161+
{
162+
this._delay = (long)delay.TotalSeconds;
163+
return this;
164+
}
155165

156166
private void BuildCustomOptions()
157167
{

src/Dtmgrpc/Msg/MsgGrpc.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,16 @@ public MsgGrpc SetDelay(long delay)
163163
this._delay = delay;
164164
return this;
165165
}
166+
167+
/// <summary>
168+
/// Set delay to call branch, unit second
169+
/// </summary>
170+
/// <returns></returns>
171+
public MsgGrpc SetDelay(TimeSpan delay)
172+
{
173+
this._delay = (long)delay.TotalSeconds;
174+
return this;
175+
}
166176

167177
private void BuildCustomOptions()
168178
{

tests/Dtmcli.IntegrationTests/MsgHttpTest.cs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

tests/Dtmgrpc.IntegrationTests/MsgGrpcTest.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,32 @@ public async Task Submit_With_EffectTime_Should_Succeed_Later()
9292
Assert.Equal("succeed", status);
9393
}
9494

95+
[Fact]
96+
public async Task Submit_With_Delay_Should_Succeed_Later()
97+
{
98+
var provider = ITTestHelper.AddDtmGrpc();
99+
var transFactory = provider.GetRequiredService<IDtmTransFactory>();
100+
101+
var gid = "msgTestGid" + Guid.NewGuid().ToString();
102+
var msg = transFactory.NewMsgGrpc(gid);
103+
msg.SetDelay(TimeSpan.FromSeconds(10));
104+
var req = ITTestHelper.GenBusiReq(false, false);
105+
var busiGrpc = ITTestHelper.BuisgRPCUrl;
106+
msg.Add(busiGrpc + "/busi.Busi/TransOut", req)
107+
.Add(busiGrpc + "/busi.Busi/TransIn", req);
108+
109+
await msg.Prepare(busiGrpc + "/busi.Busi/QueryPrepared");
110+
await msg.Submit();
111+
112+
// Since the downstream execution is delayed by 10 seconds, it will be 'submitted' after 2 seconds and 'succeed' after 15 seconds
113+
await Task.Delay(TimeSpan.FromSeconds(2));
114+
var status = await ITTestHelper.GetTranStatus(gid);
115+
Assert.Equal("submitted", status);
116+
117+
await Task.Delay(TimeSpan.FromSeconds(13));
118+
status = await ITTestHelper.GetTranStatus(gid);
119+
Assert.Equal("succeed", status);
120+
}
95121

96122
private static readonly int TransOutUID = 1;
97123

0 commit comments

Comments
 (0)