Skip to content

Commit 1119ae4

Browse files
test(broadcast): added test for ordering
1 parent 189a62d commit 1119ae4

File tree

7 files changed

+318
-27
lines changed

7 files changed

+318
-27
lines changed

broadcast/request.go

+6
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ func (r *BroadcastRequest) dispatchOutOfOrderMsgs(ctx context.Context) {
211211
if r.executionOrder == nil || len(r.executionOrder) <= 0 {
212212
return
213213
}
214+
handledMethods := make([]string, 0, len(r.outOfOrderMsgs))
214215
for method, msgs := range r.outOfOrderMsgs {
215216
order, ok := r.executionOrder[method]
216217
if !ok {
@@ -222,6 +223,11 @@ func (r *BroadcastRequest) dispatchOutOfOrderMsgs(ctx context.Context) {
222223
for _, msg := range msgs {
223224
msg.Run(ctx)
224225
}
226+
handledMethods = append(handledMethods, method)
225227
}
226228
}
229+
// cleanup after dispatching the cached messages
230+
for _, m := range handledMethods {
231+
delete(r.outOfOrderMsgs, m)
232+
}
227233
}

tests/broadcast/broadcast.pb.go

+43-21
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/broadcast/broadcast.proto

+12
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,18 @@ service BroadcastService {
4949
rpc GetVal(Request) returns (Response) {
5050
option (gorums.broadcastcall) = true;
5151
}
52+
rpc Order(Request) returns (Response) {
53+
option (gorums.broadcastcall) = true;
54+
}
55+
rpc PrePrepare(Request) returns (Empty) {
56+
option (gorums.broadcast) = true;
57+
}
58+
rpc Prepare(Request) returns (Empty) {
59+
option (gorums.broadcast) = true;
60+
}
61+
rpc Commit(Request) returns (Empty) {
62+
option (gorums.broadcast) = true;
63+
}
5264
}
5365

5466
message Request {

tests/broadcast/broadcast_gorums.pb.go

+142
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/broadcast/broadcast_test.go

+31-6
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ func createSrvs(numSrvs int, down ...int) ([]*testServer, []string, func(), erro
5252
func TestSimpleBroadcastCall(t *testing.T) {
5353
numSrvs := 3
5454
numReqs := 10
55-
srvs, srvAddrs, srvCleanup, err := createSrvs(numSrvs)
55+
_, srvAddrs, srvCleanup, err := createSrvs(numSrvs)
5656
if err != nil {
5757
t.Error(err)
5858
}
@@ -77,11 +77,6 @@ func TestSimpleBroadcastCall(t *testing.T) {
7777
}
7878
cancel()
7979
}
80-
for _, srv := range srvs {
81-
if srv.GetNumMsgs() != numReqs*numSrvs {
82-
//t.Error(fmt.Sprintf("resp is wrong, want: %v, got: %v", numReqs*numSrvs, srv.GetNumMsgs()))
83-
}
84-
}
8580
}
8681

8782
func TestSimpleBroadcastTo(t *testing.T) {
@@ -286,6 +281,36 @@ func TestBroadcastCancelOneClientFails(t *testing.T) {
286281
}
287282
}
288283

284+
func TestBroadcastCallOrdering(t *testing.T) {
285+
numSrvs := 3
286+
numReqs := 10
287+
_, srvAddrs, srvCleanup, err := createSrvs(numSrvs)
288+
if err != nil {
289+
t.Error(err)
290+
}
291+
defer srvCleanup()
292+
293+
config, clientCleanup, err := newClient(srvAddrs, "127.0.0.1:8080")
294+
if err != nil {
295+
t.Error(err)
296+
}
297+
defer clientCleanup()
298+
299+
for i := 1; i <= numReqs; i++ {
300+
//slog.Info("req", "no", i)
301+
val := int64(i * 100)
302+
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
303+
resp, err := config.Order(ctx, &Request{Value: val})
304+
if err != nil {
305+
t.Error(err)
306+
}
307+
if resp.GetResult() != 0 {
308+
t.Error(fmt.Sprintf("resp is wrong, want: %v, got: %v", val, resp.GetResult()))
309+
}
310+
cancel()
311+
}
312+
}
313+
289314
func TestBroadcastCallRace(t *testing.T) {
290315
_, srvAddrs, srvCleanup, err := createSrvs(3)
291316
if err != nil {

0 commit comments

Comments
 (0)