Skip to content

Commit 56c1f60

Browse files
committed
fixed conflicts util/atomic.go
2 parents 9c5e1ed + 8a6098c commit 56c1f60

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+582
-174
lines changed

adapter/echo/middleware_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ func initSentinel(t *testing.T) {
2121
_, err = flow.LoadRules([]*flow.Rule{
2222
{
2323
Resource: "GET:/ping",
24-
Threshold: 1,
24+
Threshold: 1.0,
2525
TokenCalculateStrategy: flow.Direct,
2626
ControlBehavior: flow.Reject,
2727
StatIntervalInMs: 1000,
2828
},
2929
{
3030
Resource: "/api/:uid",
31-
Threshold: 0,
31+
Threshold: 0.0,
3232
TokenCalculateStrategy: flow.Direct,
3333
ControlBehavior: flow.Reject,
3434
StatIntervalInMs: 1000,

adapter/gin/middleware_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ func initSentinel(t *testing.T) {
2121
_, err = flow.LoadRules([]*flow.Rule{
2222
{
2323
Resource: "GET:/ping",
24-
Threshold: 1,
24+
Threshold: 1.0,
2525
TokenCalculateStrategy: flow.Direct,
2626
ControlBehavior: flow.Reject,
2727
StatIntervalInMs: 1000,
2828
},
2929
{
3030
Resource: "/api/users/:id",
31-
Threshold: 0,
31+
Threshold: 0.0,
3232
TokenCalculateStrategy: flow.Direct,
3333
ControlBehavior: flow.Reject,
3434
StatIntervalInMs: 1000,

adapter/grpc/client_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func TestUnaryClientIntercept(t *testing.T) {
2626
var _, err = flow.LoadRules([]*flow.Rule{
2727
{
2828
Resource: "client:" + method,
29-
Threshold: 1,
29+
Threshold: 1.0,
3030
TokenCalculateStrategy: flow.Direct,
3131
ControlBehavior: flow.Reject,
3232
},
@@ -44,7 +44,7 @@ func TestUnaryClientIntercept(t *testing.T) {
4444
var _, err = flow.LoadRules([]*flow.Rule{
4545
{
4646
Resource: "client:" + method,
47-
Threshold: 0,
47+
Threshold: 0.0,
4848
TokenCalculateStrategy: flow.Direct,
4949
ControlBehavior: flow.Reject,
5050
},
@@ -70,7 +70,7 @@ func TestStreamClientIntercept(t *testing.T) {
7070
var _, err = flow.LoadRules([]*flow.Rule{
7171
{
7272
Resource: "client:/grpc.testing.TestService/StreamingOutputCall",
73-
Threshold: 1,
73+
Threshold: 1.0,
7474
TokenCalculateStrategy: flow.Direct,
7575
ControlBehavior: flow.Reject,
7676
},
@@ -90,7 +90,7 @@ func TestStreamClientIntercept(t *testing.T) {
9090
var _, err = flow.LoadRules([]*flow.Rule{
9191
{
9292
Resource: "client:/grpc.testing.TestService/StreamingOutputCall",
93-
Threshold: 0,
93+
Threshold: 0.0,
9494
TokenCalculateStrategy: flow.Direct,
9595
ControlBehavior: flow.Reject,
9696
},

adapter/grpc/server_test.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"github.com/alibaba/sentinel-golang/core/base"
1111
"github.com/alibaba/sentinel-golang/core/flow"
1212
"github.com/alibaba/sentinel-golang/core/stat"
13+
"github.com/alibaba/sentinel-golang/util"
1314
"github.com/stretchr/testify/assert"
1415
"google.golang.org/grpc"
1516
)
@@ -34,7 +35,7 @@ func TestStreamServerIntercept(t *testing.T) {
3435
var _, err = flow.LoadRules([]*flow.Rule{
3536
{
3637
Resource: "/grpc.testing.TestService/StreamingInputCall",
37-
Threshold: 1,
38+
Threshold: 1.0,
3839
TokenCalculateStrategy: flow.Direct,
3940
ControlBehavior: flow.Reject,
4041
},
@@ -52,7 +53,7 @@ func TestStreamServerIntercept(t *testing.T) {
5253
var _, err = flow.LoadRules([]*flow.Rule{
5354
{
5455
Resource: "/grpc.testing.TestService/StreamingInputCall",
55-
Threshold: 0,
56+
Threshold: 0.0,
5657
TokenCalculateStrategy: flow.Direct,
5758
ControlBehavior: flow.Reject,
5859
},
@@ -76,7 +77,7 @@ func TestUnaryServerIntercept(t *testing.T) {
7677
var _, err = flow.LoadRules([]*flow.Rule{
7778
{
7879
Resource: "/grpc.testing.TestService/UnaryCall",
79-
Threshold: 1,
80+
Threshold: 1.0,
8081
TokenCalculateStrategy: flow.Direct,
8182
ControlBehavior: flow.Reject,
8283
},
@@ -86,14 +87,14 @@ func TestUnaryServerIntercept(t *testing.T) {
8687
assert.EqualError(t, err, errMsgFake)
8788
assert.Nil(t, rep)
8889
// Test for recording the biz error.
89-
assert.EqualValues(t, 1, int(stat.GetResourceNode(info.FullMethod).GetQPS(base.MetricEventError)))
90+
assert.True(t, util.Float64Equals(1.0, stat.GetResourceNode(info.FullMethod).GetQPS(base.MetricEventError)))
9091

9192
t.Run("second fail", func(t *testing.T) {
9293
rep, err := interceptor(nil, nil, info, handler)
9394
assert.IsType(t, &base.BlockError{}, err)
9495
assert.Nil(t, rep)
9596

96-
assert.EqualValues(t, 1, int(stat.GetResourceNode(info.FullMethod).GetQPS(base.MetricEventError)))
97+
assert.True(t, util.Float64Equals(1.0, stat.GetResourceNode(info.FullMethod).GetQPS(base.MetricEventError)))
9798
})
9899
})
99100

@@ -104,7 +105,7 @@ func TestUnaryServerIntercept(t *testing.T) {
104105
var _, err = flow.LoadRules([]*flow.Rule{
105106
{
106107
Resource: "/grpc.testing.TestService/UnaryCall",
107-
Threshold: 0,
108+
Threshold: 0.0,
108109
TokenCalculateStrategy: flow.Direct,
109110
ControlBehavior: flow.Reject,
110111
},

adapter/micro/client_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/alibaba/sentinel-golang/core/flow"
1212
"github.com/alibaba/sentinel-golang/core/stat"
1313
"github.com/alibaba/sentinel-golang/tests/adapter/micro/proto"
14+
"github.com/alibaba/sentinel-golang/util"
1415
"github.com/micro/go-micro/v2/client"
1516
"github.com/micro/go-micro/v2/client/selector"
1617
"github.com/micro/go-micro/v2/registry/memory"
@@ -48,7 +49,7 @@ func TestClientLimiter(t *testing.T) {
4849
var _, err = flow.LoadRules([]*flow.Rule{
4950
{
5051
Resource: req.Method(),
51-
Threshold: 1,
52+
Threshold: 1.0,
5253
TokenCalculateStrategy: flow.Direct,
5354
ControlBehavior: flow.Reject,
5455
},
@@ -58,12 +59,12 @@ func TestClientLimiter(t *testing.T) {
5859
// No server started, the return err should not be nil
5960
assert.NotNil(t, err)
6061
assert.NotEqual(t, FakeErrorMsg, err.Error())
61-
assert.EqualValues(t, 1, int(stat.GetResourceNode(req.Method()).GetQPS(base.MetricEventPass)))
62+
assert.True(t, util.Float64Equals(1.0, stat.GetResourceNode(req.Method()).GetQPS(base.MetricEventPass)))
6263

6364
t.Run("second fail", func(t *testing.T) {
6465
err := c.Call(context.TODO(), req, rsp)
6566
assert.EqualError(t, err, FakeErrorMsg)
66-
assert.EqualValues(t, 1, int(stat.GetResourceNode(req.Method()).GetQPS(base.MetricEventPass)))
67+
assert.True(t, util.Float64Equals(1.0, stat.GetResourceNode(req.Method()).GetQPS(base.MetricEventPass)))
6768
})
6869
})
6970
}

adapter/micro/server_test.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/alibaba/sentinel-golang/core/flow"
1313
"github.com/alibaba/sentinel-golang/core/stat"
1414
"github.com/alibaba/sentinel-golang/tests/adapter/micro/proto"
15+
"github.com/alibaba/sentinel-golang/util"
1516
"github.com/micro/go-micro/v2"
1617
"github.com/micro/go-micro/v2/server"
1718
"github.com/stretchr/testify/assert"
@@ -58,7 +59,7 @@ func TestServerLimiter(t *testing.T) {
5859
_, err = flow.LoadRules([]*flow.Rule{
5960
{
6061
Resource: req.Method(),
61-
Threshold: 1,
62+
Threshold: 1.0,
6263
TokenCalculateStrategy: flow.Direct,
6364
ControlBehavior: flow.Reject,
6465
},
@@ -72,7 +73,7 @@ func TestServerLimiter(t *testing.T) {
7273
var _, err = flow.LoadRules([]*flow.Rule{
7374
{
7475
Resource: req.Method(),
75-
Threshold: 1,
76+
Threshold: 1.0,
7677
TokenCalculateStrategy: flow.Direct,
7778
ControlBehavior: flow.Reject,
7879
},
@@ -81,12 +82,12 @@ func TestServerLimiter(t *testing.T) {
8182
err = c.Call(context.TODO(), req, rsp)
8283
assert.Nil(t, err)
8384
assert.EqualValues(t, "Pong", rsp.Result)
84-
assert.EqualValues(t, 1, int(stat.GetResourceNode(req.Method()).GetQPS(base.MetricEventPass)))
85+
assert.True(t, util.Float64Equals(1.0, stat.GetResourceNode(req.Method()).GetQPS(base.MetricEventPass)))
8586

8687
t.Run("second fail", func(t *testing.T) {
8788
err := c.Call(context.TODO(), req, rsp)
8889
assert.Error(t, err)
89-
assert.EqualValues(t, 1, int(stat.GetResourceNode(req.Method()).GetQPS(base.MetricEventPass)))
90+
assert.True(t, util.Float64Equals(1.0, stat.GetResourceNode(req.Method()).GetQPS(base.MetricEventPass)))
9091
})
9192
})
9293
}

api/api.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"sync"
55

66
"github.com/alibaba/sentinel-golang/core/base"
7+
"github.com/alibaba/sentinel-golang/core/misc"
78
)
89

910
var entryOptsPool = sync.Pool{
@@ -123,12 +124,15 @@ func Entry(resource string, opts ...EntryOption) (*base.SentinelEntry, *base.Blo
123124
entryOptsPool.Put(options)
124125
}()
125126

126-
options.slotChain = globalSlotChain
127-
128127
for _, opt := range opts {
129128
opt(options)
130129
}
131-
130+
if options.slotChain == nil {
131+
options.slotChain = misc.GetResourceSlotChain(resource)
132+
if options.slotChain == nil {
133+
options.slotChain = globalSlotChain
134+
}
135+
}
132136
return entry(resource, options)
133137
}
134138

api/api_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ type prepareSlotMock struct {
1212
mock.Mock
1313
}
1414

15+
func (m *prepareSlotMock) Name() string {
16+
return "mock-sentinel-prepare-slot"
17+
}
18+
1519
func (m *prepareSlotMock) Prepare(ctx *base.EntryContext) {
1620
m.Called(ctx)
1721
return
@@ -21,6 +25,10 @@ type mockRuleCheckSlot1 struct {
2125
mock.Mock
2226
}
2327

28+
func (m *mockRuleCheckSlot1) Name() string {
29+
return "mock-sentinel-rule-check-slot1"
30+
}
31+
2432
func (m *mockRuleCheckSlot1) Check(ctx *base.EntryContext) *base.TokenResult {
2533
arg := m.Called(ctx)
2634
return arg.Get(0).(*base.TokenResult)
@@ -30,6 +38,10 @@ type mockRuleCheckSlot2 struct {
3038
mock.Mock
3139
}
3240

41+
func (m *mockRuleCheckSlot2) Name() string {
42+
return "mock-sentinel-rule-check-slot2"
43+
}
44+
3345
func (m *mockRuleCheckSlot2) Check(ctx *base.EntryContext) *base.TokenResult {
3446
arg := m.Called(ctx)
3547
return arg.Get(0).(*base.TokenResult)
@@ -39,6 +51,10 @@ type statisticSlotMock struct {
3951
mock.Mock
4052
}
4153

54+
func (m *statisticSlotMock) Name() string {
55+
return "mock-sentinel-stat-check-slot"
56+
}
57+
4258
func (m *statisticSlotMock) OnEntryPassed(ctx *base.EntryContext) {
4359
m.Called(ctx)
4460
return

api/slot_chain.go

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,37 +7,33 @@ import (
77
"github.com/alibaba/sentinel-golang/core/hotspot"
88
"github.com/alibaba/sentinel-golang/core/isolation"
99
"github.com/alibaba/sentinel-golang/core/log"
10+
"github.com/alibaba/sentinel-golang/core/misc"
1011
"github.com/alibaba/sentinel-golang/core/stat"
1112
"github.com/alibaba/sentinel-golang/core/system"
1213
)
1314

1415
var globalSlotChain = BuildDefaultSlotChain()
1516

16-
// SetSlotChain replaces current slot chain with the given one.
17-
// Note that this operation is not thread-safe, so it should be
18-
// called when pre-initializing Sentinel.
19-
func SetSlotChain(chain *base.SlotChain) {
20-
if chain != nil {
21-
globalSlotChain = chain
22-
}
23-
}
24-
2517
func GlobalSlotChain() *base.SlotChain {
2618
return globalSlotChain
2719
}
2820

2921
func BuildDefaultSlotChain() *base.SlotChain {
3022
sc := base.NewSlotChain()
31-
sc.AddStatPrepareSlotLast(&stat.ResourceNodePrepareSlot{})
32-
sc.AddRuleCheckSlotLast(&system.AdaptiveSlot{})
33-
sc.AddRuleCheckSlotLast(&flow.Slot{})
34-
sc.AddRuleCheckSlotLast(&isolation.Slot{})
35-
sc.AddRuleCheckSlotLast(&circuitbreaker.Slot{})
36-
sc.AddRuleCheckSlotLast(&hotspot.Slot{})
37-
sc.AddStatSlotLast(&stat.Slot{})
38-
sc.AddStatSlotLast(&log.Slot{})
39-
sc.AddStatSlotLast(&circuitbreaker.MetricStatSlot{})
40-
sc.AddStatSlotLast(&hotspot.ConcurrencyStatSlot{})
41-
sc.AddStatSlotLast(&flow.StandaloneStatSlot{})
23+
sc.AddStatPrepareSlotLast(stat.DefaultResourceNodePrepareSlot)
24+
25+
sc.AddRuleCheckSlotLast(system.DefaultAdaptiveSlot)
26+
sc.AddRuleCheckSlotLast(flow.DefaultSlot)
27+
sc.AddRuleCheckSlotLast(isolation.DefaultSlot)
28+
sc.AddRuleCheckSlotLast(circuitbreaker.DefaultSlot)
29+
sc.AddRuleCheckSlotLast(hotspot.DefaultSlot)
30+
31+
sc.AddStatSlotLast(stat.DefaultSlot)
32+
sc.AddStatSlotLast(log.DefaultSlot)
33+
sc.AddStatSlotLast(circuitbreaker.DefaultMetricStatSlot)
34+
sc.AddStatSlotLast(hotspot.DefaultConcurrencyStatSlot)
35+
sc.AddStatSlotLast(flow.DefaultStandaloneStatSlot)
36+
37+
misc.RegisterCustomGlobalSlotsToSc(sc)
4238
return sc
4339
}

0 commit comments

Comments
 (0)