From 3850d7f5f3d9e3fe856bd92eeb765a6660f438af Mon Sep 17 00:00:00 2001 From: Reinaldo Oliveira Date: Wed, 15 Jan 2025 10:32:00 -0300 Subject: [PATCH] fix: setting running matches when not given --- e2e/framework/maestro/docker-compose.yml | 1 + e2e/suites/autoscaling_test.go | 4 ++-- e2e/suites/cancel_operation_test.go | 2 +- e2e/suites/create_new_scheduler_version_test.go | 9 +++++---- e2e/suites/delete_scheduler_test.go | 2 +- e2e/suites/patch_scheduler_test.go | 2 +- e2e/suites/utils.go | 2 ++ internal/api/handlers/requestadapters/rooms.go | 7 ++++++- 8 files changed, 19 insertions(+), 10 deletions(-) diff --git a/e2e/framework/maestro/docker-compose.yml b/e2e/framework/maestro/docker-compose.yml index 82f08a5d2..79ae3e1f0 100644 --- a/e2e/framework/maestro/docker-compose.yml +++ b/e2e/framework/maestro/docker-compose.yml @@ -79,6 +79,7 @@ services: - MAESTRO_ADAPTERS_INSTANCESTORAGE_REDIS_URL=redis://redis:6379/0 - MAESTRO_ADAPTERS_RUNTIME_KUBERNETES_KUBECONFIG=/kubeconfig/kubeconfig.yaml - MAESTRO_ADAPTERS_RUNTIME_KUBERNETES_MASTERURL=https://k3s_server:6443 + - MAESTRO_ADAPTERS_RUNTIME_KUBERNETES_TOPOLOGYSPREADCONSTRAINT_ENABLED=false - MAESTRO_ADAPTERS_SCHEDULERCACHE_REDIS_URL=redis://redis:6379/0 - MAESTRO_INTERNALAPI_PORT=8051 - MAESTRO_WORKERS_HEALTHCONTROLLERINTERVAL=5s diff --git a/e2e/suites/autoscaling_test.go b/e2e/suites/autoscaling_test.go index f16a2e9eb..eb454cf09 100644 --- a/e2e/suites/autoscaling_test.go +++ b/e2e/suites/autoscaling_test.go @@ -243,8 +243,8 @@ func requireEventualState(t *testing.T, numberOfReadyRooms, numberOfOccupiedRoom return schedulerInfo.GetRoomsReady() == int32(numberOfReadyRooms) && schedulerInfo.GetRoomsOccupied() == int32(numberOfOccupiedRooms) }, - time.Minute*3, - time.Second*1, + time.Minute*4, + time.Millisecond*500, fmt.Sprintf("Timeout waiting for scheduler %s to reach expected state: ready %d, occupied %d", schedulerName, numberOfReadyRooms, numberOfOccupiedRooms), ) diff --git a/e2e/suites/cancel_operation_test.go b/e2e/suites/cancel_operation_test.go index 73ce1ab1d..a8c8badd1 100644 --- a/e2e/suites/cancel_operation_test.go +++ b/e2e/suites/cancel_operation_test.go @@ -149,7 +149,7 @@ func TestCancelOperation(t *testing.T) { finishedOpCancelResponse := &maestroApiV1.CancelOperationResponse{} err = managementApiClient.Do("POST", fmt.Sprintf("/schedulers/%s/operations/%s/cancel", scheduler.Name, finishedOpId), finishedOpCancelRequest, finishedOpCancelResponse) require.Error(t, err) - require.Contains(t, err.Error(), "status 409") + require.Contains(t, err.Error(), "status: 409") }) }) } diff --git a/e2e/suites/create_new_scheduler_version_test.go b/e2e/suites/create_new_scheduler_version_test.go index 2b3689143..6d5582f40 100644 --- a/e2e/suites/create_new_scheduler_version_test.go +++ b/e2e/suites/create_new_scheduler_version_test.go @@ -57,7 +57,7 @@ func TestCreateNewSchedulerVersion(t *testing.T) { // ----------- Create new Major version v2.0.0 and assert pods are replaced newVersionExpected = "v2.0.0" createMajorVersionAndAssertPodsReplace(t, roomsBeforeUpdate, kubeClient, scheduler, maestro, managementApiClient, roomsApiClient, newVersionExpected) - // ----------- Switch back to v1.0.0 + // --------ru--- Switch back to v1.0.0 podsAfterSwitch := switchVersion(t, scheduler, managementApiClient, kubeClient, "v1.0.0") // ----------- Create new Minor version v1.2.0 (since v1.1.0 already exists) and assert pods are not replaced newVersionExpected = "v1.2.0" @@ -222,6 +222,7 @@ func switchVersion(t *testing.T, scheduler *maestrov1.Scheduler, managementApiCl waitForOperationToFinishByOperationId(t, managementApiClient, scheduler.Name, switchActiveVersionResponse.OperationId) + // waiting termination of pods require.Eventually(t, func() bool { podsAfterUpdate, err := kubeClient.CoreV1().Pods(scheduler.Name).List(context.Background(), metav1.ListOptions{}) require.NoError(t, err) @@ -232,7 +233,7 @@ func switchVersion(t *testing.T, scheduler *maestrov1.Scheduler, managementApiCl } return false - }, 1*time.Minute, time.Second*10, "Timeout waiting to have 2 pods after switch version") + }, 2*time.Minute, time.Second*10, "Timeout waiting to have 2 pods after switch version") podsAfterUpdate, err := kubeClient.CoreV1().Pods(scheduler.Name).List(context.Background(), metav1.ListOptions{}) require.NoError(t, err) @@ -553,8 +554,8 @@ func createMinorVersionAndAssertNoPodsReplace(t *testing.T, kubeClient kubernete } require.ElementsMatch(t, podsNameAfterUpdate, podsNameBeforeUpdate) - require.Contains(t, getSchedulerResponse.Scheduler.Annotations, updateRequest.Annotations) - require.Contains(t, getSchedulerResponse.Scheduler.Labels, updateRequest.Labels) + require.Equal(t, getSchedulerResponse.Scheduler.Annotations, updateRequest.Annotations) + require.Equal(t, getSchedulerResponse.Scheduler.Labels, updateRequest.Labels) require.Equal(t, expectedNewVersion, getSchedulerResponse.Scheduler.Spec.Version) } diff --git a/e2e/suites/delete_scheduler_test.go b/e2e/suites/delete_scheduler_test.go index 6d6f6f56b..290904d4c 100644 --- a/e2e/suites/delete_scheduler_test.go +++ b/e2e/suites/delete_scheduler_test.go @@ -124,7 +124,7 @@ func TestDeleteScheduler(t *testing.T) { err := managementApiClient.Do("DELETE", fmt.Sprintf("/schedulers/%s", schedulerName), deleteSchedulerRequest, deleteSchedulerResponse) assert.Error(t, err) - assert.Contains(t, err.Error(), "failed with status 404") + assert.Contains(t, err.Error(), "failed with status: 404") }) }) } diff --git a/e2e/suites/patch_scheduler_test.go b/e2e/suites/patch_scheduler_test.go index 935568e77..cb6c7186b 100644 --- a/e2e/suites/patch_scheduler_test.go +++ b/e2e/suites/patch_scheduler_test.go @@ -159,7 +159,7 @@ func TestPatchScheduler(t *testing.T) { patchSchedulerResponse := &maestrov1.PatchSchedulerResponse{} err = managementApiClient.Do("PATCH", fmt.Sprintf("/schedulers/%s", scheduler.Name), patchSchedulerRequest, patchSchedulerResponse) require.Error(t, err) - require.Contains(t, err.Error(), "failed with status 409") + require.Contains(t, err.Error(), "failed with status: 409") getSchedulerRequest = &maestrov1.GetSchedulerRequest{} getSchedulerResponse = &maestrov1.GetSchedulerResponse{} err = managementApiClient.Do("GET", fmt.Sprintf("/schedulers/%s", scheduler.Name), getSchedulerRequest, getSchedulerResponse) diff --git a/e2e/suites/utils.go b/e2e/suites/utils.go index 9c080368d..5b584a395 100644 --- a/e2e/suites/utils.go +++ b/e2e/suites/utils.go @@ -228,6 +228,8 @@ func createSchedulerWithForwardersAndWaitForIt( RoomsReplicas: 2, MaxSurge: "10%", Forwarders: forwarders, + Annotations: map[string]string{"annotation-key": "annotation-value"}, + Labels: map[string]string{"label-key": "label-value"}, } createResponse := &maestroApiV1.CreateSchedulerResponse{} diff --git a/internal/api/handlers/requestadapters/rooms.go b/internal/api/handlers/requestadapters/rooms.go index 21dff85d4..9c3753869 100644 --- a/internal/api/handlers/requestadapters/rooms.go +++ b/internal/api/handlers/requestadapters/rooms.go @@ -35,13 +35,18 @@ func FromApiUpdateRoomRequestToEntity(request *api.UpdateRoomWithPingRequest) (* return nil, err } + runningMatches := request.GetRunningMatches() + if status == game_room.GameRoomPingStatusOccupied && runningMatches == 0 { + runningMatches = 1 + } + return &game_room.GameRoom{ ID: request.GetRoomName(), SchedulerID: request.GetSchedulerName(), PingStatus: status, Metadata: request.Metadata.AsMap(), LastPingAt: time.Unix(request.GetTimestamp(), 0), - RunningMatches: int(request.GetRunningMatches()), + RunningMatches: int(runningMatches), }, nil }