83 lines
2.7 KiB
Go
83 lines
2.7 KiB
Go
package loadharness
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/iamxvbaba/td/tg"
|
|
)
|
|
|
|
func TestDeliveryTrackerReconcilesObservationBeforeSendReturn(t *testing.T) {
|
|
tracker := newDeliveryTracker("run")
|
|
marker := tracker.marker(7, 9)
|
|
|
|
tracker.observe(marker, 200, deliveryLive)
|
|
tracker.expect(marker, 100, 200)
|
|
|
|
report := tracker.report()
|
|
if report.Expected != 1 || report.Delivered != 1 || report.LiveDelivered != 1 || report.Missing != 0 {
|
|
t.Fatalf("unexpected report: %+v", report)
|
|
}
|
|
}
|
|
|
|
func TestDeliveryTrackerMeasuresFromSendStart(t *testing.T) {
|
|
tracker := newDeliveryTracker("run")
|
|
marker := tracker.marker(1, 1)
|
|
tracker.begin(marker, 100, 200, time.Now().Add(-25*time.Millisecond))
|
|
tracker.observe(marker, 200, deliveryLive)
|
|
tracker.finish(marker, true)
|
|
|
|
report := tracker.report()
|
|
if report.E2EP50MS < 20 || report.E2EP99MS < report.E2EP50MS || report.E2EMaxMS < report.E2EP99MS {
|
|
t.Fatalf("unexpected e2e latency report: %+v", report)
|
|
}
|
|
}
|
|
|
|
func TestDeliveryTrackerSeparatesDifferenceRecoveryAndDuplicates(t *testing.T) {
|
|
tracker := newDeliveryTracker("run")
|
|
liveMarker := tracker.marker(1, 1)
|
|
differenceMarker := tracker.marker(2, 1)
|
|
tracker.expect(liveMarker, 100, 200)
|
|
tracker.expect(differenceMarker, 200, 300)
|
|
|
|
tracker.observe(liveMarker, 200, deliveryLive)
|
|
tracker.observe(liveMarker, 200, deliveryLive)
|
|
tracker.observe(liveMarker, 200, deliveryDifference)
|
|
tracker.observe(differenceMarker, 300, deliveryDifference)
|
|
|
|
report := tracker.report()
|
|
if report.Delivered != 2 || report.LiveDelivered != 1 || report.DifferenceRecovered != 1 {
|
|
t.Fatalf("unexpected delivery sources: %+v", report)
|
|
}
|
|
if report.DuplicateObservations != 1 {
|
|
t.Fatalf("duplicate observations = %d, want 1", report.DuplicateObservations)
|
|
}
|
|
}
|
|
|
|
func TestObserveUpdatesClassExtractsPrivateMessages(t *testing.T) {
|
|
tracker := newDeliveryTracker("run")
|
|
shortMarker := tracker.marker(1, 1)
|
|
fullMarker := tracker.marker(2, 1)
|
|
tracker.expect(shortMarker, 100, 200)
|
|
tracker.expect(fullMarker, 300, 200)
|
|
|
|
observeUpdatesClass(tracker, 200, &tg.UpdateShortMessage{Message: shortMarker}, deliveryLive)
|
|
observeUpdatesClass(tracker, 200, &tg.Updates{Updates: []tg.UpdateClass{
|
|
&tg.UpdateNewMessage{Message: &tg.Message{Message: fullMarker}},
|
|
}}, deliveryLive)
|
|
|
|
report := tracker.report()
|
|
if report.Delivered != 2 || report.Missing != 0 {
|
|
t.Fatalf("unexpected report: %+v", report)
|
|
}
|
|
}
|
|
|
|
func TestDeliveryTrackerRejectsForeignAndMalformedMarkers(t *testing.T) {
|
|
tracker := newDeliveryTracker("run")
|
|
tracker.observe("telesrv-load-v3/other/1/1", 200, deliveryLive)
|
|
tracker.observe("telesrv-load-v3/run/not-an-index/1", 200, deliveryLive)
|
|
|
|
if report := tracker.report(); report.UnmatchedMarkers != 0 {
|
|
t.Fatalf("foreign marker entered report: %+v", report)
|
|
}
|
|
}
|