@terascope/scripts 0.83.3 → 1.0.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/bin/ts-scripts.js +5 -4
- package/dist/src/cmds/bump-asset.d.ts +1 -1
- package/dist/src/cmds/bump-asset.d.ts.map +1 -1
- package/dist/src/cmds/bump-asset.js +9 -13
- package/dist/src/cmds/bump-asset.js.map +1 -1
- package/dist/src/cmds/bump.d.ts +1 -1
- package/dist/src/cmds/bump.d.ts.map +1 -1
- package/dist/src/cmds/bump.js +13 -17
- package/dist/src/cmds/bump.js.map +1 -1
- package/dist/src/cmds/docs.d.ts +1 -1
- package/dist/src/cmds/docs.d.ts.map +1 -1
- package/dist/src/cmds/docs.js +7 -8
- package/dist/src/cmds/docs.js.map +1 -1
- package/dist/src/cmds/images.d.ts +3 -3
- package/dist/src/cmds/images.d.ts.map +1 -1
- package/dist/src/cmds/images.js +5 -6
- package/dist/src/cmds/images.js.map +1 -1
- package/dist/src/cmds/k8s-env.d.ts +1 -1
- package/dist/src/cmds/k8s-env.d.ts.map +1 -1
- package/dist/src/cmds/k8s-env.js +5 -29
- package/dist/src/cmds/k8s-env.js.map +1 -1
- package/dist/src/cmds/publish.d.ts +3 -3
- package/dist/src/cmds/publish.d.ts.map +1 -1
- package/dist/src/cmds/publish.js +15 -16
- package/dist/src/cmds/publish.js.map +1 -1
- package/dist/src/cmds/sync.d.ts +2 -2
- package/dist/src/cmds/sync.d.ts.map +1 -1
- package/dist/src/cmds/sync.js +5 -6
- package/dist/src/cmds/sync.js.map +1 -1
- package/dist/src/cmds/test.d.ts +2 -2
- package/dist/src/cmds/test.d.ts.map +1 -1
- package/dist/src/cmds/test.js +17 -44
- package/dist/src/cmds/test.js.map +1 -1
- package/dist/src/command.js +21 -9
- package/dist/src/command.js.map +1 -1
- package/dist/src/helpers/args.d.ts +1 -1
- package/dist/src/helpers/args.d.ts.map +1 -1
- package/dist/src/helpers/args.js +18 -26
- package/dist/src/helpers/args.js.map +1 -1
- package/dist/src/helpers/bump/index.d.ts +2 -2
- package/dist/src/helpers/bump/index.d.ts.map +1 -1
- package/dist/src/helpers/bump/index.js +37 -69
- package/dist/src/helpers/bump/index.js.map +1 -1
- package/dist/src/helpers/bump/interfaces.d.ts +1 -1
- package/dist/src/helpers/bump/interfaces.d.ts.map +1 -1
- package/dist/src/helpers/bump/interfaces.js +2 -5
- package/dist/src/helpers/bump/interfaces.js.map +1 -1
- package/dist/src/helpers/bump/utils.d.ts +2 -2
- package/dist/src/helpers/bump/utils.d.ts.map +1 -1
- package/dist/src/helpers/bump/utils.js +35 -48
- package/dist/src/helpers/bump/utils.js.map +1 -1
- package/dist/src/helpers/config.d.ts +1 -1
- package/dist/src/helpers/config.d.ts.map +1 -1
- package/dist/src/helpers/config.js +117 -125
- package/dist/src/helpers/config.js.map +1 -1
- package/dist/src/helpers/doc-builder/index.d.ts +1 -1
- package/dist/src/helpers/doc-builder/index.d.ts.map +1 -1
- package/dist/src/helpers/doc-builder/index.js +14 -21
- package/dist/src/helpers/doc-builder/index.js.map +1 -1
- package/dist/src/helpers/doc-builder/overview.d.ts +1 -1
- package/dist/src/helpers/doc-builder/overview.d.ts.map +1 -1
- package/dist/src/helpers/doc-builder/overview.js +15 -25
- package/dist/src/helpers/doc-builder/overview.js.map +1 -1
- package/dist/src/helpers/doc-builder/sidebar.d.ts +1 -1
- package/dist/src/helpers/doc-builder/sidebar.d.ts.map +1 -1
- package/dist/src/helpers/doc-builder/sidebar.js +17 -24
- package/dist/src/helpers/doc-builder/sidebar.js.map +1 -1
- package/dist/src/helpers/doc-builder/typedoc.d.ts +1 -1
- package/dist/src/helpers/doc-builder/typedoc.d.ts.map +1 -1
- package/dist/src/helpers/doc-builder/typedoc.js +31 -38
- package/dist/src/helpers/doc-builder/typedoc.js.map +1 -1
- package/dist/src/helpers/hooks.d.ts +1 -1
- package/dist/src/helpers/hooks.d.ts.map +1 -1
- package/dist/src/helpers/hooks.js +7 -14
- package/dist/src/helpers/hooks.js.map +1 -1
- package/dist/src/helpers/images/index.d.ts +1 -1
- package/dist/src/helpers/images/index.d.ts.map +1 -1
- package/dist/src/helpers/images/index.js +25 -57
- package/dist/src/helpers/images/index.js.map +1 -1
- package/dist/src/helpers/images/interfaces.js +2 -5
- package/dist/src/helpers/images/interfaces.js.map +1 -1
- package/dist/src/helpers/interfaces.js +5 -8
- package/dist/src/helpers/interfaces.js.map +1 -1
- package/dist/src/helpers/k8s-env/index.d.ts +1 -1
- package/dist/src/helpers/k8s-env/index.d.ts.map +1 -1
- package/dist/src/helpers/k8s-env/index.js +51 -82
- package/dist/src/helpers/k8s-env/index.js.map +1 -1
- package/dist/src/helpers/k8s-env/interfaces.js +1 -2
- package/dist/src/helpers/k8s-env/k8s.js +49 -74
- package/dist/src/helpers/k8s-env/k8s.js.map +1 -1
- package/dist/src/helpers/kind.d.ts +1 -1
- package/dist/src/helpers/kind.d.ts.map +1 -1
- package/dist/src/helpers/kind.js +47 -51
- package/dist/src/helpers/kind.js.map +1 -1
- package/dist/src/helpers/mapper.js +1 -5
- package/dist/src/helpers/mapper.js.map +1 -1
- package/dist/src/helpers/misc.d.ts +1 -1
- package/dist/src/helpers/misc.d.ts.map +1 -1
- package/dist/src/helpers/misc.js +63 -80
- package/dist/src/helpers/misc.js.map +1 -1
- package/dist/src/helpers/packages.d.ts +1 -1
- package/dist/src/helpers/packages.d.ts.map +1 -1
- package/dist/src/helpers/packages.js +82 -129
- package/dist/src/helpers/packages.js.map +1 -1
- package/dist/src/helpers/publish/index.d.ts +1 -1
- package/dist/src/helpers/publish/index.d.ts.map +1 -1
- package/dist/src/helpers/publish/index.js +53 -60
- package/dist/src/helpers/publish/index.js.map +1 -1
- package/dist/src/helpers/publish/interfaces.js +4 -7
- package/dist/src/helpers/publish/interfaces.js.map +1 -1
- package/dist/src/helpers/publish/utils.d.ts +2 -2
- package/dist/src/helpers/publish/utils.d.ts.map +1 -1
- package/dist/src/helpers/publish/utils.js +32 -43
- package/dist/src/helpers/publish/utils.js.map +1 -1
- package/dist/src/helpers/scripts.d.ts +2 -2
- package/dist/src/helpers/scripts.d.ts.map +1 -1
- package/dist/src/helpers/scripts.js +113 -176
- package/dist/src/helpers/scripts.js.map +1 -1
- package/dist/src/helpers/signale.d.ts +2 -2
- package/dist/src/helpers/signale.d.ts.map +1 -1
- package/dist/src/helpers/signale.js +5 -6
- package/dist/src/helpers/signale.js.map +1 -1
- package/dist/src/helpers/sync/configs.d.ts +1 -1
- package/dist/src/helpers/sync/configs.d.ts.map +1 -1
- package/dist/src/helpers/sync/configs.js +8 -15
- package/dist/src/helpers/sync/configs.js.map +1 -1
- package/dist/src/helpers/sync/index.d.ts +1 -1
- package/dist/src/helpers/sync/index.d.ts.map +1 -1
- package/dist/src/helpers/sync/index.js +19 -46
- package/dist/src/helpers/sync/index.js.map +1 -1
- package/dist/src/helpers/sync/interfaces.js +2 -5
- package/dist/src/helpers/sync/interfaces.js.map +1 -1
- package/dist/src/helpers/sync/utils.d.ts +2 -2
- package/dist/src/helpers/sync/utils.d.ts.map +1 -1
- package/dist/src/helpers/sync/utils.js +51 -63
- package/dist/src/helpers/sync/utils.js.map +1 -1
- package/dist/src/helpers/test-runner/index.d.ts +2 -2
- package/dist/src/helpers/test-runner/index.d.ts.map +1 -1
- package/dist/src/helpers/test-runner/index.js +78 -86
- package/dist/src/helpers/test-runner/index.js.map +1 -1
- package/dist/src/helpers/test-runner/interfaces.d.ts +1 -1
- package/dist/src/helpers/test-runner/interfaces.d.ts.map +1 -1
- package/dist/src/helpers/test-runner/interfaces.js +1 -2
- package/dist/src/helpers/test-runner/services.d.ts +1 -1
- package/dist/src/helpers/test-runner/services.d.ts.map +1 -1
- package/dist/src/helpers/test-runner/services.js +149 -192
- package/dist/src/helpers/test-runner/services.js.map +1 -1
- package/dist/src/helpers/test-runner/tracker.d.ts +1 -1
- package/dist/src/helpers/test-runner/tracker.d.ts.map +1 -1
- package/dist/src/helpers/test-runner/tracker.js +29 -33
- package/dist/src/helpers/test-runner/tracker.js.map +1 -1
- package/dist/src/helpers/test-runner/utils.d.ts +3 -3
- package/dist/src/helpers/test-runner/utils.d.ts.map +1 -1
- package/dist/src/helpers/test-runner/utils.js +42 -78
- package/dist/src/helpers/test-runner/utils.js.map +1 -1
- package/dist/src/index.d.ts +6 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -22
- package/dist/src/index.js.map +1 -1
- package/package.json +4 -3
|
@@ -1,53 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.ensureRabbitMQ = exports.ensureOpensearch = exports.ensureRestrainedOpensearch = exports.ensureRestrainedElasticsearch = exports.ensureElasticsearch = exports.ensureMinio = exports.ensureZookeeper = exports.ensureKafka = exports.ensureServices = exports.loadOrPullServiceImages = void 0;
|
|
30
|
-
const ms_1 = __importDefault(require("ms"));
|
|
31
|
-
const got_1 = __importDefault(require("got"));
|
|
32
|
-
const semver_1 = __importDefault(require("semver"));
|
|
33
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
34
|
-
const path_1 = __importDefault(require("path"));
|
|
35
|
-
const ts = __importStar(require("@terascope/utils"));
|
|
36
|
-
const kafkajs_1 = require("kafkajs");
|
|
37
|
-
const execa_1 = __importDefault(require("execa"));
|
|
38
|
-
const misc_1 = require("../misc");
|
|
39
|
-
const scripts_1 = require("../scripts");
|
|
40
|
-
const kind_1 = require("../kind");
|
|
41
|
-
const interfaces_1 = require("../interfaces");
|
|
42
|
-
const config = __importStar(require("../config"));
|
|
43
|
-
const signale_1 = __importDefault(require("../signale"));
|
|
44
|
-
const logger = ts.debugLogger('ts-scripts:cmd:test');
|
|
45
|
-
const serviceUpTimeout = (0, ms_1.default)(config.SERVICE_UP_TIMEOUT);
|
|
46
|
-
const rabbitConfigPath = path_1.default.join((0, misc_1.getRootDir)(), '/.ts-test-config/rabbitmq.conf');
|
|
47
|
-
const restrainedElasticsearchConfigPath = path_1.default.join((0, misc_1.getRootDir)(), '/.ts-test-config/elasticsearch.yml');
|
|
1
|
+
import ms from 'ms';
|
|
2
|
+
import got from 'got';
|
|
3
|
+
import semver from 'semver';
|
|
4
|
+
import fs from 'fs-extra';
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import { Kafka } from 'kafkajs';
|
|
7
|
+
import execa from 'execa';
|
|
8
|
+
import { pWhile, TSError, debugLogger, toHumanTime, getErrorStatusCode } from '@terascope/utils';
|
|
9
|
+
import { getServicesForSuite, getRootDir } from '../misc.js';
|
|
10
|
+
import { dockerRun, getContainerInfo, dockerStop, k8sStartService, k8sStopService, loadThenDeleteImageFromCache, dockerPull } from '../scripts.js';
|
|
11
|
+
import { Kind } from '../kind.js';
|
|
12
|
+
import { Service } from '../interfaces.js';
|
|
13
|
+
import * as config from '../config.js';
|
|
14
|
+
import signale from '../signale.js';
|
|
15
|
+
const logger = debugLogger('ts-scripts:cmd:test');
|
|
16
|
+
const serviceUpTimeout = ms(config.SERVICE_UP_TIMEOUT);
|
|
17
|
+
const rabbitConfigPath = path.join(getRootDir(), '/.ts-test-config/rabbitmq.conf');
|
|
18
|
+
const restrainedElasticsearchConfigPath = path.join(getRootDir(), '/.ts-test-config/elasticsearch.yml');
|
|
48
19
|
const disableXPackSecurity = !config.ELASTICSEARCH_DOCKER_IMAGE.includes('blacktop');
|
|
49
20
|
const services = {
|
|
50
|
-
[
|
|
21
|
+
[Service.Elasticsearch]: {
|
|
51
22
|
image: config.ELASTICSEARCH_DOCKER_IMAGE,
|
|
52
23
|
name: `${config.TEST_NAMESPACE}_${config.ELASTICSEARCH_NAME}`,
|
|
53
24
|
tmpfs: config.SERVICES_USE_TMPFS
|
|
@@ -65,7 +36,7 @@ const services = {
|
|
|
65
36
|
},
|
|
66
37
|
network: config.DOCKER_NETWORK_NAME
|
|
67
38
|
},
|
|
68
|
-
[
|
|
39
|
+
[Service.RestrainedElasticsearch]: {
|
|
69
40
|
image: config.ELASTICSEARCH_DOCKER_IMAGE,
|
|
70
41
|
name: `${config.TEST_NAMESPACE}_${config.ELASTICSEARCH_NAME}`,
|
|
71
42
|
mount: [`type=bind,source=${restrainedElasticsearchConfigPath},target=/usr/share/elasticsearch/config/elasticsearch.yml`],
|
|
@@ -81,7 +52,7 @@ const services = {
|
|
|
81
52
|
},
|
|
82
53
|
network: config.DOCKER_NETWORK_NAME
|
|
83
54
|
},
|
|
84
|
-
[
|
|
55
|
+
[Service.RestrainedOpensearch]: {
|
|
85
56
|
image: config.OPENSEARCH_DOCKER_IMAGE,
|
|
86
57
|
name: `${config.TEST_NAMESPACE}_${config.OPENSEARCH_NAME}`,
|
|
87
58
|
ports: [`${config.RESTRAINED_OPENSEARCH_PORT}:${config.RESTRAINED_OPENSEARCH_PORT}`],
|
|
@@ -95,7 +66,7 @@ const services = {
|
|
|
95
66
|
},
|
|
96
67
|
network: config.DOCKER_NETWORK_NAME
|
|
97
68
|
},
|
|
98
|
-
[
|
|
69
|
+
[Service.Opensearch]: {
|
|
99
70
|
image: config.OPENSEARCH_DOCKER_IMAGE,
|
|
100
71
|
name: `${config.TEST_NAMESPACE}_${config.OPENSEARCH_NAME}`,
|
|
101
72
|
ports: [`${config.OPENSEARCH_PORT}:${config.OPENSEARCH_PORT}`],
|
|
@@ -110,7 +81,7 @@ const services = {
|
|
|
110
81
|
},
|
|
111
82
|
network: config.DOCKER_NETWORK_NAME
|
|
112
83
|
},
|
|
113
|
-
[
|
|
84
|
+
[Service.Kafka]: {
|
|
114
85
|
image: config.KAFKA_DOCKER_IMAGE,
|
|
115
86
|
name: `${config.TEST_NAMESPACE}_${config.KAFKA_NAME}`,
|
|
116
87
|
tmpfs: config.SERVICES_USE_TMPFS
|
|
@@ -129,7 +100,7 @@ const services = {
|
|
|
129
100
|
},
|
|
130
101
|
network: config.DOCKER_NETWORK_NAME
|
|
131
102
|
},
|
|
132
|
-
[
|
|
103
|
+
[Service.Zookeeper]: {
|
|
133
104
|
image: config.ZOOKEEPER_DOCKER_IMAGE,
|
|
134
105
|
name: `${config.TEST_NAMESPACE}_zookeeper`,
|
|
135
106
|
tmpfs: config.SERVICES_USE_TMPFS
|
|
@@ -142,7 +113,7 @@ const services = {
|
|
|
142
113
|
},
|
|
143
114
|
network: config.DOCKER_NETWORK_NAME
|
|
144
115
|
},
|
|
145
|
-
[
|
|
116
|
+
[Service.Minio]: {
|
|
146
117
|
image: config.MINIO_DOCKER_IMAGE,
|
|
147
118
|
name: `${config.TEST_NAMESPACE}_${config.MINIO_NAME}`,
|
|
148
119
|
/// We will be able to go back and use this on a later version of minio
|
|
@@ -152,7 +123,7 @@ const services = {
|
|
|
152
123
|
// : undefined,
|
|
153
124
|
ports: [`${config.MINIO_PORT}:${config.MINIO_PORT}`],
|
|
154
125
|
mount: config.ENCRYPT_MINIO
|
|
155
|
-
? [`type=bind,source=${
|
|
126
|
+
? [`type=bind,source=${path.join(getRootDir(), '/e2e/test/certs')},target=/opt/certs`,
|
|
156
127
|
`type=bind,source=${config.MINIO_VOLUME},target=/data`
|
|
157
128
|
]
|
|
158
129
|
: [`type=bind,source=${config.MINIO_VOLUME},target=/data`],
|
|
@@ -165,7 +136,7 @@ const services = {
|
|
|
165
136
|
? ['server', '-S', '/opt/certs', '--address', `0.0.0.0:${config.MINIO_PORT}`, '/data']
|
|
166
137
|
: ['server', '--address', `0.0.0.0:${config.MINIO_PORT}`, '/data']
|
|
167
138
|
},
|
|
168
|
-
[
|
|
139
|
+
[Service.RabbitMQ]: {
|
|
169
140
|
image: config.RABBITMQ_DOCKER_IMAGE,
|
|
170
141
|
name: `${config.TEST_NAMESPACE}_${config.RABBITMQ_NAME}`,
|
|
171
142
|
ports: [`${config.RABBITMQ_MANAGEMENT_PORT}:15672`, `${config.RABBITMQ_PORT}:5672`],
|
|
@@ -178,46 +149,46 @@ const services = {
|
|
|
178
149
|
network: config.DOCKER_NETWORK_NAME,
|
|
179
150
|
}
|
|
180
151
|
};
|
|
181
|
-
async function loadOrPullServiceImages(suite) {
|
|
182
|
-
const launchServices =
|
|
152
|
+
export async function loadOrPullServiceImages(suite) {
|
|
153
|
+
const launchServices = getServicesForSuite(suite);
|
|
183
154
|
try {
|
|
184
155
|
const images = [];
|
|
185
156
|
const loadFailedList = [];
|
|
186
|
-
if (launchServices.includes(
|
|
157
|
+
if (launchServices.includes(Service.Elasticsearch)) {
|
|
187
158
|
const image = `${config.ELASTICSEARCH_DOCKER_IMAGE}:${config.ELASTICSEARCH_VERSION}`;
|
|
188
159
|
images.push(image);
|
|
189
160
|
}
|
|
190
|
-
if (launchServices.includes(
|
|
161
|
+
if (launchServices.includes(Service.Opensearch)) {
|
|
191
162
|
const image = `${config.OPENSEARCH_DOCKER_IMAGE}:${config.OPENSEARCH_VERSION}`;
|
|
192
163
|
images.push(image);
|
|
193
164
|
}
|
|
194
|
-
if (launchServices.includes(
|
|
165
|
+
if (launchServices.includes(Service.RestrainedOpensearch)) {
|
|
195
166
|
const image = `${config.OPENSEARCH_DOCKER_IMAGE}:${config.OPENSEARCH_VERSION}`;
|
|
196
167
|
images.push(image);
|
|
197
168
|
}
|
|
198
|
-
if (launchServices.includes(
|
|
169
|
+
if (launchServices.includes(Service.RestrainedElasticsearch)) {
|
|
199
170
|
const image = `${config.ELASTICSEARCH_DOCKER_IMAGE}:${config.ELASTICSEARCH_VERSION}`;
|
|
200
171
|
images.push(image);
|
|
201
172
|
}
|
|
202
|
-
if (launchServices.includes(
|
|
173
|
+
if (launchServices.includes(Service.Kafka)) {
|
|
203
174
|
const image = `${config.KAFKA_DOCKER_IMAGE}:${config.KAFKA_IMAGE_VERSION}`;
|
|
204
175
|
images.push(image);
|
|
205
176
|
}
|
|
206
|
-
if (launchServices.includes(
|
|
177
|
+
if (launchServices.includes(Service.Zookeeper)) {
|
|
207
178
|
const image = `${config.ZOOKEEPER_DOCKER_IMAGE}:${config.ZOOKEEPER_VERSION}`;
|
|
208
179
|
images.push(image);
|
|
209
180
|
}
|
|
210
|
-
if (launchServices.includes(
|
|
181
|
+
if (launchServices.includes(Service.Minio)) {
|
|
211
182
|
const image = `${config.MINIO_DOCKER_IMAGE}:${config.MINIO_VERSION}`;
|
|
212
183
|
images.push(image);
|
|
213
184
|
}
|
|
214
|
-
if (launchServices.includes(
|
|
185
|
+
if (launchServices.includes(Service.RabbitMQ)) {
|
|
215
186
|
const image = `${config.RABBITMQ_DOCKER_IMAGE}`;
|
|
216
187
|
images.push(image);
|
|
217
188
|
}
|
|
218
|
-
if (
|
|
189
|
+
if (fs.existsSync(config.DOCKER_CACHE_PATH)) {
|
|
219
190
|
await Promise.all(images.map(async (imageName) => {
|
|
220
|
-
const success = await
|
|
191
|
+
const success = await loadThenDeleteImageFromCache(imageName);
|
|
221
192
|
if (!success) {
|
|
222
193
|
loadFailedList.push(imageName);
|
|
223
194
|
}
|
|
@@ -229,55 +200,54 @@ async function loadOrPullServiceImages(suite) {
|
|
|
229
200
|
if (loadFailedList.length > 0) {
|
|
230
201
|
await Promise.all(loadFailedList.map(async (image) => {
|
|
231
202
|
const label = `docker pull ${image}`;
|
|
232
|
-
|
|
233
|
-
await
|
|
234
|
-
|
|
203
|
+
signale.time(label);
|
|
204
|
+
await dockerPull(image);
|
|
205
|
+
signale.timeEnd(label);
|
|
235
206
|
}));
|
|
236
207
|
}
|
|
237
208
|
}
|
|
238
209
|
catch (err) {
|
|
239
|
-
throw new
|
|
210
|
+
throw new TSError(err, {
|
|
240
211
|
message: `Failed to pull services for test suite "${suite}", ${err.message}`
|
|
241
212
|
});
|
|
242
213
|
}
|
|
243
214
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
const launchServices = (0, misc_1.getServicesForSuite)(suite);
|
|
215
|
+
export async function ensureServices(suite, options) {
|
|
216
|
+
const launchServices = getServicesForSuite(suite);
|
|
247
217
|
const promises = [];
|
|
248
|
-
if (launchServices.includes(
|
|
218
|
+
if (launchServices.includes(Service.Elasticsearch)) {
|
|
249
219
|
promises.push(ensureElasticsearch(options));
|
|
250
220
|
}
|
|
251
|
-
if (launchServices.includes(
|
|
221
|
+
if (launchServices.includes(Service.RestrainedElasticsearch)) {
|
|
252
222
|
// we create the elasticsearch.yml file for tests
|
|
253
223
|
if (!options.ignoreMount) {
|
|
254
|
-
await
|
|
224
|
+
await fs.outputFile(restrainedElasticsearchConfigPath, 'network.host: 0.0.0.0\nthread_pool.write.queue_size: 2');
|
|
255
225
|
}
|
|
256
226
|
promises.push(ensureRestrainedElasticsearch(options));
|
|
257
227
|
}
|
|
258
|
-
if (launchServices.includes(
|
|
228
|
+
if (launchServices.includes(Service.RestrainedOpensearch)) {
|
|
259
229
|
// we create the elasticsearch.yml file for tests
|
|
260
230
|
if (!options.ignoreMount) {
|
|
261
|
-
await
|
|
231
|
+
await fs.outputFile(restrainedElasticsearchConfigPath, 'network.host: 0.0.0.0\nthread_pool.write.queue_size: 2');
|
|
262
232
|
}
|
|
263
233
|
promises.push(ensureRestrainedOpensearch(options));
|
|
264
234
|
}
|
|
265
|
-
if (launchServices.includes(
|
|
235
|
+
if (launchServices.includes(Service.Opensearch)) {
|
|
266
236
|
promises.push(ensureOpensearch(options));
|
|
267
237
|
}
|
|
268
|
-
if (launchServices.includes(
|
|
238
|
+
if (launchServices.includes(Service.Kafka)) {
|
|
269
239
|
promises.push(ensureKafka(options));
|
|
270
240
|
}
|
|
271
|
-
if (launchServices.includes(
|
|
241
|
+
if (launchServices.includes(Service.Zookeeper)) {
|
|
272
242
|
promises.push(ensureZookeeper(options));
|
|
273
243
|
}
|
|
274
|
-
if (launchServices.includes(
|
|
244
|
+
if (launchServices.includes(Service.Minio)) {
|
|
275
245
|
promises.push(ensureMinio(options));
|
|
276
246
|
}
|
|
277
|
-
if (launchServices.includes(
|
|
247
|
+
if (launchServices.includes(Service.RabbitMQ)) {
|
|
278
248
|
// we create the rabbitmq.conf file for tests
|
|
279
249
|
if (!options.ignoreMount) {
|
|
280
|
-
await
|
|
250
|
+
await fs.outputFile(rabbitConfigPath, 'loopback_users = none\nloopback_users.guest = false');
|
|
281
251
|
}
|
|
282
252
|
promises.push(ensureRabbitMQ(options));
|
|
283
253
|
}
|
|
@@ -286,92 +256,83 @@ async function ensureServices(suite, options) {
|
|
|
286
256
|
fns.forEach((fn) => fn());
|
|
287
257
|
};
|
|
288
258
|
}
|
|
289
|
-
|
|
290
|
-
async function ensureKafka(options) {
|
|
259
|
+
export async function ensureKafka(options) {
|
|
291
260
|
let fn = () => { };
|
|
292
261
|
const startTime = Date.now();
|
|
293
|
-
fn = await startService(options,
|
|
262
|
+
fn = await startService(options, Service.Kafka);
|
|
294
263
|
await checkKafka(options, startTime);
|
|
295
264
|
return fn;
|
|
296
265
|
}
|
|
297
|
-
|
|
298
|
-
async function ensureZookeeper(options) {
|
|
266
|
+
export async function ensureZookeeper(options) {
|
|
299
267
|
let fn = () => { };
|
|
300
268
|
const startTime = Date.now();
|
|
301
|
-
fn = await startService(options,
|
|
269
|
+
fn = await startService(options, Service.Zookeeper);
|
|
302
270
|
await checkZookeeper(options, startTime);
|
|
303
271
|
return fn;
|
|
304
272
|
}
|
|
305
|
-
|
|
306
|
-
async function ensureMinio(options) {
|
|
273
|
+
export async function ensureMinio(options) {
|
|
307
274
|
let fn = () => { };
|
|
308
275
|
// Create fresh certs before loading minio if encryption enabled
|
|
309
276
|
if (options.encryptMinio) {
|
|
310
277
|
try {
|
|
311
|
-
|
|
312
|
-
const scriptLocation =
|
|
313
|
-
await (
|
|
278
|
+
signale.pending('Generating new ca-certificates for minio...');
|
|
279
|
+
const scriptLocation = path.join(getRootDir(), '/scripts/generate-cert.sh');
|
|
280
|
+
await execa(scriptLocation, ['localhost', 'minio', config.MINIO_HOSTNAME]);
|
|
314
281
|
}
|
|
315
282
|
catch (err) {
|
|
316
|
-
throw new
|
|
283
|
+
throw new TSError(`Error generating ca-certificates for minio: ${err.message}`);
|
|
317
284
|
}
|
|
318
|
-
|
|
285
|
+
signale.success('Successfully created new certificates for minio');
|
|
319
286
|
}
|
|
320
287
|
const startTime = Date.now();
|
|
321
|
-
fn = await startService(options,
|
|
288
|
+
fn = await startService(options, Service.Minio);
|
|
322
289
|
await checkMinio(options, startTime);
|
|
323
290
|
return fn;
|
|
324
291
|
}
|
|
325
|
-
|
|
326
|
-
async function ensureElasticsearch(options) {
|
|
292
|
+
export async function ensureElasticsearch(options) {
|
|
327
293
|
let fn = () => { };
|
|
328
294
|
const startTime = Date.now();
|
|
329
|
-
fn = await startService(options,
|
|
295
|
+
fn = await startService(options, Service.Elasticsearch);
|
|
330
296
|
await checkElasticsearch(options, startTime);
|
|
331
297
|
return fn;
|
|
332
298
|
}
|
|
333
|
-
|
|
334
|
-
async function ensureRestrainedElasticsearch(options) {
|
|
299
|
+
export async function ensureRestrainedElasticsearch(options) {
|
|
335
300
|
let fn = () => { };
|
|
336
301
|
const startTime = Date.now();
|
|
337
|
-
fn = await startService(options,
|
|
302
|
+
fn = await startService(options, Service.RestrainedElasticsearch);
|
|
338
303
|
await checkRestrainedElasticsearch(options, startTime);
|
|
339
304
|
return fn;
|
|
340
305
|
}
|
|
341
|
-
|
|
342
|
-
async function ensureRestrainedOpensearch(options) {
|
|
306
|
+
export async function ensureRestrainedOpensearch(options) {
|
|
343
307
|
let fn = () => { };
|
|
344
308
|
const startTime = Date.now();
|
|
345
|
-
fn = await startService(options,
|
|
309
|
+
fn = await startService(options, Service.RestrainedOpensearch);
|
|
346
310
|
await checkRestrainedOpensearch(options, startTime);
|
|
347
311
|
return fn;
|
|
348
312
|
}
|
|
349
|
-
|
|
350
|
-
async function ensureOpensearch(options) {
|
|
313
|
+
export async function ensureOpensearch(options) {
|
|
351
314
|
let fn = () => { };
|
|
352
315
|
const startTime = Date.now();
|
|
353
|
-
fn = await startService(options,
|
|
316
|
+
fn = await startService(options, Service.Opensearch);
|
|
354
317
|
await checkOpensearch(options, startTime);
|
|
355
318
|
return fn;
|
|
356
319
|
}
|
|
357
|
-
|
|
358
|
-
async function ensureRabbitMQ(options) {
|
|
320
|
+
export async function ensureRabbitMQ(options) {
|
|
359
321
|
let fn = () => { };
|
|
360
322
|
const startTime = Date.now();
|
|
361
|
-
fn = await startService(options,
|
|
323
|
+
fn = await startService(options, Service.RabbitMQ);
|
|
362
324
|
await checkRabbitMQ(options, startTime);
|
|
363
325
|
return fn;
|
|
364
326
|
}
|
|
365
|
-
exports.ensureRabbitMQ = ensureRabbitMQ;
|
|
366
327
|
async function stopService(service) {
|
|
367
328
|
const { name } = services[service];
|
|
368
|
-
const info = await
|
|
329
|
+
const info = await getContainerInfo(name);
|
|
369
330
|
if (!info)
|
|
370
331
|
return;
|
|
371
332
|
const startTime = Date.now();
|
|
372
|
-
|
|
373
|
-
await
|
|
374
|
-
|
|
333
|
+
signale.pending(`stopping service ${service}`);
|
|
334
|
+
await dockerStop(name);
|
|
335
|
+
signale.success(`stopped service ${service}, took ${toHumanTime(Date.now() - startTime)}`);
|
|
375
336
|
}
|
|
376
337
|
async function checkRestrainedOpensearch(options, startTime) {
|
|
377
338
|
const host = config.RESTRAINED_OPENSEARCH_HOST;
|
|
@@ -381,17 +342,16 @@ async function checkRestrainedOpensearch(options, startTime) {
|
|
|
381
342
|
if (dockerGateways.includes(config.OPENSEARCH_HOSTNAME))
|
|
382
343
|
return;
|
|
383
344
|
let error = '';
|
|
384
|
-
await
|
|
385
|
-
var _a;
|
|
345
|
+
await pWhile(async () => {
|
|
386
346
|
if (options.trace) {
|
|
387
|
-
|
|
347
|
+
signale.debug(`checking restrained opensearch at ${host}`);
|
|
388
348
|
}
|
|
389
349
|
else {
|
|
390
350
|
logger.debug(`checking restrained opensearch at ${host}`);
|
|
391
351
|
}
|
|
392
352
|
let body;
|
|
393
353
|
try {
|
|
394
|
-
({ body } = await (
|
|
354
|
+
({ body } = await got(host, {
|
|
395
355
|
username,
|
|
396
356
|
password,
|
|
397
357
|
https: { rejectUnauthorized: false },
|
|
@@ -405,22 +365,22 @@ async function checkRestrainedOpensearch(options, startTime) {
|
|
|
405
365
|
return false;
|
|
406
366
|
}
|
|
407
367
|
if (options.trace) {
|
|
408
|
-
|
|
368
|
+
signale.debug('got response from restrained opensearch service', body);
|
|
409
369
|
}
|
|
410
370
|
else {
|
|
411
371
|
logger.debug('got response from restrained opensearch service', body);
|
|
412
372
|
}
|
|
413
|
-
if (!
|
|
373
|
+
if (!body?.version?.number) {
|
|
414
374
|
return false;
|
|
415
375
|
}
|
|
416
376
|
const actual = body.version.number;
|
|
417
377
|
const expected = config.OPENSEARCH_VERSION;
|
|
418
|
-
if (
|
|
419
|
-
const took =
|
|
420
|
-
|
|
378
|
+
if (semver.satisfies(actual, `^${expected}`)) {
|
|
379
|
+
const took = toHumanTime(Date.now() - startTime);
|
|
380
|
+
signale.success(`restrained opensearch@${actual} is running at ${host}, took ${took}`);
|
|
421
381
|
return true;
|
|
422
382
|
}
|
|
423
|
-
throw new
|
|
383
|
+
throw new TSError(`restrained opensearch at ${host} does not satisfy required version of ${expected}, got ${actual}`, {
|
|
424
384
|
retryable: false,
|
|
425
385
|
});
|
|
426
386
|
}, {
|
|
@@ -438,17 +398,16 @@ async function checkOpensearch(options, startTime) {
|
|
|
438
398
|
if (dockerGateways.includes(config.OPENSEARCH_HOSTNAME))
|
|
439
399
|
return;
|
|
440
400
|
let error = '';
|
|
441
|
-
await
|
|
442
|
-
var _a;
|
|
401
|
+
await pWhile(async () => {
|
|
443
402
|
if (options.trace) {
|
|
444
|
-
|
|
403
|
+
signale.debug(`checking opensearch at ${host}`);
|
|
445
404
|
}
|
|
446
405
|
else {
|
|
447
406
|
logger.debug(`checking opensearch at ${host}`);
|
|
448
407
|
}
|
|
449
408
|
let body;
|
|
450
409
|
try {
|
|
451
|
-
({ body } = await (
|
|
410
|
+
({ body } = await got(host, {
|
|
452
411
|
username,
|
|
453
412
|
password,
|
|
454
413
|
https: { rejectUnauthorized: false },
|
|
@@ -462,22 +421,22 @@ async function checkOpensearch(options, startTime) {
|
|
|
462
421
|
return false;
|
|
463
422
|
}
|
|
464
423
|
if (options.trace) {
|
|
465
|
-
|
|
424
|
+
signale.debug('got response from opensearch service', body);
|
|
466
425
|
}
|
|
467
426
|
else {
|
|
468
427
|
logger.debug('got response from opensearch service', body);
|
|
469
428
|
}
|
|
470
|
-
if (!
|
|
429
|
+
if (!body?.version?.number) {
|
|
471
430
|
return false;
|
|
472
431
|
}
|
|
473
432
|
const actual = body.version.number;
|
|
474
433
|
const expected = config.OPENSEARCH_VERSION;
|
|
475
|
-
if (
|
|
476
|
-
const took =
|
|
477
|
-
|
|
434
|
+
if (semver.satisfies(actual, `^${expected}`)) {
|
|
435
|
+
const took = toHumanTime(Date.now() - startTime);
|
|
436
|
+
signale.success(`opensearch@${actual} is running at ${host}, took ${took}`);
|
|
478
437
|
return true;
|
|
479
438
|
}
|
|
480
|
-
throw new
|
|
439
|
+
throw new TSError(`Opensearch at ${host} does not satisfy required version of ${expected}, got ${actual}`, {
|
|
481
440
|
retryable: false,
|
|
482
441
|
});
|
|
483
442
|
}, {
|
|
@@ -493,17 +452,16 @@ async function checkRestrainedElasticsearch(options, startTime) {
|
|
|
493
452
|
if (dockerGateways.includes(config.ELASTICSEARCH_HOSTNAME))
|
|
494
453
|
return;
|
|
495
454
|
let error = '';
|
|
496
|
-
await
|
|
497
|
-
var _a;
|
|
455
|
+
await pWhile(async () => {
|
|
498
456
|
if (options.trace) {
|
|
499
|
-
|
|
457
|
+
signale.debug(`checking restrained elasticsearch at ${host}`);
|
|
500
458
|
}
|
|
501
459
|
else {
|
|
502
460
|
logger.debug(`checking restrained elasticsearch at ${host}`);
|
|
503
461
|
}
|
|
504
462
|
let body;
|
|
505
463
|
try {
|
|
506
|
-
({ body } = await (
|
|
464
|
+
({ body } = await got(host, {
|
|
507
465
|
responseType: 'json',
|
|
508
466
|
throwHttpErrors: true,
|
|
509
467
|
retry: 0,
|
|
@@ -514,22 +472,22 @@ async function checkRestrainedElasticsearch(options, startTime) {
|
|
|
514
472
|
return false;
|
|
515
473
|
}
|
|
516
474
|
if (options.trace) {
|
|
517
|
-
|
|
475
|
+
signale.debug('got response from restrained elasticsearch service', body);
|
|
518
476
|
}
|
|
519
477
|
else {
|
|
520
478
|
logger.debug('got response from restrained elasticsearch service', body);
|
|
521
479
|
}
|
|
522
|
-
if (!
|
|
480
|
+
if (!body?.version?.number) {
|
|
523
481
|
return false;
|
|
524
482
|
}
|
|
525
483
|
const actual = body.version.number;
|
|
526
484
|
const expected = config.ELASTICSEARCH_VERSION;
|
|
527
|
-
if (
|
|
528
|
-
const took =
|
|
529
|
-
|
|
485
|
+
if (semver.satisfies(actual, `^${expected}`)) {
|
|
486
|
+
const took = toHumanTime(Date.now() - startTime);
|
|
487
|
+
signale.success(`elasticsearch@${actual} is running at ${host}, took ${took}`);
|
|
530
488
|
return true;
|
|
531
489
|
}
|
|
532
|
-
throw new
|
|
490
|
+
throw new TSError(`Restrained Elasticsearch at ${host} does not satisfy required version of ${expected}, got ${actual}`, {
|
|
533
491
|
retryable: false,
|
|
534
492
|
});
|
|
535
493
|
}, {
|
|
@@ -545,17 +503,16 @@ async function checkElasticsearch(options, startTime) {
|
|
|
545
503
|
if (dockerGateways.includes(config.ELASTICSEARCH_HOSTNAME))
|
|
546
504
|
return;
|
|
547
505
|
let error = '';
|
|
548
|
-
await
|
|
549
|
-
var _a;
|
|
506
|
+
await pWhile(async () => {
|
|
550
507
|
if (options.trace) {
|
|
551
|
-
|
|
508
|
+
signale.debug(`checking elasticsearch at ${host}`);
|
|
552
509
|
}
|
|
553
510
|
else {
|
|
554
511
|
logger.debug(`checking elasticsearch at ${host}`);
|
|
555
512
|
}
|
|
556
513
|
let body;
|
|
557
514
|
try {
|
|
558
|
-
({ body } = await (
|
|
515
|
+
({ body } = await got(host, {
|
|
559
516
|
responseType: 'json',
|
|
560
517
|
throwHttpErrors: true,
|
|
561
518
|
retry: 0,
|
|
@@ -566,22 +523,22 @@ async function checkElasticsearch(options, startTime) {
|
|
|
566
523
|
return false;
|
|
567
524
|
}
|
|
568
525
|
if (options.trace) {
|
|
569
|
-
|
|
526
|
+
signale.debug('got response from elasticsearch service', body);
|
|
570
527
|
}
|
|
571
528
|
else {
|
|
572
529
|
logger.debug('got response from elasticsearch service', body);
|
|
573
530
|
}
|
|
574
|
-
if (!
|
|
531
|
+
if (!body?.version?.number) {
|
|
575
532
|
return false;
|
|
576
533
|
}
|
|
577
534
|
const actual = body.version.number;
|
|
578
535
|
const expected = config.ELASTICSEARCH_VERSION;
|
|
579
|
-
if (
|
|
580
|
-
const took =
|
|
581
|
-
|
|
536
|
+
if (semver.satisfies(actual, `^${expected}`)) {
|
|
537
|
+
const took = toHumanTime(Date.now() - startTime);
|
|
538
|
+
signale.success(`elasticsearch@${actual} is running at ${host}, took ${took}`);
|
|
582
539
|
return true;
|
|
583
540
|
}
|
|
584
|
-
throw new
|
|
541
|
+
throw new TSError(`Elasticsearch at ${host} does not satisfy required version of ${expected}, got ${actual}`, {
|
|
585
542
|
retryable: false,
|
|
586
543
|
});
|
|
587
544
|
}, {
|
|
@@ -597,39 +554,39 @@ async function checkMinio(options, startTime) {
|
|
|
597
554
|
if (dockerGateways.includes(config.MINIO_HOSTNAME))
|
|
598
555
|
return;
|
|
599
556
|
let error = '';
|
|
600
|
-
await
|
|
557
|
+
await pWhile(async () => {
|
|
601
558
|
if (options.trace) {
|
|
602
|
-
|
|
559
|
+
signale.debug(`checking MinIO at ${host}`);
|
|
603
560
|
}
|
|
604
561
|
else {
|
|
605
562
|
logger.debug(`checking MinIO at ${host}`);
|
|
606
563
|
}
|
|
607
564
|
let statusCode;
|
|
608
|
-
const rootCaPath =
|
|
565
|
+
const rootCaPath = path.join(getRootDir(), 'e2e/test/certs/CAs/rootCA.pem');
|
|
609
566
|
try {
|
|
610
|
-
({ statusCode } = await (
|
|
567
|
+
({ statusCode } = await got('minio/health/live', {
|
|
611
568
|
prefixUrl: host,
|
|
612
569
|
responseType: 'json',
|
|
613
570
|
throwHttpErrors: false,
|
|
614
571
|
https: config.ENCRYPT_MINIO
|
|
615
|
-
? { certificateAuthority:
|
|
572
|
+
? { certificateAuthority: fs.readFileSync(rootCaPath) }
|
|
616
573
|
: {},
|
|
617
574
|
retry: 0,
|
|
618
575
|
}));
|
|
619
576
|
}
|
|
620
577
|
catch (err) {
|
|
621
578
|
error = err.message;
|
|
622
|
-
statusCode =
|
|
579
|
+
statusCode = getErrorStatusCode(err);
|
|
623
580
|
}
|
|
624
581
|
if (options.trace) {
|
|
625
|
-
|
|
582
|
+
signale.debug('got response from MinIO service', { statusCode });
|
|
626
583
|
}
|
|
627
584
|
else {
|
|
628
585
|
logger.debug('got response from MinIO service', { statusCode });
|
|
629
586
|
}
|
|
630
587
|
if (statusCode === 200) {
|
|
631
|
-
const took =
|
|
632
|
-
|
|
588
|
+
const took = toHumanTime(Date.now() - startTime);
|
|
589
|
+
signale.success(`MinIO is running at ${host}, took ${took}`);
|
|
633
590
|
return true;
|
|
634
591
|
}
|
|
635
592
|
return false;
|
|
@@ -646,16 +603,16 @@ async function checkRabbitMQ(options, startTime) {
|
|
|
646
603
|
if (dockerGateways.includes(config.RABBITMQ_HOSTNAME))
|
|
647
604
|
return;
|
|
648
605
|
let error = '';
|
|
649
|
-
await
|
|
606
|
+
await pWhile(async () => {
|
|
650
607
|
if (options.trace) {
|
|
651
|
-
|
|
608
|
+
signale.debug(`checking RabbitMQ at ${managementEndpoint}`);
|
|
652
609
|
}
|
|
653
610
|
else {
|
|
654
611
|
logger.debug(`checking RabbitMQ at ${managementEndpoint}`);
|
|
655
612
|
}
|
|
656
613
|
let statusCode;
|
|
657
614
|
try {
|
|
658
|
-
({ statusCode } = await (
|
|
615
|
+
({ statusCode } = await got('api/overview', {
|
|
659
616
|
prefixUrl: managementEndpoint,
|
|
660
617
|
responseType: 'json',
|
|
661
618
|
throwHttpErrors: false,
|
|
@@ -666,17 +623,17 @@ async function checkRabbitMQ(options, startTime) {
|
|
|
666
623
|
}
|
|
667
624
|
catch (err) {
|
|
668
625
|
error = err.message;
|
|
669
|
-
statusCode =
|
|
626
|
+
statusCode = getErrorStatusCode(err);
|
|
670
627
|
}
|
|
671
628
|
if (options.trace) {
|
|
672
|
-
|
|
629
|
+
signale.debug('got response from RabbitMQ service', { statusCode });
|
|
673
630
|
}
|
|
674
631
|
else {
|
|
675
632
|
logger.debug('got response from RabbitMQ service', { statusCode });
|
|
676
633
|
}
|
|
677
634
|
if (statusCode === 200) {
|
|
678
|
-
const took =
|
|
679
|
-
|
|
635
|
+
const took = toHumanTime(Date.now() - startTime);
|
|
636
|
+
signale.success(`RabbitMQ is running at ${managementEndpoint}, took ${took}`);
|
|
680
637
|
return true;
|
|
681
638
|
}
|
|
682
639
|
return false;
|
|
@@ -697,12 +654,12 @@ async function checkKafka(options, startTime) {
|
|
|
697
654
|
if (dockerGateways.includes(config.KAFKA_HOSTNAME))
|
|
698
655
|
return;
|
|
699
656
|
if (options.trace) {
|
|
700
|
-
|
|
657
|
+
signale.debug(`checking kafka at ${host}`);
|
|
701
658
|
}
|
|
702
659
|
else {
|
|
703
660
|
logger.debug(`checking kafka at ${host}`);
|
|
704
661
|
}
|
|
705
|
-
const kafka = new
|
|
662
|
+
const kafka = new Kafka({
|
|
706
663
|
clientId: 'tera-test',
|
|
707
664
|
brokers: [kafkaBroker],
|
|
708
665
|
logLevel: 0,
|
|
@@ -714,7 +671,7 @@ async function checkKafka(options, startTime) {
|
|
|
714
671
|
}
|
|
715
672
|
});
|
|
716
673
|
const producer = kafka.producer();
|
|
717
|
-
const took =
|
|
674
|
+
const took = toHumanTime(Date.now() - startTime);
|
|
718
675
|
try {
|
|
719
676
|
await producer.connect();
|
|
720
677
|
}
|
|
@@ -727,48 +684,48 @@ async function checkKafka(options, startTime) {
|
|
|
727
684
|
}
|
|
728
685
|
throw new Error(err.message);
|
|
729
686
|
}
|
|
730
|
-
|
|
687
|
+
signale.success(`kafka@${config.KAFKA_VERSION} is running at ${config.KAFKA_BROKER}, took ${took}`);
|
|
731
688
|
}
|
|
732
689
|
async function checkZookeeper(options, startTime) {
|
|
733
|
-
const took =
|
|
734
|
-
|
|
690
|
+
const took = toHumanTime(Date.now() - startTime);
|
|
691
|
+
signale.success(` zookeeper*might* be running, took ${took}`);
|
|
735
692
|
}
|
|
736
693
|
async function startService(options, service) {
|
|
737
694
|
let serviceName = service;
|
|
738
695
|
if (serviceName === 'restrained_elasticsearch') {
|
|
739
|
-
serviceName =
|
|
696
|
+
serviceName = Service.Elasticsearch;
|
|
740
697
|
}
|
|
741
698
|
if (serviceName === 'restrained_opensearch') {
|
|
742
|
-
serviceName =
|
|
699
|
+
serviceName = Service.Opensearch;
|
|
743
700
|
}
|
|
744
701
|
let version;
|
|
745
702
|
if (serviceName === 'kafka') {
|
|
746
703
|
version = config[`${serviceName.toUpperCase()}_IMAGE_VERSION`];
|
|
747
|
-
|
|
704
|
+
signale.pending(`starting ${service}@${config.KAFKA_VERSION} service...`);
|
|
748
705
|
}
|
|
749
706
|
else {
|
|
750
707
|
version = config[`${serviceName.toUpperCase()}_VERSION`];
|
|
751
|
-
|
|
708
|
+
signale.pending(`starting ${service}@${version} service...`);
|
|
752
709
|
}
|
|
753
710
|
if (options.useExistingServices) {
|
|
754
|
-
|
|
711
|
+
signale.warn(`expecting ${service}@${version} to be running (this can be dangerous)...`);
|
|
755
712
|
return () => { };
|
|
756
713
|
}
|
|
757
714
|
if (options.testPlatform === 'kubernetes' || options.testPlatform === 'kubernetesV2') {
|
|
758
|
-
const kind = new
|
|
715
|
+
const kind = new Kind(config.K8S_VERSION, options.kindClusterName);
|
|
759
716
|
await kind.loadServiceImage(service, services[service].image, version);
|
|
760
|
-
await
|
|
761
|
-
await
|
|
717
|
+
await k8sStopService(service);
|
|
718
|
+
await k8sStartService(service, services[service].image, version, kind);
|
|
762
719
|
return () => { };
|
|
763
720
|
}
|
|
764
721
|
await stopService(service);
|
|
765
|
-
const fn = await
|
|
722
|
+
const fn = await dockerRun(services[service], version, options.ignoreMount, options.debug || options.trace);
|
|
766
723
|
return () => {
|
|
767
724
|
try {
|
|
768
725
|
fn();
|
|
769
726
|
}
|
|
770
727
|
catch (err) {
|
|
771
|
-
|
|
728
|
+
signale.error(new TSError(err, {
|
|
772
729
|
reason: `Failed to stop ${service}@${version} service`,
|
|
773
730
|
}));
|
|
774
731
|
}
|