T1: the seat settle applies a delayed nak with the bus's own delay (ADR 0664 §1, issue 1748)
mesh/delivery merged: source.main moved to novox/mesh-tools@447a8d035935
mesh/delivery-group group fix/1748-transport-retry merged: every member is merged
mesh/check checking 62dce9fec7a4 on 447a8d035935 | novox/mesh-tools#68 in group fix/1748-transport-retry

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
This commit is contained in:
2026-11-09 22:53:21 +01:00
parent 7e4f86253e
commit 62dce9fec7
4 changed files with 56 additions and 4 deletions
+15
View File
@@ -58,6 +58,21 @@ func TestAHolderPullsOneMessageWhenItHasRoom(t *testing.T) {
if err != nil || again == nil || string(again.Body) != `{"id":"a2"}` || again.Delivered != 2 {
t.Fatalf("the message handed back = %+v, %v", again, err)
}
// Issue 1748: a message settled with a delay is not given again at once, is after it, one delivery higher; a delay
// of 0 settles nothing.
if err := conn.SeatSettleAfter("messenger", again.ID, 0); err == nil {
t.Error("a delay of 0 was accepted")
}
if err := conn.SeatSettleAfter("messenger", again.ID, 300*time.Millisecond); err != nil {
t.Fatal(err)
}
if early, err := conn.SeatPull("messenger", "SEAT_OPERATOR_CHANNEL_worker", 0); err != nil || early != nil {
t.Fatalf("a message given again after a delay came at once: %+v, %v", early, err)
}
late, err := conn.SeatPull("messenger", "SEAT_OPERATOR_CHANNEL_worker", 2*time.Second)
if err != nil || late == nil || late.Delivered != 3 {
t.Fatalf("the message given again after its delay = %+v, %v", late, err)
}
if _, err := conn.SeatPull("telegram", "SEAT_OPERATOR_CHANNEL_worker", 0); err == nil || !strings.Contains(err.Error(), "membership lists") {
t.Errorf("a channel pulled the router's work: %v", err)
}