@eclipse-che/che-e2e 7.65.0-dev-569551e → 7.65.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/constants/TestConstants.ts +14 -1
- package/dist/constants/TestConstants.js +12 -2
- package/dist/constants/TestConstants.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/specs/api/CloneGitRepoAPI.spec.js +7 -7
- package/dist/specs/api/CloneGitRepoAPI.spec.js.map +1 -1
- package/dist/utils/KubernetesCommandLineToolsExecutor.js +117 -0
- package/dist/utils/KubernetesCommandLineToolsExecutor.js.map +1 -0
- package/dist/utils/ShellExecutor.js +12 -0
- package/dist/utils/ShellExecutor.js.map +1 -0
- package/index.ts +2 -1
- package/package.json +1 -1
- package/specs/api/CloneGitRepoAPI.spec.ts +8 -7
- package/utils/KubernetesCommandLineToolsExecutor.ts +136 -0
- package/utils/ShellExecutor.ts +9 -0
- package/dist/utils/OpenshiftClientExecutor.js +0 -98
- package/dist/utils/OpenshiftClientExecutor.js.map +0 -1
- package/utils/OpenshiftClientExecutor.ts +0 -117
|
@@ -23,6 +23,11 @@ export enum GitProviderType {
|
|
|
23
23
|
BITBUCKET = 'bitbucket'
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
export enum KubernetesCommandLineTool {
|
|
27
|
+
OC = 'oc',
|
|
28
|
+
KUBECTL = 'kubectl',
|
|
29
|
+
}
|
|
30
|
+
|
|
26
31
|
export const TestConstants: any = {
|
|
27
32
|
/**
|
|
28
33
|
* Base URL of the application which should be checked
|
|
@@ -228,7 +233,15 @@ export const TestConstants: any = {
|
|
|
228
233
|
|
|
229
234
|
TS_SELENIUM_PROJECT_ROOT_FILE_NAME: process.env.TS_SELENIUM_PROJECT_ROOT_FILE_NAME || 'devfile.yaml',
|
|
230
235
|
|
|
236
|
+
/* -------------------------------------------
|
|
237
|
+
| The api tests related constants
|
|
238
|
+
----------------------------------------------*/
|
|
239
|
+
|
|
240
|
+
TS_API_TEST_KUBERNETES_COMMAND_LINE_TOOL: process.env.TS_API_TEST_KUBERNETES_COMMAND_LINE_TOOL || KubernetesCommandLineTool.OC,
|
|
241
|
+
|
|
231
242
|
TS_API_TEST_UDI_IMAGE: process.env.TS_API_TEST_UDI_IMAGE || 'quay.io/devfile/universal-developer-image:latest',
|
|
232
243
|
|
|
233
|
-
TS_API_TEST_CHE_CODE_EDITOR_DEVFILE_URI: process.env.TS_API_TEST_CHE_CODE_EDITOR_DEVFILE_URI || `https://eclipse-che.github.io/che-plugin-registry/main/v3/plugins/che-incubator/che-code/latest/devfile.yaml
|
|
244
|
+
TS_API_TEST_CHE_CODE_EDITOR_DEVFILE_URI: process.env.TS_API_TEST_CHE_CODE_EDITOR_DEVFILE_URI || `https://eclipse-che.github.io/che-plugin-registry/main/v3/plugins/che-incubator/che-code/latest/devfile.yaml`,
|
|
245
|
+
|
|
246
|
+
TS_API_TEST_NAMESPACE: process.env.TS_API_TEST_NAMESPACE || undefined
|
|
234
247
|
};
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* SPDX-License-Identifier: EPL-2.0
|
|
10
10
|
**********************************************************************/
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.TestConstants = exports.GitProviderType = void 0;
|
|
12
|
+
exports.TestConstants = exports.KubernetesCommandLineTool = exports.GitProviderType = void 0;
|
|
13
13
|
function getBaseUrl() {
|
|
14
14
|
const baseUrl = process.env.TS_SELENIUM_BASE_URL;
|
|
15
15
|
if (!baseUrl) {
|
|
@@ -23,6 +23,11 @@ var GitProviderType;
|
|
|
23
23
|
GitProviderType["GITLAB"] = "gitlab";
|
|
24
24
|
GitProviderType["BITBUCKET"] = "bitbucket";
|
|
25
25
|
})(GitProviderType = exports.GitProviderType || (exports.GitProviderType = {}));
|
|
26
|
+
var KubernetesCommandLineTool;
|
|
27
|
+
(function (KubernetesCommandLineTool) {
|
|
28
|
+
KubernetesCommandLineTool["OC"] = "oc";
|
|
29
|
+
KubernetesCommandLineTool["KUBECTL"] = "kubectl";
|
|
30
|
+
})(KubernetesCommandLineTool = exports.KubernetesCommandLineTool || (exports.KubernetesCommandLineTool = {}));
|
|
26
31
|
exports.TestConstants = {
|
|
27
32
|
/**
|
|
28
33
|
* Base URL of the application which should be checked
|
|
@@ -182,7 +187,12 @@ exports.TestConstants = {
|
|
|
182
187
|
TS_SELENIUM_GIT_PROVIDER_IS_LDAP_LOGIN: process.env.TS_SELENIUM_GIT_PROVIDER_IS_LDAP_LOGIN === 'true',
|
|
183
188
|
TS_SELENIUM_GIT_PROVIDER_OAUTH: process.env.TS_SELENIUM_GIT_PROVIDER_OAUTH === 'true',
|
|
184
189
|
TS_SELENIUM_PROJECT_ROOT_FILE_NAME: process.env.TS_SELENIUM_PROJECT_ROOT_FILE_NAME || 'devfile.yaml',
|
|
190
|
+
/* -------------------------------------------
|
|
191
|
+
| The api tests related constants
|
|
192
|
+
----------------------------------------------*/
|
|
193
|
+
TS_API_TEST_KUBERNETES_COMMAND_LINE_TOOL: process.env.TS_API_TEST_KUBERNETES_COMMAND_LINE_TOOL || KubernetesCommandLineTool.OC,
|
|
185
194
|
TS_API_TEST_UDI_IMAGE: process.env.TS_API_TEST_UDI_IMAGE || 'quay.io/devfile/universal-developer-image:latest',
|
|
186
|
-
TS_API_TEST_CHE_CODE_EDITOR_DEVFILE_URI: process.env.TS_API_TEST_CHE_CODE_EDITOR_DEVFILE_URI || `https://eclipse-che.github.io/che-plugin-registry/main/v3/plugins/che-incubator/che-code/latest/devfile.yaml
|
|
195
|
+
TS_API_TEST_CHE_CODE_EDITOR_DEVFILE_URI: process.env.TS_API_TEST_CHE_CODE_EDITOR_DEVFILE_URI || `https://eclipse-che.github.io/che-plugin-registry/main/v3/plugins/che-incubator/che-code/latest/devfile.yaml`,
|
|
196
|
+
TS_API_TEST_NAMESPACE: process.env.TS_API_TEST_NAMESPACE || undefined
|
|
187
197
|
};
|
|
188
198
|
//# sourceMappingURL=TestConstants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestConstants.js","sourceRoot":"","sources":["../../constants/TestConstants.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TestConstants.js","sourceRoot":"","sources":["../../constants/TestConstants.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -32,10 +32,11 @@ __exportStar(require("./driver/ChromeDriver"), exports);
|
|
|
32
32
|
__exportStar(require("./driver/IDriver"), exports);
|
|
33
33
|
__exportStar(require("./utils/BrowserTabsUtil"), exports);
|
|
34
34
|
__exportStar(require("./utils/DriverHelper"), exports);
|
|
35
|
+
__exportStar(require("./utils/KubernetesCommandLineToolsExecutor"), exports);
|
|
35
36
|
__exportStar(require("./utils/Logger"), exports);
|
|
36
|
-
__exportStar(require("./utils/OpenshiftClientExecutor"), exports);
|
|
37
37
|
__exportStar(require("./utils/Sanitizer"), exports);
|
|
38
38
|
__exportStar(require("./utils/ScreenCatcher"), exports);
|
|
39
|
+
__exportStar(require("./utils/ShellExecutor"), exports);
|
|
39
40
|
__exportStar(require("./utils/request-handlers/CheApiRequestHandler"), exports);
|
|
40
41
|
__exportStar(require("./utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler"), exports);
|
|
41
42
|
__exportStar(require("./utils/request-handlers/headers/IAuthorizationHeaderHandler"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4EAA8D;AACrD,0CAAe;AACxB,4DAA0C;AAC1C,4DAA0C;AAC1C,+DAA6C;AAC7C,wDAAsC;AACtC,mDAAiC;AACjC,0DAAwC;AACxC,uDAAqC;AACrC,iDAA+B;AAC/B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4EAA8D;AACrD,0CAAe;AACxB,4DAA0C;AAC1C,4DAA0C;AAC1C,+DAA6C;AAC7C,wDAAsC;AACtC,mDAAiC;AACjC,0DAAwC;AACxC,uDAAqC;AACrC,6EAA2D;AAC3D,iDAA+B;AAC/B,oDAAkC;AAClC,wDAAsC;AACtC,wDAAsC;AACtC,gFAA8D;AAC9D,0GAAwF;AACxF,+FAA6E;AAC7E,sDAAoC;AACpC,mEAAiD;AACjD,uEAAqD;AACrD,sEAAoD;AACpD,oEAAkD;AAClD,0EAAwD;AACxD,oEAAkD;AAClD,qEAAmD;AACnD,6FAA2E;AAC3E,wEAAsD;AACtD,yEAAuD;AACvD,oEAAkD;AAClD,oEAAkD;AAClD,yEAAuD;AACvD,uEAAqD;AACrD,sEAAoD;AACpD,iFAA+D;AAC/D,uEAAqD;AACrD,uEAAqD;AACrD,6DAA2C;AAC3C,sEAAoD;AACpD,yEAAuD"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
3
|
+
const KubernetesCommandLineToolsExecutor_1 = require("../../utils/KubernetesCommandLineToolsExecutor");
|
|
4
4
|
const chai_1 = require("chai");
|
|
5
5
|
const GitUtil_1 = require("../../utils/vsc/GitUtil");
|
|
6
6
|
const TestConstants_1 = require("../../constants/TestConstants");
|
|
7
7
|
const gitRepository = 'https://github.com/crw-qe/web-nodejs-sample';
|
|
8
8
|
suite(`Test cloning of repo "${gitRepository}" into empty workspace.`, async function () {
|
|
9
9
|
// works only for root user
|
|
10
|
-
const namespace =
|
|
10
|
+
const namespace = TestConstants_1.TestConstants.TS_API_TEST_NAMESPACE ? TestConstants_1.TestConstants.TS_API_TEST_NAMESPACE : undefined;
|
|
11
11
|
const workspaceName = 'empty-' + Math.floor(Math.random() * 1000);
|
|
12
12
|
const clonedProjectName = GitUtil_1.GitUtil.getProjectNameFromGitUrl(gitRepository);
|
|
13
13
|
let containerWorkDir = '';
|
|
14
|
-
const
|
|
15
|
-
const containerTerminal = new
|
|
14
|
+
const kubernetesCommandLineToolsExecutor = new KubernetesCommandLineToolsExecutor_1.KubernetesCommandLineToolsExecutor(workspaceName, namespace);
|
|
15
|
+
const containerTerminal = new KubernetesCommandLineToolsExecutor_1.KubernetesCommandLineToolsExecutor.ContainerTerminal(kubernetesCommandLineToolsExecutor);
|
|
16
16
|
const emptyYaml = 'apiVersion: workspace.devfile.io/v1alpha2\n' +
|
|
17
17
|
'kind: DevWorkspace\n' +
|
|
18
18
|
'metadata:\n' +
|
|
@@ -34,11 +34,11 @@ suite(`Test cloning of repo "${gitRepository}" into empty workspace.`, async fun
|
|
|
34
34
|
' - name: CODE_HOST\n' +
|
|
35
35
|
' value: 0.0.0.0';
|
|
36
36
|
suiteSetup('Create empty workspace with OC client', function () {
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
kubernetesCommandLineToolsExecutor.loginToOcp();
|
|
38
|
+
kubernetesCommandLineToolsExecutor.applyAndWaitDevWorkspace(emptyYaml);
|
|
39
39
|
});
|
|
40
40
|
suiteTeardown('Delete workspace', function () {
|
|
41
|
-
|
|
41
|
+
kubernetesCommandLineToolsExecutor.deleteDevWorkspace();
|
|
42
42
|
});
|
|
43
43
|
suite('Clone public repo without previous setup', function () {
|
|
44
44
|
suiteTeardown('Delete cloned project', function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CloneGitRepoAPI.spec.js","sourceRoot":"","sources":["../../../specs/api/CloneGitRepoAPI.spec.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"CloneGitRepoAPI.spec.js","sourceRoot":"","sources":["../../../specs/api/CloneGitRepoAPI.spec.ts"],"names":[],"mappings":";;AAAA,uGAAoG;AACpG,+BAA8B;AAE9B,qDAAkD;AAClD,iEAA8D;AAG9D,MAAM,aAAa,GAAW,6CAA6C,CAAC;AAE5E,KAAK,CAAC,yBAAyB,aAAa,yBAAyB,EAAE,KAAK;IACxE,2BAA2B;IAC3B,MAAM,SAAS,GAAW,6BAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC,6BAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC;IAChH,MAAM,aAAa,GAAW,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1E,MAAM,iBAAiB,GAAW,iBAAO,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC;IAClF,IAAI,gBAAgB,GAAW,EAAE,CAAC;IAElC,MAAM,kCAAkC,GAAuC,IAAI,uEAAkC,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAChJ,MAAM,iBAAiB,GAAyD,IAAI,uEAAkC,CAAC,iBAAiB,CAAC,kCAAkC,CAAC,CAAC;IAE7K,MAAM,SAAS,GACX,6CAA6C;QAC7C,sBAAsB;QACtB,aAAa;QACb,WAAW,aAAa,IAAI;QAC5B,SAAS;QACT,mBAAmB;QACnB,eAAe;QACf,mBAAmB;QACnB,sBAAsB;QACtB,oBAAoB,6BAAa,CAAC,qBAAqB,IAAI;QAC3D,2CAA2C;QAC3C,oBAAoB;QACpB,wBAAwB;QACxB,cAAc,6BAAa,CAAC,uCAAuC,IAAI;QACvE,qBAAqB;QACrB,gDAAgD;QAChD,wBAAwB;QACxB,oBAAoB;QACpB,mCAAmC;QACnC,gCAAgC,CAAC;IAErC,UAAU,CAAC,uCAAuC,EAAE;QAChD,kCAAkC,CAAC,UAAU,EAAE,CAAC;QAChD,kCAAkC,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,kBAAkB,EAAE;QAC9B,kCAAkC,CAAC,kBAAkB,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,0CAA0C,EAAE;QAC9C,aAAa,CAAC,uBAAuB,EAAE;YACnC,iBAAiB,CAAC,YAAY,CAAC,GAAG,iBAAiB,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oCAAoC,EAAE;YACvC,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACpE,MAAM,WAAW,GAAgB,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC3E,aAAM,CAAC,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,8BAA8B,EAAE;YACjC,aAAM,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,+BAA+B,EAAE;YAClC,aAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,GAAG,gBAAgB,IAAI,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,6BAAa,CAAC,kCAAkC,CAAC,CAAC;QAC/I,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KubernetesCommandLineToolsExecutor = void 0;
|
|
4
|
+
const shelljs_1 = require("shelljs");
|
|
5
|
+
const TestConstants_1 = require("../constants/TestConstants");
|
|
6
|
+
const Logger_1 = require("./Logger");
|
|
7
|
+
const ShellExecutor_1 = require("./ShellExecutor");
|
|
8
|
+
class KubernetesCommandLineToolsExecutor extends ShellExecutor_1.ShellExecutor {
|
|
9
|
+
constructor(_workspaceName, _namespace) {
|
|
10
|
+
super();
|
|
11
|
+
this.KUBERNETES_COMMAND_LINE_TOOL = TestConstants_1.TestConstants.TS_API_TEST_KUBERNETES_COMMAND_LINE_TOOL;
|
|
12
|
+
this.workspaceName = _workspaceName;
|
|
13
|
+
this.namespace = this.setNamespace(_namespace);
|
|
14
|
+
}
|
|
15
|
+
get getWorkspaceName() {
|
|
16
|
+
return this.workspaceName;
|
|
17
|
+
}
|
|
18
|
+
get getNamespace() {
|
|
19
|
+
return this.namespace;
|
|
20
|
+
}
|
|
21
|
+
// login to Openshift cluster with username and password
|
|
22
|
+
loginToOcp() {
|
|
23
|
+
if (this.KUBERNETES_COMMAND_LINE_TOOL === TestConstants_1.KubernetesCommandLineTool.OC) {
|
|
24
|
+
Logger_1.Logger.debug(`${this.getLoggingName(this.loginToOcp.name)}: Login to the "OC" client`);
|
|
25
|
+
const url = this.getServerUrl();
|
|
26
|
+
Logger_1.Logger.debug(url, TestConstants_1.TestConstants.TS_SELENIUM_OCP_USERNAME);
|
|
27
|
+
shelljs_1.exec(`sleep 5
|
|
28
|
+
oc login --server=${url} -u=${TestConstants_1.TestConstants.TS_SELENIUM_OCP_USERNAME} -p=${TestConstants_1.TestConstants.TS_SELENIUM_OCP_PASSWORD} --insecure-skip-tls-verify`);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
Logger_1.Logger.debug(`${this.getLoggingName(this.loginToOcp.name)}: doesn't support login command`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
getContainerName() {
|
|
35
|
+
Logger_1.Logger.debug(`${this.getLoggingName(this.getContainerName.name)}: Get container name.`);
|
|
36
|
+
const output = this.execWithLog(`${(this.KUBERNETES_COMMAND_LINE_TOOL)} get ${(KubernetesCommandLineToolsExecutor.pod)} -o jsonpath='{.spec.containers[*].name}' -n ${this.namespace}`);
|
|
37
|
+
shelljs_1.echo('\n');
|
|
38
|
+
return output.stderr ? output.stderr : output.stdout;
|
|
39
|
+
}
|
|
40
|
+
getWorkspacePodName() {
|
|
41
|
+
Logger_1.Logger.debug(`${this.getLoggingName(this.getWorkspacePodName.name)}: Get workspace pod name.`);
|
|
42
|
+
const output = this.execWithLog(`${(this.KUBERNETES_COMMAND_LINE_TOOL)} get pod -l controller.devfile.io/devworkspace_name=${this.workspaceName} -n ${this.namespace} -o name`);
|
|
43
|
+
return output.stderr ? output.stderr : output.stdout.replace('\n', '');
|
|
44
|
+
}
|
|
45
|
+
deleteDevWorkspace() {
|
|
46
|
+
Logger_1.Logger.debug(`${this.getLoggingName(this.deleteDevWorkspace.name)}: Delete '${this.workspaceName}' workspace`);
|
|
47
|
+
this.execWithLog(`${(this.KUBERNETES_COMMAND_LINE_TOOL)} patch dw ${this.workspaceName} -n ${this.namespace} -p '{ "metadata": { "finalizers": null }}' --type merge || true`);
|
|
48
|
+
this.execWithLog(`${(this.KUBERNETES_COMMAND_LINE_TOOL)} delete dw ${this.workspaceName} -n ${this.namespace} || true`);
|
|
49
|
+
}
|
|
50
|
+
applyAndWaitDevWorkspace(yamlConfiguration) {
|
|
51
|
+
if (this.KUBERNETES_COMMAND_LINE_TOOL === TestConstants_1.KubernetesCommandLineTool.KUBECTL) {
|
|
52
|
+
this.createNamespace();
|
|
53
|
+
}
|
|
54
|
+
this.applyYamlConfigurationAsStringOutput(yamlConfiguration);
|
|
55
|
+
const output = this.waitDevWorkspace();
|
|
56
|
+
KubernetesCommandLineToolsExecutor.pod = this.getWorkspacePodName();
|
|
57
|
+
KubernetesCommandLineToolsExecutor.container = this.getContainerName();
|
|
58
|
+
return output;
|
|
59
|
+
}
|
|
60
|
+
executeCommand(commandToExecute) {
|
|
61
|
+
Logger_1.Logger.debug(`${this.getLoggingName(this.executeCommand.name)}:`);
|
|
62
|
+
return this.execWithLog(`${(this.KUBERNETES_COMMAND_LINE_TOOL)} exec -i ${KubernetesCommandLineToolsExecutor.pod} -n ${this.namespace} -c ${KubernetesCommandLineToolsExecutor.container} -- sh -c "${commandToExecute}"`);
|
|
63
|
+
}
|
|
64
|
+
applyYamlConfigurationAsStringOutput(yamlConfiguration) {
|
|
65
|
+
Logger_1.Logger.debug(`${this.getLoggingName(this.applyYamlConfigurationAsStringOutput.name)}:`);
|
|
66
|
+
this.execWithLog(`cat <<EOF | ${this.KUBERNETES_COMMAND_LINE_TOOL} apply -n ${this.namespace} -f - \n` +
|
|
67
|
+
yamlConfiguration + '\n' +
|
|
68
|
+
'EOF');
|
|
69
|
+
}
|
|
70
|
+
waitDevWorkspace(timeout = 360) {
|
|
71
|
+
Logger_1.Logger.debug(`${this.getLoggingName(this.waitDevWorkspace.name)}: Wait till workspace ready.`);
|
|
72
|
+
return this.execWithLog(`${(this.KUBERNETES_COMMAND_LINE_TOOL)} wait -n ${this.namespace} --for=condition=Ready dw ${this.workspaceName} --timeout=${timeout}s`);
|
|
73
|
+
}
|
|
74
|
+
createNamespace() {
|
|
75
|
+
Logger_1.Logger.debug(`${this.getLoggingName(this.createNamespace.name)}: Create namespace "${this.namespace}".`);
|
|
76
|
+
this.execWithLog(`${this.KUBERNETES_COMMAND_LINE_TOOL} create namespace ${this.namespace}`);
|
|
77
|
+
}
|
|
78
|
+
getLoggingName(methodName) {
|
|
79
|
+
return `${this.constructor.name}.${methodName} - ${(this.KUBERNETES_COMMAND_LINE_TOOL)}`;
|
|
80
|
+
}
|
|
81
|
+
setNamespace(_namespace) {
|
|
82
|
+
_namespace = _namespace !== undefined ? _namespace
|
|
83
|
+
: TestConstants_1.TestConstants.TS_SELENIUM_BASE_URL.includes('devspaces') ? TestConstants_1.TestConstants.TS_SELENIUM_OCP_USERNAME + '-devspaces'
|
|
84
|
+
: TestConstants_1.TestConstants.TS_SELENIUM_BASE_URL.includes('che') ? TestConstants_1.TestConstants.TS_SELENIUM_OCP_USERNAME + '-che'
|
|
85
|
+
: 'default';
|
|
86
|
+
return _namespace;
|
|
87
|
+
}
|
|
88
|
+
getServerUrl() {
|
|
89
|
+
Logger_1.Logger.debug(`${this.getLoggingName(this.getServerUrl.name)}: Get server api url.`);
|
|
90
|
+
return TestConstants_1.TestConstants.TS_SELENIUM_BASE_URL.replace('devspaces.apps', 'api') + ':6443';
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.KubernetesCommandLineToolsExecutor = KubernetesCommandLineToolsExecutor;
|
|
94
|
+
(function (KubernetesCommandLineToolsExecutor) {
|
|
95
|
+
class ContainerTerminal extends KubernetesCommandLineToolsExecutor {
|
|
96
|
+
constructor(cluster) {
|
|
97
|
+
super(cluster.getWorkspaceName, cluster.getNamespace);
|
|
98
|
+
}
|
|
99
|
+
ls(path = '') {
|
|
100
|
+
return this.executeCommand('ls ' + path);
|
|
101
|
+
}
|
|
102
|
+
pwd() {
|
|
103
|
+
return this.executeCommand('pwd');
|
|
104
|
+
}
|
|
105
|
+
cd(path) {
|
|
106
|
+
return this.executeCommand('cd ' + path);
|
|
107
|
+
}
|
|
108
|
+
gitClone(repository) {
|
|
109
|
+
return this.executeCommand('git clone ' + repository);
|
|
110
|
+
}
|
|
111
|
+
removeFolder(path) {
|
|
112
|
+
return this.executeCommand('rm -rf ' + path);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
KubernetesCommandLineToolsExecutor.ContainerTerminal = ContainerTerminal;
|
|
116
|
+
})(KubernetesCommandLineToolsExecutor = exports.KubernetesCommandLineToolsExecutor || (exports.KubernetesCommandLineToolsExecutor = {}));
|
|
117
|
+
//# sourceMappingURL=KubernetesCommandLineToolsExecutor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KubernetesCommandLineToolsExecutor.js","sourceRoot":"","sources":["../../utils/KubernetesCommandLineToolsExecutor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ShellExecutor = void 0;
|
|
4
|
+
const shelljs_1 = require("shelljs");
|
|
5
|
+
class ShellExecutor {
|
|
6
|
+
execWithLog(command) {
|
|
7
|
+
shelljs_1.echo(command);
|
|
8
|
+
return shelljs_1.exec(command);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.ShellExecutor = ShellExecutor;
|
|
12
|
+
//# sourceMappingURL=ShellExecutor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShellExecutor.js","sourceRoot":"","sources":["../../utils/ShellExecutor.ts"],"names":[],"mappings":";;;AAAA,qCAAkD;AAElD,MAAa,aAAa;IAEZ,WAAW,CAAC,OAAe;QACjC,cAAI,CAAC,OAAO,CAAC,CAAC;QACd,OAAO,cAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;CACJ;AAND,sCAMC"}
|
package/index.ts
CHANGED
|
@@ -7,10 +7,11 @@ export * from './driver/ChromeDriver';
|
|
|
7
7
|
export * from './driver/IDriver';
|
|
8
8
|
export * from './utils/BrowserTabsUtil';
|
|
9
9
|
export * from './utils/DriverHelper';
|
|
10
|
+
export * from './utils/KubernetesCommandLineToolsExecutor';
|
|
10
11
|
export * from './utils/Logger';
|
|
11
|
-
export * from './utils/OpenshiftClientExecutor';
|
|
12
12
|
export * from './utils/Sanitizer';
|
|
13
13
|
export * from './utils/ScreenCatcher';
|
|
14
|
+
export * from './utils/ShellExecutor';
|
|
14
15
|
export * from './utils/request-handlers/CheApiRequestHandler';
|
|
15
16
|
export * from './utils/request-handlers/headers/CheMultiuserAuthorizationHeaderHandler';
|
|
16
17
|
export * from './utils/request-handlers/headers/IAuthorizationHeaderHandler';
|
package/package.json
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { KubernetesCommandLineToolsExecutor } from '../../utils/KubernetesCommandLineToolsExecutor';
|
|
2
2
|
import { expect } from 'chai';
|
|
3
3
|
import { ShellString } from 'shelljs';
|
|
4
4
|
import { GitUtil } from '../../utils/vsc/GitUtil';
|
|
5
5
|
import { TestConstants } from '../../constants/TestConstants';
|
|
6
6
|
|
|
7
|
+
|
|
7
8
|
const gitRepository: string = 'https://github.com/crw-qe/web-nodejs-sample';
|
|
8
9
|
|
|
9
10
|
suite(`Test cloning of repo "${gitRepository}" into empty workspace.`, async function (): Promise<void> {
|
|
10
11
|
// works only for root user
|
|
11
|
-
const namespace: string =
|
|
12
|
+
const namespace: string = TestConstants.TS_API_TEST_NAMESPACE ? TestConstants.TS_API_TEST_NAMESPACE : undefined;
|
|
12
13
|
const workspaceName: string = 'empty-' + Math.floor(Math.random() * 1000);
|
|
13
14
|
const clonedProjectName: string = GitUtil.getProjectNameFromGitUrl(gitRepository);
|
|
14
15
|
let containerWorkDir: string = '';
|
|
15
16
|
|
|
16
|
-
const
|
|
17
|
-
const containerTerminal:
|
|
17
|
+
const kubernetesCommandLineToolsExecutor: KubernetesCommandLineToolsExecutor = new KubernetesCommandLineToolsExecutor(workspaceName, namespace);
|
|
18
|
+
const containerTerminal: KubernetesCommandLineToolsExecutor.ContainerTerminal = new KubernetesCommandLineToolsExecutor.ContainerTerminal(kubernetesCommandLineToolsExecutor);
|
|
18
19
|
|
|
19
20
|
const emptyYaml: string =
|
|
20
21
|
'apiVersion: workspace.devfile.io/v1alpha2\n' +
|
|
@@ -39,12 +40,12 @@ suite(`Test cloning of repo "${gitRepository}" into empty workspace.`, async fun
|
|
|
39
40
|
' value: 0.0.0.0';
|
|
40
41
|
|
|
41
42
|
suiteSetup('Create empty workspace with OC client', function (): void {
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
kubernetesCommandLineToolsExecutor.loginToOcp();
|
|
44
|
+
kubernetesCommandLineToolsExecutor.applyAndWaitDevWorkspace(emptyYaml);
|
|
44
45
|
});
|
|
45
46
|
|
|
46
47
|
suiteTeardown('Delete workspace', function (): void {
|
|
47
|
-
|
|
48
|
+
kubernetesCommandLineToolsExecutor.deleteDevWorkspace();
|
|
48
49
|
});
|
|
49
50
|
|
|
50
51
|
suite('Clone public repo without previous setup', function (): void {
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { echo, exec, ShellString } from 'shelljs';
|
|
2
|
+
import { KubernetesCommandLineTool, TestConstants } from '../constants/TestConstants';
|
|
3
|
+
import { Logger } from './Logger';
|
|
4
|
+
import { ShellExecutor } from './ShellExecutor';
|
|
5
|
+
|
|
6
|
+
export class KubernetesCommandLineToolsExecutor extends ShellExecutor {
|
|
7
|
+
private static container: string;
|
|
8
|
+
private static pod: string;
|
|
9
|
+
private readonly namespace: string;
|
|
10
|
+
private readonly workspaceName: string | undefined;
|
|
11
|
+
private readonly KUBERNETES_COMMAND_LINE_TOOL: string = TestConstants.TS_API_TEST_KUBERNETES_COMMAND_LINE_TOOL;
|
|
12
|
+
|
|
13
|
+
constructor(_workspaceName?: string, _namespace?: string) {
|
|
14
|
+
super();
|
|
15
|
+
this.workspaceName = _workspaceName;
|
|
16
|
+
this.namespace = this.setNamespace(_namespace);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
get getWorkspaceName(): string {
|
|
20
|
+
return <string>this.workspaceName;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
get getNamespace(): string {
|
|
24
|
+
return this.namespace;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// login to Openshift cluster with username and password
|
|
28
|
+
loginToOcp(): void {
|
|
29
|
+
if (this.KUBERNETES_COMMAND_LINE_TOOL === KubernetesCommandLineTool.OC) {
|
|
30
|
+
Logger.debug(`${this.getLoggingName(this.loginToOcp.name)}: Login to the "OC" client`);
|
|
31
|
+
const url: string = this.getServerUrl();
|
|
32
|
+
Logger.debug(url, TestConstants.TS_SELENIUM_OCP_USERNAME);
|
|
33
|
+
exec(`sleep 5
|
|
34
|
+
oc login --server=${url} -u=${TestConstants.TS_SELENIUM_OCP_USERNAME} -p=${TestConstants.TS_SELENIUM_OCP_PASSWORD} --insecure-skip-tls-verify`);
|
|
35
|
+
} else {
|
|
36
|
+
Logger.debug(`${this.getLoggingName(this.loginToOcp.name)}: doesn't support login command`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
getContainerName(): string {
|
|
41
|
+
Logger.debug(`${this.getLoggingName(this.getContainerName.name)}: Get container name.`);
|
|
42
|
+
const output: ShellString = this.execWithLog(`${(this.KUBERNETES_COMMAND_LINE_TOOL)} get ${(KubernetesCommandLineToolsExecutor.pod)} -o jsonpath='{.spec.containers[*].name}' -n ${this.namespace}`);
|
|
43
|
+
echo('\n');
|
|
44
|
+
return output.stderr ? output.stderr : output.stdout;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
getWorkspacePodName(): string {
|
|
48
|
+
Logger.debug(`${this.getLoggingName(this.getWorkspacePodName.name)}: Get workspace pod name.`);
|
|
49
|
+
const output: ShellString = this.execWithLog(`${(this.KUBERNETES_COMMAND_LINE_TOOL)} get pod -l controller.devfile.io/devworkspace_name=${this.workspaceName} -n ${this.namespace} -o name`);
|
|
50
|
+
return output.stderr ? output.stderr : output.stdout.replace('\n', '');
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
deleteDevWorkspace(): void {
|
|
54
|
+
Logger.debug(`${this.getLoggingName(this.deleteDevWorkspace.name)}: Delete '${this.workspaceName}' workspace`);
|
|
55
|
+
this.execWithLog(`${(this.KUBERNETES_COMMAND_LINE_TOOL)} patch dw ${this.workspaceName} -n ${this.namespace} -p '{ "metadata": { "finalizers": null }}' --type merge || true`);
|
|
56
|
+
this.execWithLog(`${(this.KUBERNETES_COMMAND_LINE_TOOL)} delete dw ${this.workspaceName} -n ${this.namespace} || true`);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
applyAndWaitDevWorkspace(yamlConfiguration: string): ShellString {
|
|
60
|
+
if (this.KUBERNETES_COMMAND_LINE_TOOL === KubernetesCommandLineTool.KUBECTL) {
|
|
61
|
+
this.createNamespace();
|
|
62
|
+
}
|
|
63
|
+
this.applyYamlConfigurationAsStringOutput(yamlConfiguration);
|
|
64
|
+
const output: ShellString = this.waitDevWorkspace();
|
|
65
|
+
KubernetesCommandLineToolsExecutor.pod = this.getWorkspacePodName();
|
|
66
|
+
KubernetesCommandLineToolsExecutor.container = this.getContainerName();
|
|
67
|
+
return output;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
executeCommand(commandToExecute: string): ShellString {
|
|
71
|
+
Logger.debug(`${this.getLoggingName(this.executeCommand.name)}:`);
|
|
72
|
+
return this.execWithLog(`${(this.KUBERNETES_COMMAND_LINE_TOOL)} exec -i ${KubernetesCommandLineToolsExecutor.pod} -n ${this.namespace} -c ${KubernetesCommandLineToolsExecutor.container} -- sh -c "${commandToExecute}"`);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
applyYamlConfigurationAsStringOutput(yamlConfiguration: string): void {
|
|
76
|
+
Logger.debug(`${this.getLoggingName(this.applyYamlConfigurationAsStringOutput.name)}:`);
|
|
77
|
+
this.execWithLog(`cat <<EOF | ${this.KUBERNETES_COMMAND_LINE_TOOL} apply -n ${this.namespace} -f - \n` +
|
|
78
|
+
yamlConfiguration + '\n' +
|
|
79
|
+
'EOF');
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
waitDevWorkspace(timeout: number = 360): ShellString {
|
|
83
|
+
Logger.debug(`${this.getLoggingName(this.waitDevWorkspace.name)}: Wait till workspace ready.`);
|
|
84
|
+
return this.execWithLog(`${(this.KUBERNETES_COMMAND_LINE_TOOL)} wait -n ${this.namespace} --for=condition=Ready dw ${this.workspaceName} --timeout=${timeout}s`);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
createNamespace(): void {
|
|
88
|
+
Logger.debug(`${this.getLoggingName(this.createNamespace.name)}: Create namespace "${this.namespace}".`);
|
|
89
|
+
this.execWithLog(`${this.KUBERNETES_COMMAND_LINE_TOOL} create namespace ${this.namespace}`);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
private getLoggingName(methodName: string): string {
|
|
93
|
+
return `${this.constructor.name}.${methodName} - ${(this.KUBERNETES_COMMAND_LINE_TOOL)}`;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
private setNamespace(_namespace: string | undefined): string {
|
|
97
|
+
_namespace = _namespace !== undefined ? _namespace
|
|
98
|
+
: TestConstants.TS_SELENIUM_BASE_URL.includes('devspaces') ? TestConstants.TS_SELENIUM_OCP_USERNAME + '-devspaces'
|
|
99
|
+
: TestConstants.TS_SELENIUM_BASE_URL.includes('che') ? TestConstants.TS_SELENIUM_OCP_USERNAME + '-che'
|
|
100
|
+
: 'default';
|
|
101
|
+
return _namespace;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
private getServerUrl(): string {
|
|
105
|
+
Logger.debug(`${this.getLoggingName(this.getServerUrl.name)}: Get server api url.`);
|
|
106
|
+
return TestConstants.TS_SELENIUM_BASE_URL.replace('devspaces.apps', 'api') + ':6443';
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export namespace KubernetesCommandLineToolsExecutor {
|
|
111
|
+
export class ContainerTerminal extends KubernetesCommandLineToolsExecutor {
|
|
112
|
+
constructor(cluster: KubernetesCommandLineToolsExecutor) {
|
|
113
|
+
super(cluster.getWorkspaceName, cluster.getNamespace);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
ls(path: string = ''): ShellString {
|
|
117
|
+
return this.executeCommand('ls ' + path);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
pwd(): ShellString {
|
|
121
|
+
return this.executeCommand('pwd');
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
cd(path: string): ShellString {
|
|
125
|
+
return this.executeCommand('cd ' + path);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
gitClone(repository: string): ShellString {
|
|
129
|
+
return this.executeCommand('git clone ' + repository);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
removeFolder(path: string): ShellString {
|
|
133
|
+
return this.executeCommand('rm -rf ' + path);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OpenshiftClientExecutor = void 0;
|
|
4
|
-
const shelljs_1 = require("shelljs");
|
|
5
|
-
const TestConstants_1 = require("../constants/TestConstants");
|
|
6
|
-
const Logger_1 = require("./Logger");
|
|
7
|
-
class OpenshiftClientExecutor {
|
|
8
|
-
constructor(_workspaceName, _namespace) {
|
|
9
|
-
this.workspaceName = _workspaceName;
|
|
10
|
-
this.namespace = this.setNamespace(_namespace);
|
|
11
|
-
}
|
|
12
|
-
get getWorkspaceName() {
|
|
13
|
-
return this.workspaceName;
|
|
14
|
-
}
|
|
15
|
-
get getNamespace() {
|
|
16
|
-
return this.namespace;
|
|
17
|
-
}
|
|
18
|
-
loginToOcp() {
|
|
19
|
-
Logger_1.Logger.debug('OpenshiftClientExecutor.loginToOcp: Login to the \'OC\' client');
|
|
20
|
-
const url = this.getServerUrl();
|
|
21
|
-
Logger_1.Logger.debug(url, TestConstants_1.TestConstants.TS_SELENIUM_OCP_USERNAME);
|
|
22
|
-
shelljs_1.exec(`sleep 5
|
|
23
|
-
oc login --server=${url} -u=${TestConstants_1.TestConstants.TS_SELENIUM_OCP_USERNAME} -p=${TestConstants_1.TestConstants.TS_SELENIUM_OCP_PASSWORD} --insecure-skip-tls-verify`);
|
|
24
|
-
}
|
|
25
|
-
getContainerName() {
|
|
26
|
-
Logger_1.Logger.debug(`OpenshiftClientExecutor.getContainerName: Get container name.`);
|
|
27
|
-
const output = this.execWithLog(`oc get ${(OpenshiftClientExecutor.pod)} -o jsonpath='{.spec.containers[*].name}' -n ${this.namespace}`);
|
|
28
|
-
shelljs_1.echo('\n');
|
|
29
|
-
return output.stderr ? output.stderr : output.stdout;
|
|
30
|
-
}
|
|
31
|
-
getWorkspacePodName() {
|
|
32
|
-
Logger_1.Logger.debug('OpenshiftClientExecutor.getWorkspacePodName: Get workspace pod name.');
|
|
33
|
-
const output = this.execWithLog(`oc get pod -l controller.devfile.io/devworkspace_name=${this.workspaceName} -n ${this.namespace} -o name`);
|
|
34
|
-
return output.stderr ? output.stderr : output.stdout.replace('\n', '');
|
|
35
|
-
}
|
|
36
|
-
deleteDevWorkspace() {
|
|
37
|
-
Logger_1.Logger.debug(`OpenshiftClientExecutor.deleteWorkspace: Delete '${this.workspaceName}' workspace`);
|
|
38
|
-
this.execWithLog(`oc patch dw ${this.workspaceName} -n ${this.namespace} -p '{ "metadata": { "finalizers": null }}' --type merge || true`);
|
|
39
|
-
this.execWithLog(`oc delete dw ${this.workspaceName} -n ${this.namespace} || true`);
|
|
40
|
-
}
|
|
41
|
-
applyAndWaitDevWorkspace(yamlConfiguration) {
|
|
42
|
-
this.apply(yamlConfiguration);
|
|
43
|
-
const output = this.waitDevWorkspace();
|
|
44
|
-
OpenshiftClientExecutor.pod = this.getWorkspacePodName();
|
|
45
|
-
OpenshiftClientExecutor.container = this.getContainerName();
|
|
46
|
-
return output;
|
|
47
|
-
}
|
|
48
|
-
executeCommand(commandToExecute) {
|
|
49
|
-
Logger_1.Logger.debug('OpenshiftClientExecutor.executeCommand');
|
|
50
|
-
return this.execWithLog(`oc exec -i ${OpenshiftClientExecutor.pod} -n ${this.namespace} -c ${OpenshiftClientExecutor.container} -- sh -c "${commandToExecute}"`);
|
|
51
|
-
}
|
|
52
|
-
apply(yamlConfiguration) {
|
|
53
|
-
Logger_1.Logger.debug('OpenshiftClientExecutor.apply:');
|
|
54
|
-
this.execWithLog('cat <<EOF | oc apply -n ' + this.namespace + ' -f - \n' +
|
|
55
|
-
yamlConfiguration + '\n' +
|
|
56
|
-
'EOF');
|
|
57
|
-
}
|
|
58
|
-
waitDevWorkspace(timeout = 360) {
|
|
59
|
-
Logger_1.Logger.debug('OpenshiftClientExecutor.wait: Wait till workspace ready.');
|
|
60
|
-
return this.execWithLog(`oc wait -n ${this.namespace} --for=condition=Ready dw ${this.workspaceName} --timeout=${timeout}s`);
|
|
61
|
-
}
|
|
62
|
-
setNamespace(_namespace) {
|
|
63
|
-
return _namespace !== undefined ? _namespace : TestConstants_1.TestConstants.TS_SELENIUM_OCP_USERNAME + '-devspaces';
|
|
64
|
-
}
|
|
65
|
-
getServerUrl() {
|
|
66
|
-
Logger_1.Logger.debug('OpenshiftClientExecutor.getServerUrl: Get server api url.');
|
|
67
|
-
return TestConstants_1.TestConstants.TS_SELENIUM_BASE_URL.replace('devspaces.apps', 'api') + ':6443';
|
|
68
|
-
}
|
|
69
|
-
execWithLog(command) {
|
|
70
|
-
shelljs_1.echo(command);
|
|
71
|
-
return shelljs_1.exec(command);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
exports.OpenshiftClientExecutor = OpenshiftClientExecutor;
|
|
75
|
-
(function (OpenshiftClientExecutor) {
|
|
76
|
-
class ContainerTerminal extends OpenshiftClientExecutor {
|
|
77
|
-
constructor(cluster) {
|
|
78
|
-
super(cluster.getWorkspaceName, cluster.getNamespace);
|
|
79
|
-
}
|
|
80
|
-
ls(path = '') {
|
|
81
|
-
return this.executeCommand('ls ' + path);
|
|
82
|
-
}
|
|
83
|
-
pwd() {
|
|
84
|
-
return this.executeCommand('pwd');
|
|
85
|
-
}
|
|
86
|
-
cd(path) {
|
|
87
|
-
return this.executeCommand('cd ' + path);
|
|
88
|
-
}
|
|
89
|
-
gitClone(repository) {
|
|
90
|
-
return this.executeCommand('git clone ' + repository);
|
|
91
|
-
}
|
|
92
|
-
removeFolder(path) {
|
|
93
|
-
return this.executeCommand('rm -rf ' + path);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
OpenshiftClientExecutor.ContainerTerminal = ContainerTerminal;
|
|
97
|
-
})(OpenshiftClientExecutor = exports.OpenshiftClientExecutor || (exports.OpenshiftClientExecutor = {}));
|
|
98
|
-
//# sourceMappingURL=OpenshiftClientExecutor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OpenshiftClientExecutor.js","sourceRoot":"","sources":["../../utils/OpenshiftClientExecutor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { echo, exec, ShellString } from 'shelljs';
|
|
2
|
-
import { TestConstants } from '../constants/TestConstants';
|
|
3
|
-
import { Logger } from './Logger';
|
|
4
|
-
|
|
5
|
-
export class OpenshiftClientExecutor {
|
|
6
|
-
protected static container: string;
|
|
7
|
-
protected static pod: string | undefined;
|
|
8
|
-
protected workspaceName: string | undefined;
|
|
9
|
-
protected namespace: string;
|
|
10
|
-
|
|
11
|
-
constructor(_workspaceName?: string, _namespace?: string) {
|
|
12
|
-
this.workspaceName = _workspaceName;
|
|
13
|
-
this.namespace = this.setNamespace(_namespace);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
get getWorkspaceName(): string {
|
|
17
|
-
return <string>this.workspaceName;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
get getNamespace(): string {
|
|
21
|
-
return this.namespace;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
loginToOcp(): void {
|
|
25
|
-
Logger.debug('OpenshiftClientExecutor.loginToOcp: Login to the \'OC\' client');
|
|
26
|
-
const url: string = this.getServerUrl();
|
|
27
|
-
Logger.debug(url, TestConstants.TS_SELENIUM_OCP_USERNAME);
|
|
28
|
-
exec(`sleep 5
|
|
29
|
-
oc login --server=${url} -u=${TestConstants.TS_SELENIUM_OCP_USERNAME} -p=${TestConstants.TS_SELENIUM_OCP_PASSWORD} --insecure-skip-tls-verify`);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
getContainerName(): string {
|
|
33
|
-
Logger.debug(`OpenshiftClientExecutor.getContainerName: Get container name.`);
|
|
34
|
-
const output: ShellString = this.execWithLog(`oc get ${(OpenshiftClientExecutor.pod)} -o jsonpath='{.spec.containers[*].name}' -n ${this.namespace}`);
|
|
35
|
-
echo('\n');
|
|
36
|
-
return output.stderr ? output.stderr : output.stdout;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
getWorkspacePodName(): string {
|
|
40
|
-
Logger.debug('OpenshiftClientExecutor.getWorkspacePodName: Get workspace pod name.');
|
|
41
|
-
const output: ShellString = this.execWithLog(`oc get pod -l controller.devfile.io/devworkspace_name=${this.workspaceName} -n ${this.namespace} -o name`);
|
|
42
|
-
return output.stderr ? output.stderr : output.stdout.replace('\n', '');
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
deleteDevWorkspace(): void {
|
|
46
|
-
Logger.debug(`OpenshiftClientExecutor.deleteWorkspace: Delete '${this.workspaceName}' workspace`);
|
|
47
|
-
this.execWithLog(`oc patch dw ${this.workspaceName} -n ${this.namespace} -p '{ "metadata": { "finalizers": null }}' --type merge || true`);
|
|
48
|
-
this.execWithLog(`oc delete dw ${this.workspaceName} -n ${this.namespace} || true`);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
applyAndWaitDevWorkspace(yamlConfiguration: string): ShellString {
|
|
52
|
-
this.apply(yamlConfiguration);
|
|
53
|
-
const output: ShellString = this.waitDevWorkspace();
|
|
54
|
-
OpenshiftClientExecutor.pod = this.getWorkspacePodName();
|
|
55
|
-
OpenshiftClientExecutor.container = this.getContainerName();
|
|
56
|
-
return output;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
executeCommand(commandToExecute: string): ShellString {
|
|
60
|
-
Logger.debug('OpenshiftClientExecutor.executeCommand');
|
|
61
|
-
return this.execWithLog(`oc exec -i ${OpenshiftClientExecutor.pod} -n ${this.namespace} -c ${OpenshiftClientExecutor.container} -- sh -c "${commandToExecute}"`);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
apply(yamlConfiguration: string): void {
|
|
65
|
-
Logger.debug('OpenshiftClientExecutor.apply:');
|
|
66
|
-
this.execWithLog('cat <<EOF | oc apply -n ' + this.namespace + ' -f - \n' +
|
|
67
|
-
yamlConfiguration + '\n' +
|
|
68
|
-
'EOF');
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
waitDevWorkspace(timeout: number = 360): ShellString {
|
|
72
|
-
Logger.debug('OpenshiftClientExecutor.wait: Wait till workspace ready.');
|
|
73
|
-
return this.execWithLog(`oc wait -n ${this.namespace} --for=condition=Ready dw ${this.workspaceName} --timeout=${timeout}s`);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
private setNamespace(_namespace: string | undefined): string {
|
|
77
|
-
return _namespace !== undefined ? _namespace : TestConstants.TS_SELENIUM_OCP_USERNAME + '-devspaces';
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
private getServerUrl(): string {
|
|
81
|
-
Logger.debug('OpenshiftClientExecutor.getServerUrl: Get server api url.');
|
|
82
|
-
return TestConstants.TS_SELENIUM_BASE_URL.replace('devspaces.apps', 'api') + ':6443';
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
private execWithLog(command: string): ShellString {
|
|
86
|
-
echo(command);
|
|
87
|
-
return exec(command);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
export namespace OpenshiftClientExecutor {
|
|
92
|
-
export class ContainerTerminal extends OpenshiftClientExecutor {
|
|
93
|
-
constructor(cluster: OpenshiftClientExecutor) {
|
|
94
|
-
super(cluster.getWorkspaceName, cluster.getNamespace);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
ls(path: string = ''): ShellString {
|
|
98
|
-
return this.executeCommand('ls ' + path);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
pwd(): ShellString {
|
|
102
|
-
return this.executeCommand('pwd');
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
cd(path: string): ShellString {
|
|
106
|
-
return this.executeCommand('cd ' + path);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
gitClone(repository: string): ShellString {
|
|
110
|
-
return this.executeCommand('git clone ' + repository);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
removeFolder(path: string): ShellString {
|
|
114
|
-
return this.executeCommand('rm -rf ' + path);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|