aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/traccar/handler
diff options
context:
space:
mode:
authorAnton Tananaev <anton@traccar.org>2022-09-19 19:07:26 -0700
committerAnton Tananaev <anton@traccar.org>2022-09-19 19:07:26 -0700
commit561647947118a86256dbb584f6da450334462739 (patch)
tree288f205d70cb066593a81db3aee75dab893a6074 /src/test/java/org/traccar/handler
parent18513d7949a2be933541c45728a1d466be2b50a2 (diff)
downloadtrackermap-server-561647947118a86256dbb584f6da450334462739.tar.gz
trackermap-server-561647947118a86256dbb584f6da450334462739.tar.bz2
trackermap-server-561647947118a86256dbb584f6da450334462739.zip
Refactor overspeed handling
Diffstat (limited to 'src/test/java/org/traccar/handler')
-rw-r--r--src/test/java/org/traccar/handler/events/MotionEventHandlerTest.java21
-rw-r--r--src/test/java/org/traccar/handler/events/OverspeedEventHandlerTest.java108
2 files changed, 28 insertions, 101 deletions
diff --git a/src/test/java/org/traccar/handler/events/MotionEventHandlerTest.java b/src/test/java/org/traccar/handler/events/MotionEventHandlerTest.java
index 780d1b833..1f6212eec 100644
--- a/src/test/java/org/traccar/handler/events/MotionEventHandlerTest.java
+++ b/src/test/java/org/traccar/handler/events/MotionEventHandlerTest.java
@@ -70,27 +70,6 @@ public class MotionEventHandlerTest extends BaseTest {
}
@Test
- public void testMotionWithStatus() throws Exception {
- MotionEventHandler motionEventHandler = new MotionEventHandler(
- null, null, new TripsConfig(500, 300 * 1000, 300 * 1000, 0, false, false, 0.01));
-
- Position position = new Position();
- position.setTime(new Date(System.currentTimeMillis() - 360000));
- position.set(Position.KEY_MOTION, true);
- DeviceState deviceState = new DeviceState();
- deviceState.setMotionState(false);
- deviceState.setMotionPosition(position);
-
- Map<Event, Position> events = motionEventHandler.updateMotionState(deviceState);
-
- assertNotNull(events);
- Event event = events.keySet().iterator().next();
- assertEquals(Event.TYPE_DEVICE_MOVING, event.getType());
- assertTrue(deviceState.getMotionState());
- assertNull(deviceState.getMotionPosition());
- }
-
- @Test
public void testStopWithPositionIgnition() throws Exception {
MotionEventHandler motionEventHandler = new MotionEventHandler(
null, null, new TripsConfig(500, 300 * 1000, 300 * 1000, 0, true, false, 0.01));
diff --git a/src/test/java/org/traccar/handler/events/OverspeedEventHandlerTest.java b/src/test/java/org/traccar/handler/events/OverspeedEventHandlerTest.java
index 46e142935..bbddbae72 100644
--- a/src/test/java/org/traccar/handler/events/OverspeedEventHandlerTest.java
+++ b/src/test/java/org/traccar/handler/events/OverspeedEventHandlerTest.java
@@ -11,118 +11,66 @@ import org.traccar.session.DeviceState;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Map;
import java.util.TimeZone;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
public class OverspeedEventHandlerTest extends BaseTest {
- private Date date(String time) throws ParseException {
+ private Position position(String time, double speed) throws ParseException {
+ Position position = new Position();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
- return dateFormat.parse(time);
+ position.setTime(dateFormat.parse(time));
+ position.setSpeed(speed);
+ return position;
+ }
+
+ private void verifyState(DeviceState deviceState, boolean state, long geofenceId) {
+ assertEquals(state, deviceState.getOverspeedState());
+ assertEquals(geofenceId, deviceState.getOverspeedGeofenceId());
}
- private void testOverspeedWithPosition(boolean notRepeat, long geofenceId) throws ParseException {
+ private void testOverspeedWithPosition(long geofenceId) throws ParseException {
Config config = new Config();
- config.setString(Keys.EVENT_OVERSPEED_NOT_REPEAT, String.valueOf(notRepeat));
config.setString(Keys.EVENT_OVERSPEED_MINIMAL_DURATION, String.valueOf(15));
config.setString(Keys.EVENT_OVERSPEED_PREFER_LOWEST, String.valueOf(false));
OverspeedEventHandler overspeedEventHandler = new OverspeedEventHandler(config, null, null);
- Position position = new Position();
- position.setTime(date("2017-01-01 00:00:00"));
- position.setSpeed(50);
DeviceState deviceState = new DeviceState();
- deviceState.setOverspeedState(false);
-
- Map<Event, Position> events = overspeedEventHandler.updateOverspeedState(deviceState, position, 40, geofenceId);
- assertNull(events);
- assertFalse(deviceState.getOverspeedState());
- assertEquals(position, deviceState.getOverspeedPosition());
- assertEquals(geofenceId, deviceState.getOverspeedGeofenceId());
- Position nextPosition = new Position();
- nextPosition.setTime(date("2017-01-01 00:00:10"));
- nextPosition.setSpeed(55);
+ Position position = position("2017-01-01 00:00:00", 50);
+ assertNull(overspeedEventHandler.updateOverspeedState(deviceState, position, 40, geofenceId));
+ verifyState(deviceState, true, geofenceId);
- events = overspeedEventHandler.updateOverspeedState(deviceState, nextPosition, 40, geofenceId);
- assertNull(events);
+ position = position("2017-01-01 00:00:10", 55);
+ assertNull(overspeedEventHandler.updateOverspeedState(deviceState, position, 40, geofenceId));
- nextPosition.setTime(date("2017-01-01 00:00:20"));
-
- events = overspeedEventHandler.updateOverspeedState(deviceState, nextPosition, 40, geofenceId);
+ position = position("2017-01-01 00:00:20", 55);
+ var events = overspeedEventHandler.updateOverspeedState(deviceState, position, 40, geofenceId);
assertNotNull(events);
Event event = events.keySet().iterator().next();
assertEquals(Event.TYPE_DEVICE_OVERSPEED, event.getType());
- assertEquals(50, event.getDouble("speed"), 0.1);
+ assertEquals(55, event.getDouble("speed"), 0.1);
assertEquals(40, event.getDouble("speedLimit"), 0.1);
assertEquals(geofenceId, event.getGeofenceId());
+ verifyState(deviceState, true, 0);
- assertEquals(notRepeat, deviceState.getOverspeedState());
- assertNull(deviceState.getOverspeedPosition());
- assertEquals(0, deviceState.getOverspeedGeofenceId());
-
- nextPosition.setTime(date("2017-01-01 00:00:30"));
- events = overspeedEventHandler.updateOverspeedState(deviceState, nextPosition, 40, geofenceId);
- assertNull(events);
- assertEquals(notRepeat, deviceState.getOverspeedState());
-
- if (notRepeat) {
- assertNull(deviceState.getOverspeedPosition());
- assertEquals(0, deviceState.getOverspeedGeofenceId());
- } else {
- assertNotNull(deviceState.getOverspeedPosition());
- assertEquals(geofenceId, deviceState.getOverspeedGeofenceId());
- }
-
- nextPosition.setTime(date("2017-01-01 00:00:40"));
- nextPosition.setSpeed(30);
-
- events = overspeedEventHandler.updateOverspeedState(deviceState, nextPosition, 40, geofenceId);
- assertNull(events);
- assertFalse(deviceState.getOverspeedState());
- assertNull(deviceState.getOverspeedPosition());
- assertEquals(0, deviceState.getOverspeedGeofenceId());
- }
-
- private void testOverspeedWithStatus(boolean notRepeat) {
- Config config = new Config();
- config.setString(Keys.EVENT_OVERSPEED_NOT_REPEAT, String.valueOf(notRepeat));
- config.setString(Keys.EVENT_OVERSPEED_MINIMAL_DURATION, String.valueOf(15));
- config.setString(Keys.EVENT_OVERSPEED_PREFER_LOWEST, String.valueOf(false));
- OverspeedEventHandler overspeedEventHandler = new OverspeedEventHandler(config, null, null);
+ position = position("2017-01-01 00:00:30", 55);
+ assertNull(overspeedEventHandler.updateOverspeedState(deviceState, position, 40, geofenceId));
+ verifyState(deviceState, true, 0);
- Position position = new Position();
- position.setTime(new Date(System.currentTimeMillis() - 30000));
- position.setSpeed(50);
- DeviceState deviceState = new DeviceState();
- deviceState.setOverspeedState(false);
- deviceState.setOverspeedPosition(position);
-
- Map<Event, Position> events = overspeedEventHandler.updateOverspeedState(deviceState, 40);
-
- assertNotNull(events);
- Event event = events.keySet().iterator().next();
- assertEquals(Event.TYPE_DEVICE_OVERSPEED, event.getType());
- assertEquals(notRepeat, deviceState.getOverspeedState());
+ position = position("2017-01-01 00:00:30", 30);
+ assertNull(overspeedEventHandler.updateOverspeedState(deviceState, position, 40, geofenceId));
+ verifyState(deviceState, false, 0);
}
@Test
public void testOverspeedEventHandler() throws Exception {
- testOverspeedWithPosition(false, 0);
- testOverspeedWithPosition(true, 0);
-
- testOverspeedWithPosition(false, 1);
- testOverspeedWithPosition(true, 1);
-
- testOverspeedWithStatus(false);
- testOverspeedWithStatus(true);
+ testOverspeedWithPosition(0);
+ testOverspeedWithPosition(1);
}
}