Skip to content

Commit 18201ea

Browse files
author
Andrea Falzetti
committed
fix tests for ide service
1 parent eaee8ec commit 18201ea

9 files changed

+131
-107
lines changed

components/ide-service/pkg/server/server.go

Lines changed: 91 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -250,123 +250,142 @@ func (s *IDEServiceServer) ResolveWorkspaceConfig(ctx context.Context, req *api.
250250
WebImage: defaultIde.Image,
251251
}
252252

253-
// TODO: reconsider this
254-
// if req.Type != api.WorkspaceType_REGULAR {
255-
// return resp, nil
256-
// }
257-
258253
var wsConfig *gitpodapi.GitpodConfig
259-
var wsContext *WorkspaceContext
260-
var ideSettings *IDESettings
261254

262-
if req.IdeSettings != "" {
263-
if err := json.Unmarshal([]byte(req.IdeSettings), &ideSettings); err != nil {
264-
log.WithError(err).WithField("ideSetting", req.IdeSettings).Error("failed to parse ide settings")
265-
}
266-
}
267255
if req.WorkspaceConfig != "" {
268256
if err := json.Unmarshal([]byte(req.WorkspaceConfig), &wsConfig); err != nil {
269257
log.WithError(err).WithField("workspaceConfig", req.WorkspaceConfig).Error("failed to parse workspace config")
270258
}
271259
}
272-
if req.Context != "" {
273-
if err := json.Unmarshal([]byte(req.Context), &wsContext); err != nil {
274-
log.WithError(err).WithField("context", req.Context).Error("failed to parse context")
275-
}
276-
}
277260

