@eclipse-che/che-e2e 7.66.0-dev-2c79499 → 7.66.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/specs/api/ContainerOverridesAPI.spec.js +36 -0
- package/dist/specs/api/ContainerOverridesAPI.spec.js.map +1 -0
- package/dist/specs/api/PodOverridesAPI.spec.js +42 -0
- package/dist/specs/api/PodOverridesAPI.spec.js.map +1 -0
- package/dist/tests-library/ProjectAndFileTests.js +3 -0
- package/dist/tests-library/ProjectAndFileTests.js.map +1 -1
- package/dist/utils/KubernetesCommandLineToolsExecutor.js +29 -2
- package/dist/utils/KubernetesCommandLineToolsExecutor.js.map +1 -1
- package/dist/utils/ShellExecutor.js +3 -0
- package/dist/utils/ShellExecutor.js.map +1 -1
- package/package.json +3 -2
- package/resources/container-overrides.yaml +28 -0
- package/resources/pod-overrides.yaml +37 -0
- package/specs/api/ContainerOverridesAPI.spec.ts +37 -0
- package/specs/api/PodOverridesAPI.spec.ts +43 -0
- package/tests-library/ProjectAndFileTests.ts +3 -0
- package/utils/KubernetesCommandLineToolsExecutor.ts +12 -2
- package/utils/ShellExecutor.ts +4 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const KubernetesCommandLineToolsExecutor_1 = require("../../utils/KubernetesCommandLineToolsExecutor");
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const yaml_1 = __importDefault(require("yaml"));
|
|
10
|
+
const chai_1 = require("chai");
|
|
11
|
+
suite(`Test defining container overrides via attribute.`, async function () {
|
|
12
|
+
const pathToSampleFile = path_1.default.resolve('resources/container-overrides.yaml');
|
|
13
|
+
const workspaceName = yaml_1.default.parse(fs_1.default.readFileSync(pathToSampleFile, 'utf8')).metadata.name;
|
|
14
|
+
const kubernetesCommandLineToolsExecutor = new KubernetesCommandLineToolsExecutor_1.KubernetesCommandLineToolsExecutor(workspaceName);
|
|
15
|
+
suiteSetup('Login into OC client', function () {
|
|
16
|
+
kubernetesCommandLineToolsExecutor.loginToOcp();
|
|
17
|
+
});
|
|
18
|
+
suiteTeardown('Delete DewWorkspace', function () {
|
|
19
|
+
kubernetesCommandLineToolsExecutor.deleteDevWorkspace();
|
|
20
|
+
});
|
|
21
|
+
test('Apply container-overrides sample as DewWorkspace with OC client', function () {
|
|
22
|
+
kubernetesCommandLineToolsExecutor.applyYamlConfigurationAsFile(pathToSampleFile);
|
|
23
|
+
kubernetesCommandLineToolsExecutor.wait(5);
|
|
24
|
+
});
|
|
25
|
+
test('Check that fields are overridden in the Deployment for DewWorkspace', function () {
|
|
26
|
+
const devWorkspaceFullYamlOutput = yaml_1.default.parse(kubernetesCommandLineToolsExecutor.getDevWorkspaceYamlConfiguration());
|
|
27
|
+
chai_1.expect(devWorkspaceFullYamlOutput.spec.template.components[0].attributes['container-overrides']).eqls({
|
|
28
|
+
resources: {
|
|
29
|
+
limits: {
|
|
30
|
+
'nvidia.com/gpu': '1'
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=ContainerOverridesAPI.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContainerOverridesAPI.spec.js","sourceRoot":"","sources":["../../../specs/api/ContainerOverridesAPI.spec.ts"],"names":[],"mappings":";;;;;AAAA,uGAAoG;AACpG,4CAAoB;AACpB,gDAAwB;AACxB,gDAAwB;AACxB,+BAA8B;AAE9B,KAAK,CAAC,kDAAkD,EAAE,KAAK;IAC3D,MAAM,gBAAgB,GAAW,cAAI,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;IACpF,MAAM,aAAa,GAAW,cAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IAClG,MAAM,kCAAkC,GAAuC,IAAI,uEAAkC,CAAC,aAAa,CAAC,CAAC;IAErI,UAAU,CAAC,sBAAsB,EAAE;QAC/B,kCAAkC,CAAC,UAAU,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,qBAAqB,EAAE;QACjC,kCAAkC,CAAC,kBAAkB,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iEAAiE,EAAE;QACpE,kCAAkC,CAAC,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;QAClF,kCAAkC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qEAAqE,EAAE;QACzE,MAAM,0BAA0B,GAAQ,cAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,gCAAgC,EAAE,CAAC,CAAC;QAC1H,aAAM,CAAC,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC;YAClG,SAAS,EAAE;gBACP,MAAM,EAAE;oBACJ,gBAAgB,EAAE,GAAG;iBACxB;aACJ;SACJ,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const KubernetesCommandLineToolsExecutor_1 = require("../../utils/KubernetesCommandLineToolsExecutor");
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const yaml_1 = __importDefault(require("yaml"));
|
|
10
|
+
const chai_1 = require("chai");
|
|
11
|
+
suite(`Test defining pod overrides via attribute.`, async function () {
|
|
12
|
+
const pathToSampleFile = path_1.default.resolve('resources/pod-overrides.yaml');
|
|
13
|
+
const workspaceName = yaml_1.default.parse(fs_1.default.readFileSync(pathToSampleFile, 'utf8')).metadata.name;
|
|
14
|
+
const kubernetesCommandLineToolsExecutor = new KubernetesCommandLineToolsExecutor_1.KubernetesCommandLineToolsExecutor(workspaceName);
|
|
15
|
+
suiteSetup('Login into OC client', function () {
|
|
16
|
+
kubernetesCommandLineToolsExecutor.loginToOcp();
|
|
17
|
+
});
|
|
18
|
+
suiteTeardown('Delete DewWorkspace', function () {
|
|
19
|
+
kubernetesCommandLineToolsExecutor.deleteDevWorkspace();
|
|
20
|
+
});
|
|
21
|
+
test('Apply pod-overrides sample as DewWorkspace with OC client', function () {
|
|
22
|
+
kubernetesCommandLineToolsExecutor.applyYamlConfigurationAsFile(pathToSampleFile);
|
|
23
|
+
kubernetesCommandLineToolsExecutor.wait(5);
|
|
24
|
+
});
|
|
25
|
+
test('Check that fields are overridden in the Deployment for DewWorkspace', function () {
|
|
26
|
+
const devWorkspaceFullYamlOutput = yaml_1.default.parse(kubernetesCommandLineToolsExecutor.getDevWorkspaceYamlConfiguration());
|
|
27
|
+
chai_1.expect(devWorkspaceFullYamlOutput.spec.template.attributes['pod-overrides']).eqls({
|
|
28
|
+
metadata: {
|
|
29
|
+
annotations: {
|
|
30
|
+
'io.kubernetes.cri-o.userns-mode': 'auto:size=65536;map-to-root=true',
|
|
31
|
+
'io.openshift.userns': 'true',
|
|
32
|
+
'openshift.io/scc': 'container-build'
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
spec: {
|
|
36
|
+
runtimeClassName: 'kata',
|
|
37
|
+
schedulerName: 'stork'
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=PodOverridesAPI.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodOverridesAPI.spec.js","sourceRoot":"","sources":["../../../specs/api/PodOverridesAPI.spec.ts"],"names":[],"mappings":";;;;;AAAA,uGAAoG;AACpG,4CAAoB;AACpB,gDAAwB;AACxB,gDAAwB;AACxB,+BAA8B;AAE9B,KAAK,CAAC,4CAA4C,EAAE,KAAK;IACrD,MAAM,gBAAgB,GAAW,cAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC9E,MAAM,aAAa,GAAW,cAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IAClG,MAAM,kCAAkC,GAAuC,IAAI,uEAAkC,CAAC,aAAa,CAAC,CAAC;IAErI,UAAU,CAAC,sBAAsB,EAAE;QAC/B,kCAAkC,CAAC,UAAU,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,qBAAqB,EAAE;QACjC,kCAAkC,CAAC,kBAAkB,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2DAA2D,EAAE;QAC9D,kCAAkC,CAAC,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;QAClF,kCAAkC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qEAAqE,EAAE;QACzE,MAAM,0BAA0B,GAAQ,cAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,gCAAgC,EAAE,CAAC,CAAC;QAC1H,aAAM,CAAC,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9E,QAAQ,EAAE;gBACN,WAAW,EAAE;oBACT,iCAAiC,EAAE,kCAAkC;oBACrE,qBAAqB,EAAE,MAAM;oBAC7B,kBAAkB,EAAE,iBAAiB;iBACxC;aACJ;YACD,IAAI,EAAE;gBACF,gBAAgB,EAAE,MAAM;gBACxB,aAAa,EAAE,OAAO;aACzB;SACJ,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -35,7 +35,10 @@ let ProjectAndFileTests = class ProjectAndFileTests {
|
|
|
35
35
|
}
|
|
36
36
|
async waitWorkspaceReadinessForCheCodeEditor() {
|
|
37
37
|
try {
|
|
38
|
+
const start = new Date().getTime();
|
|
38
39
|
await this.driverHelper.getDriver().wait(selenium_webdriver_1.until.elementLocated(selenium_webdriver_1.By.className('monaco-workbench')), TimeoutConstants_1.TimeoutConstants.TS_SELENIUM_START_WORKSPACE_TIMEOUT);
|
|
40
|
+
const end = new Date().getTime();
|
|
41
|
+
Logger_1.Logger.debug(`${this.constructor.name}.${this.waitWorkspaceReadinessForCheCodeEditor.name} - editor was opened in ${end - start} seconds.`);
|
|
39
42
|
}
|
|
40
43
|
catch (err) {
|
|
41
44
|
Logger_1.Logger.error(`ProjectAndFileTestsCheCode.waitWorkspaceReadinessForCheCodeEditor - waiting for workspace readiness failed: ${err}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectAndFileTests.js","sourceRoot":"","sources":["../../tests-library/ProjectAndFileTests.ts"],"names":[],"mappings":";AAAA;;;;;;;;wEAQwE;;;;;;;;;;;;;;;AAExE,4BAA0B;AAC1B,yCAA+C;AAC/C,2DAA+C;AAC/C,wDAAqD;AACrD,gEAAqD;AACrD,4CAAyC;AACzC,oEAAiE;AAGjE,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAE5B,YACmD,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAAG,CAAC;IAE1E,KAAK,CAAC,sCAAsC;QAC/C,IAAI;YACA,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,0BAAK,CAAC,cAAc,CAAC,uBAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAAE,mCAAgB,CAAC,mCAAmC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ProjectAndFileTests.js","sourceRoot":"","sources":["../../tests-library/ProjectAndFileTests.ts"],"names":[],"mappings":";AAAA;;;;;;;;wEAQwE;;;;;;;;;;;;;;;AAExE,4BAA0B;AAC1B,yCAA+C;AAC/C,2DAA+C;AAC/C,wDAAqD;AACrD,gEAAqD;AACrD,4CAAyC;AACzC,oEAAiE;AAGjE,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAE5B,YACmD,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAAG,CAAC;IAE1E,KAAK,CAAC,sCAAsC;QAC/C,IAAI;YACA,MAAM,KAAK,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YAC3C,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,0BAAK,CAAC,cAAc,CAAC,uBAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAAE,mCAAgB,CAAC,mCAAmC,CAAC,CAAC;YACvJ,MAAM,GAAG,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YACzC,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,sCAAsC,CAAC,IAAI,2BAA2B,GAAG,GAAG,KAAK,WAAW,CAAC,CAAC;SAC/I;QAAC,OAAO,GAAG,EAAE;YACV,eAAM,CAAC,KAAK,CAAC,+GAA+G,GAAG,EAAE,CAAC,CAAC;YACnI,MAAM,GAAG,CAAC;SACb;IACL,CAAC;CACJ,CAAA;AAhBY,mBAAmB;IAD/B,sBAAU,EAAE;IAIJ,WAAA,kBAAM,CAAC,yBAAO,CAAC,YAAY,CAAC,CAAA;qCAAgC,2BAAY;GAHpE,mBAAmB,CAgB/B;AAhBY,kDAAmB"}
|
|
@@ -1,11 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
2
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
22
|
exports.KubernetesCommandLineToolsExecutor = void 0;
|
|
4
23
|
const shelljs_1 = require("shelljs");
|
|
5
24
|
const TestConstants_1 = require("../constants/TestConstants");
|
|
6
25
|
const Logger_1 = require("./Logger");
|
|
7
26
|
const ShellExecutor_1 = require("./ShellExecutor");
|
|
8
|
-
const
|
|
27
|
+
const path = __importStar(require("path"));
|
|
9
28
|
class KubernetesCommandLineToolsExecutor extends ShellExecutor_1.ShellExecutor {
|
|
10
29
|
constructor(_workspaceName, _namespace) {
|
|
11
30
|
super();
|
|
@@ -73,6 +92,14 @@ class KubernetesCommandLineToolsExecutor extends ShellExecutor_1.ShellExecutor {
|
|
|
73
92
|
yamlConfiguration + '\n' +
|
|
74
93
|
'EOF');
|
|
75
94
|
}
|
|
95
|
+
applyYamlConfigurationAsFile(pathToFile) {
|
|
96
|
+
Logger_1.Logger.debug(`${this.getLoggingName(this.applyYamlConfigurationAsFile.name)}:`);
|
|
97
|
+
this.execWithLog(`${this.KUBERNETES_COMMAND_LINE_TOOL} apply -n ${this.namespace} -f "${path.resolve(pathToFile)}"`);
|
|
98
|
+
}
|
|
99
|
+
getDevWorkspaceYamlConfiguration() {
|
|
100
|
+
Logger_1.Logger.debug(`${this.getLoggingName(this.getDevWorkspaceYamlConfiguration.name)}:`);
|
|
101
|
+
return this.execWithLog(`${this.KUBERNETES_COMMAND_LINE_TOOL} get dw ${this.workspaceName} -n ${this.namespace} -o yaml`);
|
|
102
|
+
}
|
|
76
103
|
waitDevWorkspace(timeout = 360) {
|
|
77
104
|
Logger_1.Logger.debug(`${this.getLoggingName(this.waitDevWorkspace.name)}: Wait till workspace ready.`);
|
|
78
105
|
return this.execWithLog(`${(this.KUBERNETES_COMMAND_LINE_TOOL)} wait -n ${this.namespace} --for=condition=Ready dw ${this.workspaceName} --timeout=${timeout}s`);
|
|
@@ -81,7 +108,7 @@ class KubernetesCommandLineToolsExecutor extends ShellExecutor_1.ShellExecutor {
|
|
|
81
108
|
Logger_1.Logger.debug(`${this.getLoggingName(this.createNamespace.name)}: Create namespace "${this.namespace}".`);
|
|
82
109
|
this.execWithLog(`${this.KUBERNETES_COMMAND_LINE_TOOL} create namespace ${this.namespace}`);
|
|
83
110
|
}
|
|
84
|
-
createProject(projectName
|
|
111
|
+
createProject(projectName) {
|
|
85
112
|
Logger_1.Logger.debug(`${this.getLoggingName(this.createProject.name)}: Create new project "${projectName}".`);
|
|
86
113
|
this.execWithLog(`${this.KUBERNETES_COMMAND_LINE_TOOL} new-project ${projectName} -n ${this.namespace}`);
|
|
87
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KubernetesCommandLineToolsExecutor.js","sourceRoot":"","sources":["../../utils/KubernetesCommandLineToolsExecutor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"KubernetesCommandLineToolsExecutor.js","sourceRoot":"","sources":["../../utils/KubernetesCommandLineToolsExecutor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAkD;AAClD,8DAAsF;AACtF,qCAAkC;AAClC,mDAAgD;AAChD,2CAA6B;AAE7B,MAAa,kCAAmC,SAAQ,6BAAa;IAOjE,YAAY,cAAuB,EAAE,UAAmB;QACpD,KAAK,EAAE,CAAC;QAHK,iCAA4B,GAAW,6BAAa,CAAC,wCAAwC,CAAC;QAI3G,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAe,IAAI,CAAC,aAAa,CAAC;IACtC,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,wDAAwD;IACxD,UAAU;QACN,IAAI,IAAI,CAAC,4BAA4B,KAAK,yCAAyB,CAAC,EAAE,EAAE;YACpE,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACxF,MAAM,GAAG,GAAW,IAAI,CAAC,YAAY,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;gBACvB,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;aACrF;iBAAM;gBACH,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,GAAG,KAAK,6BAAa,CAAC,wBAAwB,EAAE,CAAC,CAAC;gBACtH,cAAI,CAAC,qBAAqB,GAAG,OAAO,6BAAa,CAAC,wBAAwB,OAAO,6BAAa,CAAC,wBAAwB,6BAA6B,CAAC,CAAC;aACzJ;SACJ;aAAM;YACH,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;SAC/F;IACL,CAAC;IAED,gBAAgB;QACZ,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACxF,MAAM,MAAM,GAAgB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,kCAAkC,CAAC,GAAG,CAAC,gDAAgD,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACrM,cAAI,CAAC,IAAI,CAAC,CAAC;QACX,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IACzD,CAAC;IAED,mBAAmB;QACf,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC/F,MAAM,MAAM,GAAgB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,uDAAuD,IAAI,CAAC,aAAa,OAAO,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC;QAC7L,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,kBAAkB;QACd,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,aAAa,CAAC,CAAC;QAC/G,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,aAAa,IAAI,CAAC,aAAa,OAAO,IAAI,CAAC,SAAS,kEAAkE,CAAC,CAAC;QAC/K,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,cAAc,IAAI,CAAC,aAAa,OAAO,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC;QACxH,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,eAAe,6BAAa,CAAC,kBAAkB,IAAI,IAAI,CAAC,aAAa,OAAO,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC;IACjK,CAAC;IAED,wBAAwB,CAAC,iBAAyB;QAC9C,IAAI,IAAI,CAAC,4BAA4B,KAAK,yCAAyB,CAAC,OAAO,EAAE;YACzE,IAAI,CAAC,eAAe,EAAE,CAAC;SAC1B;QACD,IAAI,CAAC,oCAAoC,CAAC,iBAAiB,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAgB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpD,kCAAkC,CAAC,GAAG,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACpE,kCAAkC,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvE,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,cAAc,CAAC,gBAAwB;QACnC,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,YAAY,kCAAkC,CAAC,GAAG,OAAO,IAAI,CAAC,SAAS,OAAO,kCAAkC,CAAC,SAAS,cAAc,gBAAgB,GAAG,CAAC,CAAC;IAC/N,CAAC;IAED,oCAAoC,CAAC,iBAAyB;QAC1D,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxF,IAAI,CAAC,WAAW,CAAC,eAAe,IAAI,CAAC,4BAA4B,aAAa,IAAI,CAAC,SAAS,UAAU;YAClG,iBAAiB,GAAG,IAAI;YACxB,KAAK,CAAC,CAAC;IACf,CAAC;IAED,4BAA4B,CAAC,UAAkB;QAC3C,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChF,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,4BAA4B,aAAa,IAAI,CAAC,SAAS,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACzH,CAAC;IAED,gCAAgC;QAC5B,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpF,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,4BAA4B,WAAW,IAAI,CAAC,aAAa,OAAO,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC;IAC9H,CAAC;IAED,gBAAgB,CAAC,UAAkB,GAAG;QAClC,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC/F,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,YAAY,IAAI,CAAC,SAAS,6BAA6B,IAAI,CAAC,aAAa,cAAc,OAAO,GAAG,CAAC,CAAC;IACrK,CAAC;IAED,eAAe;QACX,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;QACzG,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,4BAA4B,qBAAqB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,aAAa,CAAC,WAAmB;QAC7B,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,yBAAyB,WAAW,IAAI,CAAC,CAAC;QACtG,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,4BAA4B,gBAAgB,WAAW,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC7G,CAAC;IAED,aAAa,CAAC,WAAmB;QAC7B,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,WAAW,IAAI,CAAC,CAAC;QAC1F,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,4BAA4B,mBAAmB,WAAW,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAChH,CAAC;IAEO,cAAc;QAClB,MAAM,mBAAmB,GAAgB,IAAI,CAAC,WAAW,CAAC,2CAA2C,CAAC,CAAC;QAEvG,OAAO,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,6BAAa,CAAC,wBAAwB,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACnJ,CAAC;IAEO,cAAc,CAAC,UAAkB;QACrC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,UAAU,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,EAAE,CAAC;IAC7F,CAAC;IAEO,YAAY,CAAC,UAA8B;QAC/C,UAAU,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU;YAC9C,CAAC,CAAC,6BAAa,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,6BAAa,CAAC,wBAAwB,GAAG,YAAY;gBAC9G,CAAC,CAAC,6BAAa,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,6BAAa,CAAC,wBAAwB,GAAG,MAAM;oBAClG,CAAC,CAAC,SAAS,CAAC;QACxB,OAAO,UAAU,CAAC;IACtB,CAAC;IAEO,YAAY;QAChB,eAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACpF,OAAO,6BAAa,CAAC,oBAAoB,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC;IACzF,CAAC;CACJ;AApID,gFAoIC;AAED,WAAiB,kCAAkC;IAC/C,MAAa,iBAAkB,SAAQ,kCAAkC;QACrE,YAAY,OAA2C;YACnD,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAC1D,CAAC;QAED,EAAE,CAAC,OAAe,EAAE;YAChB,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QAC7C,CAAC;QAED,GAAG;YACC,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,EAAE,CAAC,IAAY;YACX,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QAC7C,CAAC;QAED,QAAQ,CAAC,UAAkB;YACvB,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC;QAC1D,CAAC;QAED,YAAY,CAAC,IAAY;YACrB,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;QACjD,CAAC;KACJ;IAxBY,oDAAiB,oBAwB7B,CAAA;AACL,CAAC,EA1BgB,kCAAkC,GAAlC,0CAAkC,KAAlC,0CAAkC,QA0BlD"}
|
|
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ShellExecutor = void 0;
|
|
4
4
|
const shelljs_1 = require("shelljs");
|
|
5
5
|
class ShellExecutor {
|
|
6
|
+
wait(seconds) {
|
|
7
|
+
this.execWithLog(`sleep ${seconds}s`);
|
|
8
|
+
}
|
|
6
9
|
execWithLog(command) {
|
|
7
10
|
shelljs_1.echo(command);
|
|
8
11
|
return shelljs_1.exec(command);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShellExecutor.js","sourceRoot":"","sources":["../../utils/ShellExecutor.ts"],"names":[],"mappings":";;;AAAA,qCAAkD;AAElD,MAAa,aAAa;
|
|
1
|
+
{"version":3,"file":"ShellExecutor.js","sourceRoot":"","sources":["../../utils/ShellExecutor.ts"],"names":[],"mappings":";;;AAAA,qCAAkD;AAElD,MAAa,aAAa;IAEtB,IAAI,CAAC,OAAe;QAChB,IAAI,CAAC,WAAW,CAAC,SAAS,OAAO,GAAG,CAAC,CAAC;IAC1C,CAAC;IAES,WAAW,CAAC,OAAe;QACjC,cAAI,CAAC,OAAO,CAAC,CAAC;QACd,OAAO,cAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;CACJ;AAVD,sCAUC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eclipse-che/che-e2e",
|
|
3
|
-
"version": "7.66.0
|
|
3
|
+
"version": "7.66.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -35,7 +35,8 @@
|
|
|
35
35
|
"ts-node": "^10.9.1",
|
|
36
36
|
"tslint": "^6.1.3",
|
|
37
37
|
"typescript": "3.9.9",
|
|
38
|
-
"vscode-extension-tester-locators": "3.1.0"
|
|
38
|
+
"vscode-extension-tester-locators": "3.1.0",
|
|
39
|
+
"yaml": "^2.2.2"
|
|
39
40
|
},
|
|
40
41
|
"dependencies": {
|
|
41
42
|
"@eclipse-che/api": "latest",
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
kind: DevWorkspace
|
|
2
|
+
apiVersion: workspace.devfile.io/v1alpha2
|
|
3
|
+
metadata:
|
|
4
|
+
name: web-terminal-container-overrides
|
|
5
|
+
spec:
|
|
6
|
+
started: true
|
|
7
|
+
template:
|
|
8
|
+
attributes:
|
|
9
|
+
controller.devfile.io/storage-type: ephemeral
|
|
10
|
+
projects:
|
|
11
|
+
- name: web-nodejs-sample
|
|
12
|
+
git:
|
|
13
|
+
remotes:
|
|
14
|
+
origin: "https://github.com/che-samples/web-nodejs-sample.git"
|
|
15
|
+
components:
|
|
16
|
+
- name: web-terminal
|
|
17
|
+
attributes:
|
|
18
|
+
container-overrides: {"resources":{"limits":{"nvidia.com/gpu":"1"}}}
|
|
19
|
+
container:
|
|
20
|
+
image: quay.io/wto/web-terminal-tooling:next
|
|
21
|
+
args:
|
|
22
|
+
- tail
|
|
23
|
+
- '-f'
|
|
24
|
+
- /dev/null
|
|
25
|
+
cpuLimit: 400m
|
|
26
|
+
cpuRequest: 100m
|
|
27
|
+
memoryLimit: 256Mi
|
|
28
|
+
memoryRequest: 128Mi
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
kind: DevWorkspace
|
|
2
|
+
apiVersion: workspace.devfile.io/v1alpha2
|
|
3
|
+
metadata:
|
|
4
|
+
name: code-latest-pod-overrides
|
|
5
|
+
spec:
|
|
6
|
+
started: true
|
|
7
|
+
template:
|
|
8
|
+
attributes:
|
|
9
|
+
pod-overrides:
|
|
10
|
+
metadata:
|
|
11
|
+
annotations:
|
|
12
|
+
io.openshift.userns: "true"
|
|
13
|
+
io.kubernetes.cri-o.userns-mode: "auto:size=65536;map-to-root=true" # <-- user namespace
|
|
14
|
+
openshift.io/scc: container-build
|
|
15
|
+
spec:
|
|
16
|
+
runtimeClassName: kata
|
|
17
|
+
schedulerName: stork
|
|
18
|
+
projects:
|
|
19
|
+
- name: web-nodejs-sample
|
|
20
|
+
git:
|
|
21
|
+
remotes:
|
|
22
|
+
origin: "https://github.com/che-samples/web-nodejs-sample.git"
|
|
23
|
+
commands:
|
|
24
|
+
- id: say-hello
|
|
25
|
+
exec:
|
|
26
|
+
component: che-code-runtime-description
|
|
27
|
+
commandLine: echo "Hello from $(pwd)"
|
|
28
|
+
workingDir: ${PROJECT_SOURCE}/app
|
|
29
|
+
contributions:
|
|
30
|
+
- name: che-code
|
|
31
|
+
uri: https://eclipse-che.github.io/che-plugin-registry/main/v3/plugins/che-incubator/che-code/latest/devfile.yaml
|
|
32
|
+
components:
|
|
33
|
+
- name: che-code-runtime-description
|
|
34
|
+
container:
|
|
35
|
+
env:
|
|
36
|
+
- name: CODE_HOST
|
|
37
|
+
value: 0.0.0.0
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { KubernetesCommandLineToolsExecutor } from '../../utils/KubernetesCommandLineToolsExecutor';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import YAML from 'yaml';
|
|
5
|
+
import { expect } from 'chai';
|
|
6
|
+
|
|
7
|
+
suite(`Test defining container overrides via attribute.`, async function (): Promise<void> {
|
|
8
|
+
const pathToSampleFile: string = path.resolve('resources/container-overrides.yaml');
|
|
9
|
+
const workspaceName: string = YAML.parse(fs.readFileSync(pathToSampleFile, 'utf8')).metadata.name;
|
|
10
|
+
const kubernetesCommandLineToolsExecutor: KubernetesCommandLineToolsExecutor = new KubernetesCommandLineToolsExecutor(workspaceName);
|
|
11
|
+
|
|
12
|
+
suiteSetup('Login into OC client', function (): void {
|
|
13
|
+
kubernetesCommandLineToolsExecutor.loginToOcp();
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
suiteTeardown('Delete DewWorkspace', function (): void {
|
|
17
|
+
kubernetesCommandLineToolsExecutor.deleteDevWorkspace();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
test('Apply container-overrides sample as DewWorkspace with OC client', function (): void {
|
|
21
|
+
kubernetesCommandLineToolsExecutor.applyYamlConfigurationAsFile(pathToSampleFile);
|
|
22
|
+
kubernetesCommandLineToolsExecutor.wait(5);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
test('Check that fields are overridden in the Deployment for DewWorkspace', function (): void {
|
|
26
|
+
const devWorkspaceFullYamlOutput: any = YAML.parse(kubernetesCommandLineToolsExecutor.getDevWorkspaceYamlConfiguration());
|
|
27
|
+
expect(devWorkspaceFullYamlOutput.spec.template.components[0].attributes['container-overrides']).eqls({
|
|
28
|
+
resources: {
|
|
29
|
+
limits: {
|
|
30
|
+
'nvidia.com/gpu': '1'
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { KubernetesCommandLineToolsExecutor } from '../../utils/KubernetesCommandLineToolsExecutor';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import YAML from 'yaml';
|
|
5
|
+
import { expect } from 'chai';
|
|
6
|
+
|
|
7
|
+
suite(`Test defining pod overrides via attribute.`, async function (): Promise<void> {
|
|
8
|
+
const pathToSampleFile: string = path.resolve('resources/pod-overrides.yaml');
|
|
9
|
+
const workspaceName: string = YAML.parse(fs.readFileSync(pathToSampleFile, 'utf8')).metadata.name;
|
|
10
|
+
const kubernetesCommandLineToolsExecutor: KubernetesCommandLineToolsExecutor = new KubernetesCommandLineToolsExecutor(workspaceName);
|
|
11
|
+
|
|
12
|
+
suiteSetup('Login into OC client', function (): void {
|
|
13
|
+
kubernetesCommandLineToolsExecutor.loginToOcp();
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
suiteTeardown('Delete DewWorkspace', function (): void {
|
|
17
|
+
kubernetesCommandLineToolsExecutor.deleteDevWorkspace();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
test('Apply pod-overrides sample as DewWorkspace with OC client', function (): void {
|
|
21
|
+
kubernetesCommandLineToolsExecutor.applyYamlConfigurationAsFile(pathToSampleFile);
|
|
22
|
+
kubernetesCommandLineToolsExecutor.wait(5);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
test('Check that fields are overridden in the Deployment for DewWorkspace', function (): void {
|
|
26
|
+
const devWorkspaceFullYamlOutput: any = YAML.parse(kubernetesCommandLineToolsExecutor.getDevWorkspaceYamlConfiguration());
|
|
27
|
+
expect(devWorkspaceFullYamlOutput.spec.template.attributes['pod-overrides']).eqls({
|
|
28
|
+
metadata: {
|
|
29
|
+
annotations: {
|
|
30
|
+
'io.kubernetes.cri-o.userns-mode': 'auto:size=65536;map-to-root=true',
|
|
31
|
+
'io.openshift.userns': 'true',
|
|
32
|
+
'openshift.io/scc': 'container-build'
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
spec: {
|
|
36
|
+
runtimeClassName: 'kata',
|
|
37
|
+
schedulerName: 'stork'
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
|
|
@@ -24,7 +24,10 @@ export class ProjectAndFileTests {
|
|
|
24
24
|
|
|
25
25
|
public async waitWorkspaceReadinessForCheCodeEditor(): Promise<void> {
|
|
26
26
|
try {
|
|
27
|
+
const start: number = new Date().getTime();
|
|
27
28
|
await this.driverHelper.getDriver().wait(until.elementLocated(By.className('monaco-workbench')), TimeoutConstants.TS_SELENIUM_START_WORKSPACE_TIMEOUT);
|
|
29
|
+
const end: number = new Date().getTime();
|
|
30
|
+
Logger.debug(`${this.constructor.name}.${this.waitWorkspaceReadinessForCheCodeEditor.name} - editor was opened in ${end - start} seconds.`);
|
|
28
31
|
} catch (err) {
|
|
29
32
|
Logger.error(`ProjectAndFileTestsCheCode.waitWorkspaceReadinessForCheCodeEditor - waiting for workspace readiness failed: ${err}`);
|
|
30
33
|
throw err;
|
|
@@ -2,7 +2,7 @@ import { echo, exec, ShellString } from 'shelljs';
|
|
|
2
2
|
import { KubernetesCommandLineTool, TestConstants } from '../constants/TestConstants';
|
|
3
3
|
import { Logger } from './Logger';
|
|
4
4
|
import { ShellExecutor } from './ShellExecutor';
|
|
5
|
-
import
|
|
5
|
+
import * as path from 'path';
|
|
6
6
|
|
|
7
7
|
export class KubernetesCommandLineToolsExecutor extends ShellExecutor {
|
|
8
8
|
private static container: string;
|
|
@@ -84,6 +84,16 @@ export class KubernetesCommandLineToolsExecutor extends ShellExecutor {
|
|
|
84
84
|
'EOF');
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
+
applyYamlConfigurationAsFile(pathToFile: string): void {
|
|
88
|
+
Logger.debug(`${this.getLoggingName(this.applyYamlConfigurationAsFile.name)}:`);
|
|
89
|
+
this.execWithLog(`${this.KUBERNETES_COMMAND_LINE_TOOL} apply -n ${this.namespace} -f "${path.resolve(pathToFile)}"`);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
getDevWorkspaceYamlConfiguration(): ShellString {
|
|
93
|
+
Logger.debug(`${this.getLoggingName(this.getDevWorkspaceYamlConfiguration.name)}:`);
|
|
94
|
+
return this.execWithLog(`${this.KUBERNETES_COMMAND_LINE_TOOL} get dw ${this.workspaceName} -n ${this.namespace} -o yaml`);
|
|
95
|
+
}
|
|
96
|
+
|
|
87
97
|
waitDevWorkspace(timeout: number = 360): ShellString {
|
|
88
98
|
Logger.debug(`${this.getLoggingName(this.waitDevWorkspace.name)}: Wait till workspace ready.`);
|
|
89
99
|
return this.execWithLog(`${(this.KUBERNETES_COMMAND_LINE_TOOL)} wait -n ${this.namespace} --for=condition=Ready dw ${this.workspaceName} --timeout=${timeout}s`);
|
|
@@ -94,7 +104,7 @@ export class KubernetesCommandLineToolsExecutor extends ShellExecutor {
|
|
|
94
104
|
this.execWithLog(`${this.KUBERNETES_COMMAND_LINE_TOOL} create namespace ${this.namespace}`);
|
|
95
105
|
}
|
|
96
106
|
|
|
97
|
-
createProject(projectName: string
|
|
107
|
+
createProject(projectName: string): void {
|
|
98
108
|
Logger.debug(`${this.getLoggingName(this.createProject.name)}: Create new project "${projectName}".`);
|
|
99
109
|
this.execWithLog(`${this.KUBERNETES_COMMAND_LINE_TOOL} new-project ${projectName} -n ${this.namespace}`);
|
|
100
110
|
}
|
package/utils/ShellExecutor.ts
CHANGED
|
@@ -2,6 +2,10 @@ import { echo, exec, ShellString } from 'shelljs';
|
|
|
2
2
|
|
|
3
3
|
export class ShellExecutor {
|
|
4
4
|
|
|
5
|
+
wait(seconds: number): void {
|
|
6
|
+
this.execWithLog(`sleep ${seconds}s`);
|
|
7
|
+
}
|
|
8
|
+
|
|
5
9
|
protected execWithLog(command: string): ShellString {
|
|
6
10
|
echo(command);
|
|
7
11
|
return exec(command);
|