mirror of
https://github.com/goharbor/harbor.git
synced 2025-02-22 23:01:33 +01:00
test: fix the data race in the test of scan controller (#13899)
Closes #13876 Signed-off-by: He Weiwei <hweiwei@vmware.com>
This commit is contained in:
parent
b748852ee8
commit
e33ff932d1
@ -34,6 +34,13 @@ const (
|
||||
ScanAllCallback = "scanAll"
|
||||
)
|
||||
|
||||
var (
|
||||
artifactCtl = artifact.Ctl
|
||||
robotCtl = robot.Ctl
|
||||
scanCtl = DefaultController
|
||||
taskMgr = task.Mgr
|
||||
)
|
||||
|
||||
func init() {
|
||||
if err := scheduler.RegisterCallbackFunc(ScanAllCallback, scanAllCallback); err != nil {
|
||||
log.Fatalf("failed to register the callback for the scan all schedule, error %v", err)
|
||||
@ -54,7 +61,7 @@ func init() {
|
||||
}
|
||||
|
||||
func scanAllCallback(ctx context.Context, param string) error {
|
||||
_, err := DefaultController.ScanAll(ctx, task.ExecutionTriggerSchedule, true)
|
||||
_, err := scanCtl.ScanAll(ctx, task.ExecutionTriggerSchedule, true)
|
||||
return err
|
||||
}
|
||||
|
||||
@ -64,7 +71,7 @@ func scanTaskStatusChange(ctx context.Context, taskID int64, status string) (err
|
||||
js := job.Status(status)
|
||||
|
||||
if js.Final() {
|
||||
t, err := task.Mgr.Get(ctx, taskID)
|
||||
t, err := taskMgr.Get(ctx, taskID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -72,7 +79,7 @@ func scanTaskStatusChange(ctx context.Context, taskID int64, status string) (err
|
||||
if js == job.SuccessStatus {
|
||||
robotID := getRobotID(t.ExtraAttrs)
|
||||
if robotID > 0 {
|
||||
if err := robot.Ctl.Delete(ctx, robotID); err != nil {
|
||||
if err := robotCtl.Delete(ctx, robotID); err != nil {
|
||||
// Should not block the main flow, just logged
|
||||
logger.WithFields(log.Fields{"robot_id": robotID, "error": err}).Error("delete robot account failed")
|
||||
} else {
|
||||
@ -83,7 +90,7 @@ func scanTaskStatusChange(ctx context.Context, taskID int64, status string) (err
|
||||
|
||||
artifactID := getArtifactID(t.ExtraAttrs)
|
||||
if artifactID > 0 {
|
||||
art, err := artifact.Ctl.Get(ctx, artifactID, nil)
|
||||
art, err := artifactCtl.Get(ctx, artifactID, nil)
|
||||
if err != nil {
|
||||
logger.WithFields(log.Fields{"artifact_id": artifactID, "error": err}).Errorf("failed to get artifact")
|
||||
} else {
|
||||
@ -114,5 +121,5 @@ func scanTaskCheckInProcessor(ctx context.Context, t *task.Task, data string) (e
|
||||
return err
|
||||
}
|
||||
|
||||
return DefaultController.UpdateReport(ctx, checkInReport)
|
||||
return scanCtl.UpdateReport(ctx, checkInReport)
|
||||
}
|
||||
|
@ -18,8 +18,9 @@ import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/goharbor/harbor/src/controller/artifact"
|
||||
"github.com/goharbor/harbor/src/controller/robot"
|
||||
"github.com/goharbor/harbor/src/jobservice/job"
|
||||
"github.com/goharbor/harbor/src/lib/q"
|
||||
"github.com/goharbor/harbor/src/pkg/scan"
|
||||
@ -32,48 +33,39 @@ import (
|
||||
reporttesting "github.com/goharbor/harbor/src/testing/pkg/scan/report"
|
||||
tasktesting "github.com/goharbor/harbor/src/testing/pkg/task"
|
||||
"github.com/stretchr/testify/suite"
|
||||
"testing"
|
||||
)
|
||||
|
||||
type CallbackTestSuite struct {
|
||||
suite.Suite
|
||||
|
||||
artifactCtl *artifacttesting.Controller
|
||||
originalArtifactCtl artifact.Controller
|
||||
artifactCtl *artifacttesting.Controller
|
||||
|
||||
execMgr *tasktesting.ExecutionManager
|
||||
|
||||
robotCtl *robottesting.Controller
|
||||
originalRobotCtl robot.Controller
|
||||
robotCtl *robottesting.Controller
|
||||
|
||||
reportMgr *reporttesting.Manager
|
||||
|
||||
scanCtl Controller
|
||||
originalScanCtl Controller
|
||||
scanCtl Controller
|
||||
|
||||
taskMgr *tasktesting.Manager
|
||||
originalTaskMgr task.Manager
|
||||
reportConverter *postprocessorstesting.ScanReportV1ToV2Converter
|
||||
}
|
||||
|
||||
func (suite *CallbackTestSuite) SetupSuite() {
|
||||
suite.originalArtifactCtl = artifact.Ctl
|
||||
suite.artifactCtl = &artifacttesting.Controller{}
|
||||
artifact.Ctl = suite.artifactCtl
|
||||
artifactCtl = suite.artifactCtl
|
||||
|
||||
suite.execMgr = &tasktesting.ExecutionManager{}
|
||||
|
||||
suite.originalRobotCtl = robot.Ctl
|
||||
suite.robotCtl = &robottesting.Controller{}
|
||||
robot.Ctl = suite.robotCtl
|
||||
robotCtl = suite.robotCtl
|
||||
|
||||
suite.reportMgr = &reporttesting.Manager{}
|
||||
|
||||
suite.originalTaskMgr = task.Mgr
|
||||
suite.taskMgr = &tasktesting.Manager{}
|
||||
task.Mgr = suite.taskMgr
|
||||
taskMgr = suite.taskMgr
|
||||
|
||||
suite.originalScanCtl = DefaultController
|
||||
suite.reportConverter = &postprocessorstesting.ScanReportV1ToV2Converter{}
|
||||
|
||||
suite.scanCtl = &basicController{
|
||||
@ -83,15 +75,7 @@ func (suite *CallbackTestSuite) SetupSuite() {
|
||||
taskMgr: suite.taskMgr,
|
||||
reportConverter: suite.reportConverter,
|
||||
}
|
||||
DefaultController = suite.scanCtl
|
||||
}
|
||||
|
||||
func (suite *CallbackTestSuite) TearDownSuite() {
|
||||
DefaultController = suite.originalScanCtl
|
||||
|
||||
artifact.Ctl = suite.originalArtifactCtl
|
||||
robot.Ctl = suite.originalRobotCtl
|
||||
task.Mgr = suite.originalTaskMgr
|
||||
scanCtl = suite.scanCtl
|
||||
}
|
||||
|
||||
func (suite *CallbackTestSuite) TestScanTaskStatusChange() {
|
||||
|
Loading…
Reference in New Issue
Block a user