@@ -4,65 +4,63 @@ import (
44 "testing"
55
66 "github.com/stretchr/testify/require"
7+ "google.golang.org/grpc/connectivity"
78
89 balancerConfig "github.com/ydb-platform/ydb-go-sdk/v3/internal/balancer/config"
910 "github.com/ydb-platform/ydb-go-sdk/v3/internal/conn"
1011 "github.com/ydb-platform/ydb-go-sdk/v3/internal/mock"
1112)
1213
1314func TestPreferLocalDC (t * testing.T ) {
14- conns := []conn.Conn {
15- & mock.Conn {AddrField : "1" , LocationField : "1" },
16- & mock.Conn {AddrField : "2" , State : conn . Online , LocationField : "2" },
17- & mock.Conn {AddrField : "3" , State : conn . Online , LocationField : "2" },
15+ conns := []conn.Info {
16+ & mock.Conn {EndpointField : & mock. Endpoint { AddressField : "1" , LocationField : "1" } },
17+ & mock.Conn {EndpointField : & mock. Endpoint { AddressField : "2" , LocationField : "2" }, StateField : connectivity . Ready },
18+ & mock.Conn {EndpointField : & mock. Endpoint { AddressField : "3" , LocationField : "2" }, StateField : connectivity . Ready },
1819 }
1920 rr := PreferLocalDC (RandomChoice ())
20- require .False (t , rr .AllowFallback )
21- require .Equal (t , []conn.Conn {conns [1 ], conns [2 ]}, applyPreferFilter (balancerConfig.Info {SelfLocation : "2" }, rr , conns ))
21+ require .False (t , rr .AllowFallback () )
22+ require .Equal (t , []conn.Info {conns [1 ], conns [2 ]}, applyPreferFilter (balancerConfig.Info {SelfLocation : "2" }, rr , conns ))
2223}
2324
2425func TestPreferLocalDCWithFallBack (t * testing.T ) {
25- conns := []conn.Conn {
26- & mock.Conn {AddrField : "1" , LocationField : "1" },
27- & mock.Conn {AddrField : "2" , State : conn . Online , LocationField : "2" },
28- & mock.Conn {AddrField : "3" , State : conn . Online , LocationField : "2" },
26+ conns := []conn.Info {
27+ & mock.Conn {EndpointField : & mock. Endpoint { AddressField : "1" , LocationField : "1" } },
28+ & mock.Conn {EndpointField : & mock. Endpoint { AddressField : "2" , LocationField : "2" }, StateField : connectivity . Ready },
29+ & mock.Conn {EndpointField : & mock. Endpoint { AddressField : "3" , LocationField : "2" }, StateField : connectivity . Ready },
2930 }
3031 rr := PreferLocalDCWithFallBack (RandomChoice ())
31- require .True (t , rr .AllowFallback )
32- require .Equal (t , []conn.Conn {conns [1 ], conns [2 ]}, applyPreferFilter (balancerConfig.Info {SelfLocation : "2" }, rr , conns ))
32+ require .True (t , rr .AllowFallback () )
33+ require .Equal (t , []conn.Info {conns [1 ], conns [2 ]}, applyPreferFilter (balancerConfig.Info {SelfLocation : "2" }, rr , conns ))
3334}
3435
3536func TestPreferLocations (t * testing.T ) {
36- conns := []conn.Conn {
37- & mock.Conn {AddrField : "1" , LocationField : "zero" , State : conn . Online },
38- & mock.Conn {AddrField : "2" , State : conn . Online , LocationField : "one" },
39- & mock.Conn {AddrField : "3" , State : conn . Online , LocationField : "two" },
37+ conns := []conn.Info {
38+ & mock.Conn {EndpointField : & mock. Endpoint { AddressField : "1" , LocationField : "zero" }, StateField : connectivity . Ready },
39+ & mock.Conn {EndpointField : & mock. Endpoint { AddressField : "2" , LocationField : "one" }, StateField : connectivity . Ready },
40+ & mock.Conn {EndpointField : & mock. Endpoint { AddressField : "3" , LocationField : "two" }, StateField : connectivity . Ready },
4041 }
4142
4243 rr := PreferLocations (RandomChoice (), "zero" , "two" )
43- require .False (t , rr .AllowFallback )
44- require .Equal (t , []conn.Conn {conns [0 ], conns [2 ]}, applyPreferFilter (balancerConfig.Info {}, rr , conns ))
44+ require .False (t , rr .AllowFallback () )
45+ require .Equal (t , []conn.Info {conns [0 ], conns [2 ]}, applyPreferFilter (balancerConfig.Info {}, rr , conns ))
4546}
4647
4748func TestPreferLocationsWithFallback (t * testing.T ) {
48- conns := []conn.Conn {
49- & mock.Conn {AddrField : "1" , LocationField : "zero" , State : conn . Online },
50- & mock.Conn {AddrField : "2" , State : conn . Online , LocationField : "one" },
51- & mock.Conn {AddrField : "3" , State : conn . Online , LocationField : "two" },
49+ conns := []conn.Info {
50+ & mock.Conn {EndpointField : & mock. Endpoint { AddressField : "1" , LocationField : "zero" }, StateField : connectivity . Ready },
51+ & mock.Conn {EndpointField : & mock. Endpoint { AddressField : "2" , LocationField : "one" }, StateField : connectivity . Ready },
52+ & mock.Conn {EndpointField : & mock. Endpoint { AddressField : "3" , LocationField : "two" }, StateField : connectivity . Ready },
5253 }
5354
5455 rr := PreferLocationsWithFallback (RandomChoice (), "zero" , "two" )
55- require .True (t , rr .AllowFallback )
56- require .Equal (t , []conn.Conn {conns [0 ], conns [2 ]}, applyPreferFilter (balancerConfig.Info {}, rr , conns ))
56+ require .True (t , rr .AllowFallback () )
57+ require .Equal (t , []conn.Info {conns [0 ], conns [2 ]}, applyPreferFilter (balancerConfig.Info {}, rr , conns ))
5758}
5859
59- func applyPreferFilter (info balancerConfig.Info , b * balancerConfig.Config , conns []conn.Conn ) []conn.Conn {
60- if b .Filter == nil {
61- b .Filter = filterFunc (func (info balancerConfig.Info , c conn.Conn ) bool { return true })
62- }
63- res := make ([]conn.Conn , 0 , len (conns ))
60+ func applyPreferFilter (info balancerConfig.Info , b * balancerConfig.Config , conns []conn.Info ) []conn.Info {
61+ res := make ([]conn.Info , 0 , len (conns ))
6462 for _ , c := range conns {
65- if b .Filter .Allow (info , c ) {
63+ if b .Filter () .Allow (info , c ) {
6664 res = append (res , c )
6765 }
6866 }
0 commit comments