From bfc524a4cd73a952ee1eb6ae61baafdf56854404 Mon Sep 17 00:00:00 2001 From: Noureddine Date: Mon, 20 Jun 2022 11:25:48 +0100 Subject: [PATCH 1/5] add missingPoint and noConfigAck --- docs/tools/pubber.md | 8 +++++++- .../src/main/java/daq/pubber/ConfigurationOptions.java | 2 ++ pubber/src/main/java/daq/pubber/MqttPublisher.java | 6 +++++- pubber/src/main/java/daq/pubber/Pubber.java | 9 +++++++++ 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/docs/tools/pubber.md b/docs/tools/pubber.md index 8669c76db5..b3ff10437a 100644 --- a/docs/tools/pubber.md +++ b/docs/tools/pubber.md @@ -28,10 +28,16 @@ The following parameters are currently supported from the CLI: * `extraPoint=` - adds an extra point with the given name to the device which does not exist in device's metadata with a random value (will trigger validation additional point error) +* `missingPoint=` - removes the point with the given name (if exists) from + the device's active pointset at initialization (will trigger validation + missing point) * `extraField=` - adds an extra schema invalidating field to pointset events (will trigger validation schema error) -* `no_hardware` - omits the `system.hardware` field from state messages (will +* `noHardware` - omits the `system.hardware` field from state messages (will trigger validation error, missing required field) +* `noConfigAck` - subscribes to the `config` topic with a QoS of 0, therefore + will not send PUBACK's for config messages + More advanced options can be set by by calling pubber directly with the path a configuration file: `pubber/bin/run path/to/config.json` diff --git a/pubber/src/main/java/daq/pubber/ConfigurationOptions.java b/pubber/src/main/java/daq/pubber/ConfigurationOptions.java index 822f8f15f6..057f46593e 100644 --- a/pubber/src/main/java/daq/pubber/ConfigurationOptions.java +++ b/pubber/src/main/java/daq/pubber/ConfigurationOptions.java @@ -5,7 +5,9 @@ */ public class ConfigurationOptions { public Boolean noHardware; + public Boolean noConfigAck; public String extraPoint; + public String missingPoint; public String extraField; } diff --git a/pubber/src/main/java/daq/pubber/MqttPublisher.java b/pubber/src/main/java/daq/pubber/MqttPublisher.java index 93666efbeb..5086c8931b 100644 --- a/pubber/src/main/java/daq/pubber/MqttPublisher.java +++ b/pubber/src/main/java/daq/pubber/MqttPublisher.java @@ -286,7 +286,11 @@ private String getMessageTopic(String deviceId, String topic) { } private void subscribeToUpdates(MqttClient client, String deviceId) { - subscribeTopic(client, String.format(CONFIG_UPDATE_TOPIC_FMT, deviceId), QOS_AT_LEAST_ONCE); + Integer configQOS = QOS_AT_LEAST_ONCE; // Defaults to QoS 1 + if (configuration.options.noConfigAck) { + configQOS = QOS_AT_MOST_ONCE; + } + subscribeTopic(client, String.format(CONFIG_UPDATE_TOPIC_FMT, deviceId), configQOS); subscribeTopic(client, String.format(ERRORS_TOPIC_FMT, deviceId), QOS_AT_MOST_ONCE); info("Updates subscribed"); } diff --git a/pubber/src/main/java/daq/pubber/Pubber.java b/pubber/src/main/java/daq/pubber/Pubber.java index 99bef948af..9aaf1ffb2e 100644 --- a/pubber/src/main/java/daq/pubber/Pubber.java +++ b/pubber/src/main/java/daq/pubber/Pubber.java @@ -301,6 +301,15 @@ private void processDeviceMetadata(Metadata metadata) { Map points = metadata.pointset == null ? DEFAULT_POINTS : metadata.pointset.points; + + if (configuration.options.missingPoint != null) { + if (points.contains(configuration.options.missingPoint)) { + points.remove(configuration.options.missingPoint); + } else { + throw new RuntimeException("missingPoint not in pointset"); + } + } + points.forEach((name, point) -> addPoint(makePoint(name, point))); } From a72dd9c726e81c92eca540a2dbe6d2652170a8d8 Mon Sep 17 00:00:00 2001 From: Noureddine Date: Mon, 20 Jun 2022 13:23:47 +0100 Subject: [PATCH 2/5] containsKey --- pubber/src/main/java/daq/pubber/Pubber.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubber/src/main/java/daq/pubber/Pubber.java b/pubber/src/main/java/daq/pubber/Pubber.java index 9aaf1ffb2e..114c0414e4 100644 --- a/pubber/src/main/java/daq/pubber/Pubber.java +++ b/pubber/src/main/java/daq/pubber/Pubber.java @@ -303,7 +303,7 @@ private void processDeviceMetadata(Metadata metadata) { metadata.pointset == null ? DEFAULT_POINTS : metadata.pointset.points; if (configuration.options.missingPoint != null) { - if (points.contains(configuration.options.missingPoint)) { + if (points.containsKey(configuration.options.missingPoint)) { points.remove(configuration.options.missingPoint); } else { throw new RuntimeException("missingPoint not in pointset"); From 6a7dd61e3ce79a6289b2ac9c510d1674ed09520f Mon Sep 17 00:00:00 2001 From: Noureddine Date: Mon, 20 Jun 2022 13:27:04 +0100 Subject: [PATCH 3/5] not null --- pubber/src/main/java/daq/pubber/MqttPublisher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubber/src/main/java/daq/pubber/MqttPublisher.java b/pubber/src/main/java/daq/pubber/MqttPublisher.java index 5086c8931b..7f9a1811ff 100644 --- a/pubber/src/main/java/daq/pubber/MqttPublisher.java +++ b/pubber/src/main/java/daq/pubber/MqttPublisher.java @@ -287,7 +287,7 @@ private String getMessageTopic(String deviceId, String topic) { private void subscribeToUpdates(MqttClient client, String deviceId) { Integer configQOS = QOS_AT_LEAST_ONCE; // Defaults to QoS 1 - if (configuration.options.noConfigAck) { + if (configuration.options.noConfigAck != null && configuration.options.noConfigAck) { configQOS = QOS_AT_MOST_ONCE; } subscribeTopic(client, String.format(CONFIG_UPDATE_TOPIC_FMT, deviceId), configQOS); From 2a105aea8ec7862fc9a455080ccda7de1a0bf4b2 Mon Sep 17 00:00:00 2001 From: Noureddine Date: Tue, 21 Jun 2022 14:02:46 +0100 Subject: [PATCH 4/5] configQos for style check --- pubber/src/main/java/daq/pubber/MqttPublisher.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pubber/src/main/java/daq/pubber/MqttPublisher.java b/pubber/src/main/java/daq/pubber/MqttPublisher.java index 7f9a1811ff..c9ba981f99 100644 --- a/pubber/src/main/java/daq/pubber/MqttPublisher.java +++ b/pubber/src/main/java/daq/pubber/MqttPublisher.java @@ -286,11 +286,11 @@ private String getMessageTopic(String deviceId, String topic) { } private void subscribeToUpdates(MqttClient client, String deviceId) { - Integer configQOS = QOS_AT_LEAST_ONCE; // Defaults to QoS 1 + Integer configQos = QOS_AT_LEAST_ONCE; // Defaults to QoS 1 if (configuration.options.noConfigAck != null && configuration.options.noConfigAck) { - configQOS = QOS_AT_MOST_ONCE; + configQos = QOS_AT_MOST_ONCE; } - subscribeTopic(client, String.format(CONFIG_UPDATE_TOPIC_FMT, deviceId), configQOS); + subscribeTopic(client, String.format(CONFIG_UPDATE_TOPIC_FMT, deviceId), configQos); subscribeTopic(client, String.format(ERRORS_TOPIC_FMT, deviceId), QOS_AT_MOST_ONCE); info("Updates subscribed"); } From 9a88dbae3af961b2f85e54e25e3ca55b7b1ab136 Mon Sep 17 00:00:00 2001 From: Noureddine Date: Wed, 29 Jun 2022 13:02:05 +0100 Subject: [PATCH 5/5] resture as comment --- pubber/src/main/java/daq/pubber/MqttPublisher.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pubber/src/main/java/daq/pubber/MqttPublisher.java b/pubber/src/main/java/daq/pubber/MqttPublisher.java index c9ba981f99..0d02dff0e2 100644 --- a/pubber/src/main/java/daq/pubber/MqttPublisher.java +++ b/pubber/src/main/java/daq/pubber/MqttPublisher.java @@ -286,10 +286,9 @@ private String getMessageTopic(String deviceId, String topic) { } private void subscribeToUpdates(MqttClient client, String deviceId) { - Integer configQos = QOS_AT_LEAST_ONCE; // Defaults to QoS 1 - if (configuration.options.noConfigAck != null && configuration.options.noConfigAck) { - configQos = QOS_AT_MOST_ONCE; - } + boolean noConfigAck = (configuration.options.noConfigAck != null + && configuration.options.noConfigAck); + int configQos = noConfigAck ? QOS_AT_MOST_ONCE : QOS_AT_LEAST_ONCE; subscribeTopic(client, String.format(CONFIG_UPDATE_TOPIC_FMT, deviceId), configQos); subscribeTopic(client, String.format(ERRORS_TOPIC_FMT, deviceId), QOS_AT_MOST_ONCE); info("Updates subscribed");