mirror of
https://github.com/TwiN/gatus.git
synced 2024-11-25 17:33:19 +01:00
Fix #202: Postgres error when an endpoint has a second page but others do not
This commit is contained in:
parent
31bf2aeb80
commit
2af3425b9e
@ -568,6 +568,10 @@ func (s *Store) getEndpointResultsByEndpointID(tx *sql.Tx, endpointID int64, pag
|
|||||||
results = append([]*core.Result{result}, results...)
|
results = append([]*core.Result{result}, results...)
|
||||||
idResultMap[id] = result
|
idResultMap[id] = result
|
||||||
}
|
}
|
||||||
|
if len(idResultMap) == 0 {
|
||||||
|
// If there's no result, we'll just return an empty/nil slice
|
||||||
|
return
|
||||||
|
}
|
||||||
// Get condition results
|
// Get condition results
|
||||||
args := make([]interface{}, 0, len(idResultMap))
|
args := make([]interface{}, 0, len(idResultMap))
|
||||||
query := `SELECT endpoint_result_id, condition, success
|
query := `SELECT endpoint_result_id, condition, success
|
||||||
|
@ -184,13 +184,10 @@ func TestStore_GetEndpointStatusForMissingStatusReturnsNil(t *testing.T) {
|
|||||||
func TestStore_GetAllEndpointStatuses(t *testing.T) {
|
func TestStore_GetAllEndpointStatuses(t *testing.T) {
|
||||||
scenarios := initStoresAndBaseScenarios(t, "TestStore_GetAllEndpointStatuses")
|
scenarios := initStoresAndBaseScenarios(t, "TestStore_GetAllEndpointStatuses")
|
||||||
defer cleanUp(scenarios)
|
defer cleanUp(scenarios)
|
||||||
firstResult := testSuccessfulResult
|
|
||||||
secondResult := testUnsuccessfulResult
|
|
||||||
for _, scenario := range scenarios {
|
for _, scenario := range scenarios {
|
||||||
t.Run(scenario.Name, func(t *testing.T) {
|
t.Run(scenario.Name, func(t *testing.T) {
|
||||||
scenario.Store.Insert(&testEndpoint, &firstResult)
|
scenario.Store.Insert(&testEndpoint, &testSuccessfulResult)
|
||||||
scenario.Store.Insert(&testEndpoint, &secondResult)
|
scenario.Store.Insert(&testEndpoint, &testUnsuccessfulResult)
|
||||||
// Can't be bothered dealing with timezone issues on the worker that runs the automated tests
|
|
||||||
endpointStatuses, err := scenario.Store.GetAllEndpointStatuses(paging.NewEndpointStatusParams().WithResults(1, 20))
|
endpointStatuses, err := scenario.Store.GetAllEndpointStatuses(paging.NewEndpointStatusParams().WithResults(1, 20))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("shouldn't have returned an error, got", err.Error())
|
t.Error("shouldn't have returned an error, got", err.Error())
|
||||||
@ -210,6 +207,37 @@ func TestStore_GetAllEndpointStatuses(t *testing.T) {
|
|||||||
}
|
}
|
||||||
scenario.Store.Clear()
|
scenario.Store.Clear()
|
||||||
})
|
})
|
||||||
|
t.Run(scenario.Name+"-page-2", func(t *testing.T) {
|
||||||
|
otherEndpoint := testEndpoint
|
||||||
|
otherEndpoint.Name = testEndpoint.Name + "-other"
|
||||||
|
scenario.Store.Insert(&testEndpoint, &testSuccessfulResult)
|
||||||
|
scenario.Store.Insert(&otherEndpoint, &testSuccessfulResult)
|
||||||
|
scenario.Store.Insert(&otherEndpoint, &testSuccessfulResult)
|
||||||
|
scenario.Store.Insert(&otherEndpoint, &testSuccessfulResult)
|
||||||
|
endpointStatuses, err := scenario.Store.GetAllEndpointStatuses(paging.NewEndpointStatusParams().WithResults(2, 2))
|
||||||
|
if err != nil {
|
||||||
|
t.Error("shouldn't have returned an error, got", err.Error())
|
||||||
|
}
|
||||||
|
if len(endpointStatuses) != 2 {
|
||||||
|
t.Fatal("expected 2 endpoint statuses")
|
||||||
|
}
|
||||||
|
if endpointStatuses[0] == nil || endpointStatuses[1] == nil {
|
||||||
|
t.Fatal("expected endpoint status to exist")
|
||||||
|
}
|
||||||
|
if len(endpointStatuses[0].Results) != 0 {
|
||||||
|
t.Error("expected 0 results on the first endpoint, got", len(endpointStatuses[0].Results))
|
||||||
|
}
|
||||||
|
if len(endpointStatuses[1].Results) != 1 {
|
||||||
|
t.Error("expected 1 result on the second endpoint, got", len(endpointStatuses[1].Results))
|
||||||
|
}
|
||||||
|
if len(endpointStatuses[0].Events) != 0 {
|
||||||
|
t.Error("expected 0 events on the first endpoint, got", len(endpointStatuses[0].Events))
|
||||||
|
}
|
||||||
|
if len(endpointStatuses[1].Events) != 0 {
|
||||||
|
t.Error("expected 0 events on the second endpoint, got", len(endpointStatuses[1].Events))
|
||||||
|
}
|
||||||
|
scenario.Store.Clear()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user