You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The complete core Java software for the Transitime real-time transit information project. The goal is to use any type of real-time GPS data to generate useful public transportation information. The system is for both letting passengers know the status of their vehicles and helping agencies more effectively manage their systems. By providing a complete open-source system, agencies can have a cost effective system and have full ownership of it.
4
+
This is a fork of TheTransitClock, a [GTFS-RT Trip Updates](https://gtfs.org/documentation/realtime/feed-entities/trip-updates/) generation engine used by public transit agencies around the world, including in Minneapolis, MN where [the software was found to outperform proprietary alternatives](http://berrebi.net/wp-content/uploads/2020/01/trbws07_FileUploads_2020-AM-Presentations_3470_pdf_13557_P20-20421_2020-01-14-09-24-54.pdf).
5
5
6
-
<b>Build</b>
6
+
[TheTransitClock](https://thetransitclock.github.io) was developed by Sean Óg Crudden and Simon J. Berrebi, Ph.D., itself a fork of [Swiftly Transitime](https://transitime.github.io/core/).
7
7
8
-
The software is made up of three modules which can each be built with maven. See BUILD.md
8
+
## About this Repo
9
+
10
+
The complete core Java software for the Transitime real-time transit information project. The purpose of the software is to use any type of real-time GPS data to generate useful public transportation information, namely a GTFS-RT Trip Updates feed.
11
+
12
+
The system is for both letting passengers know the status of their vehicles and helping agencies more effectively manage their systems. By providing a complete open-source system, agencies can have a cost effective system and have full ownership of it.
13
+
14
+
## Build
15
+
16
+
The software is made up of three modules which can each be built with maven. See [BUILD.md](./BUILD.md).
9
17
10
18
The core functionality is in the transitime project. The REST api is in transitimeApi and the user Web applicaton is in transitimeWebapp.
11
19
12
-
<b>Setup</b>
20
+
## Setup
13
21
14
22
The main module is transitTime. This has several standalone programs in the org.transitime.applications package.
15
23
@@ -29,12 +37,14 @@ The transitimeWebapp in turn is a web application which uses the transitTimeAPI
29
37
30
38
The transitimeQuickStart can be built with mvn install and ran using java -jar transitimeQuickStart it is currently a work in progress but the gui elements can be seen.
31
39
32
-
<b>Running tests</b>
40
+
## Running tests
33
41
34
-
- Default unit tests across all modules: `mvn verify` (not `mvn test` — see CLAUDE.md for why).
42
+
- Default unit tests across all modules: `mvn verify` (not `mvn test` — see below).
35
43
- Single module: `mvn -pl transitclock test`
36
44
- Single class: `mvn -pl transitclock test -Dtest=TestAPIKeyManager`
37
45
46
+
`mvn test` on the full reactor fails because `transitclockQuickStart` binds `maven-dependency-plugin:copy` to `generate-resources` to pull the `transitclockApi` WAR into its resources, but the `test` phase never packages that WAR (MDEP-187: "Artifact has not been packaged yet"). Use `mvn verify` / `mvn package` / `mvn install` to exercise all tests, or scope to a single module with `-pl`, or skip QuickStart with `mvn test -pl '!transitclockQuickStart'`.
47
+
38
48
Two additional test suites are opt-in via Maven profiles and excluded from the default build:
39
49
40
50
-**Pipeline tests** (`transitclockPipelineTests`) — boot a real Core against an in-memory HSQL database populated with a small WMATA GTFS fixture, then exercise matcher / generator behavior end-to-end. Run with:
@@ -47,13 +57,10 @@ Two additional test suites are opt-in via Maven profiles and excluded from the d
47
57
mvn install -P include-integration-tests
48
58
```
49
59
50
-
<b>Code coverage</b>
60
+
### Code coverage
51
61
52
62
JaCoCo generates coverage reports as part of the Maven `verify` phase.
53
63
54
64
- Per-module HTML reports: `<module>/target/site/jacoco/index.html`
55
65
- Aggregate report across Core + thin clients: `coverage-report/target/site/jacoco-aggregate/index.html`
56
66
- Regenerate just the aggregate (fastest): `mvn verify -pl coverage-report -am`
protectedstaticStringListConfigValuecontrolStopList = newStringListConfigValue("transitclock.holding.controlStops", null, "This is a list of stops to generate holding times for.");
69
69
70
+
publicHoldingTimeGeneratorDefaultImpl() {
71
+
// Operator opted into this generator via transitclock.core.holdingTimeGeneratorClass
72
+
// but left controlStops unset; the feature will produce no holding times until
73
+
// transitclock.holding.controlStops is configured. Surfaced once here because the
74
+
// per-event callers (isControlStop, handleDeparture) would flood the logs.
75
+
if (controlStopList.getValue() == null) {
76
+
logger.warn(
77
+
"HoldingTimeGeneratorDefaultImpl is active but transitclock.holding.controlStops is unset — "
78
+
+ "no holding times will be produced. Configure a stop-id list, or clear "
79
+
+ "transitclock.core.holdingTimeGeneratorClass to silence this warning.");
0 commit comments