37 lines
1.3 KiB
Go
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")
|
|
}
|
|
}
|