Skip to content

Commit

Permalink
Completely switch to constants
Browse files Browse the repository at this point in the history
  • Loading branch information
leonardehrenfried committed Sep 4, 2024
1 parent 523ac2b commit b06a3e3
Show file tree
Hide file tree
Showing 6 changed files with 141 additions and 163 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class SiriTimetableSnapshotSourceTest implements RealtimeTestConstants {
void testCancelTrip() {
var env = RealtimeTestEnvironment.siri().withTrip1().build();

assertEquals(RealTimeState.SCHEDULED, env.getTripTimesForTrip(env.trip1()).getRealTimeState());
assertEquals(RealTimeState.SCHEDULED, env.getTripTimesForTrip(TRIP_1_ID).getRealTimeState());

var updates = new SiriEtBuilder(env.getDateTimeHelper())
.withDatedVehicleJourneyRef(TRIP_1_ID)
Expand All @@ -26,7 +26,7 @@ void testCancelTrip() {
var result = env.applyEstimatedTimetable(updates);

assertEquals(1, result.successful());
assertEquals(RealTimeState.CANCELED, env.getTripTimesForTrip(env.trip1()).getRealTimeState());
assertEquals(RealTimeState.CANCELED, env.getTripTimesForTrip(TRIP_1_ID).getRealTimeState());
}

@Test
Expand Down Expand Up @@ -127,7 +127,7 @@ void testReplaceJourney() {
);

// Original trip should not get canceled
var originalTripTimes = env.getTripTimesForTrip(env.trip1());
var originalTripTimes = env.getTripTimesForTrip(TRIP_1_ID);
assertEquals(RealTimeState.SCHEDULED, originalTripTimes.getRealTimeState());
}

Expand All @@ -146,7 +146,7 @@ void testUpdateJourneyWithDatedVehicleJourneyRef() {
assertTripUpdated(env);
assertEquals(
"UPDATED | A1 0:00:15 0:00:15 | B1 0:00:25 0:00:25",
env.getRealtimeTimetable(env.trip1())
env.getRealtimeTimetable(TRIP_1_ID)
);
}

Expand Down Expand Up @@ -239,7 +239,7 @@ void testChangeQuay() {
assertEquals(1, result.successful());
assertEquals(
"MODIFIED | A1 [R] 0:00:15 0:00:15 | B2 0:00:33 0:00:33",
env.getRealtimeTimetable(env.trip1())
env.getRealtimeTimetable(TRIP_1_ID)
);
}

Expand All @@ -265,7 +265,7 @@ void testCancelStop() {
assertEquals(1, result.successful());
assertEquals(
"MODIFIED | A1 0:01:01 0:01:01 | B1 [C] 0:01:10 0:01:11 | C1 0:01:30 0:01:30",
env.getRealtimeTimetable(env.trip2())
env.getRealtimeTimetable(TRIP_2_ID)
);
}

Expand Down Expand Up @@ -294,7 +294,7 @@ void testAddStop() {
assertEquals(1, result.successful());
assertEquals(
"MODIFIED | A1 0:00:15 0:00:15 | D1 [C] 0:00:20 0:00:25 | B1 0:00:33 0:00:33",
env.getRealtimeTimetable(env.trip1())
env.getRealtimeTimetable(TRIP_1_ID)
);
}

Expand Down Expand Up @@ -423,7 +423,7 @@ private static SiriEtBuilder updatedJourneyBuilder(RealtimeTestEnvironment env)
private static void assertTripUpdated(RealtimeTestEnvironment env) {
assertEquals(
"UPDATED | A1 0:00:15 0:00:15 | B1 0:00:25 0:00:25",
env.getRealtimeTimetable(env.trip1())
env.getRealtimeTimetable(TRIP_1_ID)
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,16 @@
import java.time.LocalDate;
import java.util.List;
import java.util.Objects;
import java.util.stream.IntStream;
import org.opentripplanner.DateTimeHelper;
import org.opentripplanner.ext.siri.SiriFuzzyTripMatcher;
import org.opentripplanner.ext.siri.SiriTimetableSnapshotSource;
import org.opentripplanner.ext.siri.updater.EstimatedTimetableHandler;
import org.opentripplanner.framework.i18n.I18NString;
import org.opentripplanner.graph_builder.issue.api.DataImportIssueStore;
import org.opentripplanner.model.StopTime;
import org.opentripplanner.model.TimetableSnapshot;
import org.opentripplanner.model.calendar.CalendarServiceData;
import org.opentripplanner.transit.model._data.TransitModelForTest;
import org.opentripplanner.transit.model.framework.Deduplicator;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.opentripplanner.transit.model.network.Route;
import org.opentripplanner.transit.model.network.TripPattern;
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.site.StopLocation;
import org.opentripplanner.transit.model.timetable.Trip;
import org.opentripplanner.transit.model.timetable.TripOnServiceDate;
import org.opentripplanner.transit.model.timetable.TripTimes;
import org.opentripplanner.transit.model.timetable.TripTimesFactory;
import org.opentripplanner.transit.model.timetable.TripTimesStringBuilder;
import org.opentripplanner.transit.service.DefaultTransitService;
import org.opentripplanner.transit.service.TransitModel;
Expand Down Expand Up @@ -57,9 +46,6 @@ public final class RealtimeTestEnvironment implements RealtimeTestConstants {
private final TimetableSnapshotSource gtfsSource;
private final DateTimeHelper dateTimeHelper;

private Trip trip1;
private Trip trip2;

enum SourceType {
GTFS_RT,
SIRI,
Expand All @@ -79,27 +65,10 @@ public static RealtimeTestEnvironmentBuilder gtfs() {
return new RealtimeTestEnvironmentBuilder().withSourceType(SourceType.GTFS_RT);
}

RealtimeTestEnvironment(SourceType sourceType, boolean withTrip1, boolean withTrip2) {
transitModel = new TransitModel(STOP_MODEL, new Deduplicator());
transitModel.initTimeZone(TIME_ZONE);
transitModel.addAgency(TransitModelForTest.AGENCY);

CalendarServiceData calendarServiceData = new CalendarServiceData();
calendarServiceData.putServiceDatesForServiceId(
SERVICE_ID,
List.of(SERVICE_DATE.minusDays(1), SERVICE_DATE, SERVICE_DATE.plusDays(1))
);
transitModel.getServiceCodes().put(SERVICE_ID, 0);
transitModel.updateCalendarServiceData(true, calendarServiceData, DataImportIssueStore.NOOP);

if (withTrip1) {
withTrip1();
}
if (withTrip2) {
withTrip2();
}
RealtimeTestEnvironment(SourceType sourceType, TransitModel transitModel) {
this.transitModel = transitModel;

transitModel.index();
this.transitModel.index();
// SIRI and GTFS-RT cannot be registered with the transit model at the same time
// we are actively refactoring to remove this restriction
// for the time being you cannot run a SIRI and GTFS-RT test at the same time
Expand All @@ -113,49 +82,6 @@ public static RealtimeTestEnvironmentBuilder gtfs() {
dateTimeHelper = new DateTimeHelper(TIME_ZONE, SERVICE_DATE);
}

private RealtimeTestEnvironment withTrip1() {
trip1 =
createTrip(
TRIP_1_ID,
ROUTE_1,
List.of(new StopCall(STOP_A1, 10, 11), new StopCall(STOP_B1, 20, 21))
);
transitModel.index();
return this;
}

private RealtimeTestEnvironment withTrip2() {
trip2 =
createTrip(
TRIP_2_ID,
ROUTE_1,
List.of(
new StopCall(STOP_A1, 60, 61),
new StopCall(STOP_B1, 70, 71),
new StopCall(STOP_C1, 80, 81)
)
);

transitModel.index();
return this;
}

public Trip trip1() {
Objects.requireNonNull(
trip1,
"trip1 was not added to the test environment. Call withTrip1() to add it."
);
return trip1;
}

public Trip trip2() {
Objects.requireNonNull(
trip2,
"trip2 was not added to the test environment. Call withTrip2() to add it."
);
return trip2;
}

public static FeedScopedId id(String id) {
return TransitModelForTest.id(id);
}
Expand Down Expand Up @@ -195,6 +121,10 @@ public TripPattern getPatternForTrip(FeedScopedId tripId) {
return getPatternForTrip(tripId, SERVICE_DATE);
}

public TripPattern getPatternForTrip(String id) {
return getPatternForTrip(id(id));
}

public TripPattern getPatternForTrip(FeedScopedId tripId, LocalDate serviceDate) {
var transitService = getTransitService();
var trip = transitService.getTripOnServiceDateById(tripId);
Expand Down Expand Up @@ -319,59 +249,4 @@ private void commitTimetableSnapshot() {
gtfsSource.flushBuffer();
}
}

private Trip createTrip(String id, Route route, List<StopCall> stops) {
var trip = Trip
.of(id(id))
.withRoute(route)
.withHeadsign(I18NString.of("Headsign of %s".formatted(id)))
.withServiceId(SERVICE_ID)
.build();

var tripOnServiceDate = TripOnServiceDate
.of(trip.getId())
.withTrip(trip)
.withServiceDate(SERVICE_DATE)
.build();

transitModel.addTripOnServiceDate(tripOnServiceDate.getId(), tripOnServiceDate);

var stopTimes = IntStream
.range(0, stops.size())
.mapToObj(i -> {
var stop = stops.get(i);
return createStopTime(trip, i, stop.stop(), stop.arrivalTime(), stop.departureTime());
})
.toList();

TripTimes tripTimes = TripTimesFactory.tripTimes(trip, stopTimes, null);

final TripPattern pattern = TransitModelForTest
.tripPattern(id + "Pattern", route)
.withStopPattern(TransitModelForTest.stopPattern(stops.stream().map(StopCall::stop).toList()))
.build();
pattern.add(tripTimes);

transitModel.addTripPattern(pattern.getId(), pattern);

return trip;
}

private StopTime createStopTime(
Trip trip,
int stopSequence,
StopLocation stop,
int arrivalTime,
int departureTime
) {
var st = new StopTime();
st.setTrip(trip);
st.setStopSequence(stopSequence);
st.setStop(stop);
st.setArrivalTime(arrivalTime);
st.setDepartureTime(departureTime);
return st;
}

private record StopCall(RegularStop stop, int arrivalTime, int departureTime) {}
}
Original file line number Diff line number Diff line change
@@ -1,30 +1,129 @@
package org.opentripplanner.updater.trip;

import static org.opentripplanner.transit.model._data.TransitModelForTest.id;

import java.util.List;
import java.util.Objects;
import java.util.stream.IntStream;
import org.opentripplanner.framework.i18n.I18NString;
import org.opentripplanner.graph_builder.issue.api.DataImportIssueStore;
import org.opentripplanner.model.StopTime;
import org.opentripplanner.model.calendar.CalendarServiceData;
import org.opentripplanner.transit.model._data.TransitModelForTest;
import org.opentripplanner.transit.model.framework.Deduplicator;
import org.opentripplanner.transit.model.network.Route;
import org.opentripplanner.transit.model.network.TripPattern;
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.site.StopLocation;
import org.opentripplanner.transit.model.timetable.Trip;
import org.opentripplanner.transit.model.timetable.TripOnServiceDate;
import org.opentripplanner.transit.model.timetable.TripTimes;
import org.opentripplanner.transit.model.timetable.TripTimesFactory;
import org.opentripplanner.transit.service.TransitModel;

public class RealtimeTestEnvironmentBuilder {
public class RealtimeTestEnvironmentBuilder implements RealtimeTestConstants {

private RealtimeTestEnvironment.SourceType sourceType;
private boolean withTrip1 = false;
private boolean withTrip2 = false;
private final TransitModel transitModel = new TransitModel(STOP_MODEL, new Deduplicator());

RealtimeTestEnvironmentBuilder withSourceType(RealtimeTestEnvironment.SourceType sourceType) {
this.sourceType = sourceType;
return this;
}

public RealtimeTestEnvironmentBuilder withTrip1() {
withTrip1 = true;
createTrip(
TRIP_1_ID,
ROUTE_1,
List.of(new StopCall(STOP_A1, 10, 11), new StopCall(STOP_B1, 20, 21))
);
transitModel.index();
return this;
}

public RealtimeTestEnvironmentBuilder withTrip2() {
withTrip2 = true;
createTrip(
TRIP_2_ID,
ROUTE_1,
List.of(
new StopCall(STOP_A1, 60, 61),
new StopCall(STOP_B1, 70, 71),
new StopCall(STOP_C1, 80, 81)
)
);

transitModel.index();
return this;
}

public RealtimeTestEnvironment build() {
Objects.requireNonNull(sourceType, "sourceType cannot be null");
return new RealtimeTestEnvironment(sourceType, withTrip1, withTrip2);
transitModel.initTimeZone(TIME_ZONE);
transitModel.addAgency(TransitModelForTest.AGENCY);

CalendarServiceData calendarServiceData = new CalendarServiceData();
calendarServiceData.putServiceDatesForServiceId(
SERVICE_ID,
List.of(SERVICE_DATE.minusDays(1), SERVICE_DATE, SERVICE_DATE.plusDays(1))
);
transitModel.getServiceCodes().put(SERVICE_ID, 0);
transitModel.updateCalendarServiceData(true, calendarServiceData, DataImportIssueStore.NOOP);

return new RealtimeTestEnvironment(sourceType, transitModel);
}

private Trip createTrip(String id, Route route, List<StopCall> stops) {
var trip = Trip
.of(id(id))
.withRoute(route)
.withHeadsign(I18NString.of("Headsign of %s".formatted(id)))
.withServiceId(SERVICE_ID)
.build();

var tripOnServiceDate = TripOnServiceDate
.of(trip.getId())
.withTrip(trip)
.withServiceDate(SERVICE_DATE)
.build();

transitModel.addTripOnServiceDate(tripOnServiceDate.getId(), tripOnServiceDate);

var stopTimes = IntStream
.range(0, stops.size())
.mapToObj(i -> {
var stop = stops.get(i);
return createStopTime(trip, i, stop.stop(), stop.arrivalTime(), stop.departureTime());
})
.toList();

TripTimes tripTimes = TripTimesFactory.tripTimes(trip, stopTimes, null);

final TripPattern pattern = TransitModelForTest
.tripPattern(id + "Pattern", route)
.withStopPattern(TransitModelForTest.stopPattern(stops.stream().map(StopCall::stop).toList()))
.build();
pattern.add(tripTimes);

transitModel.addTripPattern(pattern.getId(), pattern);

return trip;
}

private static StopTime createStopTime(
Trip trip,
int stopSequence,
StopLocation stop,
int arrivalTime,
int departureTime
) {
var st = new StopTime();
st.setTrip(trip);
st.setStopSequence(stopSequence);
st.setStop(stop);
st.setArrivalTime(arrivalTime);
st.setDepartureTime(departureTime);
return st;
}

private record StopCall(RegularStop stop, int arrivalTime, int departureTime) {}
}
Loading

0 comments on commit b06a3e3

Please sign in to comment.