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