Refactor setup of runner manager test suite
This commit is contained in:
@ -26,15 +26,17 @@ type ManagerTestSuite struct {
|
|||||||
exerciseRunner Runner
|
exerciseRunner Runner
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ManagerTestSuite) setUp(returnedRunnerIds []string) {
|
func (suite *ManagerTestSuite) SetupTest() {
|
||||||
suite.apiMock = &nomad.ExecutorApiMock{}
|
suite.apiMock = &nomad.ExecutorApiMock{}
|
||||||
suite.nomadRunnerManager = NewNomadRunnerManager(suite.apiMock)
|
suite.nomadRunnerManager = NewNomadRunnerManager(suite.apiMock)
|
||||||
suite.exerciseRunner = CreateTestRunner()
|
suite.exerciseRunner = CreateTestRunner()
|
||||||
suite.mockRunnerQueries(returnedRunnerIds)
|
suite.mockRunnerQueries([]string{})
|
||||||
suite.registerDefaultEnvironment()
|
suite.registerDefaultEnvironment()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ManagerTestSuite) mockRunnerQueries(returnedRunnerIds []string) {
|
func (suite *ManagerTestSuite) mockRunnerQueries(returnedRunnerIds []string) {
|
||||||
|
// reset expected calls to allow new mocked return values
|
||||||
|
suite.apiMock.ExpectedCalls = []*mock.Call{}
|
||||||
suite.apiMock.On("LoadRunners", jobId).Return(returnedRunnerIds, nil)
|
suite.apiMock.On("LoadRunners", jobId).Return(returnedRunnerIds, nil)
|
||||||
suite.apiMock.On("JobScale", jobId).Return(len(returnedRunnerIds), nil)
|
suite.apiMock.On("JobScale", jobId).Return(len(returnedRunnerIds), nil)
|
||||||
suite.apiMock.On("SetJobScale", jobId, mock.AnythingOfType("int"), "Runner Requested").Return(nil)
|
suite.apiMock.On("SetJobScale", jobId, mock.AnythingOfType("int"), "Runner Requested").Return(nil)
|
||||||
@ -44,6 +46,10 @@ func (suite *ManagerTestSuite) registerDefaultEnvironment() {
|
|||||||
suite.nomadRunnerManager.RegisterEnvironment(defaultEnvironmentId, jobId, 5)
|
suite.nomadRunnerManager.RegisterEnvironment(defaultEnvironmentId, jobId, 5)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (suite *ManagerTestSuite) waitForRunnerRefresh() {
|
||||||
|
time.Sleep(waitTime)
|
||||||
|
}
|
||||||
|
|
||||||
func (suite *ManagerTestSuite) TestRegisterEnvironmentAddsANewJob() {
|
func (suite *ManagerTestSuite) TestRegisterEnvironmentAddsANewJob() {
|
||||||
suite.NotNil(suite.nomadRunnerManager.jobs[defaultEnvironmentId])
|
suite.NotNil(suite.nomadRunnerManager.jobs[defaultEnvironmentId])
|
||||||
}
|
}
|
||||||
@ -62,15 +68,13 @@ func (suite *ManagerTestSuite) TestUseReturnsRunnerIfAvailable() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ManagerTestSuite) TestUseReturnsErrorIfNoRunnerAvailable() {
|
func (suite *ManagerTestSuite) TestUseReturnsErrorIfNoRunnerAvailable() {
|
||||||
suite.setUp([]string{})
|
suite.waitForRunnerRefresh()
|
||||||
time.Sleep(waitTime)
|
|
||||||
runner, err := suite.nomadRunnerManager.Use(defaultEnvironmentId)
|
runner, err := suite.nomadRunnerManager.Use(defaultEnvironmentId)
|
||||||
suite.Nil(runner)
|
suite.Nil(runner)
|
||||||
suite.Equal(ErrNoRunnersAvailable, err)
|
suite.Equal(ErrNoRunnersAvailable, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ManagerTestSuite) TestUseReturnsNoRunnerOfDifferentEnvironment() {
|
func (suite *ManagerTestSuite) TestUseReturnsNoRunnerOfDifferentEnvironment() {
|
||||||
suite.setUp([]string{})
|
|
||||||
suite.nomadRunnerManager.jobs[defaultEnvironmentId].idleRunners.Add(suite.exerciseRunner)
|
suite.nomadRunnerManager.jobs[defaultEnvironmentId].idleRunners.Add(suite.exerciseRunner)
|
||||||
receivedRunner, err := suite.nomadRunnerManager.Use(otherEnvironmentId)
|
receivedRunner, err := suite.nomadRunnerManager.Use(otherEnvironmentId)
|
||||||
suite.Nil(receivedRunner)
|
suite.Nil(receivedRunner)
|
||||||
@ -93,8 +97,8 @@ func (suite *ManagerTestSuite) TestUseThrowsAnErrorIfNoRunnersAvailable() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ManagerTestSuite) TestUseAddsRunnerToUsedRunners() {
|
func (suite *ManagerTestSuite) TestUseAddsRunnerToUsedRunners() {
|
||||||
suite.setUp([]string{RunnerId})
|
suite.mockRunnerQueries([]string{RunnerId})
|
||||||
time.Sleep(waitTime)
|
suite.waitForRunnerRefresh()
|
||||||
receivedRunner, _ := suite.nomadRunnerManager.Use(defaultEnvironmentId)
|
receivedRunner, _ := suite.nomadRunnerManager.Use(defaultEnvironmentId)
|
||||||
savedRunner, ok := suite.nomadRunnerManager.usedRunners.Get(receivedRunner.Id())
|
savedRunner, ok := suite.nomadRunnerManager.usedRunners.Get(receivedRunner.Id())
|
||||||
suite.True(ok)
|
suite.True(ok)
|
||||||
@ -102,7 +106,6 @@ func (suite *ManagerTestSuite) TestUseAddsRunnerToUsedRunners() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ManagerTestSuite) TestGetReturnsRunnerIfRunnerIsUsed() {
|
func (suite *ManagerTestSuite) TestGetReturnsRunnerIfRunnerIsUsed() {
|
||||||
suite.setUp([]string{})
|
|
||||||
suite.nomadRunnerManager.usedRunners.Add(suite.exerciseRunner)
|
suite.nomadRunnerManager.usedRunners.Add(suite.exerciseRunner)
|
||||||
savedRunner, err := suite.nomadRunnerManager.Get(suite.exerciseRunner.Id())
|
savedRunner, err := suite.nomadRunnerManager.Get(suite.exerciseRunner.Id())
|
||||||
suite.NoError(err)
|
suite.NoError(err)
|
||||||
@ -110,14 +113,12 @@ func (suite *ManagerTestSuite) TestGetReturnsRunnerIfRunnerIsUsed() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ManagerTestSuite) TestGetReturnsErrorIfRunnerNotFound() {
|
func (suite *ManagerTestSuite) TestGetReturnsErrorIfRunnerNotFound() {
|
||||||
suite.setUp([]string{})
|
|
||||||
savedRunner, err := suite.nomadRunnerManager.Get(RunnerId)
|
savedRunner, err := suite.nomadRunnerManager.Get(RunnerId)
|
||||||
suite.Nil(savedRunner)
|
suite.Nil(savedRunner)
|
||||||
suite.Error(err)
|
suite.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ManagerTestSuite) TestReturnRemovesRunnerFromUsedRunners() {
|
func (suite *ManagerTestSuite) TestReturnRemovesRunnerFromUsedRunners() {
|
||||||
suite.setUp([]string{})
|
|
||||||
suite.apiMock.On("DeleteRunner", mock.AnythingOfType("string")).Return(nil)
|
suite.apiMock.On("DeleteRunner", mock.AnythingOfType("string")).Return(nil)
|
||||||
suite.nomadRunnerManager.usedRunners.Add(suite.exerciseRunner)
|
suite.nomadRunnerManager.usedRunners.Add(suite.exerciseRunner)
|
||||||
err := suite.nomadRunnerManager.Return(suite.exerciseRunner)
|
err := suite.nomadRunnerManager.Return(suite.exerciseRunner)
|
||||||
@ -127,7 +128,6 @@ func (suite *ManagerTestSuite) TestReturnRemovesRunnerFromUsedRunners() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ManagerTestSuite) TestReturnCallsDeleteRunnerApiMethod() {
|
func (suite *ManagerTestSuite) TestReturnCallsDeleteRunnerApiMethod() {
|
||||||
suite.setUp([]string{})
|
|
||||||
suite.apiMock.On("DeleteRunner", mock.AnythingOfType("string")).Return(nil)
|
suite.apiMock.On("DeleteRunner", mock.AnythingOfType("string")).Return(nil)
|
||||||
err := suite.nomadRunnerManager.Return(suite.exerciseRunner)
|
err := suite.nomadRunnerManager.Return(suite.exerciseRunner)
|
||||||
suite.Nil(err)
|
suite.Nil(err)
|
||||||
@ -135,37 +135,36 @@ func (suite *ManagerTestSuite) TestReturnCallsDeleteRunnerApiMethod() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ManagerTestSuite) TestReturnThrowsErrorWhenApiCallFailed() {
|
func (suite *ManagerTestSuite) TestReturnThrowsErrorWhenApiCallFailed() {
|
||||||
suite.setUp([]string{})
|
|
||||||
suite.apiMock.On("DeleteRunner", mock.AnythingOfType("string")).Return(errors.New("return failed"))
|
suite.apiMock.On("DeleteRunner", mock.AnythingOfType("string")).Return(errors.New("return failed"))
|
||||||
err := suite.nomadRunnerManager.Return(suite.exerciseRunner)
|
err := suite.nomadRunnerManager.Return(suite.exerciseRunner)
|
||||||
suite.Error(err)
|
suite.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ManagerTestSuite) TestRefreshFetchesRunners() {
|
func (suite *ManagerTestSuite) TestRefreshFetchesRunners() {
|
||||||
suite.setUp([]string{RunnerId})
|
suite.mockRunnerQueries([]string{RunnerId})
|
||||||
time.Sleep(waitTime)
|
suite.waitForRunnerRefresh()
|
||||||
suite.apiMock.AssertCalled(suite.T(), "LoadRunners", jobId)
|
suite.apiMock.AssertCalled(suite.T(), "LoadRunners", jobId)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ManagerTestSuite) TestNewRunnersFoundInRefreshAreAddedToUnusedRunners() {
|
func (suite *ManagerTestSuite) TestNewRunnersFoundInRefreshAreAddedToUnusedRunners() {
|
||||||
suite.setUp([]string{RunnerId})
|
suite.mockRunnerQueries([]string{RunnerId})
|
||||||
time.Sleep(waitTime)
|
suite.waitForRunnerRefresh()
|
||||||
availableRunner, _ := suite.nomadRunnerManager.Use(defaultEnvironmentId)
|
availableRunner, _ := suite.nomadRunnerManager.Use(defaultEnvironmentId)
|
||||||
suite.Equal(availableRunner.Id(), RunnerId)
|
suite.Equal(availableRunner.Id(), RunnerId)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ManagerTestSuite) TestRefreshScalesJob() {
|
func (suite *ManagerTestSuite) TestRefreshScalesJob() {
|
||||||
suite.setUp([]string{RunnerId})
|
suite.mockRunnerQueries([]string{RunnerId})
|
||||||
time.Sleep(waitTime)
|
suite.waitForRunnerRefresh()
|
||||||
// use one runner
|
// use one runner
|
||||||
_, _ = suite.nomadRunnerManager.Use(defaultEnvironmentId)
|
_, _ = suite.nomadRunnerManager.Use(defaultEnvironmentId)
|
||||||
time.Sleep(waitTime)
|
suite.waitForRunnerRefresh()
|
||||||
suite.apiMock.AssertCalled(suite.T(), "SetJobScale", jobId, 6, "Runner Requested")
|
suite.apiMock.AssertCalled(suite.T(), "SetJobScale", jobId, 6, "Runner Requested")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ManagerTestSuite) TestRefreshAddsRunnerToPool() {
|
func (suite *ManagerTestSuite) TestRefreshAddsRunnerToPool() {
|
||||||
suite.setUp([]string{RunnerId})
|
suite.mockRunnerQueries([]string{RunnerId})
|
||||||
time.Sleep(waitTime)
|
suite.waitForRunnerRefresh()
|
||||||
poolRunner, ok := suite.nomadRunnerManager.jobs[defaultEnvironmentId].idleRunners.Get(RunnerId)
|
poolRunner, ok := suite.nomadRunnerManager.jobs[defaultEnvironmentId].idleRunners.Get(RunnerId)
|
||||||
suite.True(ok)
|
suite.True(ok)
|
||||||
suite.Equal(RunnerId, poolRunner.Id())
|
suite.Equal(RunnerId, poolRunner.Id())
|
||||||
|
Reference in New Issue
Block a user