...
1
18
19 package manual_test
20
21 import (
22 "errors"
23 "testing"
24
25 "google.golang.org/grpc"
26 "google.golang.org/grpc/credentials/insecure"
27 "google.golang.org/grpc/resolver"
28 "google.golang.org/grpc/resolver/manual"
29 )
30
31 func TestResolver(t *testing.T) {
32 r := manual.NewBuilderWithScheme("whatever")
33 r.InitialState(resolver.State{
34 Addresses: []resolver.Address{
35 {Addr: "address"},
36 },
37 })
38
39 t.Run("update_state_panics", func(t *testing.T) {
40 defer func() {
41 want := "cannot update state as grpc.Dial with resolver has not been called"
42 if r := recover(); r != want {
43 t.Errorf("expected panic %q, got %q", want, r)
44 }
45 }()
46 r.UpdateState(resolver.State{Addresses: []resolver.Address{
47 {Addr: "address"},
48 {Addr: "anotheraddress"},
49 }})
50 })
51 t.Run("report_error_panics", func(t *testing.T) {
52 defer func() {
53 want := "cannot report error as grpc.Dial with resolver has not been called"
54 if r := recover(); r != want {
55 t.Errorf("expected panic %q, got %q", want, r)
56 }
57 }()
58 r.ReportError(errors.New("example"))
59 })
60
61 t.Run("happy_path", func(t *testing.T) {
62 _, err := grpc.Dial("whatever://localhost",
63 grpc.WithTransportCredentials(insecure.NewCredentials()),
64 grpc.WithResolvers(r))
65 if err != nil {
66 t.Errorf("dial setup error: %v", err)
67 }
68 r.UpdateState(resolver.State{Addresses: []resolver.Address{
69 {Addr: "ok"},
70 }})
71 r.ReportError(errors.New("example"))
72 })
73 }
74
View as plain text