278-
userIdeName := ""
279-
useLatest := false
261+
if req.Type == api.WorkspaceType_REGULAR {
262+
var ideSettings *IDESettings
263+
var wsContext *WorkspaceContext
280264

281-
if ideSettings != nil {
282-
userIdeName = ideSettings.DefaultIde
283-
useLatest = ideSettings.UseLatestVersion
284-
}
265+
if req.IdeSettings != "" {
266+
if err := json.Unmarshal([]byte(req.IdeSettings), &ideSettings); err != nil {
267+
log.WithError(err).WithField("ideSetting", req.IdeSettings).Error("failed to parse ide settings")
268+
}
269+
}
285270

286-
chosenIDE := defaultIde
271+
if req.Context != "" {
272+
if err := json.Unmarshal([]byte(req.Context), &wsContext); err != nil {
273+
log.WithError(err).WithField("context", req.Context).Error("failed to parse context")
274+
}
275+
}
287276

288-
getUserIDEImage := func(ideOption *config.IDEOption) string {
289-
if useLatest && ideOption.LatestImage != "" {
290-
return ideOption.LatestImage
277+
userIdeName := ""
278+
useLatest := false
279+
280+
if ideSettings != nil {
281+
userIdeName = ideSettings.DefaultIde
282+
useLatest = ideSettings.UseLatestVersion
291283
}
292284

293-
return ideOption.Image
294-
}
285+
chosenIDE := defaultIde
295286

296-
getUserPluginImage := func(ideOption *config.IDEOption) string {
297-
if useLatest && ideOption.PluginLatestImage != "" {
298-
return ideOption.PluginLatestImage
287+
getUserIDEImage := func(ideOption *config.IDEOption) string {
288+
if useLatest && ideOption.LatestImage != "" {
289+
return ideOption.LatestImage
290+
}
291+
292+
return ideOption.Image
299293
}
300294

301-
return ideOption.PluginImage
302-
}
295+
getUserPluginImage := func(ideOption *config.IDEOption) string {
296+
if useLatest && ideOption.PluginLatestImage != "" {
297+
return ideOption.PluginLatestImage
298+
}
303299

304-
if userIdeName != "" {
305-
if ide, ok := ideConfig.IdeOptions.Options[userIdeName]; ok {
306-
chosenIDE = &ide
300+
return ideOption.PluginImage
301+
}
302+
303+
if userIdeName != "" {
304+
if ide, ok := ideConfig.IdeOptions.Options[userIdeName]; ok {
305+
chosenIDE = &ide
307306

308-
// TODO: Currently this variable reflects the IDE selected in
309-
// user's settings for backward compatibility but in the future
310-
// we want to make it represent the actual IDE.
311-
ideAlias := api.EnvironmentVariable{
312-
Name: "GITPOD_IDE_ALIAS",
313-
Value: userIdeName,
307+
// TODO: Currently this variable reflects the IDE selected in
308+
// user's settings for backward compatibility but in the future
309+
// we want to make it represent the actual IDE.
310+
ideAlias := api.EnvironmentVariable{
311+
Name: "GITPOD_IDE_ALIAS",
312+
Value: userIdeName,
313+
}
314+
resp.Envvars = append(resp.Envvars, &ideAlias)
314315
}
315-
resp.Envvars = append(resp.Envvars, &ideAlias)
316316
}
317-
}
318317

319-
// we always need WebImage for when the user chooses a desktop ide
320-
resp.WebImage = getUserIDEImage(defaultIde)
318+
// we always need WebImage for when the user chooses a desktop ide
319+
resp.WebImage = getUserIDEImage(defaultIde)
321320

322-
var desktopImageLayer string
323-
var desktopPluginImageLayer string
324-
if chosenIDE.Type == config.IDETypeDesktop {
325-
desktopImageLayer = getUserIDEImage(chosenIDE)
326-
desktopPluginImageLayer = getUserPluginImage(chosenIDE)
327-
} else {
328-
resp.WebImage = getUserIDEImage(chosenIDE)
329-
}
321+
var desktopImageLayer string
322+
var desktopPluginImageLayer string
323+
if chosenIDE.Type == config.IDETypeDesktop {
324+
desktopImageLayer = getUserIDEImage(chosenIDE)
325+
desktopPluginImageLayer = getUserPluginImage(chosenIDE)
326+
} else {
327+
resp.WebImage = getUserIDEImage(chosenIDE)
328+
}
330329

331-
ideName, referrer := s.resolveReferrerIDE(ideConfig, wsContext, userIdeName)
332-
if ideName != "" {
333-
resp.RefererIde = ideName
334-
desktopImageLayer = getUserIDEImage(referrer)
335-
desktopPluginImageLayer = getUserPluginImage(referrer)
336-
}
330+
ideName, referrer := s.resolveReferrerIDE(ideConfig, wsContext, userIdeName)
331+
if ideName != "" {
332+
resp.RefererIde = ideName
333+
desktopImageLayer = getUserIDEImage(referrer)
334+
desktopPluginImageLayer = getUserPluginImage(referrer)
335+
}
337336

338-
if desktopImageLayer != "" {
339-
resp.IdeImageLayers = append(resp.IdeImageLayers, desktopImageLayer)
340-
if desktopPluginImageLayer != "" {
341-
resp.IdeImageLayers = append(resp.IdeImageLayers, desktopPluginImageLayer)
337+
if desktopImageLayer != "" {
338+
resp.IdeImageLayers = append(resp.IdeImageLayers, desktopImageLayer)
339+
if desktopPluginImageLayer != "" {
340+
resp.IdeImageLayers = append(resp.IdeImageLayers, desktopPluginImageLayer)
341+
}
342342
}
343343
}
344344

345345
jbGW, ok := ideConfig.IdeOptions.Clients["jetbrains-gateway"]
346346
if req.Type == api.WorkspaceType_PREBUILD && ok {
347347
warmUpTask := ""
348+
var pluginStableImage string
349+
var pluginLatestImage string
348350
for _, alias := range jbGW.DesktopIDEs {
349351
prebuilds := getPrebuilds(wsConfig, alias)
350352
if prebuilds != nil {
351353
if prebuilds.Version != "latest" {
352-
template := `
354+
if ide, ok := ideConfig.IdeOptions.Options[alias]; ok {
355+
pluginStableImage = ide.PluginImage
356+
resp.IdeImageLayers = append(resp.IdeImageLayers, ide.Image)
357+
template := `
353358
echo 'warming up stable release of ${key}...'
354359
JETBRAINS_BACKEND_QUALIFIER=stable /ide-desktop/${key}/status warmup ${key}
355360
`
356-
template = strings.ReplaceAll(template, "${key}", alias)
357-
warmUpTask += template
361+
template = strings.ReplaceAll(template, "${key}", alias)
362+
warmUpTask += template
363+
}
358364
}
359365

360366
if prebuilds.Version != "stable" {
361-
template := `
367+
if ide, ok := ideConfig.IdeOptions.Options[alias]; ok {
368+
pluginLatestImage = ide.PluginLatestImage
369+
resp.IdeImageLayers = append(resp.IdeImageLayers, ide.LatestImage)
370+
template := `
362371
echo 'warming up stable release of ${key}...'
363372
JETBRAINS_BACKEND_QUALIFIER=latest /ide-desktop/${key}-latest/status warmup ${key}
364373
`
365-
template = strings.ReplaceAll(template, "${key}", alias)
366-
warmUpTask += template
374+
template = strings.ReplaceAll(template, "${key}", alias)
375+
warmUpTask += template
376+
}
367377
}
368378
}
369379
}
380+
381+
if pluginStableImage != "" {
382+
resp.IdeImageLayers = append(resp.IdeImageLayers, pluginStableImage)
383+
}
384+
385+
if pluginLatestImage != "" {
386+
resp.IdeImageLayers = append(resp.IdeImageLayers, pluginLatestImage)
387+
}
388+
370389
if warmUpTask != "" {
371390
warmUpEncoded := new(bytes.Buffer)
372391
enc := json.NewEncoder(warmUpEncoded)
@@ -382,6 +401,7 @@ JETBRAINS_BACKEND_QUALIFIER=latest /ide-desktop/${key}-latest/status warmup ${ke
382401
resp.Tasks = warmUpEncoded.String()
383402
}
384403
}
404+
385405
return
386406
}
387407

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
11
{
22
"Resp": {
3-
"envvars": [
4-
{
5-
"name": "GITPOD_IDE_ALIAS",
6-
"value": "code"
7-
}
8-
],
93
"supervisor_image": "eu.gcr.io/gitpod-core-dev/build/supervisor:commit-ff38b98b7dde4929159bcaeec68d178898dc2139",
104
"web_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-d6329814c2aa34c414574fd0d1301447d6fe82c9"
115
},
126
"Err": ""
13-
}
7+
}

components/ide-service/pkg/server/testdata/resolve_ws_config_prebuild.json

Lines changed: 0 additions & 6 deletions
This file was deleted.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"Resp": {
3+
"supervisor_image": "eu.gcr.io/gitpod-core-dev/build/supervisor:commit-ff38b98b7dde4929159bcaeec68d178898dc2139",
4+
"web_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-d6329814c2aa34c414574fd0d1301447d6fe82c9",
5+
"ide_image_layers": [
6+
"eu.gcr.io/gitpod-core-dev/build/ide/intellij:commit-9a6c79a91b2b1f583d5bcb7f9f1ef54ee977e0df",
7+
"eu.gcr.io/gitpod-core-dev/build/ide/goland:commit-9a6c79a91b2b1f583d5bcb7f9f1ef54ee977e0df",
8+
"eu.gcr.io/gitpod-core-dev/build/ide/goland:latest@sha256:e07524e52089829dc8d3b38f7d18fb51b24f07aed7d8e4e6e447899687978d43",
9+
"eu.gcr.io/gitpod-core-dev/build/ide/phpstorm:latest@sha256:e07524e52089829dc8d3b38f7d18fb51b24f07aed7d8e4e6e447899687978d43",
10+
"eu.gcr.io/gitpod-core-dev/build/ide/jb-backend-plugin:commit-b38092639d1783a1957894ddd4f492b3cdc9794a",
11+
"eu.gcr.io/gitpod-core-dev/build/ide/jb-backend-plugin:commit-b38092639d1783a1957894ddd4f492b3cdc9794a-latest"
12+
],
13+
"tasks": "[{\"init\":\"echo 'warming up stable release of intellij...'\\nJETBRAINS_BACKEND_QUALIFIER=stable /ide-desktop/intellij/status warmup intellij\\n\\necho 'warming up stable release of goland...'\\nJETBRAINS_BACKEND_QUALIFIER=stable /ide-desktop/goland/status warmup goland\\n\\necho 'warming up stable release of goland...'\\nJETBRAINS_BACKEND_QUALIFIER=latest /ide-desktop/goland-latest/status warmup goland\\n\\necho 'warming up stable release of phpstorm...'\\nJETBRAINS_BACKEND_QUALIFIER=latest /ide-desktop/phpstorm-latest/status warmup phpstorm\"}]\n"
14+
},
15+
"Err": ""
16+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": 1,
3+
"context": "{\"isFile\":false,\"path\":\"\",\"title\":\"gitpod-io/empty \",\"revision\":\"\",\"repository\":{\"cloneUrl\":\"https://github.com/gitpod-io/empty.git\",\"host\":\"github.com\",\"name\":\"empty\",\"owner\":\"gitpod-io\",\"private\":false},\"normalizedContextURL\":\"https://github.com/gitpod-io/empty\",\"checkoutLocation\":\"empty\"}",
4+
"ide_settings": "{\"settingVersion\":\"2.0\",\"defaultIde\":\"code-desktop\",\"useLatestVersion\":false}",
5+
"workspace_config": "{\"tasks\":[{\"init\":\"echo 'init script'\",\"command\":\"echo 'start script'\"}],\"jetbrains\":{\"intellij\":{\"prebuilds\":{\"version\":\"stable\"}},\"phpstorm\":{\"prebuilds\":{\"version\":\"latest\"}},\"goland\":{\"prebuilds\":{\"version\":\"both\"}}},\"_origin\":\"repo\",\"image\":\"docker.io/gitpod/workspace-full:latest\",\"vscode\":{\"extensions\":[]}}"
6+
}
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
11
{
22
"Resp": {
3-
"envvars": [
4-
{
5-
"name": "GITPOD_IDE_ALIAS",
6-
"value": "code"
7-
}
8-
],
93
"supervisor_image": "eu.gcr.io/gitpod-core-dev/build/supervisor:commit-ff38b98b7dde4929159bcaeec68d178898dc2139",
104
"web_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-d6329814c2aa34c414574fd0d1301447d6fe82c9"
115
},
126
"Err": ""
13-
}
7+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": 1,
3+
"context": "{\"isFile\":false,\"path\":\"\",\"title\":\"gitpod-io/empty \",\"revision\":\"\",\"repository\":{\"cloneUrl\":\"https://github.com/gitpod-io/empty.git\",\"host\":\"github.com\",\"name\":\"empty\",\"owner\":\"gitpod-io\",\"private\":false},\"normalizedContextURL\":\"https://github.com/gitpod-io/empty\",\"checkoutLocation\":\"empty\"}",
4+
"ide_settings": "{\"settingVersion\":\"2.0\",\"defaultIde\":\"intellj\",\"useLatestVersion\":false}",
5+
"workspace_config": "{\"tasks\":[{\"init\":\"echo 'init script'\",\"command\":\"echo 'start script'\"}],\"_origin\":\"repo\",\"image\":\"docker.io/gitpod/workspace-full:latest\",\"vscode\":{\"extensions\":[]}}"
6+
}
Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,14 @@
11
{
22
"Resp": {
3-
"envvars": [
4-
{
5-
"name": "GITPOD_IDE_ALIAS",
6-
"value": "intellij"
7-
}
8-
],
93
"supervisor_image": "eu.gcr.io/gitpod-core-dev/build/supervisor:commit-ff38b98b7dde4929159bcaeec68d178898dc2139",
104
"web_image": "eu.gcr.io/gitpod-core-dev/build/ide/code:commit-d6329814c2aa34c414574fd0d1301447d6fe82c9",
115
"ide_image_layers": [
126
"eu.gcr.io/gitpod-core-dev/build/ide/intellij:commit-9a6c79a91b2b1f583d5bcb7f9f1ef54ee977e0df",
13-
"eu.gcr.io/gitpod-core-dev/build/ide/jb-backend-plugin:commit-b38092639d1783a1957894ddd4f492b3cdc9794a"
7+
"eu.gcr.io/gitpod-core-dev/build/ide/intellij:latest@sha256:e07524e52089829dc8d3b38f7d18fb51b24f07aed7d8e4e6e447899687978d43",
8+
"eu.gcr.io/gitpod-core-dev/build/ide/jb-backend-plugin:commit-b38092639d1783a1957894ddd4f492b3cdc9794a",
9+
"eu.gcr.io/gitpod-core-dev/build/ide/jb-backend-plugin:commit-b38092639d1783a1957894ddd4f492b3cdc9794a-latest"
1410
],
15-
"tasks": "[{\"init\":\"echo 'warming up stable release of intellij...'\\necho 'downloading stable intellij backend...'\\nmkdir /tmp/backend\\ncurl -sSLo /tmp/backend/backend.tar.gz \\\"https://download.jetbrains.com/product?type=release\u0026distribution=linux\u0026code=IIU\\\"\\ntar -xf /tmp/backend/backend.tar.gz --strip-components=1 --directory /tmp/backend\\n\\necho 'configuring JB system config and caches aligned with runtime...'\\nprintf '\\\\nshared.indexes.download.auto.consent=true' \u003e\u003e \\\"/tmp/backend/bin/idea.properties\\\"\\nunset JAVA_TOOL_OPTIONS\\nexport IJ_HOST_CONFIG_BASE_DIR=/workspace/.config/JetBrains\\nexport IJ_HOST_SYSTEM_BASE_DIR=/workspace/.cache/JetBrains\\n\\necho 'running stable intellij backend in warmup mode...'\\n/tmp/backend/bin/remote-dev-server.sh warmup \\\"$GITPOD_REPO_ROOT\\\"\\n\\necho 'removing stable intellij backend...'\\nrm -rf /tmp/backend\\n\\necho 'warming up latest release of intellij...'\\necho 'downloading latest intellij backend...'\\nmkdir /tmp/backend-latest\\ncurl -sSLo /tmp/backend-latest/backend-latest.tar.gz \\\"https://download.jetbrains.com/product?type=release,eap,rc\u0026distribution=linux\u0026code=IIU\\\"\\ntar -xf /tmp/backend-latest/backend-latest.tar.gz --strip-components=1 --directory /tmp/backend-latest\\n\\necho 'configuring JB system config and caches aligned with runtime...'\\nprintf '\\\\nshared.indexes.download.auto.consent=true' \u003e\u003e \\\"/tmp/backend-latest/bin/idea.properties\\\"\\nunset JAVA_TOOL_OPTIONS\\nexport IJ_HOST_CONFIG_BASE_DIR=/workspace/.config/JetBrains-latest\\nexport IJ_HOST_SYSTEM_BASE_DIR=/workspace/.cache/JetBrains-latest\\n\\necho 'running intellij backend in warmup mode...'\\n/tmp/backend-latest/bin/remote-dev-server.sh warmup \\\"$GITPOD_REPO_ROOT\\\"\\n\\necho 'removing latest intellij backend...'\\nrm -rf /tmp/backend-latest\"}]\n"
11+
"tasks": "[{\"init\":\"echo 'warming up stable release of intellij...'\\nJETBRAINS_BACKEND_QUALIFIER=stable /ide-desktop/intellij/status warmup intellij\\n\\necho 'warming up stable release of intellij...'\\nJETBRAINS_BACKEND_QUALIFIER=latest /ide-desktop/intellij-latest/status warmup intellij\"}]\n"
1612
},
1713
"Err": ""
1814
}

0 commit comments

Comments
 (0)