Skip to content

Commit 49fbf6b

Browse files
committed
chore: make unit test more stable
1 parent 129d68a commit 49fbf6b

6 files changed

+36
-63
lines changed

connection_reactor.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ func (c *connection) rw2r() {
147147
case opreadwrite:
148148
c.operator.Control(PollRW2R)
149149
case opwrite:
150-
c.operator.Control(PollW2RW)
150+
c.operator.Control(PollW2Hup)
151151
}
152152
c.triggerWrite(nil)
153153
}

connection_test.go

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -499,18 +499,15 @@ func TestConnDetach(t *testing.T) {
499499
func TestParallelShortConnection(t *testing.T) {
500500
ln, err := createTestListener("tcp", ":12345")
501501
MustNil(t, err)
502-
defer ln.Close()
503-
504502
var received int64
505503
el, err := NewEventLoop(func(ctx context.Context, connection Connection) error {
506504
data, err := connection.Reader().Next(connection.Reader().Len())
507-
if err != nil {
508-
return err
509-
}
505+
Assert(t, err == nil || errors.Is(err, ErrEOF))
510506
atomic.AddInt64(&received, int64(len(data)))
511-
//t.Logf("conn[%s] received: %d, active: %v", connection.RemoteAddr(), len(data), connection.IsActive())
507+
t.Logf("conn[%s] received: %d, active: %v", connection.RemoteAddr(), len(data), connection.IsActive())
512508
return nil
513509
})
510+
defer el.Shutdown(context.Background())
514511
go func() {
515512
el.Serve(ln)
516513
}()
@@ -536,10 +533,11 @@ func TestParallelShortConnection(t *testing.T) {
536533
}
537534
wg.Wait()
538535

539-
for atomic.LoadInt64(&received) < int64(totalSize) {
540-
t.Logf("received: %d, except: %d", atomic.LoadInt64(&received), totalSize)
536+
start := time.Now()
537+
for atomic.LoadInt64(&received) < int64(totalSize) && time.Now().Sub(start) < time.Second {
541538
time.Sleep(time.Millisecond * 100)
542539
}
540+
Equal(t, atomic.LoadInt64(&received), int64(totalSize))
543541
}
544542

545543
func TestConnectionServerClose(t *testing.T) {
@@ -643,8 +641,6 @@ func TestConnectionServerClose(t *testing.T) {
643641
func TestConnectionDailTimeoutAndClose(t *testing.T) {
644642
ln, err := createTestListener("tcp", ":12345")
645643
MustNil(t, err)
646-
defer ln.Close()
647-
648644
el, err := NewEventLoop(
649645
func(ctx context.Context, connection Connection) error {
650646
_, err = connection.Reader().Next(connection.Reader().Len())
@@ -668,7 +664,7 @@ func TestConnectionDailTimeoutAndClose(t *testing.T) {
668664
go func() {
669665
defer wg.Done()
670666
conn, err := DialConnection("tcp", ":12345", time.Nanosecond)
671-
Assert(t, err == nil || strings.Contains(err.Error(), "i/o timeout"))
667+
Assert(t, err == nil || strings.Contains(err.Error(), "i/o timeout"), err)
672668
_ = conn
673669
}()
674670
}

mux/shard_queue_test.go

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -19,35 +19,33 @@ package mux
1919

2020
import (
2121
"net"
22+
"sync"
2223
"testing"
2324
"time"
2425

2526
"github.com/cloudwego/netpoll"
2627
)
2728

2829
func TestShardQueue(t *testing.T) {
29-
var svrConn net.Conn
3030
accepted := make(chan struct{})
3131

3232
network, address := "tcp", ":18888"
3333
ln, err := net.Listen("tcp", ":18888")
3434
MustNil(t, err)
35-
stop := make(chan int, 1)
36-
defer close(stop)
35+
count, pkgsize := 16, 11
36+
var wg sync.WaitGroup
37+
wg.Add(1)
3738
go func() {
38-
var err error
39-
for {
40-
select {
41-
case <-stop:
42-
err = ln.Close()
43-
MustNil(t, err)
44-
return
45-
default:
46-
}
47-
svrConn, err = ln.Accept()
48-
MustNil(t, err)
49-
accepted <- struct{}{}
50-
}
39+
defer wg.Done()
40+
svrConn, err := ln.Accept()
41+
MustNil(t, err)
42+
accepted <- struct{}{}
43+
44+
total := count * pkgsize
45+
recv := make([]byte, total)
46+
rn, err := svrConn.Read(recv)
47+
MustNil(t, err)
48+
Equal(t, rn, total)
5149
}()
5250

5351
conn, err := netpoll.DialConnection(network, address, time.Second)
@@ -56,8 +54,7 @@ func TestShardQueue(t *testing.T) {
5654

5755
// test
5856
queue := NewShardQueue(4, conn)
59-
count, pkgsize := 16, 11
60-
for i := 0; i < int(count); i++ {
57+
for i := 0; i < count; i++ {
6158
var getter WriterGetter = func() (buf netpoll.Writer, isNil bool) {
6259
buf = netpoll.NewLinkBuffer(pkgsize)
6360
buf.Malloc(pkgsize)
@@ -68,14 +65,8 @@ func TestShardQueue(t *testing.T) {
6865

6966
err = queue.Close()
7067
MustNil(t, err)
71-
total := count * pkgsize
72-
recv := make([]byte, total)
73-
rn, err := svrConn.Read(recv)
74-
MustNil(t, err)
75-
Equal(t, rn, total)
76-
}
7768

78-
// TODO: need mock flush
79-
func BenchmarkShardQueue(b *testing.B) {
80-
b.Skip()
69+
wg.Wait()
70+
err = ln.Close()
71+
MustNil(t, err)
8172
}

net_dialer_test.go

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,18 +38,8 @@ func TestDialerTCP(t *testing.T) {
3838
ln, err := CreateListener("tcp", ":1234")
3939
MustNil(t, err)
4040

41-
stop := make(chan int, 1)
42-
defer close(stop)
43-
4441
go func() {
4542
for {
46-
select {
47-
case <-stop:
48-
err := ln.Close()
49-
MustNil(t, err)
50-
return
51-
default:
52-
}
5343
conn, err := ln.Accept()
5444
if conn == nil && err == nil {
5545
continue
@@ -61,6 +51,9 @@ func TestDialerTCP(t *testing.T) {
6151
MustNil(t, err)
6252
MustTrue(t, strings.HasPrefix(conn.LocalAddr().String(), "127.0.0.1:"))
6353
Equal(t, conn.RemoteAddr().String(), "127.0.0.1:1234")
54+
55+
err = ln.Close()
56+
MustNil(t, err)
6457
}
6558

6659
func TestDialerUnix(t *testing.T) {

net_polldesc_test.go

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,8 @@ func TestZeroTimer(t *testing.T) {
2929
func TestRuntimePoll(t *testing.T) {
3030
ln, err := CreateListener("tcp", ":1234")
3131
MustNil(t, err)
32-
33-
stop := make(chan int, 1)
34-
defer close(stop)
35-
3632
go func() {
3733
for {
38-
select {
39-
case <-stop:
40-
err := ln.Close()
41-
MustNil(t, err)
42-
return
43-
default:
44-
}
4534
conn, err := ln.Accept()
4635
if conn == nil && err == nil {
4736
continue
@@ -54,4 +43,7 @@ func TestRuntimePoll(t *testing.T) {
5443
MustNil(t, err)
5544
conn.Close()
5645
}
46+
47+
err = ln.Close()
48+
MustNil(t, err)
5749
}

poll.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,11 @@ const (
6666
// PollRW2W is used to remove the readable monitor of FDOperator.
6767
PollRW2W PollEvent = 0x6
6868
// PollW2RW is used to add the readable monitor of FDOperator, generally used with PollRW2W.
69-
PollW2RW PollEvent = 0x7
69+
PollW2RW PollEvent = 0x7
70+
PollW2Hup PollEvent = 0x8
7071

7172
// PollR2Hup is used to remove the readable monitor of FDOperator.
72-
PollR2Hup PollEvent = 0x8
73+
PollR2Hup PollEvent = 0x9
7374
// PollHup2R is used to add the readable monitor of FDOperator, generally used with PollR2Hup.
74-
PollHup2R PollEvent = 0x9
75+
PollHup2R PollEvent = 0x10
7576
)

0 commit comments

Comments
 (0)