Skip to content

Commit b5c9722

Browse files
add utility to setup configuration at the beginning of the tests
Issue: ZENKO-5259
1 parent 98252c3 commit b5c9722

54 files changed

Lines changed: 596 additions & 408 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/scripts/end2end/configure-e2e-endpoints.sh

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -131,21 +131,4 @@ if ! grep -q "backbeat-api.zenko.local" /etc/hosts 2>/dev/null; then
131131
echo "127.0.0.1 ${ZENKO_HOSTS}" | sudo tee -a /etc/hosts
132132
fi
133133

134-
# --- Export endpoint variables ---
135-
# These use the ingress hostnames, reachable from outside the cluster.
136-
137-
export CLOUDSERVER_HOST="s3.zenko.local"
138-
export CLOUDSERVER_ENDPOINT="http://s3.zenko.local"
139-
export BACKBEAT_API_ENDPOINT="http://backbeat-api.zenko.local"
140-
export VAULT_ENDPOINT="http://iam.zenko.local"
141-
export VAULT_STS_ENDPOINT="http://sts.zenko.local"
142-
export VAULT_AUTH_HOST="vault-auth.zenko.local"
143-
export KAFKA_CONNECT_URL="http://kafka-connect.zenko.local/connectors"
144-
145134
echo "=== Endpoints configured for out-of-cluster access ==="
146-
echo " S3: ${CLOUDSERVER_ENDPOINT}"
147-
echo " Backbeat API: ${BACKBEAT_API_ENDPOINT}"
148-
echo " Vault IAM: ${VAULT_ENDPOINT}"
149-
echo " Vault STS: ${VAULT_STS_ENDPOINT}"
150-
echo " Vault Auth: http://${VAULT_AUTH_HOST}"
151-
echo " Kafka Connect: ${KAFKA_CONNECT_URL}"

.github/scripts/end2end/setup-e2e-env.sh

Lines changed: 2 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,6 @@ export MONGO_REPLICA_SET_HOSTS="localhost:${MONGO_PORT}"
4848
# --- 5. Credentials from K8s secrets ---
4949
export ADMIN_ACCESS_KEY_ID=$(kubectl get secret ${ZENKO_NAME}-management-vault-admin-creds.v1 -o jsonpath='{.data.accessKey}' | base64 -d)
5050
export ADMIN_SECRET_ACCESS_KEY=$(kubectl get secret ${ZENKO_NAME}-management-vault-admin-creds.v1 -o jsonpath='{.data.secretKey}' | base64 -d)
51-
export ZENKO_ACCESS_KEY=$(kubectl get secret ${ZENKO_NAME}-account-zenko -o jsonpath='{.data.AccessKeyId}' | base64 -d)
52-
export ZENKO_SECRET_KEY=$(kubectl get secret ${ZENKO_NAME}-account-zenko -o jsonpath='{.data.SecretAccessKey}' | base64 -d)
53-
export ZENKO_SESSION_TOKEN=$(kubectl get secret ${ZENKO_NAME}-account-zenko -o jsonpath='{.data.SessionToken}' | base64 -d)
5451

5552
# CRR account credentials
5653
_src_secret="${ZENKO_NAME}-account-${CRR_SOURCE_ACCOUNT_NAME:-crr-source-account}"
@@ -72,11 +69,8 @@ export CRR_DESTINATION_INFO="{\"AccessKeyId\":\"${DESTINATION_ACCESS_KEY}\",\"Se
7269
export KEYCLOAK_TEST_USER="${OIDC_USERNAME}-norights"
7370
export KEYCLOAK_TEST_PASSWORD=${OIDC_PASSWORD}
7471
export KEYCLOAK_TEST_HOST=${OIDC_ENDPOINT}
75-
export KEYCLOAK_TEST_PORT="80"
7672
export KEYCLOAK_TEST_REALM_NAME=${OIDC_REALM}
7773
export KEYCLOAK_REALM=${OIDC_REALM} # cli-testing KeycloakSetup hook reads KEYCLOAK_REALM from env
78-
export KEYCLOAK_TEST_CLIENT_ID=${OIDC_CLIENT_ID}
79-
export KEYCLOAK_TEST_GRANT_TYPE="password"
8074

