test: add first-version coverage
This commit is contained in:
@@ -1,6 +1,10 @@
|
||||
package tracker
|
||||
|
||||
import "testing"
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestTrackerMapsMessageSequenceAndGatewayIDs(t *testing.T) {
|
||||
tr := New()
|
||||
@@ -34,3 +38,51 @@ func TestTrackerRejectsUnknownSubmitResp(t *testing.T) {
|
||||
t.Fatal("expected missing mapping error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestTrackerKeepsConcurrentSequenceAndGatewayMappingsSeparate(t *testing.T) {
|
||||
tr := New()
|
||||
var wg sync.WaitGroup
|
||||
|
||||
for i := 0; i < 100; i++ {
|
||||
wg.Add(1)
|
||||
go func(i int) {
|
||||
defer wg.Done()
|
||||
messageID := fmt.Sprintf("msg-%03d", i)
|
||||
gatewayID := fmt.Sprintf("gw-%03d", i)
|
||||
sequenceID := uint32(2000 + i)
|
||||
|
||||
tr.TrackSubmit(messageID, sequenceID)
|
||||
mapping, err := tr.TrackSubmitResp(sequenceID, gatewayID)
|
||||
if err != nil {
|
||||
t.Errorf("track submit resp for %s: %v", messageID, err)
|
||||
return
|
||||
}
|
||||
if mapping.MessageID != messageID || mapping.SequenceID != sequenceID || mapping.GatewayMessageID != gatewayID {
|
||||
t.Errorf("unexpected mapping: %+v", mapping)
|
||||
}
|
||||
}(i)
|
||||
}
|
||||
wg.Wait()
|
||||
|
||||
for i := 0; i < 100; i++ {
|
||||
messageID := fmt.Sprintf("msg-%03d", i)
|
||||
gatewayID := fmt.Sprintf("gw-%03d", i)
|
||||
sequenceID := uint32(2000 + i)
|
||||
|
||||
byGateway, err := tr.ByGatewayMessageID(gatewayID)
|
||||
if err != nil {
|
||||
t.Fatalf("lookup gateway %s: %v", gatewayID, err)
|
||||
}
|
||||
if byGateway.MessageID != messageID || byGateway.SequenceID != sequenceID {
|
||||
t.Fatalf("gateway lookup crossed mappings: %+v", byGateway)
|
||||
}
|
||||
|
||||
byMessage, err := tr.ByMessageID(messageID)
|
||||
if err != nil {
|
||||
t.Fatalf("lookup message %s: %v", messageID, err)
|
||||
}
|
||||
if byMessage.GatewayMessageID != gatewayID || byMessage.SequenceID != sequenceID {
|
||||
t.Fatalf("message lookup crossed mappings: %+v", byMessage)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user