k6ctl 1.2.0 → 1.3.1

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.
Files changed (46) hide show
  1. package/README.md +204 -4
  2. package/dist/cli.js +3 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/delete.d.ts +1 -1
  5. package/dist/commands/delete.d.ts.map +1 -1
  6. package/dist/commands/delete.js +10 -4
  7. package/dist/commands/delete.js.map +1 -1
  8. package/dist/commands/run.d.ts +1 -0
  9. package/dist/commands/run.d.ts.map +1 -1
  10. package/dist/commands/run.js +137 -1
  11. package/dist/commands/run.js.map +1 -1
  12. package/dist/commands/status.d.ts.map +1 -1
  13. package/dist/commands/status.js +4 -0
  14. package/dist/commands/status.js.map +1 -1
  15. package/dist/services/kubernetes.service.d.ts +9 -3
  16. package/dist/services/kubernetes.service.d.ts.map +1 -1
  17. package/dist/services/kubernetes.service.js +121 -2
  18. package/dist/services/kubernetes.service.js.map +1 -1
  19. package/dist/services/script.service.d.ts +3 -1
  20. package/dist/services/script.service.d.ts.map +1 -1
  21. package/dist/services/script.service.js +115 -1
  22. package/dist/services/script.service.js.map +1 -1
  23. package/dist/types/kubernetes.types.d.ts +5 -0
  24. package/dist/types/kubernetes.types.d.ts.map +1 -1
  25. package/dist/types/lastRun.types.d.ts +2 -1
  26. package/dist/types/lastRun.types.d.ts.map +1 -1
  27. package/dist/types/script.types.d.ts +39 -0
  28. package/dist/types/script.types.d.ts.map +1 -1
  29. package/dist/utils/testRunManifestBuilder.d.ts +2 -1
  30. package/dist/utils/testRunManifestBuilder.d.ts.map +1 -1
  31. package/dist/utils/testRunManifestBuilder.js +34 -0
  32. package/dist/utils/testRunManifestBuilder.js.map +1 -1
  33. package/package.json +2 -1
  34. package/src/cli.ts +3 -2
  35. package/src/commands/delete.ts +11 -5
  36. package/src/commands/run.ts +158 -2
  37. package/src/commands/status.ts +4 -0
  38. package/src/services/kubernetes.service.ts +141 -5
  39. package/src/services/script.service.ts +102 -4
  40. package/src/types/kubernetes.types.ts +6 -0
  41. package/src/types/lastRun.types.ts +2 -1
  42. package/src/types/script.types.ts +40 -0
  43. package/src/utils/testRunManifestBuilder.ts +39 -1
  44. package/test/integration/kubernetes.service.test.ts +61 -5
  45. package/test/unit/kubernetes.service.test.ts +13 -8
  46. package/test/unit/script.service.test.ts +11 -4
package/README.md CHANGED
@@ -20,23 +20,223 @@ npx k6ctl run path/to/test.js
20
20
 
21
21
  ## Configuration
22
22
 
23
- Create a `k6ctl.config.js` file in the root of your k6 scripts project:
23
+ Create a `k6ctl.config.json` file in the root of your project (or pass another file with `--config`).
24
+
25
+ Example:
26
+
27
+ ```json
28
+ {
29
+ "namespace": "default",
30
+ "parallelism": 1,
31
+ "arguments": ["--summary-mode=full"],
32
+ "cleanup": false,
33
+ "quiet": true,
34
+ "separate": false,
35
+ "runner": {
36
+ "image": "grafana/k6:latest",
37
+ "resources": {
38
+ "limits": {
39
+ "cpu": "500m",
40
+ "memory": "512Mi"
41
+ },
42
+ "requests": {
43
+ "cpu": "250m",
44
+ "memory": "256Mi"
45
+ }
46
+ }
47
+ },
48
+ "prometheus": {
49
+ "serverUrl": "http://prometheus-server.monitoring.svc.cluster.local:9090/api/v1/write",
50
+ "trendStats": ["avg", "p(95)", "p(99)", "min", "max"]
51
+ }
52
+ }
53
+ ```
54
+
55
+ If this file does not exist, `k6ctl` falls back to defaults.
24
56
 
