diff --git a/deploy/portainer/docker-compose.yml b/deploy/portainer/docker-compose.yml index a89af335..ab9eed68 100644 --- a/deploy/portainer/docker-compose.yml +++ b/deploy/portainer/docker-compose.yml @@ -23,9 +23,9 @@ x-common-env: &common-env KAFKA_TOPIC_JT808_EVENT: ${KAFKA_TOPIC_JT808_EVENT:-vehicle.event.jt808.v1} KAFKA_TOPIC_JT808_RAW: ${KAFKA_TOPIC_JT808_RAW:-vehicle.raw.jt808.v1} KAFKA_TOPIC_JT808_DLQ: ${KAFKA_TOPIC_JT808_DLQ:-vehicle.dlq.jt808.v1} - KAFKA_TOPIC_MQTT_EVENT: ${KAFKA_TOPIC_MQTT_EVENT:-vehicle.event.mqtt-yutong.v1} - KAFKA_TOPIC_MQTT_RAW: ${KAFKA_TOPIC_MQTT_RAW:-vehicle.raw.mqtt-yutong.v1} - KAFKA_TOPIC_MQTT_DLQ: ${KAFKA_TOPIC_MQTT_DLQ:-vehicle.dlq.mqtt-yutong.v1} + KAFKA_TOPIC_YUTONG_MQTT_EVENT: ${KAFKA_TOPIC_YUTONG_MQTT_EVENT:-vehicle.event.mqtt-yutong.v1} + KAFKA_TOPIC_YUTONG_MQTT_RAW: ${KAFKA_TOPIC_YUTONG_MQTT_RAW:-vehicle.raw.mqtt-yutong.v1} + KAFKA_TOPIC_YUTONG_MQTT_DLQ: ${KAFKA_TOPIC_YUTONG_MQTT_DLQ:-vehicle.dlq.mqtt-yutong.v1} MYSQL_JDBC_URL: ${MYSQL_JDBC_URL:-} MYSQL_USERNAME: ${MYSQL_USERNAME:-} MYSQL_PASSWORD: ${MYSQL_PASSWORD:-} @@ -92,25 +92,21 @@ services: environment: <<: *common-env HTTP_PORT: 20500 - MQTT_ENABLED: "true" + YUTONG_MQTT_ENABLED: ${YUTONG_MQTT_ENABLED:-true} KAFKA_CONSUMER_ENABLED: "false" KAFKA_NODE_ID: ${KAFKA_NODE_ID_MQTT:-yutong-mqtt-portainer} - KAFKA_TOPIC_PARTNER_EVENT: ${KAFKA_TOPIC_MQTT_EVENT:-vehicle.event.mqtt-yutong.v1} - KAFKA_TOPIC_PARTNER_RAW: ${KAFKA_TOPIC_MQTT_RAW:-vehicle.raw.mqtt-yutong.v1} - KAFKA_TOPIC_PARTNER_DLQ: ${KAFKA_TOPIC_MQTT_DLQ:-vehicle.dlq.mqtt-yutong.v1} VEHICLE_IDENTITY_STORE: ${VEHICLE_IDENTITY_STORE:-mysql} VEHICLE_IDENTITY_MYSQL_JDBC_URL: ${MYSQL_JDBC_URL:-} VEHICLE_IDENTITY_MYSQL_USERNAME: ${MYSQL_USERNAME:-} VEHICLE_IDENTITY_MYSQL_PASSWORD: ${MYSQL_PASSWORD:-} - MQTT_ENDPOINT_NAME: ${MQTT_ENDPOINT_NAME:-yutong} - MQTT_URI: ${MQTT_URI:-tcp://127.0.0.1:1883} - MQTT_TOPIC: "${MQTT_TOPIC:-#}" - MQTT_QOS: ${MQTT_QOS:-1} - MQTT_CLIENT_ID: ${MQTT_CLIENT_ID:-lingniu-yutong-mqtt} - MQTT_USERNAME: ${MQTT_USERNAME:-} - MQTT_PASSWORD: ${MQTT_PASSWORD:-} - MQTT_CLEAN_SESSION: ${MQTT_CLEAN_SESSION:-true} - MQTT_PROFILE: ${MQTT_PROFILE:-yutong} + YUTONG_MQTT_ENDPOINT_NAME: ${YUTONG_MQTT_ENDPOINT_NAME:-yutong} + YUTONG_MQTT_URI: ${YUTONG_MQTT_URI:-tcp://127.0.0.1:1883} + YUTONG_MQTT_TOPIC: "${YUTONG_MQTT_TOPIC:-#}" + YUTONG_MQTT_QOS: ${YUTONG_MQTT_QOS:-1} + YUTONG_MQTT_CLIENT_ID: ${YUTONG_MQTT_CLIENT_ID:-lingniu-yutong-mqtt} + YUTONG_MQTT_USERNAME: ${YUTONG_MQTT_USERNAME:-} + YUTONG_MQTT_PASSWORD: ${YUTONG_MQTT_PASSWORD:-} + YUTONG_MQTT_CLEAN_SESSION: ${YUTONG_MQTT_CLEAN_SESSION:-false} ports: - "${YUTONG_MQTT_HTTP_PORT:-20500}:20500" networks: diff --git a/modules/apps/yutong-mqtt-app/src/test/java/com/lingniu/ingest/yutongmqttapp/YutongMqttPortainerComposeTest.java b/modules/apps/yutong-mqtt-app/src/test/java/com/lingniu/ingest/yutongmqttapp/YutongMqttPortainerComposeTest.java new file mode 100644 index 00000000..fa8f7961 --- /dev/null +++ b/modules/apps/yutong-mqtt-app/src/test/java/com/lingniu/ingest/yutongmqttapp/YutongMqttPortainerComposeTest.java @@ -0,0 +1,42 @@ +package com.lingniu.ingest.yutongmqttapp; + +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +import static org.assertj.core.api.Assertions.assertThat; + +class YutongMqttPortainerComposeTest { + + @Test + void portainerComposeUsesYutongMqttApplicationEnvironmentNames() throws IOException { + String compose = Files.readString(repositoryRoot().resolve("deploy/portainer/docker-compose.yml")); + + assertThat(compose) + .contains("KAFKA_TOPIC_YUTONG_MQTT_EVENT:") + .contains("KAFKA_TOPIC_YUTONG_MQTT_RAW:") + .contains("KAFKA_TOPIC_YUTONG_MQTT_DLQ:") + .contains("YUTONG_MQTT_ENABLED: ${YUTONG_MQTT_ENABLED:-true}") + .contains("YUTONG_MQTT_URI: ${YUTONG_MQTT_URI:-tcp://127.0.0.1:1883}") + .contains("YUTONG_MQTT_TOPIC: \"${YUTONG_MQTT_TOPIC:-#}\"") + .doesNotContain("KAFKA_TOPIC_PARTNER_EVENT") + .doesNotContain("KAFKA_TOPIC_PARTNER_RAW") + .doesNotContain("KAFKA_TOPIC_PARTNER_DLQ") + .doesNotContain("\n MQTT_ENABLED:") + .doesNotContain("\n MQTT_URI:") + .doesNotContain("\n MQTT_TOPIC:"); + } + + private static Path repositoryRoot() { + Path current = Path.of(System.getProperty("user.dir")).toAbsolutePath(); + while (current != null) { + if (Files.exists(current.resolve("deploy/portainer/docker-compose.yml"))) { + return current; + } + current = current.getParent(); + } + throw new IllegalStateException("repository root not found"); + } +}