Fix wrong environment id at monitoring
data for created or updated environments.
This commit is contained in:

committed by
Sebastian Serth

parent
a1d30f00c6
commit
5d54b0f786
@ -87,10 +87,10 @@ func (s *EnvironmentControllerTestSuite) TestList() {
|
|||||||
|
|
||||||
s.Run("returns multiple environments", func() {
|
s.Run("returns multiple environments", func() {
|
||||||
call.Run(func(args mock.Arguments) {
|
call.Run(func(args mock.Arguments) {
|
||||||
firstEnvironment, err := environment.NewNomadEnvironment(nil,
|
firstEnvironment, err := environment.NewNomadEnvironment(tests.DefaultEnvironmentIDAsInteger, nil,
|
||||||
"job \""+nomad.TemplateJobID(tests.DefaultEnvironmentIDAsInteger)+"\" {}")
|
"job \""+nomad.TemplateJobID(tests.DefaultEnvironmentIDAsInteger)+"\" {}")
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
secondEnvironment, err := environment.NewNomadEnvironment(nil,
|
secondEnvironment, err := environment.NewNomadEnvironment(tests.DefaultEnvironmentIDAsInteger, nil,
|
||||||
"job \""+nomad.TemplateJobID(tests.AnotherEnvironmentIDAsInteger)+"\" {}")
|
"job \""+nomad.TemplateJobID(tests.AnotherEnvironmentIDAsInteger)+"\" {}")
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
call.ReturnArguments = mock.Arguments{[]runner.ExecutionEnvironment{firstEnvironment, secondEnvironment}, nil}
|
call.ReturnArguments = mock.Arguments{[]runner.ExecutionEnvironment{firstEnvironment, secondEnvironment}, nil}
|
||||||
@ -149,7 +149,7 @@ func (s *EnvironmentControllerTestSuite) TestGet() {
|
|||||||
|
|
||||||
s.Run("returns environment", func() {
|
s.Run("returns environment", func() {
|
||||||
call.Run(func(args mock.Arguments) {
|
call.Run(func(args mock.Arguments) {
|
||||||
testEnvironment, err := environment.NewNomadEnvironment(nil,
|
testEnvironment, err := environment.NewNomadEnvironment(tests.DefaultEnvironmentIDAsInteger, nil,
|
||||||
"job \""+nomad.TemplateJobID(tests.DefaultEnvironmentIDAsInteger)+"\" {}")
|
"job \""+nomad.TemplateJobID(tests.DefaultEnvironmentIDAsInteger)+"\" {}")
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
call.ReturnArguments = mock.Arguments{testEnvironment, nil}
|
call.ReturnArguments = mock.Arguments{testEnvironment, nil}
|
||||||
|
@ -333,7 +333,7 @@ func newRunnerWithNotMockedRunnerManager(t *testing.T, apiMock *nomad.ExecutorAP
|
|||||||
|
|
||||||
runnerID := tests.DefaultRunnerID
|
runnerID := tests.DefaultRunnerID
|
||||||
runnerJob := runner.NewNomadJob(runnerID, nil, apiMock, runnerManager.Return)
|
runnerJob := runner.NewNomadJob(runnerID, nil, apiMock, runnerManager.Return)
|
||||||
e, err := environment.NewNomadEnvironment(apiMock, "job \"template-0\" {}")
|
e, err := environment.NewNomadEnvironment(0, apiMock, "job \"template-0\" {}")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
eID, err := nomad.EnvironmentIDFromRunnerID(runnerID)
|
eID, err := nomad.EnvironmentIDFromRunnerID(runnerID)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
@ -31,7 +31,7 @@ type NomadEnvironment struct {
|
|||||||
idleRunners storage.Storage[runner.Runner]
|
idleRunners storage.Storage[runner.Runner]
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewNomadEnvironment(apiClient nomad.ExecutorAPI, jobHCL string) (*NomadEnvironment, error) {
|
func NewNomadEnvironment(id dto.EnvironmentID, apiClient nomad.ExecutorAPI, jobHCL string) (*NomadEnvironment, error) {
|
||||||
job, err := parseJob(jobHCL)
|
job, err := parseJob(jobHCL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error parsing Nomad job: %w", err)
|
return nil, fmt.Errorf("error parsing Nomad job: %w", err)
|
||||||
@ -39,14 +39,14 @@ func NewNomadEnvironment(apiClient nomad.ExecutorAPI, jobHCL string) (*NomadEnvi
|
|||||||
|
|
||||||
e := &NomadEnvironment{apiClient, jobHCL, job, nil}
|
e := &NomadEnvironment{apiClient, jobHCL, job, nil}
|
||||||
e.idleRunners = storage.NewMonitoredLocalStorage[runner.Runner](monitoring.MeasurementIdleRunnerNomad,
|
e.idleRunners = storage.NewMonitoredLocalStorage[runner.Runner](monitoring.MeasurementIdleRunnerNomad,
|
||||||
runner.MonitorEnvironmentID[runner.Runner](e.ID()), time.Minute)
|
runner.MonitorEnvironmentID[runner.Runner](id), time.Minute)
|
||||||
return e, nil
|
return e, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewNomadEnvironmentFromRequest(
|
func NewNomadEnvironmentFromRequest(
|
||||||
apiClient nomad.ExecutorAPI, jobHCL string, id dto.EnvironmentID, request dto.ExecutionEnvironmentRequest) (
|
apiClient nomad.ExecutorAPI, jobHCL string, id dto.EnvironmentID, request dto.ExecutionEnvironmentRequest) (
|
||||||
*NomadEnvironment, error) {
|
*NomadEnvironment, error) {
|
||||||
environment, err := NewNomadEnvironment(apiClient, jobHCL)
|
environment, err := NewNomadEnvironment(id, apiClient, jobHCL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -156,13 +156,13 @@ func TestRegisterTemplateJobReturnsErrorWhenMonitoringEvaluationFails(t *testing
|
|||||||
|
|
||||||
func TestParseJob(t *testing.T) {
|
func TestParseJob(t *testing.T) {
|
||||||
t.Run("parses the given default job", func(t *testing.T) {
|
t.Run("parses the given default job", func(t *testing.T) {
|
||||||
environment, err := NewNomadEnvironment(nil, templateEnvironmentJobHCL)
|
environment, err := NewNomadEnvironment(tests.DefaultEnvironmentIDAsInteger, nil, templateEnvironmentJobHCL)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.NotNil(t, environment.job)
|
assert.NotNil(t, environment.job)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("returns error when given wrong job", func(t *testing.T) {
|
t.Run("returns error when given wrong job", func(t *testing.T) {
|
||||||
environment, err := NewNomadEnvironment(nil, "")
|
environment, err := NewNomadEnvironment(tests.DefaultEnvironmentIDAsInteger, nil, "")
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
assert.Nil(t, environment)
|
assert.Nil(t, environment)
|
||||||
})
|
})
|
||||||
|
@ -107,7 +107,7 @@ func TestNewNomadEnvironmentManager(t *testing.T) {
|
|||||||
|
|
||||||
t.Run("loads template environment job from file", func(t *testing.T) {
|
t.Run("loads template environment job from file", func(t *testing.T) {
|
||||||
templateJobHCL := "job \"" + tests.DefaultTemplateJobID + "\" {}"
|
templateJobHCL := "job \"" + tests.DefaultTemplateJobID + "\" {}"
|
||||||
_, err := NewNomadEnvironment(nil, templateJobHCL)
|
_, err := NewNomadEnvironment(tests.DefaultEnvironmentIDAsInteger, nil, templateJobHCL)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
f := createTempFile(t, templateJobHCL)
|
f := createTempFile(t, templateJobHCL)
|
||||||
defer os.Remove(f.Name())
|
defer os.Remove(f.Name())
|
||||||
@ -125,7 +125,7 @@ func TestNewNomadEnvironmentManager(t *testing.T) {
|
|||||||
|
|
||||||
m, err := NewNomadEnvironmentManager(runnerManagerMock, executorAPIMock, f.Name())
|
m, err := NewNomadEnvironmentManager(runnerManagerMock, executorAPIMock, f.Name())
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
_, err = NewNomadEnvironment(nil, m.templateEnvironmentHCL)
|
_, err = NewNomadEnvironment(tests.DefaultEnvironmentIDAsInteger, nil, m.templateEnvironmentHCL)
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -152,7 +152,8 @@ func TestNomadEnvironmentManager_Get(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Returns environment when it was added before", func(t *testing.T) {
|
t.Run("Returns environment when it was added before", func(t *testing.T) {
|
||||||
expectedEnvironment, err := NewNomadEnvironment(apiMock, templateEnvironmentJobHCL)
|
expectedEnvironment, err :=
|
||||||
|
NewNomadEnvironment(tests.DefaultEnvironmentIDAsInteger, apiMock, templateEnvironmentJobHCL)
|
||||||
expectedEnvironment.SetID(tests.DefaultEnvironmentIDAsInteger)
|
expectedEnvironment.SetID(tests.DefaultEnvironmentIDAsInteger)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
runnerManager.StoreEnvironment(expectedEnvironment)
|
runnerManager.StoreEnvironment(expectedEnvironment)
|
||||||
@ -170,7 +171,7 @@ func TestNomadEnvironmentManager_Get(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Updates values when environment already known by Poseidon", func(t *testing.T) {
|
t.Run("Updates values when environment already known by Poseidon", func(t *testing.T) {
|
||||||
fetchedEnvironment, err := NewNomadEnvironment(nil, templateEnvironmentJobHCL)
|
fetchedEnvironment, err := NewNomadEnvironment(tests.DefaultEnvironmentIDAsInteger, nil, templateEnvironmentJobHCL)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
fetchedEnvironment.SetID(tests.DefaultEnvironmentIDAsInteger)
|
fetchedEnvironment.SetID(tests.DefaultEnvironmentIDAsInteger)
|
||||||
fetchedEnvironment.SetImage("random docker image")
|
fetchedEnvironment.SetImage("random docker image")
|
||||||
@ -178,7 +179,7 @@ func TestNomadEnvironmentManager_Get(t *testing.T) {
|
|||||||
call.ReturnArguments = mock.Arguments{[]*nomadApi.Job{fetchedEnvironment.job}, nil}
|
call.ReturnArguments = mock.Arguments{[]*nomadApi.Job{fetchedEnvironment.job}, nil}
|
||||||
})
|
})
|
||||||
|
|
||||||
localEnvironment, err := NewNomadEnvironment(nil, templateEnvironmentJobHCL)
|
localEnvironment, err := NewNomadEnvironment(tests.DefaultEnvironmentIDAsInteger, nil, templateEnvironmentJobHCL)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
localEnvironment.SetID(tests.DefaultEnvironmentIDAsInteger)
|
localEnvironment.SetID(tests.DefaultEnvironmentIDAsInteger)
|
||||||
runnerManager.StoreEnvironment(localEnvironment)
|
runnerManager.StoreEnvironment(localEnvironment)
|
||||||
@ -194,7 +195,7 @@ func TestNomadEnvironmentManager_Get(t *testing.T) {
|
|||||||
runnerManager.DeleteEnvironment(tests.DefaultEnvironmentIDAsInteger)
|
runnerManager.DeleteEnvironment(tests.DefaultEnvironmentIDAsInteger)
|
||||||
|
|
||||||
t.Run("Adds environment when not already known by Poseidon", func(t *testing.T) {
|
t.Run("Adds environment when not already known by Poseidon", func(t *testing.T) {
|
||||||
fetchedEnvironment, err := NewNomadEnvironment(nil, templateEnvironmentJobHCL)
|
fetchedEnvironment, err := NewNomadEnvironment(tests.DefaultEnvironmentIDAsInteger, nil, templateEnvironmentJobHCL)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
fetchedEnvironment.SetID(tests.DefaultEnvironmentIDAsInteger)
|
fetchedEnvironment.SetID(tests.DefaultEnvironmentIDAsInteger)
|
||||||
fetchedEnvironment.SetImage("random docker image")
|
fetchedEnvironment.SetImage("random docker image")
|
||||||
@ -231,7 +232,7 @@ func TestNomadEnvironmentManager_List(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Returns added environment", func(t *testing.T) {
|
t.Run("Returns added environment", func(t *testing.T) {
|
||||||
localEnvironment, err := NewNomadEnvironment(apiMock, templateEnvironmentJobHCL)
|
localEnvironment, err := NewNomadEnvironment(tests.DefaultEnvironmentIDAsInteger, apiMock, templateEnvironmentJobHCL)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
localEnvironment.SetID(tests.DefaultEnvironmentIDAsInteger)
|
localEnvironment.SetID(tests.DefaultEnvironmentIDAsInteger)
|
||||||
runnerManager.StoreEnvironment(localEnvironment)
|
runnerManager.StoreEnvironment(localEnvironment)
|
||||||
@ -244,7 +245,8 @@ func TestNomadEnvironmentManager_List(t *testing.T) {
|
|||||||
runnerManager.DeleteEnvironment(tests.DefaultEnvironmentIDAsInteger)
|
runnerManager.DeleteEnvironment(tests.DefaultEnvironmentIDAsInteger)
|
||||||
|
|
||||||
t.Run("Fetches new Runners via the api client", func(t *testing.T) {
|
t.Run("Fetches new Runners via the api client", func(t *testing.T) {
|
||||||
fetchedEnvironment, err := NewNomadEnvironment(apiMock, templateEnvironmentJobHCL)
|
fetchedEnvironment, err :=
|
||||||
|
NewNomadEnvironment(tests.DefaultEnvironmentIDAsInteger, apiMock, templateEnvironmentJobHCL)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
fetchedEnvironment.SetID(tests.DefaultEnvironmentIDAsInteger)
|
fetchedEnvironment.SetID(tests.DefaultEnvironmentIDAsInteger)
|
||||||
status := structs.JobStatusRunning
|
status := structs.JobStatusRunning
|
||||||
|
Reference in New Issue
Block a user