release 2.0 webhook replication fix (#11882)

* Core panic fix when triggering a webhook of docker-registry replication

Signed-off-by: guanxiatao <guanxiatao@corp.netease.com>

* Add UT for webhook when replicating with docker registry

Signed-off-by: guanxiatao <guanxiatao@corp.netease.com>
This commit is contained in:
Ted Guan 2020-05-11 18:29:01 +08:00 committed by GitHub
parent 6d860f1dc3
commit 8760213279
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 3 deletions

View File

@ -201,6 +201,10 @@ func constructReplicationPayload(event *event.ReplicationEvent) (*model.Payload,
}
func getMetadataFromResource(resource string) (namespace, nameAndTag string) {
// Usually resource format likes 'library/busybox:v1', but it could be 'busybox:v1' in docker registry
meta := strings.Split(resource, "/")
if len(meta) == 1 {
return "", meta[0]
}
return meta[0], meta[1]
}

View File

@ -92,7 +92,15 @@ func (f *fakedReplicationMgr) GetExecution(int64) (*daoModels.Execution, error)
func (f *fakedReplicationMgr) ListTasks(...*daoModels.TaskQuery) (int64, []*daoModels.Task, error) {
return 0, nil, nil
}
func (f *fakedReplicationMgr) GetTask(int64) (*daoModels.Task, error) {
func (f *fakedReplicationMgr) GetTask(id int64) (*daoModels.Task, error) {
if id == 1 {
return &daoModels.Task{
ExecutionID: 1,
// project info not included when replicating with docker registry
SrcResource: "alpine:[v1]",
DstResource: "gxt/alpine:[v1] ",
}, nil
}
return &daoModels.Task{
ExecutionID: 1,
SrcResource: "library/alpine:[v1]",
@ -254,14 +262,14 @@ func TestReplicationHandler_Handle(t *testing.T) {
wantErr bool
}{
{
name: "ImagePreprocessHandler Want Error 1",
name: "ReplicationHandler Want Error 1",
args: args{
data: "",
},
wantErr: true,
},
{
name: "ImagePreprocessHandler 1",
name: "ReplicationHandler 1",
args: args{
data: &event.ReplicationEvent{
OccurAt: time.Now(),
@ -269,6 +277,16 @@ func TestReplicationHandler_Handle(t *testing.T) {
},
wantErr: false,
},
{
name: "ReplicationHandler with docker registry",
args: args{
data: &event.ReplicationEvent{
OccurAt: time.Now(),
ReplicationTaskID: 1,
},
},
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {