mirror of
https://github.com/soypat/lneto.git
synced 2026-08-21 23:19:03 +00:00
fix tests not passing for RingTx
This commit is contained in:
+37
-17
@@ -5,32 +5,52 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestTxQueueWrite(t *testing.T) {
|
||||
func TestTxQueue_SequentialMessages(t *testing.T) {
|
||||
const (
|
||||
bufsize = 1024
|
||||
maxPkt = 3
|
||||
msg = "hello world"
|
||||
bufsize = 2
|
||||
maxPkt = 1
|
||||
msg = "hello world"
|
||||
startAck = 0 // this is the initial sequence number.
|
||||
)
|
||||
buf := make([]byte, bufsize)
|
||||
rtx := newRingTx(buf, maxPkt)
|
||||
|
||||
bufs := bytes.SplitAfter([]byte(msg), []byte("e"))
|
||||
var rtx ringTx
|
||||
err := rtx.Reset(buf, maxPkt, startAck)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
// msgs := bytes.SplitAfter([]byte(msg), []byte("e"))
|
||||
msgs := bytes.Split([]byte(msg), []byte(""))
|
||||
var data [bufsize]byte
|
||||
for i, buf := range bufs {
|
||||
n, err := rtx.Write(buf)
|
||||
prevSeq := Value(startAck)
|
||||
for i, msg := range msgs {
|
||||
n, err := rtx.Write(msg)
|
||||
if err != nil {
|
||||
t.Fatalf("writing packet %d: %s", i, err)
|
||||
} else if n != len(buf) {
|
||||
t.Fatalf("want %d written, got %d", len(buf), n)
|
||||
} else if n != len(msg) {
|
||||
t.Fatalf("want %d written, got %d", len(msg), n)
|
||||
}
|
||||
|
||||
n, err = rtx.MakePacket(data[:])
|
||||
unsent := rtx.Buffered()
|
||||
if len(msg) != unsent {
|
||||
t.Fatalf("want %d unsent buffered, got %d", unsent, len(msg))
|
||||
}
|
||||
sent := rtx.BufferedSent()
|
||||
if sent > 0 {
|
||||
t.Fatalf("want 0 bytes sent, got %d", sent)
|
||||
}
|
||||
n, seq, err := rtx.MakePacket(data[:])
|
||||
if err != nil {
|
||||
t.Fatalf("making packet %d: %s", i, err)
|
||||
} else if n != len(buf) {
|
||||
t.Fatalf("want %d packet read, got %d", len(buf), n)
|
||||
} else if !bytes.Equal(buf, data[:n]) {
|
||||
t.Fatalf("want data %q, got data read %q", buf, data[:n])
|
||||
} else if n != len(msg) {
|
||||
t.Fatalf("want %d packet read, got %d", len(msg), n)
|
||||
} else if !bytes.Equal(msg, data[:n]) {
|
||||
t.Fatalf("want data %q, got data read %q", msg, data[:n])
|
||||
} else if seq != prevSeq {
|
||||
t.Fatalf("want seq %d, got %d", prevSeq, seq)
|
||||
}
|
||||
prevSeq += Value(n)
|
||||
err = rtx.RecvACK(prevSeq)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user