Files
2026-09-06 19:22:49 +08:00

37 lines
1.3 KiB
Go

package upstream
import (
"context"
"testing"
"time"
)
func TestUnavailableConnectionNeverClaimsWireSubmitTime(t *testing.T) {
conn := &connection{closed: true}
cmd := submitCommandForPacketTest("3.0")
parts, err := splitSubmitContent(cmd.CMPP.MsgFmt, cmd.Content)
if err != nil {
t.Fatal(err)
}
_, _, result, err := conn.submitPart(context.Background(), cmd, parts[0])
if err == nil || result.FirstWireSubmitAt != nil || result.WireTimeSource != "not_written" {
t.Fatalf("invalid pre-write timing: %+v / %v", result, err)
}
}
func TestSegmentCarriesActualWireTimeAndReceiptRequest(t *testing.T) {
cmd := submitCommandForPacketTest("3.0")
cmd.CMPP.RegisteredDelivery = 1
result := submitResult(cmd, 1, "upstream-1", "timeout", "SUBMIT_TIMEOUT", "no response")
at := time.Now().UTC().Add(-5 * time.Second)
result.FirstWireSubmitAt = &at
result.WireTimeSource = "gateway_write_complete"
segment := submitSegmentResult(submitPart{PkTotal: 2, PkNumber: 1}, 1, "upstream-1", result)
if segment.FirstWireSubmitAt == nil || !segment.FirstWireSubmitAt.Equal(at) || segment.WireTimeSource != "gateway_write_complete" || !segment.ReceiptRequested {
t.Fatalf("wire timing was lost: %+v", segment)
}
if !segment.SubmittedAt.After(*segment.FirstWireSubmitAt) {
t.Fatal("response timestamp must not replace earlier wire timestamp")
}
}