feat: update priority api (#1912)
Signed-off-by: Gaius <gaius.qi@gmail.com>
This commit is contained in:
parent
f120c8778b
commit
473c5d33f7
2
go.mod
2
go.mod
|
|
@ -3,7 +3,7 @@ module d7y.io/dragonfly/v2
|
||||||
go 1.19
|
go 1.19
|
||||||
|
|
||||||
require (
|
require (
|
||||||
d7y.io/api v1.3.6
|
d7y.io/api v1.3.9
|
||||||
github.com/RichardKnop/machinery v1.10.6
|
github.com/RichardKnop/machinery v1.10.6
|
||||||
github.com/Showmax/go-fqdn v1.0.0
|
github.com/Showmax/go-fqdn v1.0.0
|
||||||
github.com/VividCortex/mysqlerr v1.0.0
|
github.com/VividCortex/mysqlerr v1.0.0
|
||||||
|
|
|
||||||
4
go.sum
4
go.sum
|
|
@ -69,8 +69,8 @@ cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RX
|
||||||
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
|
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
|
||||||
cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
|
cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
|
||||||
cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y=
|
cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y=
|
||||||
d7y.io/api v1.3.6 h1:tcS2PBZqqgpSXMnSxTZ5WVDuT5K8O0+Di1L1BwCBBpI=
|
d7y.io/api v1.3.9 h1:u5HgSTLDz/hMtDN4Ha9JI6KKFfBOfBbSe2nd+Cz94Tc=
|
||||||
d7y.io/api v1.3.6/go.mod h1:HERD+sbavL0vJXkd37RZxJvpu+nXZ6ipffm4EFUbF2w=
|
d7y.io/api v1.3.9/go.mod h1:HERD+sbavL0vJXkd37RZxJvpu+nXZ6ipffm4EFUbF2w=
|
||||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20201218220906-28db891af037/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
dmitri.shuralyov.com/gpu/mtl v0.0.0-20201218220906-28db891af037/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U=
|
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U=
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ import (
|
||||||
"google.golang.org/protobuf/types/known/timestamppb"
|
"google.golang.org/protobuf/types/known/timestamppb"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
|
|
||||||
|
commonv1 "d7y.io/api/pkg/apis/common/v1"
|
||||||
managerv1 "d7y.io/api/pkg/apis/manager/v1"
|
managerv1 "d7y.io/api/pkg/apis/manager/v1"
|
||||||
|
|
||||||
logger "d7y.io/dragonfly/v2/internal/dflog"
|
logger "d7y.io/dragonfly/v2/internal/dflog"
|
||||||
|
|
@ -1015,7 +1016,7 @@ func (s *Server) ListApplications(ctx context.Context, req *managerv1.ListApplic
|
||||||
for _, url := range priority.URLs {
|
for _, url := range priority.URLs {
|
||||||
pbURLPriorities = append(pbURLPriorities, &managerv1.URLPriority{
|
pbURLPriorities = append(pbURLPriorities, &managerv1.URLPriority{
|
||||||
Regex: url.Regex,
|
Regex: url.Regex,
|
||||||
Value: managerv1.Priority(url.Value),
|
Value: commonv1.Priority(url.Value),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1025,7 +1026,7 @@ func (s *Server) ListApplications(ctx context.Context, req *managerv1.ListApplic
|
||||||
Url: application.URL,
|
Url: application.URL,
|
||||||
Bio: application.BIO,
|
Bio: application.BIO,
|
||||||
Priority: &managerv1.ApplicationPriority{
|
Priority: &managerv1.ApplicationPriority{
|
||||||
Value: managerv1.Priority(*priority.Value),
|
Value: commonv1.Priority(*priority.Value),
|
||||||
Urls: pbURLPriorities,
|
Urls: pbURLPriorities,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ import (
|
||||||
"github.com/golang/mock/gomock"
|
"github.com/golang/mock/gomock"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
|
commonv1 "d7y.io/api/pkg/apis/common/v1"
|
||||||
managerv1 "d7y.io/api/pkg/apis/manager/v1"
|
managerv1 "d7y.io/api/pkg/apis/manager/v1"
|
||||||
|
|
||||||
"d7y.io/dragonfly/v2/pkg/rpc/manager/client/mocks"
|
"d7y.io/dragonfly/v2/pkg/rpc/manager/client/mocks"
|
||||||
|
|
@ -105,11 +106,11 @@ func TestDynconfig_GetManagerSourceType(t *testing.T) {
|
||||||
Url: "example.com",
|
Url: "example.com",
|
||||||
Bio: "bar",
|
Bio: "bar",
|
||||||
Priority: &managerv1.ApplicationPriority{
|
Priority: &managerv1.ApplicationPriority{
|
||||||
Value: managerv1.Priority_LEVEL1,
|
Value: commonv1.Priority_LEVEL1,
|
||||||
Urls: []*managerv1.URLPriority{
|
Urls: []*managerv1.URLPriority{
|
||||||
{
|
{
|
||||||
Regex: "blobs*",
|
Regex: "blobs*",
|
||||||
Value: managerv1.Priority_LEVEL1,
|
Value: commonv1.Priority_LEVEL1,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -161,11 +162,11 @@ func TestDynconfig_GetManagerSourceType(t *testing.T) {
|
||||||
Url: "example.com",
|
Url: "example.com",
|
||||||
Bio: "bar",
|
Bio: "bar",
|
||||||
Priority: &managerv1.ApplicationPriority{
|
Priority: &managerv1.ApplicationPriority{
|
||||||
Value: managerv1.Priority_LEVEL1,
|
Value: commonv1.Priority_LEVEL1,
|
||||||
Urls: []*managerv1.URLPriority{
|
Urls: []*managerv1.URLPriority{
|
||||||
{
|
{
|
||||||
Regex: "blobs*",
|
Regex: "blobs*",
|
||||||
Value: managerv1.Priority_LEVEL1,
|
Value: commonv1.Priority_LEVEL1,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -229,11 +230,11 @@ func TestDynconfig_GetManagerSourceType(t *testing.T) {
|
||||||
Url: "example.com",
|
Url: "example.com",
|
||||||
Bio: "bar",
|
Bio: "bar",
|
||||||
Priority: &managerv1.ApplicationPriority{
|
Priority: &managerv1.ApplicationPriority{
|
||||||
Value: managerv1.Priority_LEVEL1,
|
Value: commonv1.Priority_LEVEL1,
|
||||||
Urls: []*managerv1.URLPriority{
|
Urls: []*managerv1.URLPriority{
|
||||||
{
|
{
|
||||||
Regex: "blobs*",
|
Regex: "blobs*",
|
||||||
Value: managerv1.Priority_LEVEL1,
|
Value: commonv1.Priority_LEVEL1,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -287,11 +288,11 @@ func TestDynconfig_GetManagerSourceType(t *testing.T) {
|
||||||
Url: "example.com",
|
Url: "example.com",
|
||||||
Bio: "bar",
|
Bio: "bar",
|
||||||
Priority: &managerv1.ApplicationPriority{
|
Priority: &managerv1.ApplicationPriority{
|
||||||
Value: managerv1.Priority_LEVEL1,
|
Value: commonv1.Priority_LEVEL1,
|
||||||
Urls: []*managerv1.URLPriority{
|
Urls: []*managerv1.URLPriority{
|
||||||
{
|
{
|
||||||
Regex: "blobs*",
|
Regex: "blobs*",
|
||||||
Value: managerv1.Priority_LEVEL1,
|
Value: commonv1.Priority_LEVEL1,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -355,11 +356,11 @@ func TestDynconfig_GetManagerSourceType(t *testing.T) {
|
||||||
Url: "example.com",
|
Url: "example.com",
|
||||||
Bio: "bar",
|
Bio: "bar",
|
||||||
Priority: &managerv1.ApplicationPriority{
|
Priority: &managerv1.ApplicationPriority{
|
||||||
Value: managerv1.Priority_LEVEL1,
|
Value: commonv1.Priority_LEVEL1,
|
||||||
Urls: []*managerv1.URLPriority{
|
Urls: []*managerv1.URLPriority{
|
||||||
{
|
{
|
||||||
Regex: "blobs*",
|
Regex: "blobs*",
|
||||||
Value: managerv1.Priority_LEVEL1,
|
Value: commonv1.Priority_LEVEL1,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -447,11 +448,11 @@ func TestDynconfig_GetManagerSourceType(t *testing.T) {
|
||||||
Url: "example.com",
|
Url: "example.com",
|
||||||
Bio: "bar",
|
Bio: "bar",
|
||||||
Priority: &managerv1.ApplicationPriority{
|
Priority: &managerv1.ApplicationPriority{
|
||||||
Value: managerv1.Priority_LEVEL1,
|
Value: commonv1.Priority_LEVEL1,
|
||||||
Urls: []*managerv1.URLPriority{
|
Urls: []*managerv1.URLPriority{
|
||||||
{
|
{
|
||||||
Regex: "blobs*",
|
Regex: "blobs*",
|
||||||
Value: managerv1.Priority_LEVEL1,
|
Value: commonv1.Priority_LEVEL1,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ import (
|
||||||
"github.com/looplab/fsm"
|
"github.com/looplab/fsm"
|
||||||
"go.uber.org/atomic"
|
"go.uber.org/atomic"
|
||||||
|
|
||||||
|
commonv1 "d7y.io/api/pkg/apis/common/v1"
|
||||||
managerv1 "d7y.io/api/pkg/apis/manager/v1"
|
managerv1 "d7y.io/api/pkg/apis/manager/v1"
|
||||||
schedulerv1 "d7y.io/api/pkg/apis/scheduler/v1"
|
schedulerv1 "d7y.io/api/pkg/apis/scheduler/v1"
|
||||||
|
|
||||||
|
|
@ -424,18 +425,18 @@ func (p *Peer) DownloadTinyFile() ([]byte, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPriority returns priority of peer.
|
// GetPriority returns priority of peer.
|
||||||
func (p *Peer) GetPriority(dynconfig config.DynconfigInterface) managerv1.Priority {
|
func (p *Peer) GetPriority(dynconfig config.DynconfigInterface) commonv1.Priority {
|
||||||
pbApplications, err := dynconfig.GetApplications()
|
pbApplications, err := dynconfig.GetApplications()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
p.Log.Warn(err)
|
p.Log.Warn(err)
|
||||||
return managerv1.Priority_LEVEL0
|
return commonv1.Priority_LEVEL0
|
||||||
}
|
}
|
||||||
|
|
||||||
// If manager has no applications,
|
// If manager has no applications,
|
||||||
// then return Priority_LEVEL0.
|
// then return Priority_LEVEL0.
|
||||||
if len(pbApplications) == 0 {
|
if len(pbApplications) == 0 {
|
||||||
p.Log.Info("can not found applications")
|
p.Log.Info("can not found applications")
|
||||||
return managerv1.Priority_LEVEL0
|
return commonv1.Priority_LEVEL0
|
||||||
}
|
}
|
||||||
|
|
||||||
// Find peer application.
|
// Find peer application.
|
||||||
|
|
@ -451,14 +452,14 @@ func (p *Peer) GetPriority(dynconfig config.DynconfigInterface) managerv1.Priori
|
||||||
// then return Priority_LEVEL0.
|
// then return Priority_LEVEL0.
|
||||||
if application == nil {
|
if application == nil {
|
||||||
p.Log.Info("can not found matching application")
|
p.Log.Info("can not found matching application")
|
||||||
return managerv1.Priority_LEVEL0
|
return commonv1.Priority_LEVEL0
|
||||||
}
|
}
|
||||||
|
|
||||||
// If application has no priority,
|
// If application has no priority,
|
||||||
// then return Priority_LEVEL0.
|
// then return Priority_LEVEL0.
|
||||||
if application.Priority == nil {
|
if application.Priority == nil {
|
||||||
p.Log.Info("can not found priority")
|
p.Log.Info("can not found priority")
|
||||||
return managerv1.Priority_LEVEL0
|
return commonv1.Priority_LEVEL0
|
||||||
}
|
}
|
||||||
|
|
||||||
// Match url priority first.
|
// Match url priority first.
|
||||||
|
|
|
||||||
|
|
@ -463,16 +463,16 @@ func TestPeer_GetPriority(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
mock func(peer *Peer, md *configmocks.MockDynconfigInterfaceMockRecorder)
|
mock func(peer *Peer, md *configmocks.MockDynconfigInterfaceMockRecorder)
|
||||||
expect func(t *testing.T, priority managerv1.Priority)
|
expect func(t *testing.T, priority commonv1.Priority)
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "get applications failed",
|
name: "get applications failed",
|
||||||
mock: func(peer *Peer, md *configmocks.MockDynconfigInterfaceMockRecorder) {
|
mock: func(peer *Peer, md *configmocks.MockDynconfigInterfaceMockRecorder) {
|
||||||
md.GetApplications().Return(nil, errors.New("bas")).Times(1)
|
md.GetApplications().Return(nil, errors.New("bas")).Times(1)
|
||||||
},
|
},
|
||||||
expect: func(t *testing.T, priority managerv1.Priority) {
|
expect: func(t *testing.T, priority commonv1.Priority) {
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.Equal(priority, managerv1.Priority_LEVEL0)
|
assert.Equal(priority, commonv1.Priority_LEVEL0)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -480,9 +480,9 @@ func TestPeer_GetPriority(t *testing.T) {
|
||||||
mock: func(peer *Peer, md *configmocks.MockDynconfigInterfaceMockRecorder) {
|
mock: func(peer *Peer, md *configmocks.MockDynconfigInterfaceMockRecorder) {
|
||||||
md.GetApplications().Return([]*managerv1.Application{}, nil).Times(1)
|
md.GetApplications().Return([]*managerv1.Application{}, nil).Times(1)
|
||||||
},
|
},
|
||||||
expect: func(t *testing.T, priority managerv1.Priority) {
|
expect: func(t *testing.T, priority commonv1.Priority) {
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.Equal(priority, managerv1.Priority_LEVEL0)
|
assert.Equal(priority, commonv1.Priority_LEVEL0)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -494,9 +494,9 @@ func TestPeer_GetPriority(t *testing.T) {
|
||||||
},
|
},
|
||||||
}, nil).Times(1)
|
}, nil).Times(1)
|
||||||
},
|
},
|
||||||
expect: func(t *testing.T, priority managerv1.Priority) {
|
expect: func(t *testing.T, priority commonv1.Priority) {
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.Equal(priority, managerv1.Priority_LEVEL0)
|
assert.Equal(priority, commonv1.Priority_LEVEL0)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -509,9 +509,9 @@ func TestPeer_GetPriority(t *testing.T) {
|
||||||
},
|
},
|
||||||
}, nil).Times(1)
|
}, nil).Times(1)
|
||||||
},
|
},
|
||||||
expect: func(t *testing.T, priority managerv1.Priority) {
|
expect: func(t *testing.T, priority commonv1.Priority) {
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.Equal(priority, managerv1.Priority_LEVEL0)
|
assert.Equal(priority, commonv1.Priority_LEVEL0)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -522,14 +522,14 @@ func TestPeer_GetPriority(t *testing.T) {
|
||||||
{
|
{
|
||||||
Name: "baz",
|
Name: "baz",
|
||||||
Priority: &managerv1.ApplicationPriority{
|
Priority: &managerv1.ApplicationPriority{
|
||||||
Value: managerv1.Priority_LEVEL1,
|
Value: commonv1.Priority_LEVEL1,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}, nil).Times(1)
|
}, nil).Times(1)
|
||||||
},
|
},
|
||||||
expect: func(t *testing.T, priority managerv1.Priority) {
|
expect: func(t *testing.T, priority commonv1.Priority) {
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.Equal(priority, managerv1.Priority_LEVEL1)
|
assert.Equal(priority, commonv1.Priority_LEVEL1)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -541,20 +541,20 @@ func TestPeer_GetPriority(t *testing.T) {
|
||||||
{
|
{
|
||||||
Name: "bak",
|
Name: "bak",
|
||||||
Priority: &managerv1.ApplicationPriority{
|
Priority: &managerv1.ApplicationPriority{
|
||||||
Value: managerv1.Priority_LEVEL1,
|
Value: commonv1.Priority_LEVEL1,
|
||||||
Urls: []*managerv1.URLPriority{
|
Urls: []*managerv1.URLPriority{
|
||||||
{
|
{
|
||||||
Regex: "am",
|
Regex: "am",
|
||||||
Value: managerv1.Priority_LEVEL2,
|
Value: commonv1.Priority_LEVEL2,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}, nil).Times(1)
|
}, nil).Times(1)
|
||||||
},
|
},
|
||||||
expect: func(t *testing.T, priority managerv1.Priority) {
|
expect: func(t *testing.T, priority commonv1.Priority) {
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.Equal(priority, managerv1.Priority_LEVEL2)
|
assert.Equal(priority, commonv1.Priority_LEVEL2)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,6 @@ import (
|
||||||
|
|
||||||
commonv1 "d7y.io/api/pkg/apis/common/v1"
|
commonv1 "d7y.io/api/pkg/apis/common/v1"
|
||||||
errordetailsv1 "d7y.io/api/pkg/apis/errordetails/v1"
|
errordetailsv1 "d7y.io/api/pkg/apis/errordetails/v1"
|
||||||
managerv1 "d7y.io/api/pkg/apis/manager/v1"
|
|
||||||
schedulerv1 "d7y.io/api/pkg/apis/scheduler/v1"
|
schedulerv1 "d7y.io/api/pkg/apis/scheduler/v1"
|
||||||
|
|
||||||
"d7y.io/dragonfly/v2/internal/dferrors"
|
"d7y.io/dragonfly/v2/internal/dferrors"
|
||||||
|
|
@ -518,33 +517,33 @@ func (s *Service) triggerTask(ctx context.Context, req *schedulerv1.PeerTaskRequ
|
||||||
// the different priorities of the peer and
|
// the different priorities of the peer and
|
||||||
// priority of the RegisterPeerTask parameter is
|
// priority of the RegisterPeerTask parameter is
|
||||||
// higher than parameter of the application.
|
// higher than parameter of the application.
|
||||||
var priority managerv1.Priority
|
var priority commonv1.Priority
|
||||||
if req.Priority != managerv1.Priority_LEVEL0 {
|
if req.UrlMeta.Priority != commonv1.Priority_LEVEL0 {
|
||||||
priority = req.Priority
|
priority = req.UrlMeta.Priority
|
||||||
} else {
|
} else {
|
||||||
priority = peer.GetPriority(dynconfig)
|
priority = peer.GetPriority(dynconfig)
|
||||||
}
|
}
|
||||||
peer.Log.Infof("peer priority is %d", priority)
|
peer.Log.Infof("peer priority is %d", priority)
|
||||||
|
|
||||||
switch priority {
|
switch priority {
|
||||||
case managerv1.Priority_LEVEL6, managerv1.Priority_LEVEL0:
|
case commonv1.Priority_LEVEL6, commonv1.Priority_LEVEL0:
|
||||||
if s.config.SeedPeer.Enable && !task.IsSeedPeerFailed() {
|
if s.config.SeedPeer.Enable && !task.IsSeedPeerFailed() {
|
||||||
go s.triggerSeedPeerTask(ctx, task)
|
go s.triggerSeedPeerTask(ctx, task)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
fallthrough
|
fallthrough
|
||||||
case managerv1.Priority_LEVEL5:
|
case commonv1.Priority_LEVEL5:
|
||||||
fallthrough
|
fallthrough
|
||||||
case managerv1.Priority_LEVEL4:
|
case commonv1.Priority_LEVEL4:
|
||||||
fallthrough
|
fallthrough
|
||||||
case managerv1.Priority_LEVEL3:
|
case commonv1.Priority_LEVEL3:
|
||||||
peer.Log.Infof("peer back-to-source, because of hitting priority %d", managerv1.Priority_LEVEL3)
|
peer.Log.Infof("peer back-to-source, because of hitting priority %d", commonv1.Priority_LEVEL3)
|
||||||
peer.NeedBackToSource.Store(true)
|
peer.NeedBackToSource.Store(true)
|
||||||
return nil
|
return nil
|
||||||
case managerv1.Priority_LEVEL2:
|
case commonv1.Priority_LEVEL2:
|
||||||
return fmt.Errorf("priority is %d and no available peers", managerv1.Priority_LEVEL2)
|
return fmt.Errorf("priority is %d and no available peers", commonv1.Priority_LEVEL2)
|
||||||
case managerv1.Priority_LEVEL1:
|
case commonv1.Priority_LEVEL1:
|
||||||
return fmt.Errorf("priority is %d", managerv1.Priority_LEVEL1)
|
return fmt.Errorf("priority is %d", commonv1.Priority_LEVEL1)
|
||||||
}
|
}
|
||||||
|
|
||||||
peer.Log.Infof("peer back-to-source, because of peer has invalid priority %d", priority)
|
peer.Log.Infof("peer back-to-source, because of peer has invalid priority %d", priority)
|
||||||
|
|
|
||||||
|
|
@ -160,10 +160,11 @@ var (
|
||||||
}
|
}
|
||||||
|
|
||||||
mockTaskURLMeta = &commonv1.UrlMeta{
|
mockTaskURLMeta = &commonv1.UrlMeta{
|
||||||
Digest: "digest",
|
Digest: "digest",
|
||||||
Tag: "tag",
|
Tag: "tag",
|
||||||
Range: "range",
|
Range: "range",
|
||||||
Filter: "filter",
|
Filter: "filter",
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
Header: map[string]string{
|
Header: map[string]string{
|
||||||
"content-length": "100",
|
"content-length": "100",
|
||||||
},
|
},
|
||||||
|
|
@ -219,7 +220,9 @@ func TestService_RegisterPeerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task state is TaskStateRunning and it has available peer",
|
name: "task state is TaskStateRunning and it has available peer",
|
||||||
req: &schedulerv1.PeerTaskRequest{
|
req: &schedulerv1.PeerTaskRequest{
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: &schedulerv1.PeerHost{
|
PeerHost: &schedulerv1.PeerHost{
|
||||||
Id: mockRawHost.Id,
|
Id: mockRawHost.Id,
|
||||||
},
|
},
|
||||||
|
|
@ -253,7 +256,9 @@ func TestService_RegisterPeerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task state is TaskStatePending and priority is Priority_LEVEL1",
|
name: "task state is TaskStatePending and priority is Priority_LEVEL1",
|
||||||
req: &schedulerv1.PeerTaskRequest{
|
req: &schedulerv1.PeerTaskRequest{
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: &schedulerv1.PeerHost{
|
PeerHost: &schedulerv1.PeerHost{
|
||||||
Id: mockRawHost.Id,
|
Id: mockRawHost.Id,
|
||||||
},
|
},
|
||||||
|
|
@ -277,7 +282,7 @@ func TestService_RegisterPeerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
Name: "baz",
|
Name: "baz",
|
||||||
Priority: &managerv1.ApplicationPriority{
|
Priority: &managerv1.ApplicationPriority{
|
||||||
Value: managerv1.Priority_LEVEL1,
|
Value: commonv1.Priority_LEVEL1,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}, nil).Times(1),
|
}, nil).Times(1),
|
||||||
|
|
@ -296,7 +301,9 @@ func TestService_RegisterPeerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task state is TaskStateRunning and peer state is PeerStateFailed",
|
name: "task state is TaskStateRunning and peer state is PeerStateFailed",
|
||||||
req: &schedulerv1.PeerTaskRequest{
|
req: &schedulerv1.PeerTaskRequest{
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: &schedulerv1.PeerHost{
|
PeerHost: &schedulerv1.PeerHost{
|
||||||
Id: mockRawHost.Id,
|
Id: mockRawHost.Id,
|
||||||
},
|
},
|
||||||
|
|
@ -334,7 +341,9 @@ func TestService_RegisterPeerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "get task scope size failed",
|
name: "get task scope size failed",
|
||||||
req: &schedulerv1.PeerTaskRequest{
|
req: &schedulerv1.PeerTaskRequest{
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: &schedulerv1.PeerHost{
|
PeerHost: &schedulerv1.PeerHost{
|
||||||
Id: mockRawHost.Id,
|
Id: mockRawHost.Id,
|
||||||
},
|
},
|
||||||
|
|
@ -370,7 +379,9 @@ func TestService_RegisterPeerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task scope size is SizeScope_EMPTY",
|
name: "task scope size is SizeScope_EMPTY",
|
||||||
req: &schedulerv1.PeerTaskRequest{
|
req: &schedulerv1.PeerTaskRequest{
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: &schedulerv1.PeerHost{
|
PeerHost: &schedulerv1.PeerHost{
|
||||||
Id: mockRawHost.Id,
|
Id: mockRawHost.Id,
|
||||||
},
|
},
|
||||||
|
|
@ -408,7 +419,9 @@ func TestService_RegisterPeerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task scope size is SizeScope_TINY",
|
name: "task scope size is SizeScope_TINY",
|
||||||
req: &schedulerv1.PeerTaskRequest{
|
req: &schedulerv1.PeerTaskRequest{
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: &schedulerv1.PeerHost{
|
PeerHost: &schedulerv1.PeerHost{
|
||||||
Id: mockRawHost.Id,
|
Id: mockRawHost.Id,
|
||||||
},
|
},
|
||||||
|
|
@ -448,7 +461,9 @@ func TestService_RegisterPeerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task scope size is SizeScope_TINY and direct piece content is error",
|
name: "task scope size is SizeScope_TINY and direct piece content is error",
|
||||||
req: &schedulerv1.PeerTaskRequest{
|
req: &schedulerv1.PeerTaskRequest{
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: &schedulerv1.PeerHost{
|
PeerHost: &schedulerv1.PeerHost{
|
||||||
Id: mockRawHost.Id,
|
Id: mockRawHost.Id,
|
||||||
},
|
},
|
||||||
|
|
@ -485,7 +500,9 @@ func TestService_RegisterPeerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task scope size is SizeScope_TINY and direct piece content is error, peer state is PeerStateFailed",
|
name: "task scope size is SizeScope_TINY and direct piece content is error, peer state is PeerStateFailed",
|
||||||
req: &schedulerv1.PeerTaskRequest{
|
req: &schedulerv1.PeerTaskRequest{
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: &schedulerv1.PeerHost{
|
PeerHost: &schedulerv1.PeerHost{
|
||||||
Id: mockRawHost.Id,
|
Id: mockRawHost.Id,
|
||||||
},
|
},
|
||||||
|
|
@ -525,7 +542,9 @@ func TestService_RegisterPeerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task scope size is SizeScope_SMALL and load piece error, parent state is PeerStateRunning",
|
name: "task scope size is SizeScope_SMALL and load piece error, parent state is PeerStateRunning",
|
||||||
req: &schedulerv1.PeerTaskRequest{
|
req: &schedulerv1.PeerTaskRequest{
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: &schedulerv1.PeerHost{
|
PeerHost: &schedulerv1.PeerHost{
|
||||||
Id: mockRawHost.Id,
|
Id: mockRawHost.Id,
|
||||||
},
|
},
|
||||||
|
|
@ -569,7 +588,9 @@ func TestService_RegisterPeerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task scope size is SizeScope_SMALL and load piece error, peer state is PeerStateFailed",
|
name: "task scope size is SizeScope_SMALL and load piece error, peer state is PeerStateFailed",
|
||||||
req: &schedulerv1.PeerTaskRequest{
|
req: &schedulerv1.PeerTaskRequest{
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: &schedulerv1.PeerHost{
|
PeerHost: &schedulerv1.PeerHost{
|
||||||
Id: mockRawHost.Id,
|
Id: mockRawHost.Id,
|
||||||
},
|
},
|
||||||
|
|
@ -615,7 +636,9 @@ func TestService_RegisterPeerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task scope size is SizeScope_SMALL and peer state is PeerStateFailed",
|
name: "task scope size is SizeScope_SMALL and peer state is PeerStateFailed",
|
||||||
req: &schedulerv1.PeerTaskRequest{
|
req: &schedulerv1.PeerTaskRequest{
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: &schedulerv1.PeerHost{
|
PeerHost: &schedulerv1.PeerHost{
|
||||||
Id: mockRawHost.Id,
|
Id: mockRawHost.Id,
|
||||||
},
|
},
|
||||||
|
|
@ -661,7 +684,9 @@ func TestService_RegisterPeerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task scope size is SizeScope_SMALL and vetex not found",
|
name: "task scope size is SizeScope_SMALL and vetex not found",
|
||||||
req: &schedulerv1.PeerTaskRequest{
|
req: &schedulerv1.PeerTaskRequest{
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: &schedulerv1.PeerHost{
|
PeerHost: &schedulerv1.PeerHost{
|
||||||
Id: mockRawHost.Id,
|
Id: mockRawHost.Id,
|
||||||
},
|
},
|
||||||
|
|
@ -703,7 +728,9 @@ func TestService_RegisterPeerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task scope size is SizeScope_SMALL",
|
name: "task scope size is SizeScope_SMALL",
|
||||||
req: &schedulerv1.PeerTaskRequest{
|
req: &schedulerv1.PeerTaskRequest{
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: &schedulerv1.PeerHost{
|
PeerHost: &schedulerv1.PeerHost{
|
||||||
Id: mockRawHost.Id,
|
Id: mockRawHost.Id,
|
||||||
},
|
},
|
||||||
|
|
@ -746,7 +773,9 @@ func TestService_RegisterPeerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task scope size is SizeScope_NORMAL and peer state is PeerStateFailed",
|
name: "task scope size is SizeScope_NORMAL and peer state is PeerStateFailed",
|
||||||
req: &schedulerv1.PeerTaskRequest{
|
req: &schedulerv1.PeerTaskRequest{
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: &schedulerv1.PeerHost{
|
PeerHost: &schedulerv1.PeerHost{
|
||||||
Id: mockRawHost.Id,
|
Id: mockRawHost.Id,
|
||||||
},
|
},
|
||||||
|
|
@ -786,7 +815,9 @@ func TestService_RegisterPeerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task scope size is SizeScope_NORMAL",
|
name: "task scope size is SizeScope_NORMAL",
|
||||||
req: &schedulerv1.PeerTaskRequest{
|
req: &schedulerv1.PeerTaskRequest{
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: &schedulerv1.PeerHost{
|
PeerHost: &schedulerv1.PeerHost{
|
||||||
Id: mockRawHost.Id,
|
Id: mockRawHost.Id,
|
||||||
},
|
},
|
||||||
|
|
@ -1373,9 +1404,11 @@ func TestService_AnnounceTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task state is TaskStateSucceeded and peer state is PeerStateSucceeded",
|
name: "task state is TaskStateSucceeded and peer state is PeerStateSucceeded",
|
||||||
req: &schedulerv1.AnnounceTaskRequest{
|
req: &schedulerv1.AnnounceTaskRequest{
|
||||||
TaskId: mockTaskID,
|
TaskId: mockTaskID,
|
||||||
Url: mockURL,
|
Url: mockURL,
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: &schedulerv1.PeerHost{
|
PeerHost: &schedulerv1.PeerHost{
|
||||||
Id: mockRawHost.Id,
|
Id: mockRawHost.Id,
|
||||||
},
|
},
|
||||||
|
|
@ -1409,9 +1442,11 @@ func TestService_AnnounceTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task state is TaskStatePending and peer state is PeerStateSucceeded",
|
name: "task state is TaskStatePending and peer state is PeerStateSucceeded",
|
||||||
req: &schedulerv1.AnnounceTaskRequest{
|
req: &schedulerv1.AnnounceTaskRequest{
|
||||||
TaskId: mockTaskID,
|
TaskId: mockTaskID,
|
||||||
Url: mockURL,
|
Url: mockURL,
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: mockPeerHost,
|
PeerHost: mockPeerHost,
|
||||||
PiecePacket: &commonv1.PiecePacket{
|
PiecePacket: &commonv1.PiecePacket{
|
||||||
PieceInfos: []*commonv1.PieceInfo{{PieceNum: 1, DownloadCost: 1}},
|
PieceInfos: []*commonv1.PieceInfo{{PieceNum: 1, DownloadCost: 1}},
|
||||||
|
|
@ -1452,9 +1487,11 @@ func TestService_AnnounceTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task state is TaskStateFailed and peer state is PeerStateSucceeded",
|
name: "task state is TaskStateFailed and peer state is PeerStateSucceeded",
|
||||||
req: &schedulerv1.AnnounceTaskRequest{
|
req: &schedulerv1.AnnounceTaskRequest{
|
||||||
TaskId: mockTaskID,
|
TaskId: mockTaskID,
|
||||||
Url: mockURL,
|
Url: mockURL,
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: mockPeerHost,
|
PeerHost: mockPeerHost,
|
||||||
PiecePacket: &commonv1.PiecePacket{
|
PiecePacket: &commonv1.PiecePacket{
|
||||||
PieceInfos: []*commonv1.PieceInfo{{PieceNum: 1, DownloadCost: 1}},
|
PieceInfos: []*commonv1.PieceInfo{{PieceNum: 1, DownloadCost: 1}},
|
||||||
|
|
@ -1495,9 +1532,11 @@ func TestService_AnnounceTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task state is TaskStatePending and peer state is PeerStatePending",
|
name: "task state is TaskStatePending and peer state is PeerStatePending",
|
||||||
req: &schedulerv1.AnnounceTaskRequest{
|
req: &schedulerv1.AnnounceTaskRequest{
|
||||||
TaskId: mockTaskID,
|
TaskId: mockTaskID,
|
||||||
Url: mockURL,
|
Url: mockURL,
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: mockPeerHost,
|
PeerHost: mockPeerHost,
|
||||||
PiecePacket: &commonv1.PiecePacket{
|
PiecePacket: &commonv1.PiecePacket{
|
||||||
PieceInfos: []*commonv1.PieceInfo{{PieceNum: 1, DownloadCost: 1}},
|
PieceInfos: []*commonv1.PieceInfo{{PieceNum: 1, DownloadCost: 1}},
|
||||||
|
|
@ -1538,9 +1577,11 @@ func TestService_AnnounceTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task state is TaskStatePending and peer state is PeerStateReceivedNormal",
|
name: "task state is TaskStatePending and peer state is PeerStateReceivedNormal",
|
||||||
req: &schedulerv1.AnnounceTaskRequest{
|
req: &schedulerv1.AnnounceTaskRequest{
|
||||||
TaskId: mockTaskID,
|
TaskId: mockTaskID,
|
||||||
Url: mockURL,
|
Url: mockURL,
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: mockPeerHost,
|
PeerHost: mockPeerHost,
|
||||||
PiecePacket: &commonv1.PiecePacket{
|
PiecePacket: &commonv1.PiecePacket{
|
||||||
PieceInfos: []*commonv1.PieceInfo{{PieceNum: 1, DownloadCost: 1}},
|
PieceInfos: []*commonv1.PieceInfo{{PieceNum: 1, DownloadCost: 1}},
|
||||||
|
|
@ -2029,7 +2070,11 @@ func TestService_triggerTask(t *testing.T) {
|
||||||
mockSeedPeer.FSM.SetState(resource.PeerStateRunning)
|
mockSeedPeer.FSM.SetState(resource.PeerStateRunning)
|
||||||
mockTask.StorePeer(mockSeedPeer)
|
mockTask.StorePeer(mockSeedPeer)
|
||||||
|
|
||||||
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{}, mockTask, mockHost, mockPeer, dynconfig)
|
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{
|
||||||
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
|
}, mockTask, mockHost, mockPeer, dynconfig)
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
assert.Equal(mockTask.FSM.Current(), resource.TaskStateRunning)
|
assert.Equal(mockTask.FSM.Current(), resource.TaskStateRunning)
|
||||||
|
|
@ -2045,7 +2090,11 @@ func TestService_triggerTask(t *testing.T) {
|
||||||
mockSeedPeer.FSM.SetState(resource.PeerStateRunning)
|
mockSeedPeer.FSM.SetState(resource.PeerStateRunning)
|
||||||
mockTask.StorePeer(mockSeedPeer)
|
mockTask.StorePeer(mockSeedPeer)
|
||||||
|
|
||||||
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{}, mockTask, mockHost, mockPeer, dynconfig)
|
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{
|
||||||
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
|
}, mockTask, mockHost, mockPeer, dynconfig)
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
assert.Equal(mockTask.FSM.Current(), resource.TaskStateSucceeded)
|
assert.Equal(mockTask.FSM.Current(), resource.TaskStateSucceeded)
|
||||||
|
|
@ -2060,7 +2109,11 @@ func TestService_triggerTask(t *testing.T) {
|
||||||
mockTask.FSM.SetState(resource.TaskStateFailed)
|
mockTask.FSM.SetState(resource.TaskStateFailed)
|
||||||
mockHost.Type = pkgtypes.HostTypeSuperSeed
|
mockHost.Type = pkgtypes.HostTypeSuperSeed
|
||||||
|
|
||||||
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{}, mockTask, mockHost, mockPeer, dynconfig)
|
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{
|
||||||
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
|
}, mockTask, mockHost, mockPeer, dynconfig)
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
assert.Equal(mockPeer.NeedBackToSource.Load(), true)
|
assert.Equal(mockPeer.NeedBackToSource.Load(), true)
|
||||||
|
|
@ -2076,7 +2129,11 @@ func TestService_triggerTask(t *testing.T) {
|
||||||
mockTask.FSM.SetState(resource.TaskStatePending)
|
mockTask.FSM.SetState(resource.TaskStatePending)
|
||||||
mockHost.Type = pkgtypes.HostTypeStrongSeed
|
mockHost.Type = pkgtypes.HostTypeStrongSeed
|
||||||
|
|
||||||
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{}, mockTask, mockHost, mockPeer, dynconfig)
|
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{
|
||||||
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
|
}, mockTask, mockHost, mockPeer, dynconfig)
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
assert.Equal(mockPeer.NeedBackToSource.Load(), true)
|
assert.Equal(mockPeer.NeedBackToSource.Load(), true)
|
||||||
|
|
@ -2092,7 +2149,11 @@ func TestService_triggerTask(t *testing.T) {
|
||||||
mockTask.FSM.SetState(resource.TaskStateRunning)
|
mockTask.FSM.SetState(resource.TaskStateRunning)
|
||||||
mockHost.Type = pkgtypes.HostTypeWeakSeed
|
mockHost.Type = pkgtypes.HostTypeWeakSeed
|
||||||
|
|
||||||
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{}, mockTask, mockHost, mockPeer, dynconfig)
|
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{
|
||||||
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
|
}, mockTask, mockHost, mockPeer, dynconfig)
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
assert.Equal(mockPeer.NeedBackToSource.Load(), true)
|
assert.Equal(mockPeer.NeedBackToSource.Load(), true)
|
||||||
|
|
@ -2108,7 +2169,11 @@ func TestService_triggerTask(t *testing.T) {
|
||||||
mockTask.FSM.SetState(resource.TaskStateSucceeded)
|
mockTask.FSM.SetState(resource.TaskStateSucceeded)
|
||||||
mockHost.Type = pkgtypes.HostTypeStrongSeed
|
mockHost.Type = pkgtypes.HostTypeStrongSeed
|
||||||
|
|
||||||
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{}, mockTask, mockHost, mockPeer, dynconfig)
|
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{
|
||||||
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
|
}, mockTask, mockHost, mockPeer, dynconfig)
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
assert.Equal(mockPeer.NeedBackToSource.Load(), true)
|
assert.Equal(mockPeer.NeedBackToSource.Load(), true)
|
||||||
|
|
@ -2124,7 +2189,11 @@ func TestService_triggerTask(t *testing.T) {
|
||||||
mockTask.FSM.SetState(resource.TaskStateLeave)
|
mockTask.FSM.SetState(resource.TaskStateLeave)
|
||||||
mockHost.Type = pkgtypes.HostTypeStrongSeed
|
mockHost.Type = pkgtypes.HostTypeStrongSeed
|
||||||
|
|
||||||
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{}, mockTask, mockHost, mockPeer, dynconfig)
|
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{
|
||||||
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
|
}, mockTask, mockHost, mockPeer, dynconfig)
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
assert.Equal(mockPeer.NeedBackToSource.Load(), true)
|
assert.Equal(mockPeer.NeedBackToSource.Load(), true)
|
||||||
|
|
@ -2152,7 +2221,11 @@ func TestService_triggerTask(t *testing.T) {
|
||||||
mc.TriggerTask(gomock.Any(), gomock.Any()).Do(func(ctx context.Context, task *resource.Task) { wg.Done() }).Return(mockPeer, &schedulerv1.PeerResult{}, nil).Times(1),
|
mc.TriggerTask(gomock.Any(), gomock.Any()).Do(func(ctx context.Context, task *resource.Task) { wg.Done() }).Return(mockPeer, &schedulerv1.PeerResult{}, nil).Times(1),
|
||||||
)
|
)
|
||||||
|
|
||||||
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{}, mockTask, mockHost, mockPeer, dynconfig)
|
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{
|
||||||
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
|
}, mockTask, mockHost, mockPeer, dynconfig)
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
assert.Equal(mockPeer.NeedBackToSource.Load(), false)
|
assert.Equal(mockPeer.NeedBackToSource.Load(), false)
|
||||||
|
|
@ -2174,7 +2247,11 @@ func TestService_triggerTask(t *testing.T) {
|
||||||
|
|
||||||
md.GetApplications().Return(nil, errors.New("foo")).Times(1)
|
md.GetApplications().Return(nil, errors.New("foo")).Times(1)
|
||||||
|
|
||||||
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{}, mockTask, mockHost, mockPeer, dynconfig)
|
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{
|
||||||
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
|
}, mockTask, mockHost, mockPeer, dynconfig)
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
assert.Equal(mockPeer.NeedBackToSource.Load(), true)
|
assert.Equal(mockPeer.NeedBackToSource.Load(), true)
|
||||||
|
|
@ -2197,12 +2274,16 @@ func TestService_triggerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
Name: "bas",
|
Name: "bas",
|
||||||
Priority: &managerv1.ApplicationPriority{
|
Priority: &managerv1.ApplicationPriority{
|
||||||
Value: managerv1.Priority_LEVEL5,
|
Value: commonv1.Priority_LEVEL5,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}, nil).Times(1)
|
}, nil).Times(1)
|
||||||
|
|
||||||
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{}, mockTask, mockHost, mockPeer, dynconfig)
|
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{
|
||||||
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
|
}, mockTask, mockHost, mockPeer, dynconfig)
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
assert.Equal(mockPeer.NeedBackToSource.Load(), true)
|
assert.Equal(mockPeer.NeedBackToSource.Load(), true)
|
||||||
|
|
@ -2225,12 +2306,16 @@ func TestService_triggerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
Name: "bas",
|
Name: "bas",
|
||||||
Priority: &managerv1.ApplicationPriority{
|
Priority: &managerv1.ApplicationPriority{
|
||||||
Value: managerv1.Priority_LEVEL4,
|
Value: commonv1.Priority_LEVEL4,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}, nil).Times(1)
|
}, nil).Times(1)
|
||||||
|
|
||||||
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{}, mockTask, mockHost, mockPeer, dynconfig)
|
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{
|
||||||
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
|
}, mockTask, mockHost, mockPeer, dynconfig)
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
assert.Equal(mockPeer.NeedBackToSource.Load(), true)
|
assert.Equal(mockPeer.NeedBackToSource.Load(), true)
|
||||||
|
|
@ -2253,12 +2338,16 @@ func TestService_triggerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
Name: "bae",
|
Name: "bae",
|
||||||
Priority: &managerv1.ApplicationPriority{
|
Priority: &managerv1.ApplicationPriority{
|
||||||
Value: managerv1.Priority_LEVEL3,
|
Value: commonv1.Priority_LEVEL3,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}, nil).Times(1)
|
}, nil).Times(1)
|
||||||
|
|
||||||
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{}, mockTask, mockHost, mockPeer, dynconfig)
|
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{
|
||||||
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
|
}, mockTask, mockHost, mockPeer, dynconfig)
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
assert.Equal(mockPeer.NeedBackToSource.Load(), true)
|
assert.Equal(mockPeer.NeedBackToSource.Load(), true)
|
||||||
|
|
@ -2281,12 +2370,16 @@ func TestService_triggerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
Name: "bae",
|
Name: "bae",
|
||||||
Priority: &managerv1.ApplicationPriority{
|
Priority: &managerv1.ApplicationPriority{
|
||||||
Value: managerv1.Priority_LEVEL2,
|
Value: commonv1.Priority_LEVEL2,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}, nil).Times(1)
|
}, nil).Times(1)
|
||||||
|
|
||||||
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{}, mockTask, mockHost, mockPeer, dynconfig)
|
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{
|
||||||
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
|
}, mockTask, mockHost, mockPeer, dynconfig)
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.Error(err)
|
assert.Error(err)
|
||||||
},
|
},
|
||||||
|
|
@ -2307,12 +2400,16 @@ func TestService_triggerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
Name: "bat",
|
Name: "bat",
|
||||||
Priority: &managerv1.ApplicationPriority{
|
Priority: &managerv1.ApplicationPriority{
|
||||||
Value: managerv1.Priority_LEVEL1,
|
Value: commonv1.Priority_LEVEL1,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}, nil).Times(1)
|
}, nil).Times(1)
|
||||||
|
|
||||||
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{}, mockTask, mockHost, mockPeer, dynconfig)
|
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{
|
||||||
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
|
}, mockTask, mockHost, mockPeer, dynconfig)
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.Error(err)
|
assert.Error(err)
|
||||||
},
|
},
|
||||||
|
|
@ -2338,7 +2435,7 @@ func TestService_triggerTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
Name: "bat",
|
Name: "bat",
|
||||||
Priority: &managerv1.ApplicationPriority{
|
Priority: &managerv1.ApplicationPriority{
|
||||||
Value: managerv1.Priority_LEVEL0,
|
Value: commonv1.Priority_LEVEL0,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}, nil).Times(1),
|
}, nil).Times(1),
|
||||||
|
|
@ -2346,7 +2443,11 @@ func TestService_triggerTask(t *testing.T) {
|
||||||
mc.TriggerTask(gomock.Any(), gomock.Any()).Do(func(ctx context.Context, task *resource.Task) { wg.Done() }).Return(mockPeer, &schedulerv1.PeerResult{}, nil).Times(1),
|
mc.TriggerTask(gomock.Any(), gomock.Any()).Do(func(ctx context.Context, task *resource.Task) { wg.Done() }).Return(mockPeer, &schedulerv1.PeerResult{}, nil).Times(1),
|
||||||
)
|
)
|
||||||
|
|
||||||
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{}, mockTask, mockHost, mockPeer, dynconfig)
|
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{
|
||||||
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
|
}, mockTask, mockHost, mockPeer, dynconfig)
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
assert.Equal(mockPeer.NeedBackToSource.Load(), false)
|
assert.Equal(mockPeer.NeedBackToSource.Load(), false)
|
||||||
|
|
@ -2374,7 +2475,9 @@ func TestService_triggerTask(t *testing.T) {
|
||||||
)
|
)
|
||||||
|
|
||||||
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{
|
err := svc.triggerTask(context.Background(), &schedulerv1.PeerTaskRequest{
|
||||||
Priority: managerv1.Priority_LEVEL6,
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL6,
|
||||||
|
},
|
||||||
}, mockTask, mockHost, mockPeer, dynconfig)
|
}, mockTask, mockHost, mockPeer, dynconfig)
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
|
|
@ -2416,9 +2519,11 @@ func TestService_storeTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task already exists",
|
name: "task already exists",
|
||||||
req: &schedulerv1.PeerTaskRequest{
|
req: &schedulerv1.PeerTaskRequest{
|
||||||
TaskId: mockTaskID,
|
TaskId: mockTaskID,
|
||||||
Url: "https://example.com",
|
Url: "https://example.com",
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: mockPeerHost,
|
PeerHost: mockPeerHost,
|
||||||
},
|
},
|
||||||
taskType: commonv1.TaskType_Normal,
|
taskType: commonv1.TaskType_Normal,
|
||||||
|
|
@ -2439,9 +2544,11 @@ func TestService_storeTask(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "task does not exist",
|
name: "task does not exist",
|
||||||
req: &schedulerv1.PeerTaskRequest{
|
req: &schedulerv1.PeerTaskRequest{
|
||||||
TaskId: mockTaskID,
|
TaskId: mockTaskID,
|
||||||
Url: "https://example.com",
|
Url: "https://example.com",
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
PeerHost: mockPeerHost,
|
PeerHost: mockPeerHost,
|
||||||
},
|
},
|
||||||
taskType: commonv1.TaskType_DfCache,
|
taskType: commonv1.TaskType_DfCache,
|
||||||
|
|
@ -2581,8 +2688,10 @@ func TestService_storePeer(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "peer already exists",
|
name: "peer already exists",
|
||||||
req: &schedulerv1.PeerTaskRequest{
|
req: &schedulerv1.PeerTaskRequest{
|
||||||
PeerId: mockPeerID,
|
PeerId: mockPeerID,
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
mock: func(mockPeer *resource.Peer, peerManager resource.PeerManager, mr *resource.MockResourceMockRecorder, mp *resource.MockPeerManagerMockRecorder) {
|
mock: func(mockPeer *resource.Peer, peerManager resource.PeerManager, mr *resource.MockResourceMockRecorder, mp *resource.MockPeerManagerMockRecorder) {
|
||||||
gomock.InOrder(
|
gomock.InOrder(
|
||||||
|
|
@ -2599,8 +2708,10 @@ func TestService_storePeer(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "peer does not exists",
|
name: "peer does not exists",
|
||||||
req: &schedulerv1.PeerTaskRequest{
|
req: &schedulerv1.PeerTaskRequest{
|
||||||
PeerId: mockPeerID,
|
PeerId: mockPeerID,
|
||||||
UrlMeta: &commonv1.UrlMeta{},
|
UrlMeta: &commonv1.UrlMeta{
|
||||||
|
Priority: commonv1.Priority_LEVEL0,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
mock: func(mockPeer *resource.Peer, peerManager resource.PeerManager, mr *resource.MockResourceMockRecorder, mp *resource.MockPeerManagerMockRecorder) {
|
mock: func(mockPeer *resource.Peer, peerManager resource.PeerManager, mr *resource.MockResourceMockRecorder, mp *resource.MockPeerManagerMockRecorder) {
|
||||||
gomock.InOrder(
|
gomock.InOrder(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue