/** * This test increases the travel time of a road, checks that the new travel time is accepted by * SUMO, and verifies that the first vehicle changed its route. In contrast with {@link * #testRerouting()}, the specified travel time applies to all vehicles in the simulation. * * @throws IOException */ @Test public void testChangeGlobalTravelTime() throws IOException { getFirstVehicle(); List<Edge> routeBefore = firstVehicle.getCurrentRoute(); log.info("Route before: " + routeBefore); String edgeID = "middle"; Edge edge = conn.getEdgeRepository().getByID(edgeID); ChangeGlobalTravelTimeQuery cttq = edge.queryChangeTravelTime(); cttq.setBeginTime(0); cttq.setEndTime(1000); cttq.setTravelTime(10000); cttq.run(); ReadGlobalTravelTimeQuery rgttq = edge.queryReadGlobalTravelTime(); rgttq.setTime(conn.getCurrentSimStep()); double newTravelTime = rgttq.get(); assertEquals(10000, newTravelTime, DELTA); firstVehicle.queryReroute().run(); List<Edge> routeAfter = firstVehicle.getCurrentRoute(); log.info("Route after: " + routeAfter); assertFalse(routeBefore.equals(routeAfter)); }
/** * This test increases the travel time of a road "perceived" by the first vehicle. This will make * the vehicle look for an alternative route. * * @throws IOException */ @Test public void testRerouting() throws IOException { getFirstVehicle(); List<Edge> routeBefore = firstVehicle.getCurrentRoute(); log.info("Route before: " + routeBefore); String edgeID = "middle"; Edge edge = conn.getEdgeRepository().getByID(edgeID); ChangeEdgeTravelTimeQuery settq = firstVehicle.querySetEdgeTravelTime(); settq.setEdge(edge); settq.setTravelTime(10000); settq.run(); firstVehicle.queryReroute().run(); List<Edge> routeAfter = firstVehicle.getCurrentRoute(); log.info("Route after: " + routeAfter); assertFalse(routeBefore.equals(routeAfter)); }