25
57
  ## Usage
26
58
 
27
- Run a k6 test:
59
+ ### Step-by-step workflow
60
+
61
+ 1. Prepare your test scripts and config.
62
+ 2. Run a test with `k6ctl run ...`.
63
+ 3. Inspect state with `k6ctl status`.
64
+ 4. Read pod output with `k6ctl logs`.
65
+ 5. List resources with `k6ctl list`.
66
+ 6. Clean up with `k6ctl delete`.
67
+
68
+ `k6ctl run` stores run metadata in `.k6ctl-last-run.json` in your current directory. Commands like `status`, `logs`, and default `delete` use this file.
69
+
70
+ ### Run command
71
+
72
+ Run a specific test file:
28
73
 
29
74
  ```bash
30
75
  k6ctl run large-test-1.js
31
76
  ```
32
77
 
33
- ### Options
78
+ Run with a custom scripts directory for interactive selection:
79
+
80
+ ```bash
81
+ k6ctl run -d dist/tests
82
+ ```
83
+
84
+ When no script argument is provided, `k6ctl` scans the folder provided by `-d, --dir` (default: `dist/tests`) and prompts you to choose a `.js` script.
85
+
86
+ Run with smart analysis enabled:
87
+
88
+ ```bash
89
+ k6ctl run large-test-1.js --smart
90
+ ```
91
+
92
+ `--smart` analyzes supported scenarios (currently `ramping-arrival-rate`) and automatically adjusts values such as recommended VUs and parallelism before submission.
93
+
94
+ Run using volume (PVC-backed flow):
95
+
96
+ ```bash
97
+ k6ctl run large-test-1.js
98
+ ```
99
+
100
+ `k6ctl` switches to volume flow automatically when the generated k6 archive is larger than 1 MB. In this mode, it creates a PVC, uploads the archive through a temporary helper pod, and mounts that PVC in the TestRun.
101
+
102
+ There is no explicit `--volume` flag.
103
+
104
+ Recommended steps for volume flow:
105
+
106
+ 1. Run your test as usual with `k6ctl run <script>`.
107
+ 2. Confirm logs mention: `exceeds 1 MB, using volume flow`.
108
+ 3. Check created resources:
109
+
110
+ ```bash
111
+ k6ctl status
112
+ kubectl get pvc -n <namespace>
113
+ kubectl get pods -n <namespace>
114
+ ```
115
+
116
+ 4. Review pod logs when needed:
117
+
118
+ ```bash
119
+ k6ctl logs -n <namespace>
120
+ ```
121
+
122
+ 5. Clean up resources after the run:
123
+
124
+ ```bash
125
+ k6ctl delete
126
+ ```
34
127
 
