Skip to content

Commit 03f24f0

Browse files
committed
fix
1 parent 2c41e19 commit 03f24f0

File tree

2 files changed

+42
-25
lines changed

2 files changed

+42
-25
lines changed

Makefile

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,30 @@
11
# Makefile for building pulse examples for macOS, Linux and Windows
2-
.PHONY: all clean mac linux windows examples mac-race linux-race windows-race test test-coverage ci-test lint lint-fix
2+
.PHONY: all clean mac linux windows examples mac-race linux-race windows-race test test-race test-coverage test-race-coverage ci-test lint lint-fix
33

44
# Default target
55
all: examples
66

77
# Test and CI targets
88
test:
99
@echo "Running tests..."
10+
go test -v ./...
11+
12+
test-race:
13+
@echo "Running tests with race detection..."
1014
go test -v -race ./...
1115

1216
test-coverage:
1317
@echo "Running tests with coverage..."
14-
go test -race -coverprofile=coverage.out -covermode=atomic . ./core/...
18+
go test -coverprofile=coverage.out -covermode=atomic . ./core/...
1519
go tool cover -html=coverage.out -o coverage.html
1620
@echo "Coverage report generated: coverage.html"
1721

22+
test-race-coverage:
23+
@echo "Running tests with race detection and coverage..."
24+
go test -race -coverprofile=coverage.out -covermode=atomic . ./core/...
25+
go tool cover -html=coverage.out -o coverage.html
26+
@echo "Coverage report with race detection generated: coverage.html"
27+
1828
ci-test:
1929
@echo "Running CI tests..."
2030
go test -race -coverprofile=coverage.out -covermode=atomic . ./core/...