8175
# --- 7. Test backend env vars ---
8276
export AWS_BACKEND_SOURCE_LOCATION AWS_BACKEND_DESTINATION_LOCATION
@@ -131,40 +125,8 @@ export TARGET_VERSION=$(sed -n 's/^VERSION="\([^"]*\)"/\1/p' "${ZENKO_ROOT}/VERS
131125
if [ "${SKIP_CTST:-}" = "1" ]; then
132126
echo "SKIP_CTST=1 set, skipping CTST-specific setup"
133127
else
134-
# CTST account & user names
135-
export ZENKO_ACCOUNT_NAME="zenko-ctst"
136-
export STORAGE_MANAGER_USER_NAME="storage_manager"
137-
export STORAGE_ACCOUNT_OWNER_USER_NAME="storage_account_owner"
138-
export DATA_CONSUMER_USER_NAME="data_consumer"
139-
export DATA_ACCESSOR_USER_NAME="data_accessor"
140-
# env vars used by cli-testing's Keycloak.ts seeder
141-
export ACCOUNT="${ZENKO_ACCOUNT_NAME}"
142-
export STORAGE_MANAGER="${STORAGE_MANAGER_USER_NAME}"
143-
export STORAGE_ACCOUNT_OWNER="${STORAGE_ACCOUNT_OWNER_USER_NAME}"
144-
export DATA_CONSUMER="${DATA_CONSUMER_USER_NAME}"
145-
export DATA_ACCESSOR="${DATA_ACCESSOR_USER_NAME}"
128+
export ACCOUNT="zenko-ctst"
146129
export SEED_KEYCLOAK_DEFAULT_ROLES=true
147-
export ZENKO_PORT="80"
148-
149-
# PRA admin credentials (may not exist for non-PRA runs; ignore errors)
150-
export ADMIN_PRA_ACCESS_KEY_ID=$(kubectl get secret ${ZENKO_NAME}-pra-management-vault-admin-creds.v1 -o jsonpath='{.data.accessKey}' 2>/dev/null | base64 -d 2>/dev/null || echo "")
151-
export ADMIN_PRA_SECRET_ACCESS_KEY=$(kubectl get secret ${ZENKO_NAME}-pra-management-vault-admin-creds.v1 -o jsonpath='{.data.secretKey}' 2>/dev/null | base64 -d 2>/dev/null || echo "")
152-
153-
# --- 11. Service user credentials ---
154-
BACKBEAT_LCBP_1_CREDS=$(kubectl get secret -l app.kubernetes.io/name=backbeat-lcbp-user-creds,app.kubernetes.io/instance=${ZENKO_NAME} -o jsonpath='{.items[0].data.backbeat-lifecycle-bp-1\.json}' | base64 -d)
155-
BACKBEAT_LCC_1_CREDS=$(kubectl get secret -l app.kubernetes.io/name=backbeat-lcc-user-creds,app.kubernetes.io/instance=${ZENKO_NAME} -o jsonpath='{.items[0].data.backbeat-lifecycle-conductor-1\.json}' | base64 -d)
156-
BACKBEAT_LCOP_1_CREDS=$(kubectl get secret -l app.kubernetes.io/name=backbeat-lcop-user-creds,app.kubernetes.io/instance=${ZENKO_NAME} -o jsonpath='{.items[0].data.backbeat-lifecycle-op-1\.json}' | base64 -d)
157-
BACKBEAT_QP_1_CREDS=$(kubectl get secret -l app.kubernetes.io/name=backbeat-qp-user-creds,app.kubernetes.io/instance=${ZENKO_NAME} -o jsonpath='{.items[0].data.backbeat-qp-1\.json}' | base64 -d)
158-
SORBET_FWD_2_ACCESSKEY=$(kubectl get secret -l app.kubernetes.io/name=sorbet-fwd-creds,app.kubernetes.io/instance=${ZENKO_NAME} -o jsonpath='{.items[0].data.accessKey}' | base64 -d)
159-
SORBET_FWD_2_SECRETKEY=$(kubectl get secret -l app.kubernetes.io/name=sorbet-fwd-creds,app.kubernetes.io/instance=${ZENKO_NAME} -o jsonpath='{.items[0].data.secretKey}' | base64 -d)
160-
export SERVICE_USERS_CREDENTIALS=$(echo '{"backbeat-lifecycle-bp-1":'"${BACKBEAT_LCBP_1_CREDS}"',"backbeat-lifecycle-conductor-1":'"${BACKBEAT_LCC_1_CREDS}"',"backbeat-lifecycle-op-1":'"${BACKBEAT_LCOP_1_CREDS}"',"backbeat-qp-1":'"${BACKBEAT_QP_1_CREDS}"',"sorbet-fwd-2":{"accessKey":"'"${SORBET_FWD_2_ACCESSKEY}"'","secretKey":"'"${SORBET_FWD_2_SECRETKEY}"'"}}' | jq -R)
161-
162-
# --- 12. Kafka topics for sorbet ---
163-
SORBET_CONFIG=$(kubectl get secret -l app.kubernetes.io/name=cold-sorbet-config-e2e-azure-archive,app.kubernetes.io/instance=${ZENKO_NAME} \
164-
-o jsonpath='{.items[0].data.config\.json}' | base64 -di)
165-
export KAFKA_DEAD_LETTER_TOPIC=$(echo "${SORBET_CONFIG}" | jq -r '."kafka-dead-letter-topic"')
166-
export KAFKA_OBJECT_TASK_TOPIC=$(echo "${SORBET_CONFIG}" | jq -r '."kafka-object-task-topic"')
167-
export KAFKA_GC_REQUEST_TOPIC=$(echo "${SORBET_CONFIG}" | jq -r '."kafka-gc-request-topic"')
168130

169131
# --- 13. Kafka host from backbeat config + port-forward ---
170132
KAFKA_HOST_PORT_ORIG=$(kubectl get secret -l app.kubernetes.io/name=backbeat-config,app.kubernetes.io/instance=${ZENKO_NAME} \
@@ -235,23 +197,7 @@ else
235197
fi
236198
export PROMETHEUS_SERVICE="${PROMETHEUS_SVC}.${NAMESPACE}.svc.cluster.local"
237199

238-
# --- 14. Zenko CR metadata ---
239-
export TIME_PROGRESSION_FACTOR=$(kubectl get zenko ${ZENKO_NAME} -o jsonpath="{.metadata.annotations.zenko\.io/time-progression-factor}")
240-
export INSTANCE_ID=$(kubectl get zenko ${ZENKO_NAME} -o jsonpath='{.status.instanceID}')
241-
export KAFKA_CLEANER_INTERVAL=$(kubectl get zenko ${ZENKO_NAME} -o jsonpath='{.spec.kafkaCleaner.interval}')
242-
export SORBETD_RESTORE_TIMEOUT=$(kubectl get zenko ${ZENKO_NAME} -o jsonpath='{.spec.sorbet.server.azure.restoreTimeout}')
243-
244-
# Backbeat API (use ingress — already exported as BACKBEAT_API_ENDPOINT)
245-
export BACKBEAT_API_HOST="backbeat-api.zenko.local"
246-
export BACKBEAT_API_PORT="80"
247-
248-
# Utilization service
249-
export UTILIZATION_SERVICE_HOST=$(kubectl get zenko ${ZENKO_NAME} -o jsonpath='{.spec.scuba.api.ingress.hostname}')
250-
export UTILIZATION_SERVICE_PORT="80"
251-
252200
# Azure archive settings
253-
export AZURE_ARCHIVE_ACCESS_TIER="Hot"
254-
export AZURE_ARCHIVE_MANIFEST_ACCESS_TIER="Hot"
255201
export AZURE_BLOB_URL="${AZURE_BACKEND_ENDPOINT}"
256202
export AZURE_QUEUE_URL="${AZURE_BACKEND_QUEUE_ENDPOINT}"
257203

@@ -286,11 +232,7 @@ else
286232
"subdomain":"${SUBDOMAIN}",
287233
"DRSubdomain":"${DR_SUBDOMAIN:-}",
288234
"ssl":false,
289-
"port":"${ZENKO_PORT}",
290-
"AccountName":"${ZENKO_ACCOUNT_NAME}",
291-
"AdminAccessKey":"${ADMIN_ACCESS_KEY_ID}",
292-
"AdminSecretKey":"${ADMIN_SECRET_ACCESS_KEY}",
293-
"VaultAuthHost":"${VAULT_AUTH_HOST}",
235+
"port":"80",
294236
"NotificationDestination":"${NOTIF_DEST_NAME}",
295237
"NotificationDestinationTopic":"${NOTIF_DEST_TOPIC}",
296238
"NotificationDestinationAlt":"${NOTIF_ALT_DEST_NAME}",
@@ -304,40 +246,16 @@ else
304246
"PrometheusEndpoint":"http://localhost:${PROMETHEUS_PORT}",
305247
"KafkaHosts":"${KAFKA_HOST_PORT}",
306248
"KafkaAuthHosts":"${KAFKA_AUTH_HOST_PORT}",
307-
"KafkaConnectUrl":"${KAFKA_CONNECT_URL}",
308249
"KeycloakUsername":"${OIDC_USERNAME}",
309250
"KeycloakPassword":"${OIDC_PASSWORD}",
310251
"KeycloakTestPassword":"${KEYCLOAK_TEST_PASSWORD}",
311252
"KeycloakHost":"${OIDC_HOST}",
312-
"KeycloakPort":"${KEYCLOAK_TEST_PORT}",
313253
"KeycloakRealm":"${KEYCLOAK_TEST_REALM_NAME}",
314-
"KeycloakClientId":"${KEYCLOAK_TEST_CLIENT_ID}",
315-
"KeycloakGrantType":"${KEYCLOAK_TEST_GRANT_TYPE}",
316-
"StorageManagerUsername":"${STORAGE_MANAGER_USER_NAME}",
317-
"StorageAccountOwnerUsername":"${STORAGE_ACCOUNT_OWNER_USER_NAME}",
318-
"DataConsumerUsername":"${DATA_CONSUMER_USER_NAME}",
319-
"DataAccessorUsername":"${DATA_ACCESSOR_USER_NAME}",
320-
"ServiceUsersCredentials":${SERVICE_USERS_CREDENTIALS},
321254
"AzureAccountName":"${AZURE_ACCOUNT_NAME}",
322255
"AzureAccountKey":"${AZURE_SECRET_KEY}",
323256
"AzureArchiveContainer":"${AZURE_ARCHIVE_BUCKET_NAME}",
324257
"AzureArchiveContainer2":"${AZURE_ARCHIVE_BUCKET_NAME_2:-}",
325-
"AzureArchiveAccessTier":"${AZURE_ARCHIVE_ACCESS_TIER}",
326-
"AzureArchiveManifestTier":"${AZURE_ARCHIVE_MANIFEST_ACCESS_TIER}",
327258
"AzureArchiveQueue":"${AZURE_ARCHIVE_QUEUE_NAME:-}",
328-
"TimeProgressionFactor":"${TIME_PROGRESSION_FACTOR}",
329-
"KafkaObjectTaskTopic":"${KAFKA_OBJECT_TASK_TOPIC}",
330-
"KafkaGCRequestTopic":"${KAFKA_GC_REQUEST_TOPIC}",
331-
"KafkaDeadLetterQueueTopic":"${KAFKA_DEAD_LETTER_TOPIC}",
332-
"InstanceID":"${INSTANCE_ID}",
333-
"BackbeatApiHost":"${BACKBEAT_API_HOST}",
334-
"BackbeatApiPort":"${BACKBEAT_API_PORT}",
335-
"KafkaCleanerInterval":"${KAFKA_CLEANER_INTERVAL}",
336-
"SorbetdRestoreTimeout":"${SORBETD_RESTORE_TIMEOUT}",
337-
"DRAdminAccessKey":"${ADMIN_PRA_ACCESS_KEY_ID}",
338-
"DRAdminSecretKey":"${ADMIN_PRA_SECRET_ACCESS_KEY}",
339-
"UtilizationServiceHost":"${UTILIZATION_SERVICE_HOST}",
340-
"UtilizationServicePort":"${UTILIZATION_SERVICE_PORT}",
341259
"KubeconfigPath":"${KUBECONFIG:-${HOME}/.kube/config}"
342260
}
343261
EOF
@@ -358,24 +276,11 @@ if [ -n "${GITHUB_ENV:-}" ]; then # Don't do it for Codespace
358276
echo "MONGO_AUTH_PASSWORD=$MONGO_AUTH_PASSWORD" >> "$GITHUB_ENV"
359277
echo "ADMIN_ACCESS_KEY_ID=$ADMIN_ACCESS_KEY_ID" >> "$GITHUB_ENV"
360278
echo "ADMIN_SECRET_ACCESS_KEY=$ADMIN_SECRET_ACCESS_KEY" >> "$GITHUB_ENV"
361-
echo "ZENKO_ACCESS_KEY=$ZENKO_ACCESS_KEY" >> "$GITHUB_ENV"
362-
echo "ZENKO_SECRET_KEY=$ZENKO_SECRET_KEY" >> "$GITHUB_ENV"
363-
echo "ZENKO_SESSION_TOKEN=$ZENKO_SESSION_TOKEN" >> "$GITHUB_ENV"
364279
echo "KEYCLOAK_TEST_USER=$KEYCLOAK_TEST_USER" >> "$GITHUB_ENV"
365280
echo "KEYCLOAK_TEST_PASSWORD=$KEYCLOAK_TEST_PASSWORD" >> "$GITHUB_ENV"
366281
echo "KEYCLOAK_TEST_HOST=$KEYCLOAK_TEST_HOST" >> "$GITHUB_ENV"
367-
echo "KEYCLOAK_TEST_PORT=$KEYCLOAK_TEST_PORT" >> "$GITHUB_ENV"
368282
echo "KEYCLOAK_TEST_REALM_NAME=$KEYCLOAK_TEST_REALM_NAME" >> "$GITHUB_ENV"
369283
echo "KEYCLOAK_REALM=$KEYCLOAK_REALM" >> "$GITHUB_ENV"
370-
echo "KEYCLOAK_TEST_CLIENT_ID=$KEYCLOAK_TEST_CLIENT_ID" >> "$GITHUB_ENV"
371-
echo "KEYCLOAK_TEST_GRANT_TYPE=$KEYCLOAK_TEST_GRANT_TYPE" >> "$GITHUB_ENV"
372-
echo "CLOUDSERVER_HOST=$CLOUDSERVER_HOST" >> "$GITHUB_ENV"
373-
echo "CLOUDSERVER_ENDPOINT=$CLOUDSERVER_ENDPOINT" >> "$GITHUB_ENV"
374-
echo "BACKBEAT_API_ENDPOINT=$BACKBEAT_API_ENDPOINT" >> "$GITHUB_ENV"
375-
echo "VAULT_ENDPOINT=$VAULT_ENDPOINT" >> "$GITHUB_ENV"
376-
echo "VAULT_STS_ENDPOINT=$VAULT_STS_ENDPOINT" >> "$GITHUB_ENV"
377-
echo "VAULT_AUTH_HOST=$VAULT_AUTH_HOST" >> "$GITHUB_ENV"
378-
echo "KAFKA_CONNECT_URL=$KAFKA_CONNECT_URL" >> "$GITHUB_ENV"
379284
echo "NODE_EXTRA_CA_CERTS=$NODE_EXTRA_CA_CERTS" >> "$GITHUB_ENV"
380285
echo "MOCHA_FILE=$MOCHA_FILE" >> "$GITHUB_ENV"
381286
echo "VERIFY_CERTIFICATES=$VERIFY_CERTIFICATES" >> "$GITHUB_ENV"

tests/functional/ctst/common/common.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { ListObjectVersionsOutput } from '@aws-sdk/client-s3';
22
import { Given, setDefaultTimeout, Then, When } from '@cucumber/cucumber';
33
import { CacheHelper, Constants, Identity, IdentityEnum, S3, Utils } from 'cli-testing';
4+
import { config, ZENKO_ACCOUNT_NAME } from 'tests_common/configuration';
45
import Zenko from 'world/Zenko';
56
import { parseGoDuration, safeJsonParse } from './utils';
67
import assert from 'assert';
@@ -39,8 +40,7 @@ export async function cleanS3Bucket(
3940
// Do not try to clean a bucket with compliance retention
4041
return;
4142
}
42-
Identity.useIdentity(IdentityEnum.ACCOUNT, world.getSaved<string>('accountName') ||
43-
world.parameters.AccountName);
43+
Identity.useIdentity(IdentityEnum.ACCOUNT, world.getSaved<string>('accountName') || ZENKO_ACCOUNT_NAME);
4444
world.resetCommand();
4545
world.addCommandParameter({ bucket: bucketName });
4646
const createdObjects = world.getCreatedObjects();
@@ -143,14 +143,14 @@ async function createBucket(world: Zenko, versioning: string, bucketName: string
143143

144144
Given('a {string} bucket with dot', async function (this: Zenko, versioning: string) {
145145
const preName = this.getSaved<string>('accountName') ||
146-
this.parameters.AccountName || Constants.ACCOUNT_NAME;
146+
ZENKO_ACCOUNT_NAME;
147147
await createBucket(this, versioning,
148148
`${preName}.${Constants.BUCKET_NAME_TEST}${Utils.randomString()}`.toLocaleLowerCase());
149149
});
150150

151151
Given('a {string} bucket', async function (this: Zenko, versioning: string) {
152152
const preName = this.getSaved<string>('accountName') ||
153-
this.parameters.AccountName || Constants.ACCOUNT_NAME;
153+
ZENKO_ACCOUNT_NAME;
154154
await createBucket(this, versioning,
155155
`${preName}${Constants.BUCKET_NAME_TEST}${Utils.randomString()}`.toLocaleLowerCase());
156156
});
@@ -310,7 +310,7 @@ Then('i {string} be able to add user metadata to object {string}',
310310

311311
Then('kafka consumed messages should not take too much place on disk', { timeout: -1 },
312312
async function (this: Zenko) {
313-
const kfkcIntervalSeconds = parseGoDuration(this.parameters.KafkaCleanerInterval);
313+
const kfkcIntervalSeconds = parseGoDuration(config.ZenkoCR.KafkaCleanerInterval);
314314
const checkInterval = kfkcIntervalSeconds * 1000;
315315
const deadline = Date.now() + checkInterval * 3;
316316

@@ -321,7 +321,7 @@ Then('kafka consumed messages should not take too much place on disk', { timeout
321321

322322
try {
323323
const excludedTopics = ['dead-letter', 'backbeat-metrics'];
324-
const prefix = `${this.parameters.InstanceID}.`;
324+
const prefix = `${config.ZenkoCR.InstanceID}.`;
325325
const allTopics = await kafkaAdmin.listTopics();
326326
const topics: string[] = allTopics
327327
.filter(t => t.startsWith(prefix) &&

tests/functional/ctst/common/hooks.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
} from '@cucumber/cucumber';
1010
import Zenko from '../world/Zenko';
1111
import { CacheHelper, Identity, WorkCoordination } from 'cli-testing';
12+
import { config, initConfig } from 'tests_common/configuration';
1213
import { prepareQuotaScenarios, teardownQuotaScenarios } from 'steps/quotas/quotas';
1314
import { prepareUtilizationScenarios } from 'steps/utilization/utilizationAPI';
1415
import { prepareMetricsScenarios } from './utils';
@@ -21,6 +22,12 @@ import {
2122
import { createKubeCustomObjectClient, waitForZenkoToStabilize } from 'steps/utils/kubernetes';
2223
import { startDLQConsumer, stopDLQConsumer } from 'steps/utils/kafka';
2324

25+
BeforeAll(async function () {
26+
// Some hooks are defined in cli-testing and use the configuration,
27+
// we need to have this run before anything else
28+
await initConfig();
29+
});
30+
2431
import 'cli-testing/hooks/KeycloakSetup';
2532
import 'cli-testing/hooks/Logger';
2633
import 'cli-testing/hooks/versionTags';
@@ -45,7 +52,7 @@ setParallelCanAssign(noParallelRun);
4552

4653
BeforeAll(async function () {
4754
const kafkaHosts = process.env['KAFKA_HOST_PORT'];
48-
const dlqTopic = process.env['KAFKA_DEAD_LETTER_TOPIC'];
55+
const dlqTopic = config.KafkaTopics.DeadLetterQueue;
4956
if (kafkaHosts && dlqTopic) {
5057
await startDLQConsumer(kafkaHosts, dlqTopic, Zenko.addToDLQBuffer);
5158
}

0 commit comments

Comments
 (0)