Skip to content

Commit 965e7ec

Browse files
committed
feat: support the new dispatcher with logger
Signed-off-by: Zixuan Liu <nodeces@gmail.com>
1 parent 9c107cb commit 965e7ec

File tree

8 files changed

+45
-40
lines changed

8 files changed

+45
-40
lines changed

dispatcher.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ type HRaftDispatcher struct {
3232

3333
// NewHRaftDispatcher returns a HRaftDispatcher.
3434
func NewHRaftDispatcher(config *Config) (*HRaftDispatcher, error) {
35+
return NewHRaftDispatcherWithLogger(config, zap.NewExample())
36+
}
37+
38+
// NewHRaftDispatcher returns a HRaftDispatcher.
39+
func NewHRaftDispatcherWithLogger(config *Config, logger *zap.Logger) (*HRaftDispatcher, error) {
3540
if config == nil {
3641
return nil, errors.New("config is not provided")
3742
}
@@ -52,7 +57,9 @@ func NewHRaftDispatcher(config *Config) (*HRaftDispatcher, error) {
5257
config.ServerID = config.ListenAddress
5358
}
5459

55-
logger := zap.NewExample()
60+
if logger == nil {
61+
return nil, errors.New("no logger provided")
62+
}
5663

5764
// check ListenAddress is network address
5865
listenAddress, err := net.ResolveTCPAddr("tcp", config.ListenAddress)
@@ -98,7 +105,7 @@ func NewHRaftDispatcher(config *Config) (*HRaftDispatcher, error) {
98105
Enforcer: config.Enforcer,
99106
RaftConfig: config.RaftConfig,
100107
}
101-
s, err := store.NewStore(storeConfig)
108+
s, err := store.NewStore(logger, storeConfig)
102109
if err != nil {
103110
logger.Error(err.Error())
104111
return nil, err
@@ -144,7 +151,7 @@ func NewHRaftDispatcher(config *Config) (*HRaftDispatcher, error) {
144151
logger.Info("the current node has joined to existing cluster")
145152
}
146153

147-
httpService, err := http.NewService(httpLn, config.TLSConfig, s)
154+
httpService, err := http.NewService(logger, httpLn, config.TLSConfig, s)
148155
if err != nil {
149156
return nil, err
150157
}
@@ -185,6 +192,8 @@ func NewHRaftDispatcher(config *Config) (*HRaftDispatcher, error) {
185192
return h, nil
186193
}
187194

195+
//
196+
188197
//AddPolicies implements the persist.Dispatcher interface.
189198
func (h *HRaftDispatcher) AddPolicies(sec string, pType string, rules [][]string) error {
190199
var items []*command.StringArray

http/service.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ type Service struct {
6666
}
6767

6868
// NewService creates a Service.
69-
func NewService(ln net.Listener, tlsConfig *tls.Config, store Store) (*Service, error) {
69+
func NewService(logger *zap.Logger, ln net.Listener, tlsConfig *tls.Config, store Store) (*Service, error) {
7070
if ln == nil {
7171
return nil, errors.New("net.Listener is provided")
7272
}
@@ -87,7 +87,7 @@ func NewService(ln net.Listener, tlsConfig *tls.Config, store Store) (*Service,
8787
}
8888

8989
s := &Service{
90-
logger: zap.NewExample(),
90+
logger: logger,
9191
store: store,
9292
httpClient: httpClient,
9393
ln: ln,

http/service_test.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import (
1313
"testing"
1414
"time"
1515

16+
"go.uber.org/zap"
17+
1618
"github.com/hashicorp/raft"
1719
"github.com/pkg/errors"
1820

@@ -30,7 +32,7 @@ func TestNewService(t *testing.T) {
3032
store := mocks.NewMockStore(ctl)
3133
ln, err := net.Listen("tcp", "127.0.0.1:0")
3234
assert.NoError(t, err)
33-
s, err := NewService(ln, nil, store)
35+
s, err := NewService(zap.NewExample(), ln, nil, store)
3436
assert.NoError(t, err)
3537
assert.NotNil(t, s)
3638
}
@@ -42,7 +44,7 @@ func TestRedirect(t *testing.T) {
4244
store := mocks.NewMockStore(ctl)
4345
ln, err := net.Listen("tcp", "127.0.0.1:0")
4446
assert.NoError(t, err)
45-
s, err := NewService(ln, nil, store)
47+
s, err := NewService(zap.NewExample(), ln, nil, store)
4648
assert.NoError(t, err)
4749

4850
r := httptest.NewRequest(http.MethodPut, "https://127.0.0.1:6971/policies/add", nil)
@@ -58,7 +60,7 @@ func TestNotLeaderError(t *testing.T) {
5860
store := mocks.NewMockStore(ctl)
5961
ln, err := net.Listen("tcp", "127.0.0.1:0")
6062
assert.NoError(t, err)
61-
s, err := NewService(ln, nil, store)
63+
s, err := NewService(zap.NewExample(), ln, nil, store)
6264
assert.NoError(t, err)
6365

6466
w := httptest.NewRecorder()
@@ -89,7 +91,7 @@ func TestAddPolicy(t *testing.T) {
8991

9092
ln, err := tls.Listen("tcp", "127.0.0.1:0", ts.TLS)
9193
assert.NoError(t, err)
92-
s, err := NewService(ln, ts.TLS, store)
94+
s, err := NewService(zap.NewExample(), ln, ts.TLS, store)
9395
assert.NoError(t, err)
9496

9597
err = s.Start()
@@ -126,7 +128,7 @@ func TestRemovePolicy(t *testing.T) {
126128

127129
ln, err := tls.Listen("tcp", "127.0.0.1:0", ts.TLS)
128130
assert.NoError(t, err)
129-
s, err := NewService(ln, ts.TLS, store)
131+
s, err := NewService(zap.NewExample(), ln, ts.TLS, store)
130132
assert.NoError(t, err)
131133

132134
err = s.Start()
@@ -163,7 +165,7 @@ func TestRemoveFilteredPolicy(t *testing.T) {
163165

164166
ln, err := tls.Listen("tcp", "127.0.0.1:0", ts.TLS)
165167
assert.NoError(t, err)
166-
s, err := NewService(ln, ts.TLS, store)
168+
s, err := NewService(zap.NewExample(), ln, ts.TLS, store)
167169
assert.NoError(t, err)
168170

169171
err = s.Start()
@@ -201,7 +203,7 @@ func TestUpdatePolicy(t *testing.T) {
201203

202204
ln, err := tls.Listen("tcp", "127.0.0.1:0", ts.TLS)
203205
assert.NoError(t, err)
204-
s, err := NewService(ln, ts.TLS, store)
206+
s, err := NewService(zap.NewExample(), ln, ts.TLS, store)
205207
assert.NoError(t, err)
206208

207209
err = s.Start()
@@ -239,7 +241,7 @@ func TestClearPolicy(t *testing.T) {
239241

240242
ln, err := tls.Listen("tcp", "127.0.0.1:0", ts.TLS)
241243
assert.NoError(t, err)
242-
s, err := NewService(ln, ts.TLS, store)
244+
s, err := NewService(zap.NewExample(), ln, ts.TLS, store)
243245
assert.NoError(t, err)
244246

245247
err = s.Start()
@@ -269,7 +271,7 @@ func TestJoinNode(t *testing.T) {
269271

270272
ln, err := tls.Listen("tcp", "127.0.0.1:0", ts.TLS)
271273
assert.NoError(t, err)
272-
s, err := NewService(ln, ts.TLS, store)
274+
s, err := NewService(zap.NewExample(), ln, ts.TLS, store)
273275
assert.NoError(t, err)
274276

275277
err = s.Start()
@@ -330,7 +332,7 @@ func TestRemoveNode(t *testing.T) {
330332
assert.NoError(t, err)
331333

332334
<-time.After(3 * time.Second)
333-
s, err := NewService(ln, ts.TLS, store)
335+
s, err := NewService(zap.NewExample(), ln, ts.TLS, store)
334336
assert.NoError(t, err)
335337

336338
err = s.Start()

store/engine.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ type PolicyOperator struct {
3535
}
3636

3737
// NewPolicyOperator returns a PolicyOperator.
38-
func NewPolicyOperator(path string, e casbin.IDistributedEnforcer) (*PolicyOperator, error) {
38+
func NewPolicyOperator(logger *zap.Logger, path string, e casbin.IDistributedEnforcer) (*PolicyOperator, error) {
3939
p := &PolicyOperator{
4040
enforcer: e,
4141
l: &sync.Mutex{},
42-
logger: zap.NewExample(),
42+
logger: logger,
4343
}
4444
dbPath := filepath.Join(path, databaseFilename)
4545
if err := p.openDBFile(dbPath); err != nil {

store/engine_test.go

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import (
77
"path"
88
"testing"
99

10+
"go.uber.org/zap"
11+
1012
"github.com/casbin/hraft-dispatcher/store/mocks"
1113
"github.com/golang/mock/gomock"
1214
"github.com/stretchr/testify/assert"
@@ -24,8 +26,7 @@ func TestPolicyOperator_AddPolicies(t *testing.T) {
2426
assert.NoError(t, err)
2527
defer os.RemoveAll(dir)
2628

27-
e.EXPECT().ClearPolicySelf(nil)
28-
p, err := NewPolicyOperator(dir, e)
29+
p, err := NewPolicyOperator(zap.NewExample(), dir, e)
2930
assert.NoError(t, err)
3031

3132
e.EXPECT().AddPoliciesSelf(nil, "p", "p", [][]string{{"role:admin", "/", "*"}, {"role:user", "/", "GET"}}).Return([][]string{{"role:admin", "/", "*"}, {"role:user", "/", "GET"}}, nil)
@@ -43,8 +44,7 @@ func TestPolicyOperator_RemovePolicies(t *testing.T) {
4344
assert.NoError(t, err)
4445
defer os.RemoveAll(dir)
4546

46-
e.EXPECT().ClearPolicySelf(nil)
47-
p, err := NewPolicyOperator(dir, e)
47+
p, err := NewPolicyOperator(zap.NewExample(), dir, e)
4848
assert.NoError(t, err)
4949

5050
e.EXPECT().RemovePoliciesSelf(nil, "p", "p", [][]string{{"role:admin", "/", "*"}, {"role:user", "/", "GET"}}).Return([][]string{{"role:admin", "/", "*"}, {"role:user", "/", "GET"}}, nil)
@@ -62,8 +62,7 @@ func TestPolicyOperator_RemoveFilteredPolicy(t *testing.T) {
6262
assert.NoError(t, err)
6363
defer os.RemoveAll(dir)
6464

65-
e.EXPECT().ClearPolicySelf(nil)
66-
p, err := NewPolicyOperator(dir, e)
65+
p, err := NewPolicyOperator(zap.NewExample(), dir, e)
6766
assert.NoError(t, err)
6867

6968
e.EXPECT().RemoveFilteredPolicySelf(nil, "p", "p", 0, "role:user").Return([][]string{{"role:user", "/", "GET"}}, nil)
@@ -81,8 +80,7 @@ func TestPolicyOperator_UpdatePolicy(t *testing.T) {
8180
assert.NoError(t, err)
8281
defer os.RemoveAll(dir)
8382

84-
e.EXPECT().ClearPolicySelf(nil)
85-
p, err := NewPolicyOperator(dir, e)
83+
p, err := NewPolicyOperator(zap.NewExample(), dir, e)
8684
assert.NoError(t, err)
8785

8886
e.EXPECT().UpdatePolicySelf(nil, "p", "p", []string{"role:admin", "/", "*"}, []string{"role:admin", "/admin", "*"}).Return(true, nil)
@@ -100,8 +98,7 @@ func TestPolicyOperator_LoadPolicy(t *testing.T) {
10098
assert.NoError(t, err)
10199
defer os.RemoveAll(dir)
102100

103-
e.EXPECT().ClearPolicySelf(nil)
104-
p, err := NewPolicyOperator(dir, e)
101+
p, err := NewPolicyOperator(zap.NewExample(), dir, e)
105102
assert.NoError(t, err)
106103

107104
e.EXPECT().AddPoliciesSelf(nil, "p", "p", [][]string{{"role:admin", "/", "*"}, {"role:user", "/", "GET"}}).Return([][]string{{"role:admin", "/", "*"}, {"role:user", "/", "GET"}}, nil)
@@ -125,8 +122,7 @@ func TestPolicyOperator_Backup_Restore(t *testing.T) {
125122
assert.NoError(t, err)
126123
defer os.RemoveAll(dir)
127124

128-
e.EXPECT().ClearPolicySelf(nil)
129-
p, err := NewPolicyOperator(dir, e)
125+
p, err := NewPolicyOperator(zap.NewExample(), dir, e)
130126
assert.NoError(t, err)
131127

132128
e.EXPECT().AddPoliciesSelf(nil, "p", "p", [][]string{{"role:admin", "/", "*"}, {"role:user", "/", "GET"}}).Return([][]string{{"role:admin", "/", "*"}, {"role:user", "/", "GET"}}, nil)

store/fsm.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ type FSM struct {
2020
}
2121

2222
// NewFSM returns a FSM.
23-
func NewFSM(path string, enforcer casbin.IDistributedEnforcer) (*FSM, error) {
24-
p, err := NewPolicyOperator(path, enforcer)
23+
func NewFSM(logger *zap.Logger, path string, enforcer casbin.IDistributedEnforcer) (*FSM, error) {
24+
p, err := NewPolicyOperator(logger, path, enforcer)
2525
if err != nil {
2626
return nil, err
2727
}
2828

2929
f := &FSM{
30-
logger: zap.NewExample().Named("FSM"),
30+
logger: logger,
3131
policyOperator: p,
3232
}
3333
return f, err

store/store.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,11 @@ type Config struct {
6565
}
6666

6767
// NewStore return a instance of Store.
68-
func NewStore(config *Config) (*Store, error) {
68+
func NewStore(logger *zap.Logger, config *Config) (*Store, error) {
6969
s := &Store{
7070
dataDir: config.Dir,
7171
serverID: config.ID,
72-
logger: zap.NewExample(),
72+
logger: logger,
7373
networkTransportConfig: config.NetworkTransportConfig,
7474
enforcer: config.Enforcer,
7575
raftConfig: config.RaftConfig,
@@ -130,7 +130,7 @@ func (s *Store) Start(enableBootstrap bool) error {
130130
s.stableStore = boltDB
131131
}
132132

133-
fsm, err := NewFSM(s.dataDir, s.enforcer)
133+
fsm, err := NewFSM(s.logger, s.dataDir, s.enforcer)
134134
if err != nil {
135135
s.logger.Error("failed to new fsm", zap.Error(err))
136136
return err

store/store_test.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import (
88
"testing"
99
"time"
1010

11+
"go.uber.org/zap"
12+
1113
"github.com/casbin/casbin/v2"
1214

1315
"github.com/casbin/hraft-dispatcher/command"
@@ -130,8 +132,6 @@ func TestStore_SingleNode(t *testing.T) {
130132

131133
enforcer := mocks.NewMockIDistributedEnforcer(ctl)
132134
raftID := "node-leader"
133-
enforcer.EXPECT().ClearPolicySelf(nil)
134-
135135
raftAddress := GetLocalIP() + ":6790"
136136

137137
store, err := newStore(enforcer, raftID, raftAddress, true)
@@ -254,13 +254,11 @@ func TestStore_MultipleNode(t *testing.T) {
254254
leaderCtl := gomock.NewController(t)
255255
defer leaderCtl.Finish()
256256
leaderEnforcer := mocks.NewMockIDistributedEnforcer(leaderCtl)
257-
leaderEnforcer.EXPECT().ClearPolicySelf(nil)
258257

259258
// mock follower
260259
followerCtl := gomock.NewController(t)
261260
defer followerCtl.Finish()
262261
followerEnforcer := mocks.NewMockIDistributedEnforcer(followerCtl)
263-
followerEnforcer.EXPECT().ClearPolicySelf(nil)
264262

265263
localIP := GetLocalIP()
266264
leaderAddress := localIP + ":6790"
@@ -446,7 +444,7 @@ func newStore(enforcer casbin.IDistributedEnforcer, id string, address string, e
446444
return nil, err
447445
}
448446

449-
store, err := NewStore(&Config{
447+
store, err := NewStore(zap.NewExample(), &Config{
450448
ID: id,
451449
Dir: dir,
452450
NetworkTransportConfig: &raft.NetworkTransportConfig{

0 commit comments

Comments
 (0)