35
- ### Additional Commands
128
+ By default, `k6ctl delete` removes both the TestRun and the associated script resource (ConfigMap or PVC). Use `--keep-script` only if you need to preserve the script resource.
129
+
130
+ Run options:
131
+
132
+ - `-c, --config <path>`: Path to config file (default: `k6ctl.config.json`)
133
+ - `-n, --namespace <namespace>`: Kubernetes namespace
134
+ - `-p, --parallelism <number>`: Number of parallel test pods
135
+ - `-v, --verbose`: Enable debug logging
136
+ - `-d, --dir <path>`: Folder to search for `.js` test files (default: `dist/tests`)
137
+ - `--smart`: Enable smart scenario analysis
138
+
139
+ ### List command
140
+
141
+ List all supported resource types in namespace `default`:
142
+
143
+ ```bash
144
+ k6ctl list
145
+ ```
146
+
147
+ List only pods:
148
+
149
+ ```bash
150
+ k6ctl list pods -n load-tests
151
+ ```
152
+
153
+ List command syntax:
154
+
155
+ ```bash
156
+ k6ctl list [pods|testruns|configmaps] [-n <namespace>]
157
+ ```
158
+
159
+ If no type is provided, `all` is used.
160
+
161
+ ### Status command
162
+
163
+ Show the status of the last saved run:
164
+
165
+ ```bash
166
+ k6ctl status
167
+ ```
168
+
169
+ Override namespace:
170
+
171
+ ```bash
172
+ k6ctl status -n load-tests
173
+ ```
174
+
175
+ This prints TestRun details and related pod status.
176
+
177
+ ### Logs command
178
+
179
+ Show logs for pods linked to the last saved run:
180
+
181
+ ```bash
182
+ k6ctl logs
183
+ ```
184
+
185
+ Specify namespace and container:
186
+
187
+ ```bash
188
+ k6ctl logs -n load-tests -c runner
189
+ ```
190
+
191
+ Logs command options:
192
+
193
+ - `-n, --namespace <namespace>`: Override namespace stored in last run
194
+ - `-c, --container <name>`: Container name to fetch logs from
195
+
196
+ ### Delete command
197
+
198
+ Delete the last run and its associated script resource (ConfigMap or PVC):
199
+
200
+ ```bash
201
+ k6ctl delete
202
+ ```
203
+
204
+ Delete last TestRun but keep script resource:
205
+
206
+ ```bash
207
+ k6ctl delete --keep-script
208
+ ```
209
+
210
+ Delete specific resources directly:
211
+
212
+ ```bash
213
+ k6ctl delete -p <pod-name> -n load-tests
214
+ k6ctl delete -t <testrun-name> -n load-tests
215
+ k6ctl delete -c <configmap-name> -n load-tests
216
+ ```
217
+
218
+ Delete command options:
219
+
220
+ - `-n, --namespace <namespace>`: Kubernetes namespace
221
+ - `--keep-script`: Skip deletion of associated script ConfigMap/PVC
222
+ - `-p, --pod <name>`: Delete a specific pod
223
+ - `-t, --testrun <name>`: Delete a specific TestRun
224
+ - `-c, --configmap <name>`: Delete a specific ConfigMap
225
+
226
+ ## Command summary
227
+
228
+ ```bash
229
+ k6ctl run [script] [options]
230
+ k6ctl list [type] [-n <namespace>]
231
+ k6ctl status [-n <namespace>]
232
+ k6ctl logs [-n <namespace>] [-c <container>]
233
+ k6ctl delete [--keep-script] [-n <namespace>] [-p <pod>] [-t <testrun>] [-c <configmap>]
234
+ ```
36
235
 
37
236
  ## Requirements
38
237
 
39
238
  - Node.js >= 18.0.0
239
+ - k6 CLI available on PATH
40
240
  - kubectl configured with access to your Kubernetes cluster
41
241
  - k6-operator installed in your cluster
42
242
 
package/dist/cli.js CHANGED
@@ -21,6 +21,7 @@ program
21
21
  .option('-p, --parallelism <number>', 'Number of parallel test pods')
22
22
  .option('-v, --verbose', 'enable debug logging')
23
23
  .option('-d, --dir <path>', 'Folder to search for .js test files', 'dist/tests')
24
+ .option('--smart', 'Enable smart scenario analysis')
24
25
  .action(run_1.runTest);
25
26
  program
26
27
  .command('list')
@@ -41,9 +42,9 @@ program
41
42
  .action(status_1.status);
42
43
  program
43
44
  .command('delete')
44
- .description('Delete the last test run (TestRun + ConfigMap)')
45
+ .description('Delete the last test run (TestRun + script)')
45
46
  .option('-n, --namespace <namespace>', 'Kubernetes namespace (overrides saved value)')
46
- .option('--keep-configmap', 'Skip deletion of the associated ConfigMap')
47
+ .option('--keep-script', 'Skip deletion of the associated script in ConfigMap or PVC')
47
48
  .option('-p, --pod <name>', 'Delete a specific pod instead of those associated with the last TestRun')
