Add EntityStore interface

This commit is contained in:
Jan-Eric Hellenberg
2021-05-05 11:35:19 +02:00
committed by Jan-Eric Hellenberg
parent dba7160a41
commit abb1ce1bf8
10 changed files with 172 additions and 98 deletions

View File

@@ -0,0 +1,66 @@
package environment
import (
"github.com/stretchr/testify/suite"
"gitlab.hpi.de/codeocean/codemoon/poseidon/runner"
"testing"
)
type DummyEntity struct{}
func (DummyEntity) Id() string {
return ""
}
func TestRunnerPoolTestSuite(t *testing.T) {
suite.Run(t, new(RunnerPoolTestSuite))
}
type RunnerPoolTestSuite struct {
suite.Suite
runnerPool *localRunnerPool
runner runner.Runner
}
func (suite *RunnerPoolTestSuite) SetupTest() {
suite.runnerPool = NewLocalRunnerPool()
suite.runner = CreateTestRunner()
}
func (suite *RunnerPoolTestSuite) TestAddInvalidEntityTypeReturnsError() {
dummyEntity := DummyEntity{}
err := suite.runnerPool.Add(dummyEntity)
suite.Error(err)
}
func (suite *RunnerPoolTestSuite) TestAddValidEntityReturnsNoError() {
err := suite.runnerPool.Add(suite.runner)
suite.NoError(err)
}
func (suite *RunnerPoolTestSuite) TestAddedRunnerCanBeRetrieved() {
_ = suite.runnerPool.Add(suite.runner)
retrievedRunner, ok := suite.runnerPool.Get(suite.runner.Id())
suite.True(ok, "A saved runner should be retrievable")
suite.Equal(suite.runner, retrievedRunner)
}
func (suite *RunnerPoolTestSuite) TestRunnerWithSameIdOverwritesOldOne() {
otherRunnerWithSameId := runner.NewExerciseRunner(suite.runner.Id())
// assure runner is actually different
suite.NotEqual(suite.runner, otherRunnerWithSameId)
_ = suite.runnerPool.Add(suite.runner)
_ = suite.runnerPool.Add(otherRunnerWithSameId)
retrievedRunner, _ := suite.runnerPool.Get(suite.runner.Id())
suite.NotEqual(suite.runner, retrievedRunner)
suite.Equal(otherRunnerWithSameId, retrievedRunner)
}
func (suite *RunnerPoolTestSuite) TestDeletedRunnersAreNotAccessible() {
_ = suite.runnerPool.Add(suite.runner)
suite.runnerPool.Delete(suite.runner.Id())
retrievedRunner, ok := suite.runnerPool.Get(suite.runner.Id())
suite.Nil(retrievedRunner)
suite.False(ok, "A deleted runner should not be accessible")
}