diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index 1a452025..00000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -radar-backend \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 6e0a691c..69eaff7a 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,31 +1,10 @@ - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 6c289c14..211603d4 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ plugins { //---------------------------------------------------------------------------// group = 'org.radarcns' -version = '0.1-alpha.3-SNAPSHOT' +version = '0.1' ext.description = 'Kafka backend for processing device data.' mainClassName = 'org.radarcns.RadarBackend' diff --git a/src/main/java/org/radarcns/monitor/AbstractKafkaMonitor.java b/src/main/java/org/radarcns/monitor/AbstractKafkaMonitor.java index 46380bec..798263e6 100644 --- a/src/main/java/org/radarcns/monitor/AbstractKafkaMonitor.java +++ b/src/main/java/org/radarcns/monitor/AbstractKafkaMonitor.java @@ -88,10 +88,11 @@ public AbstractKafkaMonitor(RadarPropertyHandler radar, Collection topic properties = new Properties(); String deserializer = KafkaAvroDeserializer.class.getName(); + String monitorClientId = getClass().getName() + "-" + clientId; properties.setProperty(KEY_DESERIALIZER_CLASS_CONFIG, deserializer); properties.setProperty(VALUE_DESERIALIZER_CLASS_CONFIG, deserializer); properties.setProperty(GROUP_ID_CONFIG, groupId); - properties.setProperty(CLIENT_ID_CONFIG, clientId); + properties.setProperty(CLIENT_ID_CONFIG, monitorClientId); properties.setProperty(ENABLE_AUTO_COMMIT_CONFIG, "true"); properties.setProperty(AUTO_COMMIT_INTERVAL_MS_CONFIG, "1001"); properties.setProperty(SESSION_TIMEOUT_MS_CONFIG, "15101"); @@ -105,7 +106,7 @@ public AbstractKafkaMonitor(RadarPropertyHandler radar, Collection topic this.topics = topics; this.pollTimeout = new AtomicLong(Long.MAX_VALUE); this.done = false; - this.clientId = clientId; + this.clientId = monitorClientId; this.groupId = groupId; PersistentStateStore localStateStore; @@ -121,7 +122,7 @@ public AbstractKafkaMonitor(RadarPropertyHandler radar, Collection topic S localState = stateDefault; if (stateStore != null && stateDefault != null) { try { - localState = stateStore.retrieveState(groupId, clientId, stateDefault); + localState = stateStore.retrieveState(groupId, monitorClientId, stateDefault); logger.info("Using existing {} from persistence store.", stateDefault.getClass().getName()); } catch (IOException ex) { diff --git a/src/main/java/org/radarcns/monitor/BatteryLevelMonitor.java b/src/main/java/org/radarcns/monitor/BatteryLevelMonitor.java index 3d140bc2..f8474dd4 100644 --- a/src/main/java/org/radarcns/monitor/BatteryLevelMonitor.java +++ b/src/main/java/org/radarcns/monitor/BatteryLevelMonitor.java @@ -97,7 +97,10 @@ protected void evaluateRecord(ConsumerRecord recor key.getSourceId(), key.getUserId(), record.value()); } } else if (previousLevel <= Status.LOW.getLevel()) { - updateStatus(key, Status.NORMAL); + // Remove the email alert for battery monitor for normal level because + // it is not crucial and to prevent spamming a user's email account. + // Uncomment the line below if needed. + // updateStatus(key, Status.NORMAL); logger.info("Battery of sensor {} of user {} is has returned to normal: {}", key.getSourceId(), key.getUserId(), record.value()); } diff --git a/src/test/java/org/radarcns/monitor/BatteryLevelMonitorTest.java b/src/test/java/org/radarcns/monitor/BatteryLevelMonitorTest.java index 4bbc8854..6f2cc21c 100644 --- a/src/test/java/org/radarcns/monitor/BatteryLevelMonitorTest.java +++ b/src/test/java/org/radarcns/monitor/BatteryLevelMonitorTest.java @@ -89,14 +89,14 @@ public void evaluateRecord() throws Exception { sendMessage(monitor, 1.0f, false); sendMessage(monitor, 0.1f, true); sendMessage(monitor, 0.1f, false); - sendMessage(monitor, 0.3f, true); + sendMessage(monitor, 0.3f, false); sendMessage(monitor, 0.4f, false); sendMessage(monitor, 0.01f, true); sendMessage(monitor, 0.01f, false); sendMessage(monitor, 0.1f, false); sendMessage(monitor, 0.1f, false); sendMessage(monitor, 0.01f, true); - sendMessage(monitor, 1f, true); + sendMessage(monitor, 1f, false); } private void sendMessage(BatteryLevelMonitor monitor, float batteryLevel, boolean sentMessage) @@ -130,4 +130,4 @@ public void retrieveState() throws Exception { Map values = state2.getLevels(); assertThat(values, hasEntry(measurementKeyToString(key1), 0.1f)); } -} \ No newline at end of file +} diff --git a/src/test/java/org/radarcns/monitor/KafkaMonitorFactoryTest.java b/src/test/java/org/radarcns/monitor/KafkaMonitorFactoryTest.java index cbfd41b5..67b7fe22 100644 --- a/src/test/java/org/radarcns/monitor/KafkaMonitorFactoryTest.java +++ b/src/test/java/org/radarcns/monitor/KafkaMonitorFactoryTest.java @@ -55,7 +55,8 @@ public void createBatteryMonitor() throws Exception { assertEquals(BatteryLevelMonitor.class, monitor.getClass()); BatteryLevelMonitor batteryMonitor = (BatteryLevelMonitor) monitor; batteryMonitor.evaluateRecords(new ConsumerRecords<>(Collections.emptyMap())); - assertTrue(new File(config.getPersistencePath(), "battery_monitors_1.yml").isFile()); + assertTrue(new File(config.getPersistencePath(), "battery_monitors_" + + BatteryLevelMonitor.class.getName() + "-1.yml").isFile()); } @Test(expected = IOException.class) @@ -79,7 +80,8 @@ public void createDisconnectMonitor() throws Exception { assertEquals(DisconnectMonitor.class, monitor.getClass()); DisconnectMonitor disconnectMonitor = (DisconnectMonitor) monitor; disconnectMonitor.evaluateRecords(new ConsumerRecords<>(Collections.emptyMap())); - assertTrue(new File(config.getPersistencePath(), "disconnect_monitor_1.yml").isFile()); + assertTrue(new File(config.getPersistencePath(), "disconnect_monitor_" + + DisconnectMonitor.class.getName() + "-1.yml").isFile()); } @Test @@ -148,4 +150,4 @@ public static ConfigRadar getBatteryMonitorConfig(int port, TemporaryFolder fold config.setBatteryMonitor(getBatteryMonitorConfig(port)); return config; } -} \ No newline at end of file +}