Refactor EntityStore interface to multiple interfaces of specific type
This commit is contained in:

committed by
Jan-Eric Hellenberg

parent
52636b04cf
commit
619cd40fb6
77
runner/nomad_job_storage_test.go
Normal file
77
runner/nomad_job_storage_test.go
Normal file
@@ -0,0 +1,77 @@
|
||||
package runner
|
||||
|
||||
import (
|
||||
"github.com/stretchr/testify/suite"
|
||||
"gitlab.hpi.de/codeocean/codemoon/poseidon/tests"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestJobStoreTestSuite(t *testing.T) {
|
||||
suite.Run(t, new(JobStoreTestSuite))
|
||||
}
|
||||
|
||||
type JobStoreTestSuite struct {
|
||||
suite.Suite
|
||||
jobStorage *localNomadJobStorage
|
||||
job *NomadJob
|
||||
}
|
||||
|
||||
func (suite *JobStoreTestSuite) SetupTest() {
|
||||
suite.jobStorage = NewLocalNomadJobStorage()
|
||||
suite.job = &NomadJob{environmentId: defaultEnvironmentId, jobId: tests.DefaultJobId}
|
||||
}
|
||||
|
||||
func (suite *JobStoreTestSuite) TestAddedJobCanBeRetrieved() {
|
||||
suite.jobStorage.Add(suite.job)
|
||||
retrievedJob, ok := suite.jobStorage.Get(suite.job.Id())
|
||||
suite.True(ok, "A saved runner should be retrievable")
|
||||
suite.Equal(suite.job, retrievedJob)
|
||||
}
|
||||
|
||||
func (suite *JobStoreTestSuite) TestJobWithSameIdOverwritesOldOne() {
|
||||
otherJobWithSameId := &NomadJob{environmentId: defaultEnvironmentId}
|
||||
// assure runner is actually different
|
||||
otherJobWithSameId.jobId = tests.AnotherJobId
|
||||
suite.NotEqual(suite.job, otherJobWithSameId)
|
||||
|
||||
suite.jobStorage.Add(suite.job)
|
||||
suite.jobStorage.Add(otherJobWithSameId)
|
||||
retrievedJob, _ := suite.jobStorage.Get(suite.job.Id())
|
||||
suite.NotEqual(suite.job, retrievedJob)
|
||||
suite.Equal(otherJobWithSameId, retrievedJob)
|
||||
}
|
||||
|
||||
func (suite *JobStoreTestSuite) TestDeletedJobIsNotAccessible() {
|
||||
suite.jobStorage.Add(suite.job)
|
||||
suite.jobStorage.Delete(suite.job.Id())
|
||||
retrievedRunner, ok := suite.jobStorage.Get(suite.job.Id())
|
||||
suite.Nil(retrievedRunner)
|
||||
suite.False(ok, "A deleted runner should not be accessible")
|
||||
}
|
||||
|
||||
func (suite *JobStoreTestSuite) TestLenOfEmptyPoolIsZero() {
|
||||
suite.Equal(0, suite.jobStorage.Length())
|
||||
}
|
||||
|
||||
func (suite *JobStoreTestSuite) TestLenChangesOnStoreContentChange() {
|
||||
suite.Run("len increases when job is added", func() {
|
||||
suite.jobStorage.Add(suite.job)
|
||||
suite.Equal(1, suite.jobStorage.Length())
|
||||
})
|
||||
|
||||
suite.Run("len does not increase when job with same id is added", func() {
|
||||
suite.jobStorage.Add(suite.job)
|
||||
suite.Equal(1, suite.jobStorage.Length())
|
||||
})
|
||||
|
||||
suite.Run("len increases again when different job is added", func() {
|
||||
anotherJob := &NomadJob{environmentId: anotherEnvironmentId}
|
||||
suite.jobStorage.Add(anotherJob)
|
||||
suite.Equal(2, suite.jobStorage.Length())
|
||||
})
|
||||
|
||||
suite.Run("len decreases when job is deleted", func() {
|
||||
suite.jobStorage.Delete(suite.job.Id())
|
||||
suite.Equal(1, suite.jobStorage.Length())
|
||||
})
|
||||
}
|
Reference in New Issue
Block a user