...
1 package etcdv3
2
3 import (
4 "bytes"
5 "errors"
6 "testing"
7
8 "github.com/go-kit/log"
9 )
10
11
12 type testClient struct {
13 registerRes error
14 }
15
16 func (tc *testClient) GetEntries(prefix string) ([]string, error) {
17 return nil, nil
18 }
19
20 func (tc *testClient) WatchPrefix(prefix string, ch chan struct{}) {
21 }
22
23 func (tc *testClient) Register(s Service) error {
24 return tc.registerRes
25 }
26
27 func (tc *testClient) Deregister(s Service) error {
28 return tc.registerRes
29 }
30
31 func (tc *testClient) LeaseID() int64 {
32 return 0
33 }
34
35
36 var testService = Service{
37 Key: "testKey",
38 Value: "testValue",
39 TTL: nil,
40 }
41
42
43 func TestNewRegistar(t *testing.T) {
44 c := Client(&testClient{nil})
45 buf := &bytes.Buffer{}
46 logger := log.NewLogfmtLogger(buf)
47 r := NewRegistrar(
48 c,
49 testService,
50 logger,
51 )
52
53 if err := r.logger.Log("msg", "message"); err != nil {
54 t.Fatal(err)
55 }
56 if want, have := "key=testKey value=testValue msg=message\n", buf.String(); want != have {
57 t.Errorf("\nwant: %shave: %s", want, have)
58 }
59 }
60
61 func TestRegister(t *testing.T) {
62
63
64 var registerTestTable = []struct {
65 registerRes error
66 log string
67
68 }{
69
70 {errors.New("regError"), "key=testKey value=testValue err=regError\n"},
71
72 {nil, "key=testKey value=testValue action=register\n"},
73 }
74
75 for _, tc := range registerTestTable {
76 c := Client(&testClient{tc.registerRes})
77 buf := &bytes.Buffer{}
78 logger := log.NewLogfmtLogger(buf)
79 r := NewRegistrar(
80 c,
81 testService,
82 logger,
83 )
84 r.Register()
85 if want, have := tc.log, buf.String(); want != have {
86 t.Fatalf("want %v, have %v", want, have)
87 }
88 }
89 }
90
91 func TestDeregister(t *testing.T) {
92
93
94 var deregisterTestTable = []struct {
95 deregisterRes error
96 log string
97 }{
98
99 {errors.New("deregError"), "key=testKey value=testValue err=deregError\n"},
100
101 {nil, "key=testKey value=testValue action=deregister\n"},
102 }
103
104 for _, tc := range deregisterTestTable {
105 c := Client(&testClient{tc.deregisterRes})
106 buf := &bytes.Buffer{}
107 logger := log.NewLogfmtLogger(buf)
108 r := NewRegistrar(
109 c,
110 testService,
111 logger,
112 )
113 r.Deregister()
114 if want, have := tc.log, buf.String(); want != have {
115 t.Fatalf("want %v, have %v", want, have)
116 }
117 }
118 }
119
View as plain text