48
49
  .option('-t, --testrun <name>', 'Delete a specific TestRun by name instead of the last one')
49
50
  .option('-c, --configmap <name>', 'Delete a specific ConfigMap by name instead of the one associated with the last TestRun')
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,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
+ {"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,SAAS,EAAE,gCAAgC,CAAC;KACnD,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,6CAA6C,CAAC;KAC1D,MAAM,CAAC,6BAA6B,EAAE,8CAA8C,CAAC;KACrF,MAAM,CAAC,eAAe,EAAE,4DAA4D,CAAC;KACrF,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,6 +1,6 @@
1
1
  interface DeleteOptions {
2
2
  namespace?: string;
3
- keepConfigmap?: boolean;
3
+ keepScript?: boolean;
4
4
  pod?: string;
5
5
  testrun?: string;
6
6
  configmap?: string;
@@ -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;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"}
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,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,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,iBA6CzD"}
@@ -9,7 +9,7 @@ const lastRunStore_1 = require("../utils/lastRunStore");
9
9
  const logger_1 = __importDefault(require("../utils/logger"));
10
10
  async function deleteLastRun(options) {
11
11
  const kubernetesService = (0, kubernetes_service_1.createDefaultKubernetesService)();
12
- const lastRun = !options.namespace ? await (0, lastRunStore_1.loadLastRun)() : null;
12
+ const lastRun = await (0, lastRunStore_1.loadLastRun)();
13
13
  const namespace = options.namespace ?? lastRun?.namespace ?? 'default';
14
14
  if (options.pod) {
15
15
  logger_1.default.info(`Deleting Pod: ${options.pod} (namespace: ${namespace})`);
@@ -32,9 +32,15 @@ async function deleteLastRun(options) {
32
32
  }
33
33
  logger_1.default.info(`Deleting TestRun: ${lastRun.testRunName} (namespace: ${namespace})`);
34
34
  await kubernetesService.deleteTestRunByName(lastRun.testRunName, namespace);
35
- if (!options.keepConfigmap) {
36
- logger_1.default.info(`Deleting ConfigMap: ${lastRun.configMapName} (namespace: ${namespace})`);
37
- await kubernetesService.deleteConfigMap(lastRun.configMapName, namespace);
35
+ if (!options.keepScript) {
36
+ if (lastRun.configMapName) {
37
+ logger_1.default.info(`Deleting ConfigMap: ${lastRun.configMapName} (namespace: ${namespace})`);
38
+ await kubernetesService.deleteConfigMap(lastRun.configMapName, namespace);
39
+ }
40
+ if (lastRun.volumeClaimName) {
41
+ logger_1.default.info(`Deleting PVC: ${lastRun.volumeClaimName} (namespace: ${namespace})`);
42
+ await kubernetesService.deleteVolumeClaimByName(lastRun.volumeClaimName, namespace);
43
+ }
38
44
  }
39
45
  await (0, lastRunStore_1.clearLastRun)();
40
46
  logger_1.default.info('Last run state cleared.');
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":";;;;;AAYA,sCA6CC;AAzDD,uEAAgF;AAChF,wDAAkE;AAClE,6DAAqC;AAU9B,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,MAAM,iBAAiB,GAAG,IAAA,mDAA8B,GAAE,CAAC;IAE3D,MAAM,OAAO,GAAG,MAAM,IAAA,0BAAW,GAAE,CAAC;IACpC,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,UAAU,EAAE,CAAC;QACxB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,gBAAM,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,aAAa,gBAAgB,SAAS,GAAG,CAAC,CAAC;YACtF,MAAM,iBAAiB,CAAC,eAAe,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5B,gBAAM,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,eAAe,gBAAgB,SAAS,GAAG,CAAC,CAAC;YAClF,MAAM,iBAAiB,CAAC,uBAAuB,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAED,MAAM,IAAA,2BAAY,GAAE,CAAC;IACrB,gBAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACzC,CAAC"}
@@ -4,6 +4,7 @@ interface RunOptions {
4
4
  parallelism?: number;
5
5
  verbose?: boolean;
6
6
  dir: string;
7
+ smart?: boolean;
7
8
  }
8
9
  export declare function runTest(scriptPath: string, options: RunOptions): Promise<void>;
9
10
  export {};
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAuDA,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;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,iBAmHpE"}
@@ -44,6 +44,8 @@ const env_1 = require("../utils/env");
44
44
  const logger_1 = __importStar(require("../utils/logger"));
45
45
  const testRunManifestBuilder_1 = require("../utils/testRunManifestBuilder");
46
46
  const lastRunStore_1 = require("../utils/lastRunStore");
47
+ const DEFAULT_VUS_PER_POD = process.env.DEFAULT_VUS_PER_POD ? parseInt(process.env.DEFAULT_VUS_PER_POD, 10) : 100;
48
+ const MAX_ITERATION_DURATION_SECONDS = process.env.MAX_ITERATION_DURATION_SECONDS ? parseInt(process.env.MAX_ITERATION_DURATION_SECONDS, 10) : 60;
47
49
  function listTestFiles(dir) {
48
50
  if (!fs.existsSync(dir)) {
49
51
  return [];
@@ -105,9 +107,38 @@ async function runTest(scriptPath, options) {
105
107
  const scriptService = new script_service_1.ScriptService();
106
108
  const kubernetesService = (0, kubernetes_service_1.createDefaultKubernetesService)();
107
109
  // Load test script
108
- const archive = await scriptService.archiveTest(scriptPath);
110
+ let archive = await scriptService.archiveTest(scriptPath);
109
111
  // Load config
110
112
  const config = (0, configLoader_1.loadK6Config)(options.config);
113
+ // Analyze script if smart option is enabled
114
+ if (options.smart) {
115
+ logger_1.default.info(`Analyzing script: ${scriptPath}`);
116
+ const inspectResult = await scriptService.inspectScript(scriptPath);
117
+ const scenarioMetrics = await analyzeScript(inspectResult);
118
+ if (scenarioMetrics) {
119
+ const estimatedTotalIterations = scenarioMetrics.reduce((sum, metrics) => sum + (metrics?.totalIterations ?? 0), 0);
120
+ const totalRecommendedMaxVUs = scenarioMetrics.reduce((sum, metrics) => sum + (metrics?.recommendedMaxVUs ?? 0), 0);
121
+ const parallelism = Math.ceil(totalRecommendedMaxVUs / DEFAULT_VUS_PER_POD) || 1;
122
+ const peakTps = scenarioMetrics.reduce((max, metrics) => Math.max(max, metrics?.peakTps ?? 0), 0);
123
+ config.parallelism = parallelism;
124
+ logger_1.default.info(`Total recommendedMaxVUs: ${Math.ceil(totalRecommendedMaxVUs)}
125
+ based on scenario analysis and MAX_ITERATION_DURATION_SECONDS=${MAX_ITERATION_DURATION_SECONDS} seconds
126
+ per iteration assumption with a safety factor of 1.2 applied to account for variability in iteration duration and ensure we have enough VUs
127
+ to meet the target TPS. This is an estimate and actual resource needs may vary based on the specific workload and environment.
128
+ Consider monitoring the test run and adjusting resources as needed.`);
129
+ logger_1.default.info(`Calculated parallelism: ${parallelism} (based on DEFAULT_VUS_PER_POD=${DEFAULT_VUS_PER_POD})`);
130
+ logger_1.default.info(`Peak TPS: ${peakTps.toFixed(2)}`);
131
+ logger_1.default.info(`Estimated Total Iterations: ${Math.round(estimatedTotalIterations)}`);
132
+ logger_1.default.info(`Using MAX_ITERATION_DURATION_SECONDS=${MAX_ITERATION_DURATION_SECONDS} seconds`);
133
+ logger_1.default.info(`Using safety factor of 1.2 to calculate recommended VUs.`);
134
+ logger_1.default.info(`Using DEFAULT_VUS_PER_POD=${DEFAULT_VUS_PER_POD} to calculate parallelism.`);
135
+ // Extract, modify, and recompress the archive
136
+ archive = await scriptService.extractModifyAndRecompress(archive, scenarioMetrics);
137
+ }
138
+ }
139
+ else {
140
+ logger_1.default.info('Smart scenario analysis is disabled. Running test without previous analysis.');
141
+ }
111
142
  // Load environment variables
112
143
  let envVars;
113
144
  try {
@@ -117,6 +148,22 @@ async function runTest(scriptPath, options) {
117
148
  logger_1.default.warn("Warning: no environment variables loaded, continuing anyway.");
118
149
  logger_1.default.debug(`Error loading environment variables: ${error instanceof Error ? error.message : String(error)}`);
119
150
  }
151
+ if (archive.archiveSize > 1024 * 1024) {
152
+ // Volume flow
153
+ logger_1.default.info(`Test script archive size (${(archive.archiveSize / (1024 * 1024)).toFixed(2)} MB) exceeds 1 MB, using volume flow.`);
154
+ const volumeClaimResult = await kubernetesService.createPVCWithArchive(archive, config.namespace);
155
+ const testRunManifest = (0, testRunManifestBuilder_1.buildTestRunManifestWithVolumeClaim)(volumeClaimResult, config, envVars);
156
+ await kubernetesService.createTestRun(testRunManifest);
157
+ await (0, lastRunStore_1.saveLastRun)({
158
+ testRunName: testRunManifest.metadata.name,
159
+ namespace: testRunManifest.metadata.namespace,
160
+ volumeClaimName: volumeClaimResult.volumeClaimName,
161
+ scriptPath,
162
+ createdAt: new Date().toISOString(),
163
+ });
164
+ logger_1.default.info(`Last run saved: ${testRunManifest.metadata.name} (namespace: ${testRunManifest.metadata.namespace})`);
165
+ return;
166
+ }
120
167
  // Create configmap for test script
121
168
  const configMap = await kubernetesService.createConfigMap(archive, config.namespace);
122
169
  // Build testrun
@@ -137,4 +184,93 @@ async function runTest(scriptPath, options) {
137
184
  logger_1.default.error(`Error running test: ${error instanceof Error ? error.message : String(error)}`);
138
185
  }
139
186
  }
187
+ async function analyzeScript(inspectResult) {
188
+ if (!inspectResult.scenarios) {
189
+ logger_1.default.info('No scenarios found in the script. Smart analysis cannot be performed.');
190
+ return [];
191
+ }
192
+ const allMetrics = Object.entries(inspectResult.scenarios).map(([name, scenario]) => {
193
+ return calculateScenarioMetrics(name, scenario);
194
+ });
195
+ return allMetrics;
196
+ }
197
+ function calculateScenarioMetrics(name, scenario, avgIterationDurationSeconds = MAX_ITERATION_DURATION_SECONDS, safetyFactor = 1.2) {
198
+ if (scenario.executor !== 'ramping-arrival-rate') {
199
+ return null;
200
+ }
201
+ if (!scenario.stages || scenario.stages.length === 0) {
202
+ return null;
203
+ }
204
+ const timeUnitSeconds = parseTimeUnitToSeconds(scenario.timeUnit);
205
+ let previousRate = scenario.startRate ?? 0;
206
+ let peakTps = previousRate / timeUnitSeconds;
207
+ let totalIterations = 0;
208
+ const stageMetrics = scenario.stages.map((stage, index) => {
209
+ const durationSeconds = parseDurationToSeconds(stage.duration);
210
+ const fromTps = previousRate / timeUnitSeconds;
211
+ const toTps = stage.target / timeUnitSeconds;
212
+ const avgTps = (fromTps + toTps) / 2;
213
+ const estimatedIterations = avgTps * durationSeconds;
214
+ totalIterations += estimatedIterations;
215
+ peakTps = Math.max(peakTps, toTps);
216
+ const requiredVUsAtTarget = toTps * avgIterationDurationSeconds;
217
+ const recommendedVUsAtTarget = requiredVUsAtTarget * safetyFactor;
218
+ previousRate = stage.target;
219
+ return {
220
+ stageIndex: index + 1,
221
+ duration: stage.duration,
222
+ durationSeconds,
223
+ fromTps,
224
+ toTps,
225
+ avgTps,
226
+ estimatedIterations,
227
+ requiredVUsAtTarget,
228
+ recommendedVUsAtTarget,
229
+ };
230
+ });
231
+ const requiredMaxVUs = peakTps * avgIterationDurationSeconds;
232
+ const recommendedMaxVUs = requiredMaxVUs * safetyFactor;
233
+ return {
234
+ name,
235
+ peakTps,
236
+ totalIterations,
237
+ requiredMaxVUs,
238
+ recommendedMaxVUs,
239
+ stageMetrics,
240
+ };
241
+ }
242
+ function parseDurationToSeconds(duration) {
243
+ const regex = /(\d+)(ms|s|m|h)/g;
244
+ let match;
245
+ let totalMs = 0;
246
+ while ((match = regex.exec(duration)) !== null) {
247
+ const value = Number(match[1]);
248
+ const unit = match[2];
249
+ switch (unit) {
250
+ case 'h':
251
+ totalMs += value * 60 * 60 * 1000;
252
+ break;
253
+ case 'm':
254
+ totalMs += value * 60 * 1000;
255
+ break;
256
+ case 's':
257
+ totalMs += value * 1000;
258
+ break;
259
+ case 'ms':
260
+ totalMs += value;
261
+ break;
262
+ default:
263
+ throw new Error(`Unsupported duration unit: ${unit}`);
264
+ }
265
+ }
266
+ if (totalMs === 0) {
267
+ throw new Error(`Invalid duration format: ${duration}`);
268
+ }
269
+ return totalMs / 1000;
270
+ }
271
+ function parseTimeUnitToSeconds(timeUnit) {
272
+ if (!timeUnit)
273
+ return 1;
274
+ return parseDurationToSeconds(timeUnit);
275
+ }
140
276
  //# sourceMappingURL=run.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,iBAkBlD"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,iBAsBlD"}
@@ -19,6 +19,10 @@ async function status(options) {
19
19
  logger_1.default.info(`Script: ${lastRun.scriptPath} | Started: ${lastRun.createdAt}`);
20
20
  const kubernetesService = (0, kubernetes_service_1.createDefaultKubernetesService)();
21
21
  const testRun = await kubernetesService.getTestRun(lastRun.testRunName, namespace);
22
+ if (!testRun) {
23
+ logger_1.default.error(`TestRun ${lastRun.testRunName} not found in namespace ${namespace}. It may have been deleted externally.`);
24
+ process.exit(1);
25
+ }
22
26
  (0, kubernetes_service_2.printTestRunsTable)([testRun]);
23
27
  const podList = await kubernetesService.getPodsForTestRun(lastRun.testRunName, namespace);
24
28
  (0, kubernetes_service_2.printPodsTable)(podList);
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":";;;;;AASA,wBAkBC;AA3BD,uEAAgF;AAChF,uEAAoF;AACpF,wDAAoD;AACpD,6DAAqC;AAM9B,KAAK,UAAU,MAAM,CAAC,OAAsB;IACjD,MAAM,OAAO,GAAG,MAAM,IAAA,0BAAW,GAAE,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,gBAAM,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC;IACzD,gBAAM,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,WAAW,gBAAgB,SAAS,GAAG,CAAC,CAAC;IACpF,gBAAM,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,UAAU,iBAAiB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAE/E,MAAM,iBAAiB,GAAG,IAAA,mDAA8B,GAAE,CAAC;IAE3D,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACnF,IAAA,uCAAkB,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAE9B,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC1F,IAAA,mCAAc,EAAC,OAAO,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":";;;;;AASA,wBAsBC;AA/BD,uEAAgF;AAChF,uEAAoF;AACpF,wDAAoD;AACpD,6DAAqC;AAM9B,KAAK,UAAU,MAAM,CAAC,OAAsB;IACjD,MAAM,OAAO,GAAG,MAAM,IAAA,0BAAW,GAAE,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,gBAAM,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC;IACzD,gBAAM,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,WAAW,gBAAgB,SAAS,GAAG,CAAC,CAAC;IACpF,gBAAM,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,UAAU,iBAAiB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAE/E,MAAM,iBAAiB,GAAG,IAAA,mDAA8B,GAAE,CAAC;IAE3D,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACnF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,gBAAM,CAAC,KAAK,CAAC,WAAW,OAAO,CAAC,WAAW,2BAA2B,SAAS,wCAAwC,CAAC,CAAC;QACzH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAA,uCAAkB,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAE9B,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC1F,IAAA,mCAAc,EAAC,OAAO,CAAC,CAAC;AAC1B,CAAC"}
@@ -1,11 +1,17 @@
1
1
  import * as k8s from '@kubernetes/client-node';
2
- import type { ArchivedFile, ConfigMapResult } from '../types/kubernetes.types';
2
+ import type { ArchivedFile, ConfigMapResult, VolumeClaimResult } from '../types/kubernetes.types';
3
3
  import { TestRunManifest } from '../types/testRunManifest.types';
4
4
  export declare class KubernetesService {
5
5
  private readonly k8sApi;
6
6
  private readonly k8sCustomApi;
7
- constructor(k8sApi: k8s.CoreV1Api, k8sCustomApi: k8s.CustomObjectsApi);
7
+ private readonly kc?;
8
+ constructor(k8sApi: k8s.CoreV1Api, k8sCustomApi: k8s.CustomObjectsApi, kc?: k8s.KubeConfig | undefined);
9
+ private getKubeConfig;
10
+ private isNotFoundError;
8
11
  createConfigMap(archiveFile: ArchivedFile, namespace: string): Promise<ConfigMapResult>;
12
+ createPVCWithArchive(archiveFile: ArchivedFile, namespace: string): Promise<VolumeClaimResult>;
13
+ private waitForPodRunning;
14
+ deleteVolumeClaimByName(volumeClaimName: string, namespace?: string): Promise<void>;
9
15
  deleteConfigMap(configMapName: string, namespace: string): Promise<void>;
10
16
  createTestRun(testRunManifest: TestRunManifest): Promise<any>;
11
17
  deleteTestRun(testRunManifest: TestRunManifest): Promise<void>;
@@ -15,7 +21,7 @@ export declare class KubernetesService {
15
21
  private getTestRunCustomObjectParams;
16
22
  deleteTestRunByName(testRunName: string, namespace?: string): Promise<void>;
17
23
  deletePodByName(podName: string, namespace?: string): Promise<void>;
18
- getTestRun(testRunName: string, namespace?: string): Promise<TestRunManifest>;
24
+ getTestRun(testRunName: string, namespace?: string): Promise<TestRunManifest | null>;
19
25
  getPodsForTestRun(testRunName: string, namespace?: string): Promise<k8s.V1PodList>;
20
26
  getPodLogs(podName: string, namespace?: string, container?: string): Promise<string>;
21
27
  }
@@ -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;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"}
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,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGjE,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAFH,MAAM,EAAE,GAAG,CAAC,SAAS,EACrB,YAAY,EAAE,GAAG,CAAC,gBAAgB,EAClC,EAAE,CAAC,EAAE,GAAG,CAAC,UAAU,YAAA;IAGtC,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,eAAe;IAMjB,eAAe,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAmCvF,oBAAoB,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;YA8EtF,iBAAiB;IAYzB,uBAAuB,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,GAAE,MAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9F,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxE,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;IActF,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,MAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9E,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,GAAE,MAAkB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAa/F,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"}