completed new reno test with exchange
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing

This commit is contained in:
Jake Hillion 2021-05-13 23:25:09 +01:00
parent e1241b2cf0
commit c817930294

View File

@ -39,6 +39,9 @@ func newNewRenoTest(ctx context.Context, rtt time.Duration) *newRenoTest {
p, _, _ = nr.sideB.Handle(ctx, p) p, _, _ = nr.sideB.Handle(ctx, p)
p, _, _ = nr.sideA.Handle(ctx, p) p, _, _ = nr.sideA.Handle(ctx, p)
nr.sideB.ReceivedPacket(0, nr.sideA.NextAck(), nr.sideA.NextNack())
nr.sideA.ReceivedPacket(0, nr.sideB.NextAck(), nr.sideB.NextNack())
return nr return nr
} }
@ -162,6 +165,9 @@ func TestNewReno_Congestion(t *testing.T) {
c.RunSideA(ctx) c.RunSideA(ctx)
c.RunSideB(ctx) c.RunSideB(ctx)
sideAinitialAck := c.sideA.ack
sideBinitialAck := c.sideB.ack
// ACT // ACT
for i := 0; i < numPackets; i++ { for i := 0; i < numPackets; i++ {
// sleep to simulate preparing packet // sleep to simulate preparing packet
@ -181,10 +187,10 @@ func TestNewReno_Congestion(t *testing.T) {
// ASSERT // ASSERT
assert.Equal(t, uint32(0), c.sideA.nack) assert.Equal(t, uint32(0), c.sideA.nack)
assert.Equal(t, uint32(0), c.sideA.ack) assert.Equal(t, sideAinitialAck, c.sideA.ack)
assert.Equal(t, uint32(0), c.sideB.nack) assert.Equal(t, uint32(0), c.sideB.nack)
assert.Equal(t, uint32(numPackets), c.sideB.ack) assert.Equal(t, sideBinitialAck + uint32(numPackets), c.sideB.ack)
}) })
t.Run("SequenceLoss", func(t *testing.T) { t.Run("SequenceLoss", func(t *testing.T) {
@ -200,13 +206,16 @@ func TestNewReno_Congestion(t *testing.T) {
c.RunSideA(ctx) c.RunSideA(ctx)
c.RunSideB(ctx) c.RunSideB(ctx)
sideAinitialAck := c.sideA.ack
sideBinitialAck := c.sideB.ack
// ACT // ACT
for i := 0; i < numPackets; i++ { for i := 1; i <= numPackets; i++ {
// sleep to simulate preparing packet // sleep to simulate preparing packet
time.Sleep(1 * time.Millisecond) time.Sleep(1 * time.Millisecond)
seq, _ := c.sideA.Sequence(ctx) seq, _ := c.sideA.Sequence(ctx)
if seq == 20 { if i == 20 {
// Simulate packet loss of sequence 20 // Simulate packet loss of sequence 20
continue continue
} }
@ -223,10 +232,10 @@ func TestNewReno_Congestion(t *testing.T) {
// ASSERT // ASSERT
assert.Equal(t, uint32(0), c.sideA.nack) assert.Equal(t, uint32(0), c.sideA.nack)
assert.Equal(t, uint32(0), c.sideA.ack) assert.Equal(t, sideAinitialAck, c.sideA.ack)
assert.Equal(t, uint32(20), c.sideB.nack) assert.Equal(t, sideBinitialAck + uint32(20), c.sideB.nack)
assert.Equal(t, uint32(numPackets), c.sideB.ack) assert.Equal(t, sideBinitialAck + uint32(numPackets), c.sideB.ack)
}) })
}) })
@ -244,11 +253,14 @@ func TestNewReno_Congestion(t *testing.T) {
c.RunSideA(ctx) c.RunSideA(ctx)
c.RunSideB(ctx) c.RunSideB(ctx)
sideAinitialAck := c.sideA.ack
sideBinitialAck := c.sideB.ack
// ACT // ACT
done := make(chan struct{}) done := make(chan struct{})
go func() { go func() {
for i := 0; i < numPackets; i++ { for i := 1; i <= numPackets; i++ {
time.Sleep(1 * time.Millisecond) time.Sleep(1 * time.Millisecond)
seq, _ := c.sideA.Sequence(ctx) seq, _ := c.sideA.Sequence(ctx)
@ -263,7 +275,7 @@ func TestNewReno_Congestion(t *testing.T) {
}() }()
go func() { go func() {
for i := 0; i < numPackets; i++ { for i := 1; i <= numPackets; i++ {
time.Sleep(1 * time.Millisecond) time.Sleep(1 * time.Millisecond)
seq, _ := c.sideB.Sequence(ctx) seq, _ := c.sideB.Sequence(ctx)
@ -285,10 +297,10 @@ func TestNewReno_Congestion(t *testing.T) {
// ASSERT // ASSERT
assert.Equal(t, uint32(0), c.sideA.nack) assert.Equal(t, uint32(0), c.sideA.nack)
assert.Equal(t, uint32(numPackets), c.sideA.ack) assert.Equal(t, sideAinitialAck + uint32(numPackets), c.sideA.ack)
assert.Equal(t, uint32(0), c.sideB.nack) assert.Equal(t, uint32(0), c.sideB.nack)
assert.Equal(t, uint32(numPackets), c.sideB.ack) assert.Equal(t, sideBinitialAck + uint32(numPackets), c.sideB.ack)
}) })
t.Run("SequenceLoss", func(t *testing.T) { t.Run("SequenceLoss", func(t *testing.T) {
@ -304,15 +316,18 @@ func TestNewReno_Congestion(t *testing.T) {
c.RunSideA(ctx) c.RunSideA(ctx)
c.RunSideB(ctx) c.RunSideB(ctx)
sideAinitialAck := c.sideA.ack
sideBinitialAck := c.sideB.ack
// ACT // ACT
done := make(chan struct{}) done := make(chan struct{})
go func() { go func() {
for i := 0; i < numPackets; i++ { for i := 1; i <= numPackets; i++ {
time.Sleep(1 * time.Millisecond) time.Sleep(1 * time.Millisecond)
seq, _ := c.sideA.Sequence(ctx) seq, _ := c.sideA.Sequence(ctx)
if seq == 9 { if i == 9 {
// Simulate packet loss of sequence 9 // Simulate packet loss of sequence 9
continue continue
} }
@ -328,11 +343,11 @@ func TestNewReno_Congestion(t *testing.T) {
}() }()
go func() { go func() {
for i := 0; i < numPackets; i++ { for i := 1; i <= numPackets; i++ {
time.Sleep(1 * time.Millisecond) time.Sleep(1 * time.Millisecond)
seq, _ := c.sideB.Sequence(ctx) seq, _ := c.sideB.Sequence(ctx)
if seq == 13 { if i == 13 {
// Simulate packet loss of sequence 13 // Simulate packet loss of sequence 13
continue continue
} }
@ -354,11 +369,11 @@ func TestNewReno_Congestion(t *testing.T) {
// ASSERT // ASSERT
assert.Equal(t, uint32(13), c.sideA.nack) assert.Equal(t, sideAinitialAck + uint32(13), c.sideA.nack)
assert.Equal(t, uint32(numPackets), c.sideA.ack) assert.Equal(t, sideAinitialAck + uint32(numPackets), c.sideA.ack)
assert.Equal(t, uint32(9), c.sideB.nack) assert.Equal(t, sideBinitialAck + uint32(9), c.sideB.nack)
assert.Equal(t, uint32(numPackets), c.sideB.ack) assert.Equal(t, sideBinitialAck + uint32(numPackets), c.sideB.ack)
}) })
}) })
} }