Skip to content

Commit a04e0a7

Browse files
committed
test(Dtmgrpc.IntegrationTests): enhance workflow test to cover SAGA and TCC patterns
1 parent c7d45f0 commit a04e0a7

File tree

1 file changed

+30
-7
lines changed

1 file changed

+30
-7
lines changed

tests/Dtmgrpc.IntegrationTests/WorkflowGrpcTest.cs

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public async Task Execute_gPRC_Should_Succeed()
6767
}
6868

6969
[Fact]
70-
public async Task Execute_DoAndHttpSuccess()
70+
public async Task Execute_DoAndHttp_ShouldSuccess()
7171
{
7272
var provider = ITTestHelper.AddDtmGrpc();
7373
var workflowFactory = provider.GetRequiredService<IWorkflowFactory>();
@@ -90,17 +90,25 @@ public async Task Execute_DoAndHttpSuccess()
9090
return ("my result"u8.ToArray(), null);
9191
});
9292

93-
// 2. http1
93+
// 2. http1, SAGA
9494
HttpResponseMessage httpResult1 = await workflow.NewBranch().OnRollback(async (barrier) =>
9595
{
9696
_testOutputHelper.WriteLine("4. http1 rollback");
97+
await workflow.NewRequest().GetAsync("http://localhost:5006/test-http-ok1");
9798
}).NewRequest().GetAsync("http://localhost:5006/test-http-ok1");
9899

99-
// 3. http2
100+
// 3. http2, TCC
100101
HttpResponseMessage httpResult2 = await workflow.NewBranch().OnRollback(async (barrier) =>
101102
{
102-
_testOutputHelper.WriteLine("4. http2 rollback");
103-
}).NewRequest().GetAsync("http://localhost:5006/test-http-ok2");
103+
_testOutputHelper.WriteLine("4. http2 cancel");
104+
105+
await workflow.NewRequest().GetAsync("http://localhost:5006/test-http-ok1");
106+
}).OnCommit(async (barrier) =>
107+
{
108+
_testOutputHelper.WriteLine("4. http2 commit");
109+
// NOT must use workflow.NewRequest()
110+
await workflow.NewRequest().GetAsync("http://localhost:5006/test-http-ok1");
111+
}).NewRequest().GetAsync("http://localhost:5006/test-http-ok1");
104112

105113
await busiClient.TransOutAsync(request);
106114

@@ -113,25 +121,40 @@ public async Task Execute_DoAndHttpSuccess()
113121
DtmClient dtmClient = new DtmClient(provider.GetRequiredService<IHttpClientFactory>(), provider.GetRequiredService<IOptions<DtmOptions>>());
114122
TransGlobal trans;
115123

124+
// BranchID Op Status
125+
// 01 action succeed
126+
// 02 action succeed
127+
// 03 action succeed
128+
// 03 commit succeed
116129
// first
117130
byte[] result = await workflowGlobalTransaction.Execute(wfName1, gid, Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(req)));
118131
Assert.Equal("my result", Encoding.UTF8.GetString(result));
119132
trans = await dtmClient.Query(gid, CancellationToken.None);
120133
Assert.Equal("succeed", trans.Transaction.Status);
121-
Assert.Equal(3, trans.Branches.Count); // 1.Do 2.Http 3.Http
134+
Assert.Equal(4, trans.Branches.Count); // 1.Do x1, 2.http, saga x1, 3.Http tcc x2
135+
Assert.Equal("action", trans.Branches[0].Op);
122136
Assert.Equal("succeed", trans.Branches[0].Status);
137+
Assert.Equal("action", trans.Branches[1].Op);
123138
Assert.Equal("succeed", trans.Branches[1].Status);
139+
Assert.Equal("action", trans.Branches[2].Op);
124140
Assert.Equal("succeed", trans.Branches[2].Status);
141+
Assert.Equal("commit", trans.Branches[3].Op);
142+
Assert.Equal("succeed", trans.Branches[3].Status);
125143

126144
// same gid again
127145
result = await workflowGlobalTransaction.Execute(wfName1, gid, Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(req)));
128146
Assert.Equal("my result", Encoding.UTF8.GetString(result));
129147
trans = await dtmClient.Query(gid, CancellationToken.None);
130148
Assert.Equal("succeed", trans.Transaction.Status);
131-
Assert.Equal(3, trans.Branches.Count); // 1.Do 2.Http 3.Http
149+
Assert.Equal(4, trans.Branches.Count); // 1.Do x1, 2.http, saga x1, 3.Http tcc x2
150+
Assert.Equal("action", trans.Branches[0].Op);
132151
Assert.Equal("succeed", trans.Branches[0].Status);
152+
Assert.Equal("action", trans.Branches[1].Op);
133153
Assert.Equal("succeed", trans.Branches[1].Status);
154+
Assert.Equal("action", trans.Branches[2].Op);
134155
Assert.Equal("succeed", trans.Branches[2].Status);
156+
Assert.Equal("commit", trans.Branches[3].Op);
157+
Assert.Equal("succeed", trans.Branches[3].Status);
135158
}
136159

137160
[Fact]

0 commit comments

Comments
 (0)