k6ctl 1.1.0 → 1.2.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/cli.js +7 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/delete.d.ts +3 -0
- package/dist/commands/delete.d.ts.map +1 -1
- package/dist/commands/delete.js +18 -3
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/list.js +6 -6
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/run.d.ts +1 -0
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +54 -0
- package/dist/commands/run.js.map +1 -1
- package/dist/services/kubernetes.service.d.ts +4 -3
- package/dist/services/kubernetes.service.d.ts.map +1 -1
- package/dist/services/kubernetes.service.js +13 -4
- package/dist/services/kubernetes.service.js.map +1 -1
- package/dist/types/testRunManifest.types.d.ts +2 -4
- package/dist/types/testRunManifest.types.d.ts.map +1 -1
- package/dist/utils/testRunManifestBuilder.d.ts +12 -0
- package/dist/utils/testRunManifestBuilder.d.ts.map +1 -1
- package/dist/utils/testRunManifestBuilder.js +36 -14
- package/dist/utils/testRunManifestBuilder.js.map +1 -1
- package/package.json +1 -1
- package/src/cli.ts +7 -3
- package/src/commands/delete.ts +26 -5
- package/src/commands/list.ts +7 -7
- package/src/commands/run.ts +58 -0
- package/src/services/kubernetes.service.ts +21 -12
- package/src/types/testRunManifest.types.ts +3 -4
- package/src/utils/testRunManifestBuilder.ts +41 -17
- package/test/integration/kubernetes.service.test.ts +2 -4
- package/test/unit/kubernetes.service.test.ts +3 -0
package/dist/cli.js
CHANGED
|
@@ -14,12 +14,13 @@ program
|
|
|
14
14
|
.description('CLI tool to run k6 tests on Kubernetes using k6-operator')
|
|
15
15
|
.version(package_json_1.version);
|
|
16
16
|
program
|
|
17
|
-
.command('run
|
|
18
|
-
.description('Run a k6 test script')
|
|
19
|
-
.option('-c, --config <path>', 'Path to config file', 'k6ctl.config.
|
|
17
|
+
.command('run [script]')
|
|
18
|
+
.description('Run a k6 test script (omit to select interactively from ${pwd}/dist/tests)')
|
|
19
|
+
.option('-c, --config <path>', 'Path to config file', 'k6ctl.config.json')
|
|
20
20
|
.option('-n, --namespace <namespace>', 'Kubernetes namespace')
|
|
21
21
|
.option('-p, --parallelism <number>', 'Number of parallel test pods')
|
|
22
22
|
.option('-v, --verbose', 'enable debug logging')
|
|
23
|
+
.option('-d, --dir <path>', 'Folder to search for .js test files', 'dist/tests')
|
|
23
24
|
.action(run_1.runTest);
|
|
24
25
|
program
|
|
25
26
|
.command('list')
|
|
@@ -43,6 +44,9 @@ program
|
|
|
43
44
|
.description('Delete the last test run (TestRun + ConfigMap)')
|
|
44
45
|
.option('-n, --namespace <namespace>', 'Kubernetes namespace (overrides saved value)')
|
|
45
46
|
.option('--keep-configmap', 'Skip deletion of the associated ConfigMap')
|
|
47
|
+
.option('-p, --pod <name>', 'Delete a specific pod instead of those associated with the last TestRun')
|
|
48
|
+
.option('-t, --testrun <name>', 'Delete a specific TestRun by name instead of the last one')
|
|
49
|
+
.option('-c, --configmap <name>', 'Delete a specific ConfigMap by name instead of the one associated with the last TestRun')
|
|
46
50
|
.action(delete_1.deleteLastRun);
|
|
47
51
|
program.parse();
|
|
48
52
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAA8C;AAC9C,wCAAyC;AACzC,0CAAuC;AACvC,0CAAuC;AACvC,8CAA2C;AAC3C,8CAAkD;AAClD,kDAA0C;AAE1C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,0DAA0D,CAAC;KACvE,OAAO,CAAC,sBAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAA8C;AAC9C,wCAAyC;AACzC,0CAAuC;AACvC,0CAAuC;AACvC,8CAA2C;AAC3C,8CAAkD;AAClD,kDAA0C;AAE1C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,0DAA0D,CAAC;KACvE,OAAO,CAAC,sBAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,4EAA4E,CAAC;KACzF,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,mBAAmB,CAAC;KACzE,MAAM,CAAC,6BAA6B,EAAE,sBAAsB,CAAC;KAC7D,MAAM,CAAC,4BAA4B,EAAE,8BAA8B,CAAC;KACpE,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,kBAAkB,EAAE,qCAAqC,EAAE,YAAY,CAAC;KAC/E,MAAM,CAAC,aAAO,CAAC,CAAC;AAEnB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,oBAAoB,CAAC;KACjC,WAAW,CAAC,IAAI,oBAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAC/G,MAAM,CAAC,6BAA6B,EAAE,sBAAsB,EAAE,SAAS,CAAC;KACxE,MAAM,CAAC,WAAI,CAAC,CAAC;AAEhB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,6BAA6B,EAAE,8CAA8C,CAAC;KACrF,MAAM,CAAC,wBAAwB,EAAE,mCAAmC,CAAC;KACrE,MAAM,CAAC,WAAI,CAAC,CAAC;AAEhB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,6BAA6B,EAAE,8CAA8C,CAAC;KACrF,MAAM,CAAC,eAAM,CAAC,CAAC;AAElB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,6BAA6B,EAAE,8CAA8C,CAAC;KACrF,MAAM,CAAC,kBAAkB,EAAE,2CAA2C,CAAC;KACvE,MAAM,CAAC,kBAAkB,EAAE,yEAAyE,CAAC;KACrG,MAAM,CAAC,sBAAsB,EAAE,2DAA2D,CAAC;KAC3F,MAAM,CAAC,wBAAwB,EAAE,yFAAyF,CAAC;KAC3H,MAAM,CAAC,sBAAa,CAAC,CAAC;AAEzB,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"AAIA,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"AAIA,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,iBAuCzD"}
|
package/dist/commands/delete.js
CHANGED
|
@@ -8,14 +8,29 @@ const kubernetes_service_1 = require("../services/kubernetes.service");
|
|
|
8
8
|
const lastRunStore_1 = require("../utils/lastRunStore");
|
|
9
9
|
const logger_1 = __importDefault(require("../utils/logger"));
|
|
10
10
|
async function deleteLastRun(options) {
|
|
11
|
-
const
|
|
11
|
+
const kubernetesService = (0, kubernetes_service_1.createDefaultKubernetesService)();
|
|
12
|
+
const lastRun = !options.namespace ? await (0, lastRunStore_1.loadLastRun)() : null;
|
|
13
|
+
const namespace = options.namespace ?? lastRun?.namespace ?? 'default';
|
|
14
|
+
if (options.pod) {
|
|
15
|
+
logger_1.default.info(`Deleting Pod: ${options.pod} (namespace: ${namespace})`);
|
|
16
|
+
await kubernetesService.deletePodByName(options.pod, namespace);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (options.testrun) {
|
|
20
|
+
logger_1.default.info(`Deleting TestRun: ${options.testrun} (namespace: ${namespace})`);
|
|
21
|
+
await kubernetesService.deleteTestRunByName(options.testrun, namespace);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (options.configmap) {
|
|
25
|
+
logger_1.default.info(`Deleting ConfigMap: ${options.configmap} (namespace: ${namespace})`);
|
|
26
|
+
await kubernetesService.deleteConfigMap(options.configmap, namespace);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
12
29
|
if (!lastRun) {
|
|
13
30
|
logger_1.default.error('No last run found. Run a test first with: k6ctl run <script>');
|
|
14
31
|
process.exit(1);
|
|
15
32
|
}
|
|
16
|
-
const namespace = options.namespace ?? lastRun.namespace;
|
|
17
33
|
logger_1.default.info(`Deleting TestRun: ${lastRun.testRunName} (namespace: ${namespace})`);
|
|
18
|
-
const kubernetesService = (0, kubernetes_service_1.createDefaultKubernetesService)();
|
|
19
34
|
await kubernetesService.deleteTestRunByName(lastRun.testRunName, namespace);
|
|
20
35
|
if (!options.keepConfigmap) {
|
|
21
36
|
logger_1.default.info(`Deleting ConfigMap: ${lastRun.configMapName} (namespace: ${namespace})`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":";;;;;AAYA,sCAuCC;AAnDD,uEAAgF;AAChF,wDAAkE;AAClE,6DAAqC;AAU9B,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,MAAM,iBAAiB,GAAG,IAAA,mDAA8B,GAAE,CAAC;IAE3D,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAA,0BAAW,GAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAChE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,EAAE,SAAS,IAAI,SAAS,CAAC;IAEvE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,gBAAM,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,GAAG,gBAAgB,SAAS,GAAG,CAAC,CAAC;QACtE,MAAM,iBAAiB,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,gBAAM,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,OAAO,gBAAgB,SAAS,GAAG,CAAC,CAAC;QAC9E,MAAM,iBAAiB,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,gBAAM,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,SAAS,gBAAgB,SAAS,GAAG,CAAC,CAAC;QAClF,MAAM,iBAAiB,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,gBAAM,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,gBAAM,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,WAAW,gBAAgB,SAAS,GAAG,CAAC,CAAC;IAClF,MAAM,iBAAiB,CAAC,mBAAmB,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAE5E,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3B,gBAAM,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,aAAa,gBAAgB,SAAS,GAAG,CAAC,CAAC;QACtF,MAAM,iBAAiB,CAAC,eAAe,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,IAAA,2BAAY,GAAE,CAAC;IACrB,gBAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACzC,CAAC"}
|
package/dist/commands/list.js
CHANGED
|
@@ -11,21 +11,21 @@ async function list(type, options) {
|
|
|
11
11
|
switch (type) {
|
|
12
12
|
case 'all':
|
|
13
13
|
logger_1.default.debug(`Listing all resources in namespace: ${options.namespace}`);
|
|
14
|
-
await kubernetesService.listTestRuns(options.namespace);
|
|
15
|
-
await kubernetesService.listPods(options.namespace);
|
|
16
|
-
await kubernetesService.listConfigMaps(options.namespace);
|
|
14
|
+
(0, kubernetes_service_1.printTestRunsTable)(await kubernetesService.listTestRuns(options.namespace));
|
|
15
|
+
(0, kubernetes_service_1.printPodsTable)(await kubernetesService.listPods(options.namespace));
|
|
16
|
+
(0, kubernetes_service_1.printConfigMapsTable)(await kubernetesService.listConfigMaps(options.namespace));
|
|
17
17
|
break;
|
|
18
18
|
case 'pods':
|
|
19
19
|
logger_1.default.debug(`Listing Pods in namespace: ${options.namespace}`);
|
|
20
|
-
await kubernetesService.listPods(options.namespace);
|
|
20
|
+
(0, kubernetes_service_1.printPodsTable)(await kubernetesService.listPods(options.namespace));
|
|
21
21
|
break;
|
|
22
22
|
case 'testruns':
|
|
23
23
|
logger_1.default.debug(`Listing TestRuns in namespace: ${options.namespace}`);
|
|
24
|
-
await kubernetesService.listTestRuns(options.namespace);
|
|
24
|
+
(0, kubernetes_service_1.printTestRunsTable)(await kubernetesService.listTestRuns(options.namespace));
|
|
25
25
|
break;
|
|
26
26
|
case 'configmaps':
|
|
27
27
|
logger_1.default.debug(`Listing ConfigMaps in namespace: ${options.namespace}`);
|
|
28
|
-
await kubernetesService.listConfigMaps(options.namespace);
|
|
28
|
+
(0, kubernetes_service_1.printConfigMapsTable)(await kubernetesService.listConfigMaps(options.namespace));
|
|
29
29
|
break;
|
|
30
30
|
default:
|
|
31
31
|
logger_1.default.debug(`Listing ${type} in namespace: ${options.namespace}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":";;;;;AAGA,oBAyBC;AA5BD,6DAAsD;AACtD,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":";;;;;AAGA,oBAyBC;AA5BD,6DAAsD;AACtD,uEAA0I;AAEnI,KAAK,UAAU,IAAI,CAAC,IAAY,EAAE,OAA+B;IACtE,MAAM,iBAAiB,GAAG,IAAA,mDAA8B,GAAE,CAAC;IAC3D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,gBAAM,CAAC,KAAK,CAAC,uCAAuC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YACzE,IAAA,uCAAkB,EAAC,MAAM,iBAAiB,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YAC5E,IAAA,mCAAc,EAAC,MAAM,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YACpE,IAAA,yCAAoB,EAAC,MAAM,iBAAiB,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YAChF,MAAM;QACR,KAAK,MAAM;YACT,gBAAM,CAAC,KAAK,CAAC,8BAA8B,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YAChE,IAAA,mCAAc,EAAC,MAAM,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YACpE,MAAM;QACR,KAAK,UAAU;YACb,gBAAM,CAAC,KAAK,CAAC,kCAAkC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YACpE,IAAA,uCAAkB,EAAC,MAAM,iBAAiB,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YAC5E,MAAM;QACR,KAAK,YAAY;YACf,gBAAM,CAAC,KAAK,CAAC,oCAAoC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YACtE,IAAA,yCAAoB,EAAC,MAAM,iBAAiB,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YAChF,MAAM;QACR;YACE,gBAAM,CAAC,KAAK,CAAC,WAAW,IAAI,kBAAkB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YACnE,MAAM;IACV,CAAC;AACH,CAAC"}
|
package/dist/commands/run.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAkDA,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,iBA8DpE"}
|
package/dist/commands/run.js
CHANGED
|
@@ -34,6 +34,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.runTest = runTest;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const readline = __importStar(require("readline"));
|
|
37
40
|
const kubernetes_service_1 = require("../services/kubernetes.service");
|
|
38
41
|
const script_service_1 = require("../services/script.service");
|
|
39
42
|
const configLoader_1 = require("../utils/configLoader");
|
|
@@ -41,9 +44,60 @@ const env_1 = require("../utils/env");
|
|
|
41
44
|
const logger_1 = __importStar(require("../utils/logger"));
|
|
42
45
|
const testRunManifestBuilder_1 = require("../utils/testRunManifestBuilder");
|
|
43
46
|
const lastRunStore_1 = require("../utils/lastRunStore");
|
|
47
|
+
function listTestFiles(dir) {
|
|
48
|
+
if (!fs.existsSync(dir)) {
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
51
|
+
const results = [];
|
|
52
|
+
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
53
|
+
const fullPath = path.join(dir, entry.name);
|
|
54
|
+
if (entry.isDirectory()) {
|
|
55
|
+
results.push(...listTestFiles(fullPath));
|
|
56
|
+
}
|
|
57
|
+
else if (entry.isFile() && entry.name.endsWith('.js')) {
|
|
58
|
+
results.push(fullPath);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return results;
|
|
62
|
+
}
|
|
63
|
+
function promptSelection(files, dir) {
|
|
64
|
+
return new Promise((resolve, reject) => {
|
|
65
|
+
console.log('\nAvailable test scripts:');
|
|
66
|
+
files.forEach((file, i) => {
|
|
67
|
+
const relative = path.relative(dir, file);
|
|
68
|
+
console.log(` [${String(i + 1).padStart(2)}] ${relative}`);
|
|
69
|
+
});
|
|
70
|
+
console.log('');
|
|
71
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
72
|
+
rl.question(`Select a test (1-${files.length}): `, answer => {
|
|
73
|
+
rl.close();
|
|
74
|
+
const index = parseInt(answer.trim(), 10) - 1;
|
|
75
|
+
if (isNaN(index) || index < 0 || index >= files.length) {
|
|
76
|
+
reject(new Error(`Invalid selection: "${answer}"`));
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
resolve(files[index]);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
}
|
|
44
84
|
async function runTest(scriptPath, options) {
|
|
45
85
|
if (options.verbose)
|
|
46
86
|
(0, logger_1.setLogLevel)('debug');
|
|
87
|
+
if (!scriptPath) {
|
|
88
|
+
const files = listTestFiles(options.dir);
|
|
89
|
+
if (files.length === 0) {
|
|
90
|
+
logger_1.default.error(`No .js test files found in ${options.dir}`);
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
scriptPath = await promptSelection(files, options.dir);
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
logger_1.default.error(error instanceof Error ? error.message : String(error));
|
|
98
|
+
process.exit(1);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
47
101
|
logger_1.default.debug(`Running k6 test: ${scriptPath}`);
|
|
48
102
|
logger_1.default.debug(`Using config: ${JSON.stringify(options.config, null, 2)}`);
|
|
49
103
|
try {
|
package/dist/commands/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,11 +10,12 @@ export declare class KubernetesService {
|
|
|
10
10
|
createTestRun(testRunManifest: TestRunManifest): Promise<any>;
|
|
11
11
|
deleteTestRun(testRunManifest: TestRunManifest): Promise<void>;
|
|
12
12
|
listTestRuns(namespace?: string): Promise<any>;
|
|
13
|
-
listPods(namespace?: string): Promise<
|
|
14
|
-
listConfigMaps(namespace?: string): Promise<
|
|
13
|
+
listPods(namespace?: string): Promise<k8s.V1PodList>;
|
|
14
|
+
listConfigMaps(namespace?: string): Promise<k8s.V1ConfigMapList>;
|
|
15
15
|
private getTestRunCustomObjectParams;
|
|
16
16
|
deleteTestRunByName(testRunName: string, namespace?: string): Promise<void>;
|
|
17
|
-
|
|
17
|
+
deletePodByName(podName: string, namespace?: string): Promise<void>;
|
|
18
|
+
getTestRun(testRunName: string, namespace?: string): Promise<TestRunManifest>;
|
|
18
19
|
getPodsForTestRun(testRunName: string, namespace?: string): Promise<k8s.V1PodList>;
|
|
19
20
|
getPodLogs(podName: string, namespace?: string, container?: string): Promise<string>;
|
|
20
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kubernetes.service.d.ts","sourceRoot":"","sources":["../../src/services/kubernetes.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,yBAAyB,CAAC;AAE/C,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"kubernetes.service.d.ts","sourceRoot":"","sources":["../../src/services/kubernetes.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,yBAAyB,CAAC;AAE/C,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGjE,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAiB,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAApD,MAAM,EAAE,GAAG,CAAC,SAAS,EAAmB,YAAY,EAAE,GAAG,CAAC,gBAAgB;IAEjG,eAAe,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAmCvF,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxE,aAAa,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;IAkB7D,aAAa,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,YAAY,CAAC,SAAS,GAAE,MAAkB,GAAG,OAAO,CAAC,GAAG,CAAC;IAezD,QAAQ,CAAC,SAAS,GAAE,MAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IAU/D,cAAc,CAAC,SAAS,GAAE,MAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAWjF,OAAO,CAAC,4BAA4B;IAU9B,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,GAAE,MAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtF,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,MAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9E,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,GAAE,MAAkB,GAAG,OAAO,CAAC,eAAe,CAAC;IAUxF,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,GAAE,MAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IAa7F,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,MAAkB,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAatG;AA2BD,wBAAgB,8BAA8B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAOlF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,GAAG,IAAI,CAmCxD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,eAAe,GAAG,IAAI,CAgBpE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAI,CAiBpE"}
|
|
@@ -46,7 +46,6 @@ const node_path_1 = require("node:path");
|
|
|
46
46
|
const k8s = __importStar(require("@kubernetes/client-node"));
|
|
47
47
|
const logger_1 = __importDefault(require("../utils/logger"));
|
|
48
48
|
const table_util_1 = require("../utils/table.util");
|
|
49
|
-
const promises_1 = require("node:fs/promises");
|
|
50
49
|
class KubernetesService {
|
|
51
50
|
k8sApi;
|
|
52
51
|
k8sCustomApi;
|
|
@@ -80,7 +79,7 @@ class KubernetesService {
|
|
|
80
79
|
await this.k8sApi.createNamespacedConfigMap({ namespace, body: configMap });
|
|
81
80
|
logger_1.default.info(`ConfigMap ${configMapName} created in namespace ${namespace}`);
|
|
82
81
|
// Clean up the archive file after creating the ConfigMap
|
|
83
|
-
await
|
|
82
|
+
await fs_1.promises.unlink(archiveFile.archivePath).catch(error => console.error(`Error deleting file ${archiveFile.archivePath}:`, error));
|
|
84
83
|
return { namespace, configMapName };
|
|
85
84
|
}
|
|
86
85
|
async deleteConfigMap(configMapName, namespace) {
|
|
@@ -122,7 +121,7 @@ class KubernetesService {
|
|
|
122
121
|
namespace: namespace,
|
|
123
122
|
plural: "testruns",
|
|
124
123
|
});
|
|
125
|
-
return response;
|
|
124
|
+
return response.items;
|
|
126
125
|
}
|
|
127
126
|
catch (error) {
|
|
128
127
|
const errorMessage = error.message ?? 'Unknown error';
|
|
@@ -142,6 +141,7 @@ class KubernetesService {
|
|
|
142
141
|
async listConfigMaps(namespace = "default") {
|
|
143
142
|
try {
|
|
144
143
|
const response = await this.k8sApi.listNamespacedConfigMap({ namespace });
|
|
144
|
+
response.items = response.items?.filter(cm => cm.metadata?.name?.startsWith('archive-'));
|
|
145
145
|
return response;
|
|
146
146
|
}
|
|
147
147
|
catch (error) {
|
|
@@ -168,6 +168,16 @@ class KubernetesService {
|
|
|
168
168
|
throw new Error(`Failed to delete TestRun ${testRunName} from namespace ${namespace}: ${errorMessage}`);
|
|
169
169
|
}
|
|
170
170
|
}
|
|
171
|
+
async deletePodByName(podName, namespace = "default") {
|
|
172
|
+
try {
|
|
173
|
+
await this.k8sApi.deleteNamespacedPod({ name: podName, namespace });
|
|
174
|
+
logger_1.default.info(`Pod ${podName} deleted from namespace ${namespace}`);
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
const errorMessage = error.message ?? 'Unknown error';
|
|
178
|
+
throw new Error(`Failed to delete Pod ${podName} from namespace ${namespace}: ${errorMessage}`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
171
181
|
async getTestRun(testRunName, namespace = "default") {
|
|
172
182
|
try {
|
|
173
183
|
const response = await this.k8sCustomApi.getNamespacedCustomObject(this.getTestRunCustomObjectParams(testRunName, namespace));
|
|
@@ -309,7 +319,6 @@ function printTestRunsTable(testRuns) {
|
|
|
309
319
|
const separate = tr.spec?.separate ?? "N/A";
|
|
310
320
|
const quiet = tr.spec?.quiet ?? "N/A";
|
|
311
321
|
const age = tr?.metadata?.creationTimestamp ?? "N/A";
|
|
312
|
-
// const age = ageSince((tr as any)?.metadata?.creationTimestamp) || "N/A";
|
|
313
322
|
return [[name, namespace, parallelism, cleanup, separate, quiet, age]];
|
|
314
323
|
}
|
|
315
324
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kubernetes.service.js","sourceRoot":"","sources":["../../src/services/kubernetes.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqMA,wEAOC;AAED,wCAmCC;AAED,oDAgBC;AAED,gDAkBC;AAvRD,2BAAyD;AACzD,yCAAkC;AAClC,6DAA+C;AAC/C,6DAAqC;AAGrC,oDAAwD;AACxD,+CAA0C;AAE1C,MAAa,iBAAiB;IACC;IAAwC;IAArE,YAA6B,MAAqB,EAAmB,YAAkC;QAA1E,WAAM,GAAN,MAAM,CAAe;QAAmB,iBAAY,GAAZ,YAAY,CAAsB;IAAI,CAAC;IAE5G,KAAK,CAAC,eAAe,CAAC,WAAyB,EAAE,SAAiB;QAChE,mCAAmC;QACnC,IAAI,CAAC,IAAA,eAAU,EAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,mCAAmC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,sEAAsE;QACtE,MAAM,KAAK,GAAG,MAAM,aAAW,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,gEAAgE,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC;QACvG,CAAC;QAED,MAAM,aAAa,GAAG,IAAA,iBAAK,EAAC,WAAW,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC;QAC9D,MAAM,WAAW,GAAG,MAAM,aAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAElF,MAAM,SAAS,GAAoB;YACjC,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE;gBACR,IAAI,EAAE,aAAa;gBACnB,SAAS,EAAE,SAAS;aACrB;YACD,UAAU,EAAE;gBACV,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,WAAW;aAC3C;SACF,CAAC;QAEF,MAAM,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5E,gBAAM,CAAC,IAAI,CAAC,aAAa,aAAa,yBAAyB,SAAS,EAAE,CAAC,CAAC;QAE5E,yDAAyD;QACzD,MAAM,IAAA,iBAAM,EAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,uBAAuB,WAAW,CAAC,WAAW,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9H,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,aAAqB,EAAE,SAAiB;QAC5D,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC;YAChF,gBAAM,CAAC,IAAI,CAAC,aAAa,aAAa,2BAA2B,SAAS,EAAE,CAAC,CAAC;QAChF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAI,KAAe,CAAC,OAAO,IAAI,eAAe,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,8BAA8B,aAAa,mBAAmB,SAAS,KAAK,YAAY,EAAE,CAAC,CAAC;QAC9G,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,eAAgC;QAClD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,4BAA4B,CAAC;gBACpE,KAAK,EAAE,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC/C,OAAO,EAAE,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjD,SAAS,EAAE,eAAe,CAAC,QAAQ,CAAC,SAAS;gBAC7C,MAAM,EAAE,UAAU;gBAClB,IAAI,EAAE,eAAe;aACtB,CAAC,CAAC;YACH,gBAAM,CAAC,IAAI,CAAC,WAAW,eAAe,CAAC,QAAQ,CAAC,IAAI,yBAAyB,eAAe,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;YACnH,gBAAM,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC7D,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAI,KAAe,CAAC,OAAO,IAAI,eAAe,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,4BAA4B,eAAe,CAAC,QAAQ,CAAC,IAAI,iBAAiB,eAAe,CAAC,QAAQ,CAAC,SAAS,KAAK,YAAY,EAAE,CAAC,CAAC;QACnJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,eAAgC;QAClD,MAAM,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACpG,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,YAAoB,SAAS;QAC9C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,0BAA0B,CAAC;gBAClE,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,UAAU;gBACnB,SAAS,EAAE,SAAS;gBACpB,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAI,KAAe,CAAC,OAAO,IAAI,eAAe,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,wCAAwC,SAAS,KAAK,YAAY,EAAE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,YAAoB,SAAS;QAC1C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;YACpE,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAI,KAAe,CAAC,OAAO,IAAI,eAAe,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,oCAAoC,SAAS,KAAK,YAAY,EAAE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,YAAoB,SAAS;QAChD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;YAC1E,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAI,KAAe,CAAC,OAAO,IAAI,eAAe,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,0CAA0C,SAAS,KAAK,YAAY,EAAE,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IAEO,4BAA4B,CAAC,WAAmB,EAAE,YAAoB,SAAS;QACrF,OAAO;YACL,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,UAAU;YACnB,SAAS;YACT,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,WAAW;SAClB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,WAAmB,EAAE,YAAoB,SAAS;QAC1E,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,YAAY,CAAC,4BAA4B,CAAC,IAAI,CAAC,4BAA4B,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;YAChH,gBAAM,CAAC,IAAI,CAAC,WAAW,WAAW,2BAA2B,SAAS,EAAE,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAI,KAAe,CAAC,OAAO,IAAI,eAAe,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,4BAA4B,WAAW,mBAAmB,SAAS,KAAK,YAAY,EAAE,CAAC,CAAC;QAC1G,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,WAAmB,EAAE,YAAoB,SAAS;QACjE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,IAAI,CAAC,4BAA4B,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;YAC9H,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAI,KAAe,CAAC,OAAO,IAAI,eAAe,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,yBAAyB,WAAW,iBAAiB,SAAS,KAAK,YAAY,EAAE,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,WAAmB,EAAE,YAAoB,SAAS;QACxE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;gBACnD,SAAS;gBACT,aAAa,EAAE,SAAS,WAAW,EAAE;aACtC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAI,KAAe,CAAC,OAAO,IAAI,eAAe,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,kCAAkC,WAAW,iBAAiB,SAAS,KAAK,YAAY,EAAE,CAAC,CAAC;QAC9G,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe,EAAE,YAAoB,SAAS,EAAE,SAAkB;QACjF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;gBACtD,IAAI,EAAE,OAAO;gBACb,SAAS;gBACT,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAI,KAAe,CAAC,OAAO,IAAI,eAAe,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,iBAAiB,SAAS,KAAK,YAAY,EAAE,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;CACF;AAjKD,8CAiKC;AAED,SAAS,GAAG,CAAC,CAAM;IACjB,OAAO,CAAC,IAAI,KAAK,CAAC;AACpB,CAAC;AAED,SAAS,YAAY,CAAC,GAAQ;IAC5B,OAAO,GAAG,EAAE,QAAQ,EAAE,SAAS,IAAI,SAAS,CAAC;AAC/C,CAAC;AAED,SAAS,OAAO,CAAC,GAAQ;IACvB,OAAO,GAAG,EAAE,QAAQ,EAAE,IAAI,IAAI,SAAS,CAAC;AAC1C,CAAC;AAED,SAAS,QAAQ,CAAC,OAAY;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IAAC,CAAC,IAAI,KAAK,CAAC;IAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAAC,CAAC,IAAI,IAAI,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAChC,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,GAAG,IAAI,IAAI,GAAG,GAAG,CAAC;IACvC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,GAAG,GAAG,IAAI,IAAI,GAAG,CAAC;IACtC,OAAO,GAAG,IAAI,GAAG,CAAC;AACpB,CAAC;AAED,SAAgB,8BAA8B,CAAC,OAAgB;IAC7D,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;IAChC,EAAE,CAAC,eAAe,EAAE,CAAC;IACrB,IAAI,OAAO;QAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC5D,OAAO,IAAI,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AACrD,CAAC;AAED,SAAgB,cAAc,CAAC,IAAmB;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,IAAI,SAAS,CAAC;IACrD,IAAA,8BAAiB,EAAC;QAChB,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC7G,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;YACd,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,IAAI,SAAS,CAAC;YAC9C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,SAAS,CAAC;YAC7C,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE,CAAC;YAC9C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YACvE,CAAC;YACD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;gBAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;gBAC3B,MAAM,WAAW,GAAG,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBACtF,OAAO;oBACL,OAAO;oBACP,SAAS;oBACT,CAAC,CAAC,IAAI;oBACN,IAAI;oBACJ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;oBACZ,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;oBACf,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;oBACZ,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;oBACf,GAAG,MAAM,IAAI,WAAW,EAAE;iBAC3B,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,oBAAoB,CAAC,IAAyB;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC7B,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,IAAI,SAAS,CAAC;IACpD,IAAA,8BAAiB,EAAC;QAChB,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,CAAC;QACjE,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;YACb,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;YACzB,MAAM,SAAS,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YACjG,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5G,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;YACrD,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACrD,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,kBAAkB,CAAC,QAA2B;IAC5D,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,IAAI,SAAS,CAAC;IACzD,IAAA,8BAAiB,EAAC;QAChB,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC;QACpF,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;YACb,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,IAAI,SAAS,CAAC;YAC5C,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,EAAE,SAAS,IAAI,SAAS,CAAC;YACtD,MAAM,WAAW,GAAG,EAAE,CAAC,IAAI,EAAE,WAAW,IAAI,KAAK,CAAC;YAClD,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,IAAI,KAAK,CAAC;YAC1C,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,EAAE,QAAQ,IAAI,KAAK,CAAC;YAC5C,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC;YACtC,MAAM,GAAG,GAAI,EAAU,EAAE,QAAQ,EAAE,iBAAiB,IAAI,KAAK,CAAC;YAC9D,2EAA2E;YAC3E,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QACzE,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"kubernetes.service.js","sourceRoot":"","sources":["../../src/services/kubernetes.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RunnerEnvVar } from "../utils/testRunManifestBuilder";
|
|
1
2
|
export interface TestRunManifest {
|
|
2
3
|
apiVersion: string;
|
|
3
4
|
kind: string;
|
|
@@ -13,10 +14,7 @@ export interface TestRunManifest {
|
|
|
13
14
|
separate?: boolean;
|
|
14
15
|
runner?: {
|
|
15
16
|
image?: string;
|
|
16
|
-
env?:
|
|
17
|
-
name: string;
|
|
18
|
-
value: string;
|
|
19
|
-
}>;
|
|
17
|
+
env?: RunnerEnvVar[];
|
|
20
18
|
resources?: {
|
|
21
19
|
limits: {
|
|
22
20
|
cpu: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testRunManifest.types.d.ts","sourceRoot":"","sources":["../../src/types/testRunManifest.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,IAAI,EAAE;QACJ,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,MAAM,CAAC,EAAE;YACP,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,GAAG,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"testRunManifest.types.d.ts","sourceRoot":"","sources":["../../src/types/testRunManifest.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,IAAI,EAAE;QACJ,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,MAAM,CAAC,EAAE;YACP,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC;YACrB,SAAS,CAAC,EAAE;gBACV,MAAM,EAAE;oBACN,GAAG,EAAE,MAAM,CAAA;oBACX,MAAM,EAAE,MAAM,CAAA;iBACf,CAAA;gBACD,QAAQ,EAAE;oBACR,GAAG,EAAE,MAAM,CAAA;oBACX,MAAM,EAAE,MAAM,CAAA;iBACf,CAAA;aACF,CAAA;SACF,CAAC;QACF,MAAM,EAAE;YACN,SAAS,CAAC,EAAE;gBACV,IAAI,EAAE,MAAM,CAAC;gBACb,IAAI,EAAE,MAAM,CAAC;aACd,CAAC;YACF,WAAW,CAAC,EAAE;gBACZ,IAAI,EAAE,MAAM,CAAC;gBACb,IAAI,EAAE,MAAM,CAAC;aACd,CAAA;SACF,CAAC;KACH,CAAC;CACH"}
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import type { ArchivedFile, ConfigMapResult } from '../types/kubernetes.types';
|
|
2
2
|
import { K6Config } from '../types/config.types';
|
|
3
3
|
import { TestRunManifest } from '../types/testRunManifest.types';
|
|
4
|
+
export type RunnerEnvVar = {
|
|
5
|
+
name: string;
|
|
6
|
+
value: string;
|
|
7
|
+
} | {
|
|
8
|
+
name: string;
|
|
9
|
+
valueFrom: {
|
|
10
|
+
secretKeyRef: {
|
|
11
|
+
name: string;
|
|
12
|
+
key: string;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
};
|
|
4
16
|
export declare function buildTestRunManifest(configMapResult: ConfigMapResult, archiveOutput: ArchivedFile, cfg: K6Config, envFromLoader?: Record<string, string>): TestRunManifest;
|
|
5
17
|
//# sourceMappingURL=testRunManifestBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testRunManifestBuilder.d.ts","sourceRoot":"","sources":["../../src/utils/testRunManifestBuilder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"testRunManifestBuilder.d.ts","sourceRoot":"","sources":["../../src/utils/testRunManifestBuilder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,MAAM,MAAM,YAAY,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE;QAAE,YAAY,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,CAAC;AAWnF,wBAAgB,oBAAoB,CAChC,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,YAAY,EAC3B,GAAG,EAAE,QAAQ,EACb,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvC,eAAe,CAoCjB"}
|
|
@@ -50,22 +50,14 @@ function buildTestRunManifest(configMapResult, archiveOutput, cfg, envFromLoader
|
|
|
50
50
|
function buildRunnerEnv(cfg, envFromLoader) {
|
|
51
51
|
const envMap = new Map();
|
|
52
52
|
if (envFromLoader) {
|
|
53
|
-
for (const [key,
|
|
54
|
-
if (
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
for (const [key, raw] of Object.entries(envFromLoader)) {
|
|
54
|
+
if (raw === undefined || raw === null)
|
|
55
|
+
continue;
|
|
56
|
+
addEnvToMap(key, raw, envMap);
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
if (cfg.prometheus.trendStats?.length) {
|
|
62
|
-
envMap.set(K6_PROMETHEUS_RW_TREND_STATS, cfg.prometheus.trendStats.join(","));
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
const envArray = Array.from(envMap.entries()).map(([name, value]) => ({
|
|
66
|
-
name,
|
|
67
|
-
value,
|
|
68
|
-
}));
|
|
59
|
+
addPrometheusEnvVars(cfg, envMap);
|
|
60
|
+
const envArray = Array.from(envMap.values());
|
|
69
61
|
return envArray.length > 0 ? envArray : undefined;
|
|
70
62
|
}
|
|
71
63
|
function buildArgumentsString(args, cfg, name) {
|
|
@@ -86,4 +78,34 @@ function buildArgumentsString(args, cfg, name) {
|
|
|
86
78
|
}
|
|
87
79
|
return finalArgs.join(" ");
|
|
88
80
|
}
|
|
81
|
+
function parseSecretPlaceholder(value) {
|
|
82
|
+
const m = /^\{\{SECRETS\.([^.}]+)\.([^.}]+)\}\}$/.exec(value.trim());
|
|
83
|
+
if (!m)
|
|
84
|
+
return null;
|
|
85
|
+
return { secretName: m[1], secretKey: m[2] };
|
|
86
|
+
}
|
|
87
|
+
function addEnvToMap(key, raw, envMap) {
|
|
88
|
+
const value = String(raw);
|
|
89
|
+
const secret = parseSecretPlaceholder(value);
|
|
90
|
+
if (secret) {
|
|
91
|
+
envMap.set(key, { name: key, valueFrom: { secretKeyRef: { name: secret.secretName, key: secret.secretKey } } });
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
envMap.set(key, { name: key, value });
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function addPrometheusEnvVars(cfg, envMap) {
|
|
98
|
+
if (cfg.prometheus?.serverUrl) {
|
|
99
|
+
envMap.set(K6_PROMETHEUS_RW_SERVER_URL, {
|
|
100
|
+
name: K6_PROMETHEUS_RW_SERVER_URL,
|
|
101
|
+
value: cfg.prometheus.serverUrl,
|
|
102
|
+
});
|
|
103
|
+
if (cfg.prometheus.trendStats?.length) {
|
|
104
|
+
envMap.set(K6_PROMETHEUS_RW_TREND_STATS, {
|
|
105
|
+
name: K6_PROMETHEUS_RW_TREND_STATS,
|
|
106
|
+
value: cfg.prometheus.trendStats.join(","),
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
89
111
|
//# sourceMappingURL=testRunManifestBuilder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testRunManifestBuilder.js","sourceRoot":"","sources":["../../src/utils/testRunManifestBuilder.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"testRunManifestBuilder.js","sourceRoot":"","sources":["../../src/utils/testRunManifestBuilder.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/cli.ts
CHANGED
|
@@ -16,12 +16,13 @@ program
|
|
|
16
16
|
.version(version);
|
|
17
17
|
|
|
18
18
|
program
|
|
19
|
-
.command('run
|
|
20
|
-
.description('Run a k6 test script')
|
|
21
|
-
.option('-c, --config <path>', 'Path to config file', 'k6ctl.config.
|
|
19
|
+
.command('run [script]')
|
|
20
|
+
.description('Run a k6 test script (omit to select interactively from ${pwd}/dist/tests)')
|
|
21
|
+
.option('-c, --config <path>', 'Path to config file', 'k6ctl.config.json')
|
|
22
22
|
.option('-n, --namespace <namespace>', 'Kubernetes namespace')
|
|
23
23
|
.option('-p, --parallelism <number>', 'Number of parallel test pods')
|
|
24
24
|
.option('-v, --verbose', 'enable debug logging')
|
|
25
|
+
.option('-d, --dir <path>', 'Folder to search for .js test files', 'dist/tests')
|
|
25
26
|
.action(runTest);
|
|
26
27
|
|
|
27
28
|
program
|
|
@@ -49,6 +50,9 @@ program
|
|
|
49
50
|
.description('Delete the last test run (TestRun + ConfigMap)')
|
|
50
51
|
.option('-n, --namespace <namespace>', 'Kubernetes namespace (overrides saved value)')
|
|
51
52
|
.option('--keep-configmap', 'Skip deletion of the associated ConfigMap')
|
|
53
|
+
.option('-p, --pod <name>', 'Delete a specific pod instead of those associated with the last TestRun')
|
|
54
|
+
.option('-t, --testrun <name>', 'Delete a specific TestRun by name instead of the last one')
|
|
55
|
+
.option('-c, --configmap <name>', 'Delete a specific ConfigMap by name instead of the one associated with the last TestRun')
|
|
52
56
|
.action(deleteLastRun);
|
|
53
57
|
|
|
54
58
|
program.parse();
|
package/src/commands/delete.ts
CHANGED
|
@@ -5,20 +5,41 @@ import logger from '../utils/logger';
|
|
|
5
5
|
interface DeleteOptions {
|
|
6
6
|
namespace?: string;
|
|
7
7
|
keepConfigmap?: boolean;
|
|
8
|
+
pod?: string;
|
|
9
|
+
testrun?: string;
|
|
10
|
+
configmap?: string;
|
|
8
11
|
}
|
|
9
12
|
|
|
10
13
|
export async function deleteLastRun(options: DeleteOptions) {
|
|
11
|
-
const
|
|
14
|
+
const kubernetesService = createDefaultKubernetesService();
|
|
15
|
+
|
|
16
|
+
const lastRun = !options.namespace ? await loadLastRun() : null;
|
|
17
|
+
const namespace = options.namespace ?? lastRun?.namespace ?? 'default';
|
|
18
|
+
|
|
19
|
+
if (options.pod) {
|
|
20
|
+
logger.info(`Deleting Pod: ${options.pod} (namespace: ${namespace})`);
|
|
21
|
+
await kubernetesService.deletePodByName(options.pod, namespace);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (options.testrun) {
|
|
26
|
+
logger.info(`Deleting TestRun: ${options.testrun} (namespace: ${namespace})`);
|
|
27
|
+
await kubernetesService.deleteTestRunByName(options.testrun, namespace);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (options.configmap) {
|
|
32
|
+
logger.info(`Deleting ConfigMap: ${options.configmap} (namespace: ${namespace})`);
|
|
33
|
+
await kubernetesService.deleteConfigMap(options.configmap, namespace);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
|
|
12
37
|
if (!lastRun) {
|
|
13
38
|
logger.error('No last run found. Run a test first with: k6ctl run <script>');
|
|
14
39
|
process.exit(1);
|
|
15
40
|
}
|
|
16
41
|
|
|
17
|
-
const namespace = options.namespace ?? lastRun.namespace;
|
|
18
42
|
logger.info(`Deleting TestRun: ${lastRun.testRunName} (namespace: ${namespace})`);
|
|
19
|
-
|
|
20
|
-
const kubernetesService = createDefaultKubernetesService();
|
|
21
|
-
|
|
22
43
|
await kubernetesService.deleteTestRunByName(lastRun.testRunName, namespace);
|
|
23
44
|
|
|
24
45
|
if (!options.keepConfigmap) {
|
package/src/commands/list.ts
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import logger, { setLogLevel } from '../utils/logger';
|
|
2
|
-
import { createDefaultKubernetesService } from '../services/kubernetes.service';
|
|
2
|
+
import { createDefaultKubernetesService, printPodsTable, printTestRunsTable, printConfigMapsTable } from '../services/kubernetes.service';
|
|
3
3
|
|
|
4
4
|
export async function list(type: string, options: { namespace?: string }) {
|
|
5
5
|
const kubernetesService = createDefaultKubernetesService();
|
|
6
6
|
switch (type) {
|
|
7
7
|
case 'all':
|
|
8
8
|
logger.debug(`Listing all resources in namespace: ${options.namespace}`);
|
|
9
|
-
await kubernetesService.listTestRuns(options.namespace);
|
|
10
|
-
await kubernetesService.listPods(options.namespace);
|
|
11
|
-
await kubernetesService.listConfigMaps(options.namespace);
|
|
9
|
+
printTestRunsTable(await kubernetesService.listTestRuns(options.namespace));
|
|
10
|
+
printPodsTable(await kubernetesService.listPods(options.namespace));
|
|
11
|
+
printConfigMapsTable(await kubernetesService.listConfigMaps(options.namespace));
|
|
12
12
|
break;
|
|
13
13
|
case 'pods':
|
|
14
14
|
logger.debug(`Listing Pods in namespace: ${options.namespace}`);
|
|
15
|
-
await kubernetesService.listPods(options.namespace);
|
|
15
|
+
printPodsTable(await kubernetesService.listPods(options.namespace));
|
|
16
16
|
break;
|
|
17
17
|
case 'testruns':
|
|
18
18
|
logger.debug(`Listing TestRuns in namespace: ${options.namespace}`);
|
|
19
|
-
await kubernetesService.listTestRuns(options.namespace);
|
|
19
|
+
printTestRunsTable(await kubernetesService.listTestRuns(options.namespace));
|
|
20
20
|
break;
|
|
21
21
|
case 'configmaps':
|
|
22
22
|
logger.debug(`Listing ConfigMaps in namespace: ${options.namespace}`);
|
|
23
|
-
await kubernetesService.listConfigMaps(options.namespace);
|
|
23
|
+
printConfigMapsTable(await kubernetesService.listConfigMaps(options.namespace));
|
|
24
24
|
break;
|
|
25
25
|
default:
|
|
26
26
|
logger.debug(`Listing ${type} in namespace: ${options.namespace}`);
|
package/src/commands/run.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import * as readline from 'readline';
|
|
1
4
|
import { createDefaultKubernetesService } from '../services/kubernetes.service';
|
|
2
5
|
import { ScriptService } from '../services/script.service';
|
|
3
6
|
import { loadK6Config } from '../utils/configLoader';
|
|
@@ -6,15 +9,70 @@ import logger, { setLogLevel } from '../utils/logger';
|
|
|
6
9
|
import { buildTestRunManifest } from '../utils/testRunManifestBuilder';
|
|
7
10
|
import { saveLastRun } from '../utils/lastRunStore';
|
|
8
11
|
|
|
12
|
+
function listTestFiles(dir: string): string[] {
|
|
13
|
+
if (!fs.existsSync(dir)) {
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
16
|
+
const results: string[] = [];
|
|
17
|
+
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
18
|
+
const fullPath = path.join(dir, entry.name);
|
|
19
|
+
if (entry.isDirectory()) {
|
|
20
|
+
results.push(...listTestFiles(fullPath));
|
|
21
|
+
} else if (entry.isFile() && entry.name.endsWith('.js')) {
|
|
22
|
+
results.push(fullPath);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return results;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function promptSelection(files: string[], dir: string): Promise<string> {
|
|
29
|
+
return new Promise((resolve, reject) => {
|
|
30
|
+
console.log('\nAvailable test scripts:');
|
|
31
|
+
files.forEach((file, i) => {
|
|
32
|
+
const relative = path.relative(dir, file);
|
|
33
|
+
console.log(` [${String(i + 1).padStart(2)}] ${relative}`);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
console.log('');
|
|
37
|
+
|
|
38
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
39
|
+
rl.question(`Select a test (1-${files.length}): `, answer => {
|
|
40
|
+
rl.close();
|
|
41
|
+
const index = parseInt(answer.trim(), 10) - 1;
|
|
42
|
+
if (isNaN(index) || index < 0 || index >= files.length) {
|
|
43
|
+
reject(new Error(`Invalid selection: "${answer}"`));
|
|
44
|
+
} else {
|
|
45
|
+
resolve(files[index]);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
9
51
|
interface RunOptions {
|
|
10
52
|
config: string;
|
|
11
53
|
namespace?: string;
|
|
12
54
|
parallelism?: number;
|
|
13
55
|
verbose?: boolean;
|
|
56
|
+
dir: string;
|
|
14
57
|
}
|
|
15
58
|
|
|
16
59
|
export async function runTest(scriptPath: string, options: RunOptions) {
|
|
17
60
|
if (options.verbose) setLogLevel('debug');
|
|
61
|
+
|
|
62
|
+
if (!scriptPath) {
|
|
63
|
+
const files = listTestFiles(options.dir);
|
|
64
|
+
if (files.length === 0) {
|
|
65
|
+
logger.error(`No .js test files found in ${options.dir}`);
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
scriptPath = await promptSelection(files, options.dir);
|
|
70
|
+
} catch (error) {
|
|
71
|
+
logger.error(error instanceof Error ? error.message : String(error));
|
|
72
|
+
process.exit(1);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
18
76
|
logger.debug(`Running k6 test: ${scriptPath}`);
|
|
19
77
|
logger.debug(`Using config: ${JSON.stringify(options.config, null, 2)}`);
|
|
20
78
|
|
|
@@ -5,7 +5,6 @@ import logger from '../utils/logger';
|
|
|
5
5
|
import type { ArchivedFile, ConfigMapResult } from '../types/kubernetes.types';
|
|
6
6
|
import { TestRunManifest } from '../types/testRunManifest.types';
|
|
7
7
|
import { printTableGeneric } from '../utils/table.util';
|
|
8
|
-
import { unlink } from 'node:fs/promises';
|
|
9
8
|
|
|
10
9
|
export class KubernetesService {
|
|
11
10
|
constructor(private readonly k8sApi: k8s.CoreV1Api, private readonly k8sCustomApi: k8s.CustomObjectsApi) { }
|
|
@@ -39,9 +38,9 @@ export class KubernetesService {
|
|
|
39
38
|
|
|
40
39
|
await this.k8sApi.createNamespacedConfigMap({ namespace, body: configMap });
|
|
41
40
|
logger.info(`ConfigMap ${configMapName} created in namespace ${namespace}`);
|
|
42
|
-
|
|
41
|
+
|
|
43
42
|
// Clean up the archive file after creating the ConfigMap
|
|
44
|
-
await unlink(archiveFile.archivePath).catch(error => console.error(`Error deleting file ${archiveFile.archivePath}:`, error));
|
|
43
|
+
await fs_promises.unlink(archiveFile.archivePath).catch(error => console.error(`Error deleting file ${archiveFile.archivePath}:`, error));
|
|
45
44
|
return { namespace, configMapName };
|
|
46
45
|
}
|
|
47
46
|
|
|
@@ -85,27 +84,28 @@ export class KubernetesService {
|
|
|
85
84
|
namespace: namespace,
|
|
86
85
|
plural: "testruns",
|
|
87
86
|
});
|
|
88
|
-
return response;
|
|
87
|
+
return response.items as TestRunManifest[];
|
|
89
88
|
} catch (error) {
|
|
90
89
|
const errorMessage = (error as Error).message ?? 'Unknown error';
|
|
91
90
|
throw new Error(`Failed to list TestRuns in namespace ${namespace}: ${errorMessage}`);
|
|
92
91
|
}
|
|
93
92
|
}
|
|
94
93
|
|
|
95
|
-
async listPods(namespace: string = "default"): Promise<
|
|
94
|
+
async listPods(namespace: string = "default"): Promise<k8s.V1PodList> {
|
|
96
95
|
try {
|
|
97
96
|
const response = await this.k8sApi.listNamespacedPod({ namespace });
|
|
98
|
-
return response;
|
|
97
|
+
return response as k8s.V1PodList;
|
|
99
98
|
} catch (error) {
|
|
100
99
|
const errorMessage = (error as Error).message ?? 'Unknown error';
|
|
101
100
|
throw new Error(`Failed to list Pods in namespace ${namespace}: ${errorMessage}`);
|
|
102
101
|
}
|
|
103
102
|
}
|
|
104
103
|
|
|
105
|
-
async listConfigMaps(namespace: string = "default"): Promise<
|
|
104
|
+
async listConfigMaps(namespace: string = "default"): Promise<k8s.V1ConfigMapList> {
|
|
106
105
|
try {
|
|
107
106
|
const response = await this.k8sApi.listNamespacedConfigMap({ namespace });
|
|
108
|
-
|
|
107
|
+
response.items = response.items?.filter(cm => cm.metadata?.name?.startsWith('archive-'));
|
|
108
|
+
return response as k8s.V1ConfigMapList;
|
|
109
109
|
} catch (error) {
|
|
110
110
|
const errorMessage = (error as Error).message ?? 'Unknown error';
|
|
111
111
|
throw new Error(`Failed to list ConfigMaps in namespace ${namespace}: ${errorMessage}`);
|
|
@@ -132,10 +132,20 @@ export class KubernetesService {
|
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
-
async
|
|
135
|
+
async deletePodByName(podName: string, namespace: string = "default"): Promise<void> {
|
|
136
|
+
try {
|
|
137
|
+
await this.k8sApi.deleteNamespacedPod({ name: podName, namespace });
|
|
138
|
+
logger.info(`Pod ${podName} deleted from namespace ${namespace}`);
|
|
139
|
+
} catch (error) {
|
|
140
|
+
const errorMessage = (error as Error).message ?? 'Unknown error';
|
|
141
|
+
throw new Error(`Failed to delete Pod ${podName} from namespace ${namespace}: ${errorMessage}`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
async getTestRun(testRunName: string, namespace: string = "default"): Promise<TestRunManifest> {
|
|
136
146
|
try {
|
|
137
147
|
const response = await this.k8sCustomApi.getNamespacedCustomObject(this.getTestRunCustomObjectParams(testRunName, namespace));
|
|
138
|
-
return response;
|
|
148
|
+
return response as TestRunManifest;
|
|
139
149
|
} catch (error) {
|
|
140
150
|
const errorMessage = (error as Error).message ?? 'Unknown error';
|
|
141
151
|
throw new Error(`Failed to get TestRun ${testRunName} in namespace ${namespace}: ${errorMessage}`);
|
|
@@ -148,7 +158,7 @@ export class KubernetesService {
|
|
|
148
158
|
namespace,
|
|
149
159
|
labelSelector: `k6_cr=${testRunName}`,
|
|
150
160
|
});
|
|
151
|
-
return response;
|
|
161
|
+
return response as k8s.V1PodList;
|
|
152
162
|
} catch (error) {
|
|
153
163
|
const errorMessage = (error as Error).message ?? 'Unknown error';
|
|
154
164
|
throw new Error(`Failed to get pods for TestRun ${testRunName} in namespace ${namespace}: ${errorMessage}`);
|
|
@@ -273,7 +283,6 @@ export function printTestRunsTable(testRuns: TestRunManifest[]): void {
|
|
|
273
283
|
const separate = tr.spec?.separate ?? "N/A";
|
|
274
284
|
const quiet = tr.spec?.quiet ?? "N/A";
|
|
275
285
|
const age = (tr as any)?.metadata?.creationTimestamp ?? "N/A";
|
|
276
|
-
// const age = ageSince((tr as any)?.metadata?.creationTimestamp) || "N/A";
|
|
277
286
|
return [[name, namespace, parallelism, cleanup, separate, quiet, age]];
|
|
278
287
|
}
|
|
279
288
|
});
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { RunnerEnvVar } from "../utils/testRunManifestBuilder";
|
|
2
|
+
|
|
1
3
|
export interface TestRunManifest {
|
|
2
4
|
apiVersion: string;
|
|
3
5
|
kind: string;
|
|
@@ -13,10 +15,7 @@ export interface TestRunManifest {
|
|
|
13
15
|
separate?: boolean;
|
|
14
16
|
runner?: {
|
|
15
17
|
image?: string;
|
|
16
|
-
env?:
|
|
17
|
-
name: string;
|
|
18
|
-
value: string;
|
|
19
|
-
}>;
|
|
18
|
+
env?: RunnerEnvVar[];
|
|
20
19
|
resources?: {
|
|
21
20
|
limits: {
|
|
22
21
|
cpu: string
|
|
@@ -3,7 +3,9 @@ import type { ArchivedFile, ConfigMapResult } from '../types/kubernetes.types';
|
|
|
3
3
|
import { K6Config } from '../types/config.types';
|
|
4
4
|
import { TestRunManifest } from '../types/testRunManifest.types';
|
|
5
5
|
|
|
6
|
-
type RunnerEnvVar =
|
|
6
|
+
export type RunnerEnvVar =
|
|
7
|
+
| { name: string; value: string }
|
|
8
|
+
| { name: string; valueFrom: { secretKeyRef: { name: string; key: string } } };
|
|
7
9
|
const K6_GROUP = "k6.io";
|
|
8
10
|
const K6_VERSION = "v1alpha1";
|
|
9
11
|
const K6_KIND = "TestRun";
|
|
@@ -61,24 +63,15 @@ function buildRunnerEnv(
|
|
|
61
63
|
cfg: K6Config,
|
|
62
64
|
envFromLoader?: Record<string, string>
|
|
63
65
|
): RunnerEnvVar[] | undefined {
|
|
64
|
-
const envMap = new Map<string,
|
|
66
|
+
const envMap = new Map<string, RunnerEnvVar>();
|
|
65
67
|
if (envFromLoader) {
|
|
66
|
-
for (const [key,
|
|
67
|
-
if (
|
|
68
|
-
|
|
69
|
-
}
|
|
68
|
+
for (const [key, raw] of Object.entries(envFromLoader)) {
|
|
69
|
+
if (raw === undefined || raw === null) continue;
|
|
70
|
+
addEnvToMap(key, raw, envMap);
|
|
70
71
|
}
|
|
71
72
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
if (cfg.prometheus.trendStats?.length) {
|
|
75
|
-
envMap.set(K6_PROMETHEUS_RW_TREND_STATS, cfg.prometheus.trendStats.join(","));
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
const envArray: RunnerEnvVar[] = Array.from(envMap.entries()).map(([name, value]) => ({
|
|
79
|
-
name,
|
|
80
|
-
value,
|
|
81
|
-
}));
|
|
73
|
+
addPrometheusEnvVars(cfg, envMap);
|
|
74
|
+
const envArray: RunnerEnvVar[] = Array.from(envMap.values());
|
|
82
75
|
return envArray.length > 0 ? envArray : undefined;
|
|
83
76
|
}
|
|
84
77
|
|
|
@@ -99,4 +92,35 @@ function buildArgumentsString(args: string[] | undefined, cfg: K6Config, name: s
|
|
|
99
92
|
return undefined;
|
|
100
93
|
}
|
|
101
94
|
return finalArgs.join(" ");
|
|
102
|
-
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function parseSecretPlaceholder(value: string): { secretName: string; secretKey: string } | null {
|
|
98
|
+
const m = /^\{\{SECRETS\.([^.}]+)\.([^.}]+)\}\}$/.exec(value.trim());
|
|
99
|
+
if (!m) return null;
|
|
100
|
+
return { secretName: m[1], secretKey: m[2] };
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function addEnvToMap(key: string, raw: string, envMap: Map<string, RunnerEnvVar>) {
|
|
104
|
+
const value = String(raw);
|
|
105
|
+
const secret = parseSecretPlaceholder(value);
|
|
106
|
+
if (secret) {
|
|
107
|
+
envMap.set(key, { name: key, valueFrom: { secretKeyRef: { name: secret.secretName, key: secret.secretKey } } });
|
|
108
|
+
} else {
|
|
109
|
+
envMap.set(key, { name: key, value });
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function addPrometheusEnvVars(cfg: K6Config, envMap: Map<string, RunnerEnvVar>) {
|
|
114
|
+
if (cfg.prometheus?.serverUrl) {
|
|
115
|
+
envMap.set(K6_PROMETHEUS_RW_SERVER_URL, {
|
|
116
|
+
name: K6_PROMETHEUS_RW_SERVER_URL,
|
|
117
|
+
value: cfg.prometheus.serverUrl,
|
|
118
|
+
});
|
|
119
|
+
if (cfg.prometheus.trendStats?.length) {
|
|
120
|
+
envMap.set(K6_PROMETHEUS_RW_TREND_STATS, {
|
|
121
|
+
name: K6_PROMETHEUS_RW_TREND_STATS,
|
|
122
|
+
value: cfg.prometheus.trendStats.join(","),
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { describe, expect, test } from '@jest/globals';
|
|
2
2
|
import { join, resolve } from 'node:path';
|
|
3
3
|
import { existsSync } from 'node:fs';
|
|
4
|
-
import {
|
|
5
|
-
import { createDefaultKubernetesService, printConfigMapsTable } from '../../src/services/kubernetes.service';
|
|
4
|
+
import { createDefaultKubernetesService } from '../../src/services/kubernetes.service';
|
|
6
5
|
import { ScriptService } from '../../src/services/script.service';
|
|
7
6
|
import { ConfigMapResult } from '../../src/types/kubernetes.types';
|
|
8
7
|
import { ArchiveResult } from '../../src/types/script.types';
|
|
@@ -11,7 +10,6 @@ import { TestRunManifest } from '../../src/types/testRunManifest.types';
|
|
|
11
10
|
import { K6Config } from '../../src/types/config.types';
|
|
12
11
|
import { loadK6Config } from '../../src/utils/configLoader';
|
|
13
12
|
import { buildTestRunManifest } from '../../src/utils/testRunManifestBuilder';
|
|
14
|
-
import { printTestRunsTable, printPodsTable } from '../../src/services/kubernetes.service';
|
|
15
13
|
import { saveLastRun } from '../../src/utils/lastRunStore';
|
|
16
14
|
import { status } from '../../src/commands/status';
|
|
17
15
|
import { logs } from '../../src/commands/logs';
|
|
@@ -10,6 +10,7 @@ jest.mock('fs', () => ({
|
|
|
10
10
|
promises: {
|
|
11
11
|
stat: jest.fn(),
|
|
12
12
|
readFile: jest.fn(),
|
|
13
|
+
unlink: jest.fn(),
|
|
13
14
|
},
|
|
14
15
|
}));
|
|
15
16
|
|
|
@@ -49,6 +50,7 @@ jest.mock('../../src/utils/logger', () => ({
|
|
|
49
50
|
const mockedExistsSync = existsSync as unknown as jest.Mock;
|
|
50
51
|
const mockedStat = fs_promises.stat as unknown as jest.Mock;
|
|
51
52
|
const mockedReadFile = fs_promises.readFile as unknown as jest.Mock;
|
|
53
|
+
const mockedUnlink = fs_promises.unlink as unknown as jest.MockedFunction<typeof fs_promises.unlink>;
|
|
52
54
|
const mockedLoggerInfo = logger.info as unknown as jest.Mock;
|
|
53
55
|
|
|
54
56
|
const mockedK8sModule = k8s as unknown as {
|
|
@@ -119,6 +121,7 @@ describe('KubernetesService', () => {
|
|
|
119
121
|
});
|
|
120
122
|
|
|
121
123
|
test('creates configmap with binaryData and returns namespace/name', async () => {
|
|
124
|
+
mockedUnlink.mockResolvedValue(undefined);
|
|
122
125
|
mockedExistsSync.mockReturnValue(true);
|
|
123
126
|
mockedStat.mockImplementation(async () => ({ size: 512 }));
|
|
124
127
|
mockedReadFile.mockImplementation(async () => 'YmFzZTY0');
|