Esempio n. 1
0
  /**
   * 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));
  }
Esempio n. 2
0
  /**
   * 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));
  }