Added Tellstic sensor test

This commit is contained in:
Ziver Koc 2016-08-19 16:25:18 +02:00
parent b405c12293
commit 253e359483
9 changed files with 119 additions and 21 deletions

4
run.sh
View file

@ -1,8 +1,6 @@
#!/bin/bash
#screen -S hal -L -d -m \
# java -cp sqlite-jdbc-3.7.2.jar:jSerialComm-1.3.4.jar:hal.jar:. se.hal.plugin.tellstick.TelstickSerialCommTest
#ant clean
ant clean
ant release
screen -S hal -L -d -m ant run

View file

@ -102,7 +102,7 @@ public class ControllerManager implements HalSensorReportListener,
}
@Override
public void reportReceived(HalSensorConfig sensorConfig, HalDeviceData sensorData) {
public void reportReceived(HalSensorConfig sensorConfig, HalSensorData sensorData) {
try{
DBConnection db = HalContext.getDB();
Sensor sensor = findSensor(sensorConfig, registeredSensors);
@ -124,8 +124,9 @@ public class ControllerManager implements HalSensorReportListener,
sensor = new Sensor();
detectedSensors.add(sensor);
}
sensor.setDeviceConfig(sensorConfig);
}
sensor.setDeviceConfig(sensorConfig); // Set the latest data
sensor.setDeviceData(sensorData);
}catch (SQLException e){
logger.log(Level.WARNING, "Unable to store sensor report", e);
@ -191,7 +192,7 @@ public class ControllerManager implements HalSensorReportListener,
}
@Override
public void reportReceived(HalEventConfig eventConfig, HalDeviceData eventData) {
public void reportReceived(HalEventConfig eventConfig, HalEventData eventData) {
try {
DBConnection db = HalContext.getDB();
Event event = findEvent(eventConfig, registeredEvents);
@ -213,8 +214,9 @@ public class ControllerManager implements HalSensorReportListener,
event = new Event();
detectedEvents.add(event);
}
event.setDeviceConfig(eventConfig);
}
event.setDeviceConfig(eventConfig); // Set the latest data
event.setDeviceData(eventData);
}catch (SQLException e){
logger.log(Level.WARNING, "Unable to store event report", e);

View file

@ -2,6 +2,6 @@ package se.hal.intf;
public interface HalEventReportListener {
void reportReceived(HalEventConfig e, HalDeviceData d);
void reportReceived(HalEventConfig e, HalEventData d);
}

View file

@ -2,6 +2,6 @@ package se.hal.intf;
public interface HalSensorReportListener {
void reportReceived(HalSensorConfig s, HalDeviceData d);
void reportReceived(HalSensorConfig s, HalSensorData d);
}

View file

@ -1,9 +1,6 @@
package se.hal.plugin.raspberry;
import se.hal.intf.HalDeviceData;
import se.hal.intf.HalSensorController;
import se.hal.intf.HalSensorConfig;
import se.hal.intf.HalSensorReportListener;
import se.hal.intf.*;
import se.hal.plugin.raspberry.hardware.RPiDS18B20;
import se.hal.plugin.raspberry.hardware.RPiInteruptPulseFlankCounter;
import zutil.log.LogUtil;
@ -90,7 +87,7 @@ public class RPiController implements HalSensorController {
}
}
public void sendDataReport(HalSensorConfig sensorConfig, HalDeviceData sensorData){
public void sendDataReport(HalSensorConfig sensorConfig, HalSensorData sensorData){
if(sensorListener != null){
sensorListener.reportReceived(sensorConfig, sensorData);
}else{

View file

@ -175,9 +175,9 @@ public class TellstickSerialComm implements Runnable,
}
private void reportEvent(TellstickDevice tellstickDevice, HalDeviceData deviceData){
if (sensorListener != null && tellstickDevice instanceof HalSensorConfig)
sensorListener.reportReceived((HalSensorConfig) tellstickDevice, deviceData);
sensorListener.reportReceived((HalSensorConfig) tellstickDevice, (HalSensorData) deviceData);
else if (eventListener != null && tellstickDevice instanceof HalEventConfig)
eventListener.reportReceived((HalEventConfig) tellstickDevice, deviceData);
eventListener.reportReceived((HalEventConfig) tellstickDevice, (HalEventData) deviceData);
}
@Override

View file

@ -59,7 +59,7 @@ public abstract class AbstractDevice<T,D> extends DBBean {
applyConfig();
} catch (Exception e) {
logger.log(Level.SEVERE, "Unable instantiate DeviceData: "+type, e);
logger.log(Level.SEVERE, "Unable instantiate DeviceConfig: "+type, e);
}
}
return deviceConfig;
@ -74,7 +74,6 @@ public abstract class AbstractDevice<T,D> extends DBBean {
if(data != null) {
deviceConfig = data;
type = data.getClass().getName();
applyConfig(); // TODO: this is a bit clunky, should probably be solved in another way
} else {
deviceConfig = null;
type = null;

View file

@ -15,7 +15,7 @@ import static org.junit.Assert.assertEquals;
/**
* Created by Ziver on 2015-11-19.
*/
public class TelstickSerialCommTest {
public class TelstickSerialCommEventTest {
@Before
public void init(){
@ -47,7 +47,7 @@ public class TelstickSerialCommTest {
final ArrayList<HalEventConfig> list = new ArrayList<>();
tellstick.setListener(new HalEventReportListener() {
@Override
public void reportReceived(HalEventConfig e, HalDeviceData d) {
public void reportReceived(HalEventConfig e, HalEventData d) {
list.add(e);
}
});
@ -65,7 +65,7 @@ public class TelstickSerialCommTest {
final ArrayList<HalEventConfig> list = new ArrayList<>();
tellstick.setListener(new HalEventReportListener() {
@Override
public void reportReceived(HalEventConfig e, HalDeviceData d) {
public void reportReceived(HalEventConfig e, HalEventData d) {
list.add(e);
}
});

View file

@ -0,0 +1,102 @@
package se.hal.plugin.tellstick;
import org.junit.Before;
import org.junit.Test;
import se.hal.intf.HalSensorConfig;
import se.hal.intf.HalSensorController;
import se.hal.intf.HalSensorData;
import se.hal.intf.HalSensorReportListener;
import se.hal.struct.devicedata.TemperatureSensorData;
import zutil.converter.Converter;
import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.assertEquals;
/**
* Created by Ziver on 2015-11-19.
*/
public class TelstickSerialCommSensorTest {
@Before
public void init(){
TellstickParser.registerProtocol(TestSensor.class);
}
//############ Normal TCs
@Test
public void receiveUnregisteredSensor(){
// Setup
TellstickSerialComm tellstick = new TellstickSerialComm();
final ArrayList<HalSensorConfig> list = new ArrayList<>();
tellstick.setListener(new HalSensorReportListener() {
@Override
public void reportReceived(HalSensorConfig e, HalSensorData d) {
list.add(e);
}
});
// Execution
tellstick.handleLine("+Wclass:sensor;protocol:test-prot;model:test-model;data:2345;");
assertEquals("Sensors first transmission", 0, list.size());
tellstick.handleLine("+Wclass:sensor;protocol:test-prot;model:test-model;data:2345;");
assertEquals("Sensors Second transmission", 1, list.size());
}
@Test
public void receiveSensor(){
// Setup
TellstickSerialComm tellstick = new TellstickSerialComm();
final ArrayList<HalSensorConfig> list = new ArrayList<>();
tellstick.setListener(new HalSensorReportListener() {
@Override
public void reportReceived(HalSensorConfig e, HalSensorData d) {
list.add(e);
}
});
// Execution
TestSensor sensor = new TestSensor();
sensor.testData = 0xAAAA;
tellstick.register(sensor);
tellstick.handleLine("+Wclass:sensor;protocol:test-prot;model:test-model;data:AAAA;");
// Verification
assertEquals("Nr of received sensors", 1, list.size());
assertEquals("Data", sensor.testData, ((TestSensor)list.get(0)).testData);
}
private static class TestSensor extends TellstickProtocol implements HalSensorConfig,TellstickDevice {
public int testData;
public TestSensor(){
super("test-prot", "test-model");
}
@Override
public List<TellstickDecodedEntry> decode(byte[] data) {
testData = Converter.toInt(data);
ArrayList<TellstickDecodedEntry> list = new ArrayList<>();
list.add(new TellstickDecodedEntry(
this, new TemperatureSensorData(testData)
));
return list;
}
@Override
public boolean equals(Object obj) {return testData == ((TestSensor)obj).testData;}
@Override
public long getDataInterval() { return 0; }
@Override
public AggregationMethod getAggregationMethod() { return null; }
@Override
public Class<? extends HalSensorController> getSensorController() { return null; }
}
}