Merge pull request #11106 from qinshaoxuan/fix_11051

Fix bug when scanner is unhealthy
This commit is contained in:
He Weiwei 2020-05-20 21:06:22 +08:00 committed by GitHub
commit 69fe9e9bf7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 29 additions and 3 deletions

View File

@ -250,7 +250,7 @@ func (bc *basicController) GetRegistrationByProject(projectID int64, options ...
} }
} }
return registration, err return registration, nil
} }
// Ping ... // Ping ...

View File

@ -15,6 +15,7 @@
package scanner package scanner
import ( import (
"fmt"
"testing" "testing"
"github.com/goharbor/harbor/src/common/models" "github.com/goharbor/harbor/src/common/models"
@ -46,8 +47,8 @@ func TestController(t *testing.T) {
suite.Run(t, new(ControllerTestSuite)) suite.Run(t, new(ControllerTestSuite))
} }
// SetupSuite prepares env for the controller test suite // SetupTest prepares env for the controller test suite
func (suite *ControllerTestSuite) SetupSuite() { func (suite *ControllerTestSuite) SetupTest() {
suite.mMgr = &scannertesting.Manager{} suite.mMgr = &scannertesting.Manager{}
suite.mMeta = new(MockProMetaManager) suite.mMeta = new(MockProMetaManager)
@ -227,6 +228,31 @@ func (suite *ControllerTestSuite) TestGetRegistrationByProject() {
assert.Equal(suite.T(), "forUT", r.Name) assert.Equal(suite.T(), "forUT", r.Name)
} }
// TestGetRegistrationByProjectWhenPingError tests GetRegistrationByProject
func (suite *ControllerTestSuite) TestGetRegistrationByProjectWhenPingError() {
m := make(map[string]string, 1)
m[proScannerMetaKey] = "uuid"
// Configured at project level
var pid int64 = 1
suite.sample.UUID = "uuid"
suite.mMeta.On("Get", pid, []string{proScannerMetaKey}).Return(m, nil)
suite.mMgr.On("Get", "uuid").Return(suite.sample, nil)
// Ping error
mc := &v1testing.Client{}
mc.On("GetMetadata").Return(nil, fmt.Errorf("getMetadata error"))
mcp := &v1testing.ClientPool{}
mocktesting.OnAnything(mcp, "Get").Return(mc, nil)
suite.c.clientPool = mcp
r, err := suite.c.GetRegistrationByProject(pid)
require.NoError(suite.T(), err)
assert.Equal(suite.T(), "unhealthy", r.Health)
}
// TestPing ... // TestPing ...
func (suite *ControllerTestSuite) TestPing() { func (suite *ControllerTestSuite) TestPing() {
meta, err := suite.c.Ping(suite.sample) meta, err := suite.c.Ping(suite.sample)