
After we introduced the linter we haven't really touched the old code. This commit now fixes all linting issue that exist right now.
104 lines
3.0 KiB
Go
104 lines
3.0 KiB
Go
package runner
|
|
|
|
import (
|
|
"github.com/stretchr/testify/suite"
|
|
"gitlab.hpi.de/codeocean/codemoon/poseidon/api/dto"
|
|
"gitlab.hpi.de/codeocean/codemoon/poseidon/tests"
|
|
"testing"
|
|
)
|
|
|
|
func TestRunnerPoolTestSuite(t *testing.T) {
|
|
suite.Run(t, new(RunnerPoolTestSuite))
|
|
}
|
|
|
|
type RunnerPoolTestSuite struct {
|
|
suite.Suite
|
|
runnerStorage *localRunnerStorage
|
|
runner Runner
|
|
}
|
|
|
|
func (s *RunnerPoolTestSuite) SetupTest() {
|
|
s.runnerStorage = NewLocalRunnerStorage()
|
|
s.runner = NewRunner(tests.DefaultRunnerID, nil)
|
|
s.runner.Add(tests.DefaultExecutionID, &dto.ExecutionRequest{Command: "true"})
|
|
}
|
|
|
|
func (s *RunnerPoolTestSuite) TestAddedRunnerCanBeRetrieved() {
|
|
s.runnerStorage.Add(s.runner)
|
|
retrievedRunner, ok := s.runnerStorage.Get(s.runner.ID())
|
|
s.True(ok, "A saved runner should be retrievable")
|
|
s.Equal(s.runner, retrievedRunner)
|
|
}
|
|
|
|
func (s *RunnerPoolTestSuite) TestRunnerWithSameIdOverwritesOldOne() {
|
|
otherRunnerWithSameID := NewRunner(s.runner.ID(), nil)
|
|
// assure runner is actually different
|
|
s.NotEqual(s.runner, otherRunnerWithSameID)
|
|
|
|
s.runnerStorage.Add(s.runner)
|
|
s.runnerStorage.Add(otherRunnerWithSameID)
|
|
retrievedRunner, _ := s.runnerStorage.Get(s.runner.ID())
|
|
s.NotEqual(s.runner, retrievedRunner)
|
|
s.Equal(otherRunnerWithSameID, retrievedRunner)
|
|
}
|
|
|
|
func (s *RunnerPoolTestSuite) TestDeletedRunnersAreNotAccessible() {
|
|
s.runnerStorage.Add(s.runner)
|
|
s.runnerStorage.Delete(s.runner.ID())
|
|
retrievedRunner, ok := s.runnerStorage.Get(s.runner.ID())
|
|
s.Nil(retrievedRunner)
|
|
s.False(ok, "A deleted runner should not be accessible")
|
|
}
|
|
|
|
func (s *RunnerPoolTestSuite) TestSampleReturnsRunnerWhenOneIsAvailable() {
|
|
s.runnerStorage.Add(s.runner)
|
|
sampledRunner, ok := s.runnerStorage.Sample()
|
|
s.NotNil(sampledRunner)
|
|
s.True(ok)
|
|
}
|
|
|
|
func (s *RunnerPoolTestSuite) TestSampleReturnsFalseWhenNoneIsAvailable() {
|
|
sampledRunner, ok := s.runnerStorage.Sample()
|
|
s.Nil(sampledRunner)
|
|
s.False(ok)
|
|
}
|
|
|
|
func (s *RunnerPoolTestSuite) TestSampleRemovesRunnerFromPool() {
|
|
s.runnerStorage.Add(s.runner)
|
|
sampledRunner, _ := s.runnerStorage.Sample()
|
|
_, ok := s.runnerStorage.Get(sampledRunner.ID())
|
|
s.False(ok)
|
|
}
|
|
|
|
func (s *RunnerPoolTestSuite) TestLenOfEmptyPoolIsZero() {
|
|
s.Equal(0, s.runnerStorage.Length())
|
|
}
|
|
|
|
func (s *RunnerPoolTestSuite) TestLenChangesOnStoreContentChange() {
|
|
s.Run("len increases when runner is added", func() {
|
|
s.runnerStorage.Add(s.runner)
|
|
s.Equal(1, s.runnerStorage.Length())
|
|
})
|
|
|
|
s.Run("len does not increase when runner with same id is added", func() {
|
|
s.runnerStorage.Add(s.runner)
|
|
s.Equal(1, s.runnerStorage.Length())
|
|
})
|
|
|
|
s.Run("len increases again when different runner is added", func() {
|
|
anotherRunner := NewRunner(tests.AnotherRunnerID, nil)
|
|
s.runnerStorage.Add(anotherRunner)
|
|
s.Equal(2, s.runnerStorage.Length())
|
|
})
|
|
|
|
s.Run("len decreases when runner is deleted", func() {
|
|
s.runnerStorage.Delete(s.runner.ID())
|
|
s.Equal(1, s.runnerStorage.Length())
|
|
})
|
|
|
|
s.Run("len decreases when runner is sampled", func() {
|
|
_, _ = s.runnerStorage.Sample()
|
|
s.Equal(0, s.runnerStorage.Length())
|
|
})
|
|
}
|