@@ -25,21 +25,35 @@ import (
2525 "google.golang.org/grpc/test/bufconn"
2626)
2727
28- func TestDefaultPool_AcquireCreatesConnection (t * testing.T ) {
29- pool := NewDefaultGRPCConnectionPool (1 * time .Minute )
30- defer pool .Close ()
31-
32- // Start a local gRPC server
28+ func newBufconnServer (t * testing.T ) (* grpc.Server , * bufconn.Listener , func ()) {
29+ t .Helper ()
3330 lis := bufconn .Listen (1024 * 1024 )
3431 srv := grpc .NewServer ()
35- go srv .Serve (lis )
36- defer srv .Stop ()
32+ go func () { _ = srv .Serve (lis ) }()
33+ return srv , lis , func () { srv .Stop () }
34+ }
3735
38- dialer := func (context.Context , string ) (net.Conn , error ) {
36+ func bufconnDialer (lis * bufconn.Listener ) func (context.Context , string ) (net.Conn , error ) {
37+ return func (context.Context , string ) (net.Conn , error ) {
3938 return lis .Dial ()
4039 }
40+ }
41+
42+ func bufconnOpts (lis * bufconn.Listener ) []grpc.DialOption {
43+ return []grpc.DialOption {
44+ grpc .WithContextDialer (bufconnDialer (lis )),
45+ grpc .WithTransportCredentials (insecure .NewCredentials ()),
46+ }
47+ }
48+
49+ func TestDefaultPool_AcquireCreatesConnection (t * testing.T ) {
50+ pool := NewDefaultGRPCConnectionPool (1 * time .Minute )
51+ defer func () { _ = pool .Close () }()
52+
53+ _ , lis , stop := newBufconnServer (t )
54+ defer stop ()
4155
42- conn , err := pool .Acquire (context .Background (), "bufnet" , grpc . WithContextDialer ( dialer ), grpc . WithTransportCredentials ( insecure . NewCredentials ()) )
56+ conn , err := pool .Acquire (context .Background (), "bufnet" , bufconnOpts ( lis ) ... )
4357 if err != nil {
4458 t .Fatalf ("Acquire failed: %v" , err )
4559 }
@@ -54,30 +68,22 @@ func TestDefaultPool_AcquireCreatesConnection(t *testing.T) {
5468
5569func TestDefaultPool_ReusesConnection (t * testing.T ) {
5670 pool := NewDefaultGRPCConnectionPool (1 * time .Minute )
57- defer pool .Close ()
58-
59- lis := bufconn .Listen (1024 * 1024 )
60- srv := grpc .NewServer ()
61- go srv .Serve (lis )
62- defer srv .Stop ()
71+ defer func () { _ = pool .Close () }()
6372
64- dialer := func (context.Context , string ) (net.Conn , error ) {
65- return lis .Dial ()
66- }
67- opts := []grpc.DialOption {grpc .WithContextDialer (dialer ), grpc .WithTransportCredentials (insecure .NewCredentials ())}
73+ _ , lis , stop := newBufconnServer (t )
74+ defer stop ()
6875
69- conn1 , err := pool .Acquire (context .Background (), "bufnet" , opts ... )
76+ conn1 , err := pool .Acquire (context .Background (), "bufnet" , bufconnOpts ( lis ) ... )
7077 if err != nil {
7178 t .Fatalf ("Acquire 1 failed: %v" , err )
7279 }
73- pool .Release (conn1 )
80+ _ = pool .Release (conn1 )
7481
75- conn2 , err := pool .Acquire (context .Background (), "bufnet" , opts ... )
82+ conn2 , err := pool .Acquire (context .Background (), "bufnet" , bufconnOpts ( lis ) ... )
7683 if err != nil {
7784 t .Fatalf ("Acquire 2 failed: %v" , err )
7885 }
7986
80- // Same underlying connection should be reused
8187 if conn1 != conn2 {
8288 t .Fatal ("expected same connection to be reused" )
8389 }
@@ -89,29 +95,23 @@ func TestDefaultPool_ReusesConnection(t *testing.T) {
8995
9096func TestDefaultPool_DifferentURLs (t * testing.T ) {
9197 pool := NewDefaultGRPCConnectionPool (1 * time .Minute )
92- defer pool .Close ()
98+ defer func () { _ = pool .Close () } ()
9399
94- lis := bufconn .Listen (1024 * 1024 )
95- srv := grpc .NewServer ()
96- go srv .Serve (lis )
97- defer srv .Stop ()
98-
99- dialer := func (context.Context , string ) (net.Conn , error ) {
100- return lis .Dial ()
101- }
102- opts := []grpc.DialOption {grpc .WithContextDialer (dialer ), grpc .WithTransportCredentials (insecure .NewCredentials ())}
100+ _ , lis , stop := newBufconnServer (t )
101+ defer stop ()
102+ opts := bufconnOpts (lis )
103103
104104 conn1 , err := pool .Acquire (context .Background (), "agent-a" , opts ... )
105105 if err != nil {
106106 t .Fatalf ("Acquire agent-a failed: %v" , err )
107107 }
108- defer pool .Release (conn1 )
108+ defer func () { _ = pool .Release (conn1 ) }( )
109109
110110 conn2 , err := pool .Acquire (context .Background (), "agent-b" , opts ... )
111111 if err != nil {
112112 t .Fatalf ("Acquire agent-b failed: %v" , err )
113113 }
114- defer pool .Release (conn2 )
114+ defer func () { _ = pool .Release (conn2 ) }( )
115115
116116 if conn1 == conn2 {
117117 t .Fatal ("different URLs should not reuse the same connection" )
@@ -124,31 +124,24 @@ func TestDefaultPool_DifferentURLs(t *testing.T) {
124124
125125func TestDefaultPool_TTLEviction (t * testing.T ) {
126126 pool := NewDefaultGRPCConnectionPool (50 * time .Millisecond )
127- defer pool .Close ()
128-
129- lis := bufconn .Listen (1024 * 1024 )
130- srv := grpc .NewServer ()
131- go srv .Serve (lis )
132- defer srv .Stop ()
127+ defer func () { _ = pool .Close () }()
133128
134- dialer := func (context.Context , string ) (net.Conn , error ) {
135- return lis .Dial ()
136- }
137- opts := []grpc.DialOption {grpc .WithContextDialer (dialer ), grpc .WithTransportCredentials (insecure .NewCredentials ())}
129+ _ , lis , stop := newBufconnServer (t )
130+ defer stop ()
131+ opts := bufconnOpts (lis )
138132
139133 conn1 , err := pool .Acquire (context .Background (), "bufnet" , opts ... )
140134 if err != nil {
141135 t .Fatalf ("Acquire failed: %v" , err )
142136 }
143- pool .Release (conn1 )
137+ _ = pool .Release (conn1 )
144138
145139 if n := pool .Len (); n != 1 {
146140 t .Fatalf ("expected 1 pooled connection before TTL, got %d" , n )
147141 }
148142
149143 time .Sleep (100 * time .Millisecond )
150144
151- // Next Acquire should evict the expired connection and create a new one
152145 conn2 , err := pool .Acquire (context .Background (), "bufnet" , opts ... )
153146 if err != nil {
154147 t .Fatalf ("Acquire after TTL failed: %v" , err )
@@ -165,23 +158,17 @@ func TestDefaultPool_TTLEviction(t *testing.T) {
165158
166159func TestDefaultPool_ZeroTTLNeverEvicts (t * testing.T ) {
167160 pool := NewDefaultGRPCConnectionPool (0 )
168- defer pool .Close ()
161+ defer func () { _ = pool .Close () } ()
169162
170- lis := bufconn .Listen (1024 * 1024 )
171- srv := grpc .NewServer ()
172- go srv .Serve (lis )
173- defer srv .Stop ()
174-
175- dialer := func (context.Context , string ) (net.Conn , error ) {
176- return lis .Dial ()
177- }
178- opts := []grpc.DialOption {grpc .WithContextDialer (dialer ), grpc .WithTransportCredentials (insecure .NewCredentials ())}
163+ _ , lis , stop := newBufconnServer (t )
164+ defer stop ()
165+ opts := bufconnOpts (lis )
179166
180167 conn1 , err := pool .Acquire (context .Background (), "bufnet" , opts ... )
181168 if err != nil {
182169 t .Fatalf ("Acquire failed: %v" , err )
183170 }
184- pool .Release (conn1 )
171+ _ = pool .Release (conn1 )
185172
186173 time .Sleep (50 * time .Millisecond )
187174
@@ -197,24 +184,16 @@ func TestDefaultPool_ZeroTTLNeverEvicts(t *testing.T) {
197184
198185func TestDefaultPool_Release (t * testing.T ) {
199186 pool := NewDefaultGRPCConnectionPool (1 * time .Minute )
200- defer pool .Close ()
187+ defer func () { _ = pool .Close () } ()
201188
202- lis := bufconn .Listen (1024 * 1024 )
203- srv := grpc .NewServer ()
204- go srv .Serve (lis )
205- defer srv .Stop ()
206-
207- dialer := func (context.Context , string ) (net.Conn , error ) {
208- return lis .Dial ()
209- }
210- opts := []grpc.DialOption {grpc .WithContextDialer (dialer ), grpc .WithTransportCredentials (insecure .NewCredentials ())}
189+ _ , lis , stop := newBufconnServer (t )
190+ defer stop ()
211191
212- conn , err := pool .Acquire (context .Background (), "bufnet" , opts ... )
192+ conn , err := pool .Acquire (context .Background (), "bufnet" , bufconnOpts ( lis ) ... )
213193 if err != nil {
214194 t .Fatalf ("Acquire failed: %v" , err )
215195 }
216196
217- // Release should succeed even for a connection not in the map (e.g., externally provided)
218197 if err := pool .Release (conn ); err != nil {
219198 t .Fatalf ("Release failed: %v" , err )
220199 }
0 commit comments