4
4
"testing"
5
5
6
6
"github.com/stretchr/testify/require"
7
+ "google.golang.org/grpc/connectivity"
7
8
8
9
balancerConfig "github.com/ydb-platform/ydb-go-sdk/v3/internal/balancer/config"
9
10
"github.com/ydb-platform/ydb-go-sdk/v3/internal/conn"
@@ -12,57 +13,54 @@ import (
12
13
13
14
func TestPreferLocalDC (t * testing.T ) {
14
15
conns := []conn.Info {
15
- & mock.ConnInfo { EndpointAddrField : "1" , EndpointLocationField : "1" },
16
- & mock.ConnInfo { EndpointAddrField : "2" , ConnState : conn . Online , EndpointLocationField : "2" },
17
- & mock.ConnInfo { EndpointAddrField : "3" , ConnState : conn . Online , EndpointLocationField : "2" },
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 },
18
19
}
19
20
rr := PreferLocalDC (RandomChoice ())
20
- require .False (t , rr .AllowFallback )
21
+ require .False (t , rr .AllowFallback () )
21
22
require .Equal (t , []conn.Info {conns [1 ], conns [2 ]}, applyPreferFilter (balancerConfig.Info {SelfLocation : "2" }, rr , conns ))
22
23
}
23
24
24
25
func TestPreferLocalDCWithFallBack (t * testing.T ) {
25
26
conns := []conn.Info {
26
- & mock.ConnInfo { EndpointAddrField : "1" , EndpointLocationField : "1" },
27
- & mock.ConnInfo { EndpointAddrField : "2" , ConnState : conn . Online , EndpointLocationField : "2" },
28
- & mock.ConnInfo { EndpointAddrField : "3" , ConnState : conn . Online , EndpointLocationField : "2" },
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 },
29
30
}
30
31
rr := PreferLocalDCWithFallBack (RandomChoice ())
31
- require .True (t , rr .AllowFallback )
32
+ require .True (t , rr .AllowFallback () )
32
33
require .Equal (t , []conn.Info {conns [1 ], conns [2 ]}, applyPreferFilter (balancerConfig.Info {SelfLocation : "2" }, rr , conns ))
33
34
}
34
35
35
36
func TestPreferLocations (t * testing.T ) {
36
37
conns := []conn.Info {
37
- & mock.ConnInfo { EndpointAddrField : "1" , EndpointLocationField : "zero" , ConnState : conn . Online },
38
- & mock.ConnInfo { EndpointAddrField : "2" , ConnState : conn . Online , EndpointLocationField : "one" },
39
- & mock.ConnInfo { EndpointAddrField : "3" , ConnState : conn . Online , EndpointLocationField : "two" },
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 },
40
41
}
41
42
42
43
rr := PreferLocations (RandomChoice (), "zero" , "two" )
43
- require .False (t , rr .AllowFallback )
44
+ require .False (t , rr .AllowFallback () )
44
45
require .Equal (t , []conn.Info {conns [0 ], conns [2 ]}, applyPreferFilter (balancerConfig.Info {}, rr , conns ))
45
46
}
46
47
47
48
func TestPreferLocationsWithFallback (t * testing.T ) {
48
49
conns := []conn.Info {
49
- & mock.ConnInfo { EndpointAddrField : "1" , EndpointLocationField : "zero" , ConnState : conn . Online },
50
- & mock.ConnInfo { EndpointAddrField : "2" , ConnState : conn . Online , EndpointLocationField : "one" },
51
- & mock.ConnInfo { EndpointAddrField : "3" , ConnState : conn . Online , EndpointLocationField : "two" },
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 },
52
53
}
53
54
54
55
rr := PreferLocationsWithFallback (RandomChoice (), "zero" , "two" )
55
- require .True (t , rr .AllowFallback )
56
+ require .True (t , rr .AllowFallback () )
56
57
require .Equal (t , []conn.Info {conns [0 ], conns [2 ]}, applyPreferFilter (balancerConfig.Info {}, rr , conns ))
57
58
}
58
59
59
60
func applyPreferFilter (info balancerConfig.Info , b * balancerConfig.Config , conns []conn.Info ) []conn.Info {
60
- if b .Filter == nil {
61
- b .Filter = filterFunc (func (info balancerConfig.Info , c conn.Info ) bool { return true })
62
- }
63
61
res := make ([]conn.Info , 0 , len (conns ))
64
62
for _ , c := range conns {
65
- if b .Filter .Allow (info , c ) {
63
+ if b .Filter () .Allow (info , c ) {
66
64
res = append (res , c )
67
65
}
68
66
}
0 commit comments