callback_test.go

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package pulse
33
import (
44
"errors"
55
"fmt"
6+
"log"
67
"net"
78
"sync"
89
"sync/atomic"
@@ -36,27 +37,28 @@ func TestOnOpen_RealSocket(t *testing.T) {
3637
}
3738

3839
addr := listener.Addr().String()
40+
var wg sync.WaitGroup
3941

40-
// 启动服务器
42+
wg.Add(1)
4143
go func() {
44+
defer wg.Done()
4245
conn, err := listener.Accept()
4346
if err != nil {
4447
return
4548
}
4649
defer func() {
4750
if err := conn.Close(); err != nil {
48-
t.Logf("failed to close connection: %v", err)
51+
log.Printf("failed to close connection: %v", err)
4952
}
5053
}()
5154

52-
// 获取文件描述符
5355
fd, err := core.GetFdFromConn(conn)
5456
if err != nil {
5557
t.Errorf("Failed to get fd from conn: %v", err)
5658
return
5759
}
5860
if err := conn.Close(); err != nil { // 关闭原始连接,我们使用fd
59-
t.Logf("failed to close original connection: %v", err)
61+
log.Printf("failed to close original connection: %v", err)
6062
}
6163

6264
// 创建Pulse连接
@@ -79,8 +81,9 @@ func TestOnOpen_RealSocket(t *testing.T) {
7981

8082
cleanup := func() {
8183
if err := listener.Close(); err != nil {
82-
t.Logf("failed to close listener: %v", err)
84+
log.Printf("failed to close listener: %v", err)
8385
}
86+
wg.Wait()
8487
}
8588

8689
return addr, cleanup
@@ -98,15 +101,18 @@ func TestOnOpen_RealSocket(t *testing.T) {
98101
}
99102

100103
addr := listener.Addr().String()
104+
var wg sync.WaitGroup
101105

106+
wg.Add(1)
102107
go func() {
108+
defer wg.Done()
103109
conn, err := listener.Accept()
104110
if err != nil {
105111
return
106112
}
107113
defer func() {
108114
if err := conn.Close(); err != nil {
109-
t.Logf("failed to close connection: %v", err)
115+
log.Printf("failed to close connection: %v", err)
110116
}
111117
}()
112118

@@ -115,7 +121,7 @@ func TestOnOpen_RealSocket(t *testing.T) {
115121
return
116122
}
117123
if err := conn.Close(); err != nil {
118-
t.Logf("failed to close original connection: %v", err)
124+
log.Printf("failed to close original connection: %v", err)
119125
}
120126

121127
safeConns := &safeConns[Conn]{}
@@ -134,8 +140,9 @@ func TestOnOpen_RealSocket(t *testing.T) {
134140

135141
return addr, func() {
136142
if err := listener.Close(); err != nil {
137-
t.Logf("failed to close listener: %v", err)
143+
log.Printf("failed to close listener: %v", err)
138144
}
145+
wg.Wait()
139146
}
140147
},
141148
clientDelay: 50 * time.Millisecond,
@@ -243,7 +250,7 @@ func TestOnClose_RealSocket(t *testing.T) {
243250
// 正常关闭客户端连接
244251
time.Sleep(50 * time.Millisecond)
245252
if err := clientConn.Close(); err != nil {
246-
t.Logf("failed to close client connection: %v", err)
253+
log.Printf("failed to close client connection: %v", err)
247254
}
248255
}, false)
249256
},
@@ -270,7 +277,7 @@ func TestOnClose_RealSocket(t *testing.T) {
270277
return runClientServerTest(t, callback, func(clientConn net.Conn, pulseConn *Conn) {
271278
// 设置短超时
272279
if err := pulseConn.SetDeadline(time.Now().Add(30 * time.Millisecond)); err != nil {
273-
t.Logf("failed to set deadline: %v", err)
280+
log.Printf("failed to set deadline: %v", err)
274281
}
275282
time.Sleep(50 * time.Millisecond) // 等待超时
276283
}, false)
@@ -285,7 +292,7 @@ func TestOnClose_RealSocket(t *testing.T) {
285292
return runClientServerTest(t, callback, func(clientConn net.Conn, pulseConn *Conn) {
286293
// 模拟网络错误(强制关闭)
287294
if err := clientConn.Close(); err != nil {
288-
t.Logf("failed to close client connection: %v", err)
295+
log.Printf("failed to close client connection: %v", err)
289296
}
290297
time.Sleep(10 * time.Millisecond)
291298
}, true) // 传递错误
@@ -379,7 +386,7 @@ func runClientServerTest(t *testing.T, callback Callback, scenario func(net.Conn
379386
}
380387
defer func() {
381388
if err := listener.Close(); err != nil {
382-
t.Logf("failed to close listener: %v", err)
389+
log.Printf("failed to close listener: %v", err)
383390
}
384391
}()
385392

@@ -402,7 +409,7 @@ func runClientServerTest(t *testing.T, callback Callback, scenario func(net.Conn
402409
}
403410
defer func() {
404411
if err := conn.Close(); err != nil {
405-
t.Logf("failed to close connection: %v", err)
412+
log.Printf("failed to close connection: %v", err)
406413
}
407414
}()
408415

@@ -413,7 +420,7 @@ func runClientServerTest(t *testing.T, callback Callback, scenario func(net.Conn
413420
return
414421
}
415422
if err := conn.Close(); err != nil {
416-
t.Logf("failed to close original connection: %v", err)
423+
log.Printf("failed to close original connection: %v", err)
417424
}
418425

419426
safeConns := &safeConns[Conn]{}
@@ -445,7 +452,7 @@ func runClientServerTest(t *testing.T, callback Callback, scenario func(net.Conn
445452
}
446453
defer func() {
447454
if err := clientConn.Close(); err != nil {
448-
t.Logf("failed to close client connection: %v", err)
455+
log.Printf("failed to close client connection: %v", err)
449456
}
450457
}()
451458

@@ -528,7 +535,7 @@ func TestCallback_RealConnectionLifecycle(t *testing.T) {
528535
}
529536
defer func() {
530537
if err := listener.Close(); err != nil {
531-
t.Logf("failed to close listener: %v", err)
538+
log.Printf("failed to close listener: %v", err)
532539
}
533540
}()
534541

@@ -545,7 +552,7 @@ func TestCallback_RealConnectionLifecycle(t *testing.T) {
545552
}
546553
defer func() {
547554
if err := conn.Close(); err != nil {
548-
t.Logf("failed to close connection: %v", err)
555+
log.Printf("failed to close connection: %v", err)
549556
}
550557
}()
551558

@@ -554,7 +561,7 @@ func TestCallback_RealConnectionLifecycle(t *testing.T) {
554561
return
555562
}
556563
if err := conn.Close(); err != nil {
557-
t.Logf("failed to close original connection: %v", err)
564+
log.Printf("failed to close original connection: %v", err)
558565
}
559566

560567
safeConns := &safeConns[Conn]{}
@@ -596,7 +603,7 @@ func TestCallback_RealConnectionLifecycle(t *testing.T) {
596603
}
597604
defer func() {
598605
if err := clientConn.Close(); err != nil {
599-
t.Logf("failed to close client connection: %v", err)
606+
log.Printf("failed to close client connection: %v", err)
600607
}
601608
}()
602609

@@ -668,7 +675,7 @@ func TestCallback_ConcurrentRealConnections(t *testing.T) {
668675
}
669676
defer func() {
670677
if err := listener.Close(); err != nil {
671-
t.Logf("failed to close listener: %v", err)
678+
log.Printf("failed to close listener: %v", err)
672679
}
673680
}()
674681

@@ -691,7 +698,7 @@ func TestCallback_ConcurrentRealConnections(t *testing.T) {
691698
defer wg.Done()
692699
defer func() {
693700
if err := conn.Close(); err != nil {
694-
t.Logf("failed to close connection: %v", err)
701+
log.Printf("failed to close connection: %v", err)
695702
}
696703
}()
697704

@@ -700,7 +707,7 @@ func TestCallback_ConcurrentRealConnections(t *testing.T) {
700707
return
701708
}
702709
if err := conn.Close(); err != nil {
703-
t.Logf("failed to close original connection: %v", err)
710+
log.Printf("failed to close original connection: %v", err)
704711
}
705712

706713
safeConns := &safeConns[Conn]{}
@@ -731,7 +738,7 @@ func TestCallback_ConcurrentRealConnections(t *testing.T) {
731738
}
732739
defer func() {
733740
if err := clientConn.Close(); err != nil {
734-
t.Logf("failed to close client connection: %v", err)
741+
log.Printf("failed to close client connection: %v", err)
735742
}
736743
}()
737744
time.Sleep(100 * time.Millisecond)

0 commit comments

Comments
 (0)