@@ -4,65 +4,63 @@ import (
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"
10
11
"github.com/ydb-platform/ydb-go-sdk/v3/internal/mock"
11
12
)
12
13
13
14
func 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 },
18
19
}
19
20
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 ))
22
23
}
23
24
24
25
func 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 },
29
30
}
30
31
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 ))
33
34
}
34
35
35
36
func 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 },
40
41
}
41
42
42
43
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 ))
45
46
}
46
47
47
48
func 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 },
52
53
}
53
54
54
55
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 ))
57
58
}
58
59
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 ))
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