Skip to content

Commit

Permalink
WIP: add member id to client watch reponses, change validateOrdered t…
Browse files Browse the repository at this point in the history
…o check memberID in events
  • Loading branch information
ah8ad3 committed Jul 2, 2024
1 parent 9314ef7 commit 1aa13de
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 4 deletions.
1 change: 1 addition & 0 deletions tests/robustness/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -316,6 +316,7 @@ func ToWatchResponse(r clientv3.WatchResponse, baseTime time.Time) model.WatchRe
}
resp.IsProgressNotify = r.IsProgressNotify()
resp.Revision = r.Header.Revision
resp.MemberId = r.Header.MemberId
err := r.Err()
if err != nil {
resp.Error = r.Err().Error()
Expand Down
1 change: 1 addition & 0 deletions tests/robustness/model/watch.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,6 @@ type WatchResponse struct {
IsProgressNotify bool
Revision int64
Time time.Duration
MemberId uint64
Error string
}
11 changes: 7 additions & 4 deletions tests/robustness/validate/watch.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,14 +125,17 @@ func validateBookmarkable(lg *zap.Logger, report report.ClientReport) (err error

func validateOrdered(lg *zap.Logger, report report.ClientReport) (err error) {
for _, op := range report.Watch {
var lastEventRevision int64 = 1
lastEventRevision := make(map[uint64]int64)
for _, resp := range op.Responses {
for _, event := range resp.Events {
if event.Revision < lastEventRevision {
lg.Error("Broke watch guarantee", zap.String("guarantee", "ordered"), zap.Int("client", report.ClientID), zap.Int64("revision", event.Revision))
if _, ok := lastEventRevision[resp.MemberId]; !ok {
lastEventRevision[resp.MemberId] = 1
}
if event.Revision < lastEventRevision[resp.MemberId] {
lg.Error("Broke watch guarantee", zap.String("guarantee", "ordered"), zap.Int("client", report.ClientID), zap.Int64("revision", event.Revision), zap.Uint64("member", resp.MemberId))
err = errBrokeOrdered
}
lastEventRevision = event.Revision
lastEventRevision[resp.MemberId] = event.Revision
}
}
}
Expand Down

0 comments on commit 1aa13de

Please sign in to comment.