
We previously didn't really had any structure in our project apart from creating a new folder for each package in our project root. Now that we have accumulated some packages, we use the well-known Golang project layout in order to clearly communicate our intent with packages. See https://github.com/golang-standards/project-layout
77 lines
2.6 KiB
Go
77 lines
2.6 KiB
Go
package runner
|
|
|
|
import (
|
|
nomadApi "github.com/hashicorp/nomad/api"
|
|
"github.com/stretchr/testify/suite"
|
|
"testing"
|
|
)
|
|
|
|
func TestEnvironmentStoreTestSuite(t *testing.T) {
|
|
suite.Run(t, new(EnvironmentStoreTestSuite))
|
|
}
|
|
|
|
type EnvironmentStoreTestSuite struct {
|
|
suite.Suite
|
|
environmentStorage *localNomadEnvironmentStorage
|
|
environment *NomadEnvironment
|
|
}
|
|
|
|
func (s *EnvironmentStoreTestSuite) SetupTest() {
|
|
s.environmentStorage = NewLocalNomadEnvironmentStorage()
|
|
s.environment = &NomadEnvironment{environmentID: defaultEnvironmentID}
|
|
}
|
|
|
|
func (s *EnvironmentStoreTestSuite) TestAddedEnvironmentCanBeRetrieved() {
|
|
s.environmentStorage.Add(s.environment)
|
|
retrievedEnvironment, ok := s.environmentStorage.Get(s.environment.ID())
|
|
s.True(ok, "A saved runner should be retrievable")
|
|
s.Equal(s.environment, retrievedEnvironment)
|
|
}
|
|
|
|
func (s *EnvironmentStoreTestSuite) TestEnvironmentWithSameIdOverwritesOldOne() {
|
|
otherEnvironmentWithSameID := &NomadEnvironment{environmentID: defaultEnvironmentID}
|
|
otherEnvironmentWithSameID.templateJob = &nomadApi.Job{}
|
|
s.NotEqual(s.environment, otherEnvironmentWithSameID)
|
|
|
|
s.environmentStorage.Add(s.environment)
|
|
s.environmentStorage.Add(otherEnvironmentWithSameID)
|
|
retrievedEnvironment, _ := s.environmentStorage.Get(s.environment.ID())
|
|
s.NotEqual(s.environment, retrievedEnvironment)
|
|
s.Equal(otherEnvironmentWithSameID, retrievedEnvironment)
|
|
}
|
|
|
|
func (s *EnvironmentStoreTestSuite) TestDeletedEnvironmentIsNotAccessible() {
|
|
s.environmentStorage.Add(s.environment)
|
|
s.environmentStorage.Delete(s.environment.ID())
|
|
retrievedRunner, ok := s.environmentStorage.Get(s.environment.ID())
|
|
s.Nil(retrievedRunner)
|
|
s.False(ok, "A deleted runner should not be accessible")
|
|
}
|
|
|
|
func (s *EnvironmentStoreTestSuite) TestLenOfEmptyPoolIsZero() {
|
|
s.Equal(0, s.environmentStorage.Length())
|
|
}
|
|
|
|
func (s *EnvironmentStoreTestSuite) TestLenChangesOnStoreContentChange() {
|
|
s.Run("len increases when environment is added", func() {
|
|
s.environmentStorage.Add(s.environment)
|
|
s.Equal(1, s.environmentStorage.Length())
|
|
})
|
|
|
|
s.Run("len does not increase when environment with same id is added", func() {
|
|
s.environmentStorage.Add(s.environment)
|
|
s.Equal(1, s.environmentStorage.Length())
|
|
})
|
|
|
|
s.Run("len increases again when different environment is added", func() {
|
|
anotherEnvironment := &NomadEnvironment{environmentID: anotherEnvironmentID}
|
|
s.environmentStorage.Add(anotherEnvironment)
|
|
s.Equal(2, s.environmentStorage.Length())
|
|
})
|
|
|
|
s.Run("len decreases when environment is deleted", func() {
|
|
s.environmentStorage.Delete(s.environment.ID())
|
|
s.Equal(1, s.environmentStorage.Length())
|
|
})
|
|
}
|