Skip to content

Commit 1933420

Browse files
arthur29Arthur Nogueira Gonçalvesguilhermocc
authored
Change CreateScheduler and NewSchedulerVersion contracts to reflect entities (#315)
* Change CreateScheduler and NewSchedulerVersion contracts to be more like entities * Fix maestro component ports in e2e docker-compose file Co-authored-by: Arthur Nogueira Gonçalves <[email protected]> Co-authored-by: GuilhermBrSp <[email protected]>
1 parent c52d30c commit 1933420

16 files changed

+691
-814
lines changed

e2e/framework/maestro/docker-compose.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ services:
1616
MAESTRO_ADAPTERS_RUNTIME_KUBERNETES_MASTERURL: "https://k3s_server:6443"
1717
MAESTRO_ADAPTERS_SCHEDULERCACHE_REDIS_URL: "redis://redis:6379/0"
1818
ports:
19-
- "9096:8081"
19+
- "9096:8082"
2020
volumes:
2121
- ../../../kubeconfig:/kubeconfig
2222
command: [start, worker]
@@ -36,8 +36,8 @@ services:
3636
MAESTRO_ADAPTERS_SCHEDULERCACHE_REDIS_URL: "redis://redis:6379/0"
3737
MAESTRO_ADAPTERS_SCHEDULERSTORAGE_POSTGRES_URL: "postgres://maestro:maestro@postgres:5432/maestro?sslmode=disable"
3838
ports:
39-
- "9097:8080"
40-
- "9098:8081"
39+
- "9097:8090"
40+
- "9098:8091"
4141
volumes:
4242
- ../../../kubeconfig:/kubeconfig
4343
command: [start, rooms-api]
@@ -75,7 +75,7 @@ services:
7575
MAESTRO_ADAPTERS_RUNTIME_KUBERNETES_MASTERURL: "https://k3s_server:6443"
7676
MAESTRO_ADAPTERS_SCHEDULERCACHE_REDIS_URL: "redis://redis:6379/0"
7777
ports:
78-
- "9099:8081"
78+
- "9099:8083"
7979
volumes:
8080
- ../../../kubeconfig:/kubeconfig
8181
command: [start, runtime-watcher]

e2e/suites/management/create_new_scheduler_version_test.go

Lines changed: 99 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import (
3030
"testing"
3131

3232
maestroApiV1 "github.com/topfreegames/maestro/pkg/api/v1"
33+
maestrov1 "github.com/topfreegames/maestro/pkg/api/v1"
3334
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3435

3536
"github.com/go-redis/redis/v8"
@@ -53,37 +54,39 @@ func TestCreateNewSchedulerVersion(t *testing.T) {
5354

5455
// Update scheduler
5556
updateRequest := &maestroApiV1.NewSchedulerVersionRequest{
56-
Name: scheduler.Name,
57-
Game: "test",
58-
MaxSurge: "10%",
59-
TerminationGracePeriod: 15,
60-
Containers: []*maestroApiV1.Container{
61-
{
62-
Name: "example",
63-
Image: "alpine",
64-
Command: []string{"/bin/sh", "-c", "apk add curl && curl --request POST " +
65-
"$ROOMS_API_ADDRESS:9097/scheduler/$MAESTRO_SCHEDULER_NAME/rooms/$MAESTRO_ROOM_ID/ping " +
66-
"--data-raw '{\"status\": \"ready\",\"timestamp\": \"12312312313\"}' && tail -f /dev/null"},
67-
ImagePullPolicy: "Always",
68-
Environment: []*maestroApiV1.ContainerEnvironment{
69-
{
70-
Name: "ROOMS_API_ADDRESS",
71-
Value: maestro.RoomsApiServer.ContainerInternalAddress,
57+
Name: scheduler.Name,
58+
Game: "test",
59+
MaxSurge: "10%",
60+
Spec: &maestrov1.Spec{
61+
TerminationGracePeriod: 15,
62+
Containers: []*maestroApiV1.Container{
63+
{
64+
Name: "example",
65+
Image: "alpine",
66+
Command: []string{"/bin/sh", "-c", "apk add curl && curl --request POST " +
67+
"$ROOMS_API_ADDRESS:9097/scheduler/$MAESTRO_SCHEDULER_NAME/rooms/$MAESTRO_ROOM_ID/ping " +
68+
"--data-raw '{\"status\": \"ready\",\"timestamp\": \"12312312313\"}' && tail -f /dev/null"},
69+
ImagePullPolicy: "Always",
70+
Environment: []*maestroApiV1.ContainerEnvironment{
71+
{
72+
Name: "ROOMS_API_ADDRESS",
73+
Value: maestro.RoomsApiServer.ContainerInternalAddress,
74+
},
7275
},
73-
},
74-
Requests: &maestroApiV1.ContainerResources{
75-
Memory: "20Mi",
76-
Cpu: "10m",
77-
},
78-
Limits: &maestroApiV1.ContainerResources{
79-
Memory: "20Mi",
80-
Cpu: "10m",
81-
},
82-
Ports: []*maestroApiV1.ContainerPort{
83-
{
84-
Name: "default",
85-
Protocol: "tcp",
86-
Port: 80,
76+
Requests: &maestroApiV1.ContainerResources{
77+
Memory: "20Mi",
78+
Cpu: "10m",
79+
},
80+
Limits: &maestroApiV1.ContainerResources{
81+
Memory: "20Mi",
82+
Cpu: "10m",
83+
},
84+
Ports: []*maestroApiV1.ContainerPort{
85+
{
86+
Name: "default",
87+
Protocol: "tcp",
88+
Port: 80,
89+
},
8790
},
8891
},
8992
},
@@ -117,7 +120,7 @@ func TestCreateNewSchedulerVersion(t *testing.T) {
117120
}
118121

119122
// Switches to version v1.2.0
120-
require.Equal(t, "v1.2.0", getSchedulerResponse.Scheduler.Version)
123+
require.Equal(t, "v1.2.0", getSchedulerResponse.Scheduler.Spec.Version)
121124
})
122125

123126
t.Run("Should Succeed - create major change, all pods are changed", func(t *testing.T) {
@@ -129,37 +132,39 @@ func TestCreateNewSchedulerVersion(t *testing.T) {
129132
require.NoError(t, err)
130133

131134
updateRequest := &maestroApiV1.NewSchedulerVersionRequest{
132-
Name: scheduler.Name,
133-
Game: "test",
134-
MaxSurge: "10%",
135-
TerminationGracePeriod: 15,
136-
Containers: []*maestroApiV1.Container{
137-
{
138-
Name: "example-update",
139-
Image: "alpine",
140-
Command: []string{"/bin/sh", "-c", "apk add curl && curl --request POST " +
141-
"$ROOMS_API_ADDRESS:9097/scheduler/$MAESTRO_SCHEDULER_NAME/rooms/$MAESTRO_ROOM_ID/ping " +
142-
"--data-raw '{\"status\": \"ready\",\"timestamp\": \"12312312313\"}' && tail -f /dev/null"},
143-
ImagePullPolicy: "Always",
144-
Environment: []*maestroApiV1.ContainerEnvironment{
145-
{
146-
Name: "ROOMS_API_ADDRESS",
147-
Value: maestro.RoomsApiServer.ContainerInternalAddress,
135+
Name: scheduler.Name,
136+
Game: "test",
137+
MaxSurge: "10%",
138+
Spec: &maestrov1.Spec{
139+
TerminationGracePeriod: 15,
140+
Containers: []*maestroApiV1.Container{
141+
{
142+
Name: "example-update",
143+
Image: "alpine",
144+
Command: []string{"/bin/sh", "-c", "apk add curl && curl --request POST " +
145+
"$ROOMS_API_ADDRESS:9097/scheduler/$MAESTRO_SCHEDULER_NAME/rooms/$MAESTRO_ROOM_ID/ping " +
146+
"--data-raw '{\"status\": \"ready\",\"timestamp\": \"12312312313\"}' && tail -f /dev/null"},
147+
ImagePullPolicy: "Always",
148+
Environment: []*maestroApiV1.ContainerEnvironment{
149+
{
150+
Name: "ROOMS_API_ADDRESS",
151+
Value: maestro.RoomsApiServer.ContainerInternalAddress,
152+
},
148153
},
149-
},
150-
Requests: &maestroApiV1.ContainerResources{
151-
Memory: "20Mi",
152-
Cpu: "10m",
153-
},
154-
Limits: &maestroApiV1.ContainerResources{
155-
Memory: "20Mi",
156-
Cpu: "10m",
157-
},
158-
Ports: []*maestroApiV1.ContainerPort{
159-
{
160-
Name: "default",
161-
Protocol: "tcp",
162-
Port: 80,
154+
Requests: &maestroApiV1.ContainerResources{
155+
Memory: "20Mi",
156+
Cpu: "10m",
157+
},
158+
Limits: &maestroApiV1.ContainerResources{
159+
Memory: "20Mi",
160+
Cpu: "10m",
161+
},
162+
Ports: []*maestroApiV1.ContainerPort{
163+
{
164+
Name: "default",
165+
Protocol: "tcp",
166+
Port: 80,
167+
},
163168
},
164169
},
165170
},
@@ -204,7 +209,7 @@ func TestCreateNewSchedulerVersion(t *testing.T) {
204209
require.NotEqual(t, podsAfterUpdate.Items[i].Spec, podsBeforeUpdate.Items[i].Spec)
205210
require.Equal(t, "example-update", podsAfterUpdate.Items[i].Spec.Containers[0].Name)
206211
}
207-
require.Equal(t, "v2.0.0", getSchedulerResponse.Scheduler.Version)
212+
require.Equal(t, "v2.0.0", getSchedulerResponse.Scheduler.Spec.Version)
208213
})
209214

210215
t.Run("Should Fail - When scheduler when sending invalid request to update endpoint it fails fast", func(t *testing.T) {
@@ -224,7 +229,7 @@ func TestCreateNewSchedulerVersion(t *testing.T) {
224229

225230
err = managementApiClient.Do("GET", fmt.Sprintf("/schedulers/%s", scheduler.Name), getSchedulerRequest, getSchedulerResponse)
226231
require.NoError(t, err)
227-
require.Equal(t, "v1.1", getSchedulerResponse.Scheduler.Version)
232+
require.Equal(t, "v1.1", getSchedulerResponse.Scheduler.Spec.Version)
228233
})
229234

230235
t.Run("Should Fail - image of GRU is invalid. Operation fails, version and pods are unchanged", func(t *testing.T) {
@@ -236,35 +241,37 @@ func TestCreateNewSchedulerVersion(t *testing.T) {
236241
require.NoError(t, err)
237242

238243
updateRequest := &maestroApiV1.NewSchedulerVersionRequest{
239-
Name: scheduler.Name,
240-
Game: "test",
241-
MaxSurge: "10%",
242-
TerminationGracePeriod: 15,
243-
Containers: []*maestroApiV1.Container{
244-
{
245-
Name: "example-update",
246-
Image: "INVALID_IMAGE_FOR_GRU",
247-
Command: []string{"/bin/sh"},
248-
ImagePullPolicy: "Always",
249-
Environment: []*maestroApiV1.ContainerEnvironment{
250-
{
251-
Name: "ROOMS_API_ADDRESS",
252-
Value: maestro.RoomsApiServer.ContainerInternalAddress,
244+
Name: scheduler.Name,
245+
Game: "test",
246+
MaxSurge: "10%",
247+
Spec: &maestrov1.Spec{
248+
TerminationGracePeriod: 15,
249+
Containers: []*maestroApiV1.Container{
250+
{
251+
Name: "example-update",
252+
Image: "INVALID_IMAGE_FOR_GRU",
253+
Command: []string{"/bin/sh"},
254+
ImagePullPolicy: "Always",
255+
Environment: []*maestroApiV1.ContainerEnvironment{
256+
{
257+
Name: "ROOMS_API_ADDRESS",
258+
Value: maestro.RoomsApiServer.ContainerInternalAddress,
259+
},
253260
},
254-
},
255-
Requests: &maestroApiV1.ContainerResources{
256-
Memory: "20Mi",
257-
Cpu: "10m",
258-
},
259-
Limits: &maestroApiV1.ContainerResources{
260-
Memory: "20Mi",
261-
Cpu: "10m",
262-
},
263-
Ports: []*maestroApiV1.ContainerPort{
264-
{
265-
Name: "default",
266-
Protocol: "tcp",
267-
Port: 80,
261+
Requests: &maestroApiV1.ContainerResources{
262+
Memory: "20Mi",
263+
Cpu: "10m",
264+
},
265+
Limits: &maestroApiV1.ContainerResources{
266+
Memory: "20Mi",
267+
Cpu: "10m",
268+
},
269+
Ports: []*maestroApiV1.ContainerPort{
270+
{
271+
Name: "default",
272+
Protocol: "tcp",
273+
Port: 80,
274+
},
268275
},
269276
},
270277
},
@@ -309,7 +316,7 @@ func TestCreateNewSchedulerVersion(t *testing.T) {
309316
require.Equal(t, podsAfterUpdate.Items[i].Name, podsBeforeUpdate.Items[i].Name)
310317
}
311318
// version didn't change
312-
require.Equal(t, "v1.1", getSchedulerResponse.Scheduler.Version)
319+
require.Equal(t, "v1.1", getSchedulerResponse.Scheduler.Spec.Version)
313320

314321
getVersionsRequest := &maestroApiV1.GetSchedulerVersionsRequest{SchedulerName: scheduler.Name}
315322
getVersionsResponse := &maestroApiV1.GetSchedulerVersionsResponse{}

e2e/suites/management/create_scheduler_test.go

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -44,30 +44,32 @@ func TestCreateScheduler(t *testing.T) {
4444
framework.WithClients(t, func(roomsApiClient *framework.APIClient, managementApiClient *framework.APIClient, kubeClient kubernetes.Interface, redisClient *redis.Client, maestro *maestro.MaestroInstance) {
4545
schedulerName := framework.GenerateSchedulerName()
4646
createRequest := &maestrov1.CreateSchedulerRequest{
47-
Name: schedulerName,
48-
Game: "test",
49-
Version: "v1.1",
50-
TerminationGracePeriod: 15,
51-
MaxSurge: "10%",
52-
Containers: []*maestrov1.Container{
53-
{
54-
Name: "example",
55-
Image: "nginx",
56-
Command: []string{"echo", "hello"},
57-
ImagePullPolicy: "Always",
58-
Requests: &maestrov1.ContainerResources{
59-
Memory: "1",
60-
Cpu: "1",
61-
},
62-
Limits: &maestrov1.ContainerResources{
63-
Memory: "1",
64-
Cpu: "1",
65-
},
66-
Ports: []*maestrov1.ContainerPort{
67-
{
68-
Name: "default",
69-
Protocol: "tcp",
70-
Port: 80,
47+
Name: schedulerName,
48+
Game: "test",
49+
MaxSurge: "10%",
50+
Spec: &maestrov1.Spec{
51+
Version: "v1.1",
52+
TerminationGracePeriod: 15,
53+
Containers: []*maestrov1.Container{
54+
{
55+
Name: "example",
56+
Image: "nginx",
57+
Command: []string{"echo", "hello"},
58+
ImagePullPolicy: "Always",
59+
Requests: &maestrov1.ContainerResources{
60+
Memory: "1",
61+
Cpu: "1",
62+
},
63+
Limits: &maestrov1.ContainerResources{
64+
Memory: "1",
65+
Cpu: "1",
66+
},
67+
Ports: []*maestrov1.ContainerPort{
68+
{
69+
Name: "default",
70+
Protocol: "tcp",
71+
Port: 80,
72+
},
7173
},
7274
},
7375
},

e2e/suites/management/get_scheduler_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ func TestGetScheduler(t *testing.T) {
110110

111111
require.NoError(t, err)
112112
require.Equal(t, getSchedulerResponse.Scheduler.Name, scheduler.Name)
113-
require.Equal(t, getSchedulerResponse.Scheduler.GetVersion(), "v1.1")
113+
require.Equal(t, getSchedulerResponse.Scheduler.GetSpec().GetVersion(), "v1.1")
114114
})
115115

116116
})

e2e/suites/management/list_schedulers_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,12 @@ func TestListSchedulers(t *testing.T) {
8686
require.Equal(t, listSchedulersResponse.Schedulers[0].Game, firstScheduler.Game)
8787
require.Len(t, listSchedulersResponse.Schedulers, 2)
8888

89-
listSchedulersRequest = &maestroApiV1.ListSchedulersRequest{Version: firstScheduler.Version}
89+
listSchedulersRequest = &maestroApiV1.ListSchedulersRequest{Version: firstScheduler.Spec.Version}
9090
listSchedulersResponse = &maestroApiV1.ListSchedulersResponse{}
91-
err = managementApiClient.Do("GET", fmt.Sprintf("/schedulers?version=%s", firstScheduler.Version), listSchedulersRequest, listSchedulersResponse)
91+
err = managementApiClient.Do("GET", fmt.Sprintf("/schedulers?version=%s", firstScheduler.Spec.Version), listSchedulersRequest, listSchedulersResponse)
9292

9393
require.NoError(t, err)
94-
require.Equal(t, listSchedulersResponse.Schedulers[0].Version, firstScheduler.Version)
94+
require.Equal(t, listSchedulersResponse.Schedulers[0].Version, firstScheduler.Spec.Version)
9595
require.Len(t, listSchedulersResponse.Schedulers, 2)
9696
})
9797

@@ -114,7 +114,7 @@ func TestListSchedulers(t *testing.T) {
114114
require.NoError(t, err)
115115
require.Empty(t, listSchedulersResponse.Schedulers)
116116

117-
invalidSchedulerVersion := fmt.Sprintf("%s-invalid-version", firstScheduler.Version)
117+
invalidSchedulerVersion := fmt.Sprintf("%s-invalid-version", firstScheduler.Spec.Version)
118118
listSchedulersRequest = &maestroApiV1.ListSchedulersRequest{Version: invalidSchedulerVersion}
119119
listSchedulersResponse = &maestroApiV1.ListSchedulersResponse{}
120120
err = managementApiClient.Do("GET", fmt.Sprintf("/schedulers?version=%s", invalidSchedulerVersion), listSchedulersRequest, listSchedulersResponse)

0 commit comments

Comments
 (0)