mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-23 22:19:13 +00:00
Merge branch 'master' into bug5147
This commit is contained in:
+1
-1
@@ -79,7 +79,7 @@ public class WaypointPositionAndDistanceCacheTest {
|
||||
trackedRace = new DynamicTrackedRaceImpl(trackedRegatta, race, Collections.emptyList(), EmptyWindStore.INSTANCE,
|
||||
/* delayToLiveInMillis */ 8000, /* millisecondsOverWhichToAverageWind */ 30000,
|
||||
/* millisecondsOverWhichToAverageSpeed */ 15000, /* delayForCacheInvalidationOfWindEstimation */ 10000,
|
||||
/* useInternalMarkPassingAlgorithm */ false, OneDesignRankingMetric::new, mock(RaceLogAndTrackedRaceResolver.class), null);
|
||||
/* useInternalMarkPassingAlgorithm */ false, OneDesignRankingMetric::new, mock(RaceLogAndTrackedRaceResolver.class), null, /* markPassingRaceFingerprintRegistry */ null);
|
||||
timeRangeResolution = Duration.ONE_MINUTE;
|
||||
now = new MillisecondsTimePoint(MillisecondsTimePoint.now().asMillis() / timeRangeResolution.asMillis() * timeRangeResolution.asMillis());
|
||||
trackedRace.getOrCreateTrack(pinEnd).addGPSFix(new GPSFixImpl(new DegreePosition(0, -0.0000001), now));
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ public class MarkPassingCalculatorTest {
|
||||
private static class MyMarkPassingCalculator extends MarkPassingCalculator {
|
||||
public MyMarkPassingCalculator(DynamicTrackedRace race, boolean doListen,
|
||||
boolean waitForInitialMarkPassingCalculation) {
|
||||
super(race, doListen, waitForInitialMarkPassingCalculation);
|
||||
super(race, doListen, waitForInitialMarkPassingCalculation, /* markPassingRaceFingerprintRegistry */ null);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-1
@@ -136,7 +136,7 @@ public class TestCrossFleetScoring extends LeaderboardScoringAndRankingTestBase
|
||||
/* delay for wind estimation cache invalidation */ 0, /* useMarkPassingCalculator */ false,
|
||||
tr -> new TimeOnTimeAndDistanceRankingMetric(tr, timeOnTimeFactors, // time-on-time
|
||||
c -> new MillisecondsDurationImpl((long) (1000. * timeOnDistanceAllowance.apply(c)))),
|
||||
mock(RaceLogAndTrackedRaceResolver.class), null);
|
||||
mock(RaceLogAndTrackedRaceResolver.class), null, /* markPassingRaceFingerprintRegistry */ null);
|
||||
// in this simplified artificial course, the top mark is exactly north of the right leeward gate
|
||||
DegreePosition topPosition = new DegreePosition(1, 0);
|
||||
trackedRace.getOrCreateTrack(left)
|
||||
|
||||
+1
-1
@@ -128,7 +128,7 @@ public class TestFarthestAheadWithSkippedMarkPassing {
|
||||
/* delayToLiveInMillis */ 0,
|
||||
/* millisecondsOverWhichToAverageWind */ 30000, /* millisecondsOverWhichToAverageSpeed */ 30000,
|
||||
/* delay for wind estimation cache invalidation */ 0, /*useMarkPassingCalculator*/ false,
|
||||
tr->new OneDesignRankingMetric(tr), mock(RaceLogAndTrackedRaceResolver.class), null);
|
||||
tr->new OneDesignRankingMetric(tr), mock(RaceLogAndTrackedRaceResolver.class), null, /* markPassingRaceFingerprintRegistry */ null);
|
||||
// in this simplified artificial course, the top mark is exactly north of the right leeward gate
|
||||
DegreePosition topPosition = new DegreePosition(1, 0);
|
||||
trackedRace.getOrCreateTrack(left).addGPSFix(new GPSFixImpl(new DegreePosition(0, -0.000001), timePointForFixes));
|
||||
|
||||
+1
-1
@@ -102,7 +102,7 @@ public class TestSimpleTimeOnTimeRankingWithOneUpwindLeg {
|
||||
/* delay for wind estimation cache invalidation */ 0, /*useMarkPassingCalculator*/ false,
|
||||
tr->new TimeOnTimeAndDistanceRankingMetric(tr,
|
||||
timeOnTimeFactors, // time-on-time
|
||||
c->new MillisecondsDurationImpl((long) (1000.*timeOnDistanceFactors.apply(c)))), mock(RaceLogAndTrackedRaceResolver.class), null);
|
||||
c->new MillisecondsDurationImpl((long) (1000.*timeOnDistanceFactors.apply(c)))), mock(RaceLogAndTrackedRaceResolver.class), null, /* markPassingRaceFingerprintRegistry */ null);
|
||||
// in this simplified artificial course, the top mark is exactly north of the right leeward gate
|
||||
DegreePosition topPosition = new DegreePosition(1, 0);
|
||||
trackedRace.getOrCreateTrack(left).addGPSFix(new GPSFixImpl(new DegreePosition(0, -0.000001), timePointForFixes));
|
||||
|
||||
@@ -322,7 +322,7 @@ public class CourseTest {
|
||||
Collections.<Sideline> emptyList(), EmptyWindStore.INSTANCE, /* delayToLiveInMillis */3000,
|
||||
/* millisecondsOverWhichToAverageWind */30000,
|
||||
/* millisecondsOverWhichToAverageSpeed */8000, /*useMarkPassingCalculator*/ false, OneDesignRankingMetric::new,
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null);
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null, /* markPassingRaceFingerprintRegistry */ null);
|
||||
assertLegStructure(course, trackedRace);
|
||||
course.removeWaypoint(0);
|
||||
assertLegStructure(course, trackedRace);
|
||||
@@ -358,7 +358,7 @@ public class CourseTest {
|
||||
EmptyWindStore.INSTANCE, /* delayToLiveInMillis */ 3000,
|
||||
/* millisecondsOverWhichToAverageWind */ 30000,
|
||||
/* millisecondsOverWhichToAverageSpeed */ 8000, /*useMarkPassingCalculator*/ false, OneDesignRankingMetric::new,
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null);
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null, /* markPassingRaceFingerprintRegistry */ null);
|
||||
assertLegStructure(course, trackedRace);
|
||||
final WaypointImpl wp1_5 = new WaypointImpl(new MarkImpl("Test Mark 1.5"));
|
||||
assertWaypointIndexes(course);
|
||||
|
||||
+1
-1
@@ -88,7 +88,7 @@ public class CourseUpdateDuringNonAtomicSerializationTest implements Serializabl
|
||||
EmptyWindStore.INSTANCE,
|
||||
/* delayToLiveInMillis */10000, /* millisecondsOverWhichToAverageWind */30000, /* millisecondsOverWhichToAverageSpeed */
|
||||
7000, /* useMarkPassingCalculator */ false, OneDesignRankingMetric::new,
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null) {
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null, /* markPassingRaceFingerprintRegistry */ null) {
|
||||
private static final long serialVersionUID = 9114777576548711763L;
|
||||
|
||||
@Override
|
||||
|
||||
+1
-1
@@ -101,7 +101,7 @@ public class CourseUpdateTest extends AbstractTracTracLiveTest {
|
||||
/* delayToLiveInMillis */0l, /* millisecondsOverWhichToAverageWind */30000, /* simulator */null, /* courseDesignUpdateURI */
|
||||
null, /* tracTracUsername */null, /* tracTracPassword */null, getEventSubscriber(), getRaceSubscriber(),
|
||||
/*ignoreTracTracMarkPassings*/false, mock(RaceLogAndTrackedRaceResolver.class), mock(LeaderboardGroupResolver.class), RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
||||
new DefaultRaceTrackingHandler()) {
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null) {
|
||||
@Override
|
||||
protected void handleEvent(Triple<IControlRoute, Long, Void> event) {
|
||||
super.handleEvent(event);
|
||||
|
||||
+1
-1
@@ -140,7 +140,7 @@ public class LeaderboardCourseChangeTest {
|
||||
TrackedRace spyedTrackedRace = spy(new DynamicTrackedRaceImpl(mockedTrackedRegatta, mockedRace,
|
||||
new HashSet<Sideline>(), EmptyWindStore.INSTANCE, 5000, 20000, 20000,
|
||||
/* useMarkPassingCalculator */ false, OneDesignRankingMetric::new,
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null));
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null, /* markPassingRaceFingerprintRegistry */ null));
|
||||
|
||||
return spyedTrackedRace;
|
||||
}
|
||||
|
||||
+4
-4
@@ -59,28 +59,28 @@ public class MultipleClassesInRegattaTest {
|
||||
EmptyRegattaLogStore.INSTANCE, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry(),
|
||||
mock(RaceLogAndTrackedRaceResolver.class), mock(LeaderboardGroupResolver.class), createConnectivityParams(httpAndHost, liveURI, storedURI, courseDesignUpdateURI,
|
||||
tracTracUsername, tracTracPassword, "cce678c8-97e6-11e0-9aed-406186cbf87c"), RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
||||
new DefaultRaceTrackingHandler());
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null);
|
||||
kiwotest2 = domainFactory
|
||||
.createRaceTracker(
|
||||
EmptyRaceLogStore.INSTANCE,
|
||||
EmptyRegattaLogStore.INSTANCE, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry(),
|
||||
mock(RaceLogAndTrackedRaceResolver.class), mock(LeaderboardGroupResolver.class), createConnectivityParams(httpAndHost, liveURI, storedURI, courseDesignUpdateURI,
|
||||
tracTracUsername, tracTracPassword, "11290bd6-97e7-11e0-9aed-406186cbf87c"), RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
||||
new DefaultRaceTrackingHandler());
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null);
|
||||
kiwotest3 = domainFactory
|
||||
.createRaceTracker(
|
||||
EmptyRaceLogStore.INSTANCE,
|
||||
EmptyRegattaLogStore.INSTANCE, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry(),
|
||||
mock(RaceLogAndTrackedRaceResolver.class), mock(LeaderboardGroupResolver.class), createConnectivityParams(httpAndHost, liveURI, storedURI, courseDesignUpdateURI,
|
||||
tracTracUsername, tracTracPassword, "39635b24-97e7-11e0-9aed-406186cbf87c"), RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
||||
new DefaultRaceTrackingHandler());
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null);
|
||||
weym470may112014_2 = domainFactory
|
||||
.createRaceTracker(
|
||||
EmptyRaceLogStore.INSTANCE,
|
||||
EmptyRegattaLogStore.INSTANCE, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry(),
|
||||
mock(RaceLogAndTrackedRaceResolver.class), mock(LeaderboardGroupResolver.class), createConnectivityParams(httpAndHost, liveURI, storedURI, courseDesignUpdateURI,
|
||||
tracTracUsername, tracTracPassword, "04498426-7dfd-11e0-8236-406186cbf87c"), RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
||||
new DefaultRaceTrackingHandler());
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null);
|
||||
|
||||
assertEquals("STG", kiwotest1.getRegatta().getBoatClass().getName());
|
||||
assertEquals("5O5", kiwotest2.getRegatta().getBoatClass().getName());
|
||||
|
||||
+3
-3
@@ -133,9 +133,9 @@ public abstract class OnlineTracTracBasedTest extends AbstractTracTracLiveTest i
|
||||
ArrayList<Receiver> receivers = new ArrayList<Receiver>();
|
||||
for (Receiver r : domainFactory.getUpdateReceivers(trackedRegatta, getTracTracRace(), EmptyWindStore.INSTANCE, /* delayToLiveInMillis */0l, /* simulator */null, createRaceDefinitionSet(),
|
||||
/* trackedRegattaRegistry */ null,
|
||||
mock(RaceLogAndTrackedRaceResolver.class), mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */null, /* tracTracUsername */null, /* tracTracPassword */
|
||||
null, getEventSubscriber(), getRaceSubscriber(), /*ignoreTracTracMarkPassings*/ false, RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
||||
new DefaultRaceTrackingHandler(), /* raceAndCompetitorStatusWithRaceLogReconciler */ null, receiverTypes)) {
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null, mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */null, /* tracTracPassword */
|
||||
/* tracTracUsername */null, null, getEventSubscriber(), getRaceSubscriber(), /*ignoreTracTracMarkPassings*/ false,
|
||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, new DefaultRaceTrackingHandler(), /* raceAndCompetitorStatusWithRaceLogReconciler */ null, receiverTypes)) {
|
||||
receivers.add(r);
|
||||
}
|
||||
getRaceSubscriber().subscribeConnectionStatus(new IConnectionStatusListener() {
|
||||
|
||||
+2
-1
@@ -129,7 +129,8 @@ public class RaceColumnCacheTest extends AbstractLeaderboardTest {
|
||||
TrackedRace spyedTrackedRace = spy(new DynamicTrackedRaceImpl(mockedTrackedRegatta, mockedRace,
|
||||
new HashSet<Sideline>(), EmptyWindStore.INSTANCE, 5000, 20000, 20000,
|
||||
/* useMarkPassingCalculator */ false, OneDesignRankingMetric::new,
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null));
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null,
|
||||
/* markPassingRaceFingerprintRegistry */ null));
|
||||
return spyedTrackedRace;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -119,7 +119,7 @@ public class ReachingLegTest extends TrackBasedTest {
|
||||
/* delayToLiveInMillis */ 0,
|
||||
/* millisecondsOverWhichToAverageWind */ 30000, /* millisecondsOverWhichToAverageSpeed */ 30000,
|
||||
/* delay for wind estimation cache invalidation */ 0, /*useMarkPassingCalculator*/ false,
|
||||
OneDesignRankingMetric::new, mock(RaceLogAndTrackedRaceResolver.class), null);
|
||||
OneDesignRankingMetric::new, mock(RaceLogAndTrackedRaceResolver.class), null, /* markPassingRaceFingerprintRegistry */ null);
|
||||
// in this simplified artificial course, the top mark is exactly north of the right leeward gate, the offset
|
||||
// mark is slightly west of the top mark; wind from the north makes the leg from top to offset a reaching leg
|
||||
Position leftPosition = new DegreePosition(0, -0.00001);
|
||||
|
||||
+4
-4
@@ -121,10 +121,10 @@ public class ReceiveMarkPassingDataTest extends AbstractTracTracLiveTest {
|
||||
public void addRaceDefinition(RaceDefinition race, DynamicTrackedRace trackedRace) {
|
||||
}
|
||||
}, /* trackedRegattaRegistry */null,
|
||||
mock(RaceLogAndTrackedRaceResolver.class), mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */null, /* tracTracUsername */null, /* tracTracPassword */
|
||||
null, getEventSubscriber(), getRaceSubscriber(), /*ignoreTracTracMarkPassings*/ false, RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
||||
new DefaultRaceTrackingHandler(), /* raceAndCompetitorStatusWithRaceLogReconciler */ null,
|
||||
ReceiverType.RACECOURSE, ReceiverType.MARKPOSITIONS, ReceiverType.RACESTARTFINISH, ReceiverType.RAWPOSITIONS)) {
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null, mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */null, /* tracTracPassword */
|
||||
/* tracTracUsername */null, null, getEventSubscriber(), getRaceSubscriber(), /*ignoreTracTracMarkPassings*/ false,
|
||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, new DefaultRaceTrackingHandler(),
|
||||
/* raceAndCompetitorStatusWithRaceLogReconciler */ null, ReceiverType.RACECOURSE, ReceiverType.MARKPOSITIONS, ReceiverType.RACESTARTFINISH, ReceiverType.RAWPOSITIONS)) {
|
||||
receivers.add(r);
|
||||
addReceiverToStopDuringTearDown(r);
|
||||
}
|
||||
|
||||
+6
-6
@@ -89,9 +89,9 @@ public class ReceiveTrackingDataTest extends AbstractTracTracLiveTest {
|
||||
public void addRaceDefinition(RaceDefinition race, DynamicTrackedRace trackedRace) {
|
||||
}
|
||||
},
|
||||
/* trackedRegattaRegistry */null, mock(RaceLogAndTrackedRaceResolver.class), mock(LeaderboardGroupResolver.class), getTracTracRace(), /* courseDesignUpdateURI */
|
||||
null, /* tracTracUsername */null, /* tracTracPassword */null, getEventSubscriber(), getRaceSubscriber(), /*ignoreTracTracMarkPassings*/ false, RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
||||
new DefaultRaceTrackingHandler(), /* raceAndCompetitorStatusWithRaceLogReconciler */ null)) {
|
||||
/* trackedRegattaRegistry */null, mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null, mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */
|
||||
getTracTracRace(), null, /* tracTracUsername */null, /* tracTracPassword */null, getEventSubscriber(), getRaceSubscriber(), /*ignoreTracTracMarkPassings*/ false,
|
||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, new DefaultRaceTrackingHandler(), /* raceAndCompetitorStatusWithRaceLogReconciler */ null)) {
|
||||
receiver.subscribe();
|
||||
getRaceSubscriber().start();
|
||||
addReceiverToStopDuringTearDown(receiver);
|
||||
@@ -103,9 +103,9 @@ public class ReceiveTrackingDataTest extends AbstractTracTracLiveTest {
|
||||
@Override
|
||||
public void addRaceDefinition(RaceDefinition race, DynamicTrackedRace trackedRace) {
|
||||
}
|
||||
}, /* trackedRegattaRegistry */null, mock(RaceLogAndTrackedRaceResolver.class), mock(LeaderboardGroupResolver.class), getTracTracRace(), /* courseDesignUpdateURI */
|
||||
null, /* tracTracUsername */null, /* tracTracPassword */null, getEventSubscriber(), getRaceSubscriber(), /*ignoreTracTracMarkPassings*/ false, RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
||||
new DefaultRaceTrackingHandler(), /* raceAndCompetitorStatusWithRaceLogReconciler */ null));
|
||||
}, /* trackedRegattaRegistry */null, mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null, mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */
|
||||
getTracTracRace(), null, /* tracTracUsername */null, /* tracTracPassword */null, getEventSubscriber(), getRaceSubscriber(), /*ignoreTracTracMarkPassings*/ false,
|
||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, new DefaultRaceTrackingHandler(), /* raceAndCompetitorStatusWithRaceLogReconciler */ null));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ public class SerializeRankingMetricTest extends AbstractSerializationTest {
|
||||
new RaceDefinitionImpl("Race", new CourseImpl("Course", Collections.<Waypoint>emptyList()) ,
|
||||
/* boatClass */ _49er, Collections.<Competitor,Boat>emptyMap()),
|
||||
Collections.<Sideline> emptyList(), EmptyWindStore.INSTANCE, 0l, 0l, 0l,
|
||||
false, TimeOnTimeAndDistanceRankingMetric::new, null, /* trackingConnectorInfo */ null);
|
||||
false, TimeOnTimeAndDistanceRankingMetric::new, null, /* trackingConnectorInfo */ null, /* markPassingRaceFingerprintRegistry */ null);
|
||||
RankingMetric clone = cloneBySerialization(trackedRace.getRankingMetric(), DomainFactory.INSTANCE);
|
||||
assertNotNull(clone);
|
||||
assertTrue(clone instanceof TimeOnTimeAndDistanceRankingMetric);
|
||||
|
||||
+1
-1
@@ -91,7 +91,7 @@ public class StarbordSideOfStartLineRecognitionTest {
|
||||
|
||||
public MockedTrackedRaceImpl() {
|
||||
super(null, null, Collections.<Sideline> emptyList(), null, 0, 0, 0, 0, false, OneDesignRankingMetric::new,
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null);
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null, /* markPassingRaceFingerprintRegistry */ null);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@ import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
|
||||
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.WindImpl;
|
||||
import com.sap.sailing.domain.polars.NotEnoughDataHasBeenAddedException;
|
||||
import com.sap.sailing.domain.common.polars.NotEnoughDataHasBeenAddedException;
|
||||
import com.sap.sailing.domain.polars.PolarDataService;
|
||||
import com.sap.sailing.domain.tracking.MarkPositionAtTimePointCache;
|
||||
import com.sap.sailing.domain.tracking.TrackedLeg;
|
||||
|
||||
+1
-1
@@ -201,7 +201,7 @@ public abstract class TrackBasedTest {
|
||||
/* delayToLiveInMillis */ 0,
|
||||
/* millisecondsOverWhichToAverageWind */ 30000, /* millisecondsOverWhichToAverageSpeed */ 30000,
|
||||
/* delay for wind estimation cache invalidation */ 0, useMarkPassingCalculator,
|
||||
rankingMetricConstructor, raceLogResolver, /* trackingConnectorInfo */ null);
|
||||
rankingMetricConstructor, raceLogResolver, /* trackingConnectorInfo */ null, /* markPassingRaceFingerprintRegistry */ null);
|
||||
// in this simplified artificial course, the top mark is exactly north of the right leeward gate
|
||||
DegreePosition topPosition = new DegreePosition(54.48, 10.24);
|
||||
TimePoint afterTheRace = new MillisecondsTimePoint(timePointForFixes.asMillis() + 36000000); // 10h after the fix timed
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@ public class UnicodeCharactersInCompetitorNamesTest {
|
||||
/* preferReplayIfAvailable */ false, /* timeoutInMillis */ (int) RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
||||
/* useOfficialEventsToUpdateRaceLog */ false),
|
||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
||||
new DefaultRaceTrackingHandler());
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null);
|
||||
|
||||
Iterable<Competitor> competitors = fourtyninerYellow_2.getRaceHandle().getRace().getCompetitors();
|
||||
for (Competitor competitor : competitors) {
|
||||
|
||||
+1
-1
@@ -53,7 +53,7 @@ public class UpdateMarkPassingTest {
|
||||
race, Collections.<Sideline> emptyList(), EmptyWindStore.INSTANCE, /* delayToLiveInMillis */1000,
|
||||
/* millisecondsOverWhichToAverageWind */30000, /* millisecondsOverWhichToAverageSpeed */30000,
|
||||
/* useMarkPassingCalculator */ false, OneDesignRankingMetric::new,
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null);
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null, /* markPassingRaceFingerprintRegistry */ null);
|
||||
TimePoint now = MillisecondsTimePoint.now();
|
||||
TimePoint later = now.plus(1000);
|
||||
trackedRace.updateMarkPassings(competitor, Arrays.asList(new MarkPassing[] { new MarkPassingImpl(now, waypoint, competitor) }));
|
||||
|
||||
+1
-1
@@ -108,7 +108,7 @@ public class WindEstimationLockingUnderLoadTest {
|
||||
/* sidelines */ Collections.emptySet(), EmptyWindStore.INSTANCE, /* delayToLiveInMillis */ 10000,
|
||||
/* millisecondsOverWhichToAverageWind */ 30000, /* millisecondsOverWhichToAverageSpeed */ 15000,
|
||||
/* useInternalMarkPassingAlgorithm */ false, regatta.getRankingMetricConstructor(), /* raceLogResolver */ null,
|
||||
/* trackingConnectorInfo */ null) {
|
||||
/* trackingConnectorInfo */ null, /* markPassingRaceFingerprintRegistry */ null) {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
|
||||
@@ -356,7 +356,7 @@ public class WindTest {
|
||||
EmptyWindStore.INSTANCE, /* delayToLiveInMillis */ 1000,
|
||||
/* millisecondsOverWhichToAverageWind */ 30000,
|
||||
/* millisecondsOverWhichToAverageSpeed */ 30000, /*useMarkPassingCalculator*/ false, OneDesignRankingMetric::new,
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null);
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null, /* markPassingRaceFingerprintRegistry */ null);
|
||||
TimePoint start = MillisecondsTimePoint.now();
|
||||
TimePoint topMarkRounding = start.plus(30000);
|
||||
TimePoint finish = topMarkRounding.plus(30000);
|
||||
|
||||
+1
-1
@@ -107,7 +107,7 @@ public abstract class AbstractExportedPositionsBasedTest {
|
||||
EmptyWindStore.INSTANCE,
|
||||
/* delayToLiveInMillis */ 3000, /* millisecondsOverWhichToAverageWind */ 15000,
|
||||
/* millisecondsOverWhichToAverageSpeed */ 10000, /* useInternalMarkPassingAlgorithm */ true,
|
||||
OneDesignRankingMetric::new, /* raceLogResolver */ null, /* trackingConnectorInfo */ null);
|
||||
OneDesignRankingMetric::new, /* raceLogResolver */ null, /* trackingConnectorInfo */ null, /* markPassingRaceFingerprintRegistry */ null);
|
||||
result.setStatus(new TrackedRaceStatusImpl(TrackedRaceStatusEnum.LOADING, 0.0));
|
||||
for (final Entry<CompetitorWithBoat, Iterable<GPSFixMoving>> e : competitorsAndTheirTracks.entrySet()) {
|
||||
final DynamicGPSFixTrack<Competitor, GPSFixMoving> track = result.getTrack(e.getKey());
|
||||
|
||||
+1
-1
@@ -120,7 +120,7 @@ public abstract class AbstractMarkPassingTest extends OnlineTracTracBasedTest {
|
||||
Map<Competitor, Map<Waypoint, MarkPassing>> computedPasses = new HashMap<>();
|
||||
// Get calculatedMarkPasses
|
||||
long time = System.currentTimeMillis();
|
||||
MarkPassingCalculator mpc = new MarkPassingCalculator(getTrackedRace(), false, /* waitForInitialMarkPassingCalculation */ true);
|
||||
MarkPassingCalculator mpc = new MarkPassingCalculator(getTrackedRace(), false, /* waitForInitialMarkPassingCalculation */ true, /* markPassingRaceFingerprintRegistry */ null);
|
||||
time = System.currentTimeMillis() - time;
|
||||
|
||||
for (Competitor c : getRace().getCompetitors()) {
|
||||
|
||||
+1
-1
@@ -88,7 +88,7 @@ public class AbstractMockedRaceMarkPassingTest {
|
||||
race = new DynamicTrackedRaceImpl(new DynamicTrackedRegattaImpl(r), raceDef, new ArrayList<Sideline>(),
|
||||
new EmptyWindStore(), 0, 10000, 10000, /* useMarkPassingCalculator */ false,
|
||||
OneDesignRankingMetric::new,
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null);
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null, /* markPassingRaceFingerprintRegistry */ null);
|
||||
race.setStartTimeReceived(new MillisecondsTimePoint(10000));
|
||||
TimePoint t = new MillisecondsTimePoint(30000);
|
||||
List<Util.Pair<Mark, Position>> pos = Arrays.asList(new Util.Pair<Mark, Position>(m, new DegreePosition(0, 0)),
|
||||
|
||||
+1
-1
@@ -49,7 +49,7 @@ public class StarIDM2013MarkPassingTest extends AbstractMarkPassingTest {
|
||||
}
|
||||
|
||||
private void testWholeRace5() throws InvalidDateException {
|
||||
new MarkPassingCalculator(getTrackedRace(), false, /* waitForInitialMarkPassingCalculation */ true); // do our calculation, injecting into TrackedRace
|
||||
new MarkPassingCalculator(getTrackedRace(), false, /* waitForInitialMarkPassingCalculation */ true, /* markPassingRaceFingerprintRegistry */ null); // do our calculation, injecting into TrackedRace
|
||||
final Competitor GER7897 = getCompetitorByName("Tusch, Frank,Winkelmann, Sven");
|
||||
// the start mark passing of Tuschi and Sven is a bit dubious; TracTrac sees them over the line at 2013-05-04T14:50:10+0200
|
||||
// but at that time the pin end still seems to be moving to port, and the track seems to pass the pin end on the outside;
|
||||
|
||||
+80
-2
@@ -9,11 +9,18 @@ import java.net.MalformedURLException;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFixedMarkPassingEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogSuppressedMarkPassingsEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.impl.RaceLogFixedMarkPassingEventImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.impl.RaceLogImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.impl.RaceLogSuppressedMarkPassingsEventImpl;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.ControlPoint;
|
||||
import com.sap.sailing.domain.base.ControlPointWithTwoMarks;
|
||||
@@ -25,6 +32,7 @@ import com.sap.sailing.domain.base.impl.WaypointImpl;
|
||||
import com.sap.sailing.domain.common.PassingInstruction;
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.SpeedWithBearing;
|
||||
import com.sap.sailing.domain.common.abstractlog.NotRevokableException;
|
||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.common.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.common.tracking.impl.GPSFixImpl;
|
||||
@@ -60,14 +68,16 @@ public class MarkPassingRaceFingerprintJsonSerializationTest extends OnlineTracT
|
||||
new ReceiverType[] { ReceiverType.MARKPASSINGS, ReceiverType.MARKPOSITIONS, ReceiverType.RACECOURSE,
|
||||
ReceiverType.RACESTARTFINISH, ReceiverType.RAWPOSITIONS, ReceiverType.SENSORDATA });
|
||||
trackedRace1 = getTrackedRace();
|
||||
trackedRace1.attachRaceLog(new RaceLogImpl(UUID.randomUUID()));
|
||||
super.setUp();
|
||||
super.setUp("event_20110505_SailingTea", // Semifinale
|
||||
/* raceId */ "01ea3604-02ef-11e1-9efc-406186cbf87c", /* liveUri */ null, /* storedUri */ null,
|
||||
new ReceiverType[] { ReceiverType.MARKPASSINGS, ReceiverType.MARKPOSITIONS, ReceiverType.RACECOURSE,
|
||||
ReceiverType.RACESTARTFINISH, ReceiverType.RAWPOSITIONS, ReceiverType.SENSORDATA });
|
||||
trackedRace2 = getTrackedRace();
|
||||
calculator1 = new MarkPassingCalculator(trackedRace1, false, false);
|
||||
calculator2 = new MarkPassingCalculator(trackedRace2, false, false);
|
||||
trackedRace2.attachRaceLog(new RaceLogImpl(UUID.randomUUID()));
|
||||
calculator1 = new MarkPassingCalculator(trackedRace1, false, false, /* markPassingRaceFingerprintRegistry */ null);
|
||||
calculator2 = new MarkPassingCalculator(trackedRace2, false, false, /* markPassingRaceFingerprintRegistry */ null);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -148,6 +158,74 @@ public class MarkPassingRaceFingerprintJsonSerializationTest extends OnlineTracT
|
||||
assertNotEquals("Json1 and Json2 are equal: " + json1 + " json2: " + json2, json1, json2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFixedMarkPassingAddition() {
|
||||
MarkPassingRaceFingerprintFactory factory = MarkPassingRaceFingerprintFactory.INSTANCE;
|
||||
MarkPassingRaceFingerprint fingerprint1 = factory.createFingerprint(trackedRace1);
|
||||
assertTrue(fingerprint1.matches(trackedRace2));
|
||||
trackedRace2.getAttachedRaceLogs().iterator().next().add(new RaceLogFixedMarkPassingEventImpl(TimePoint.now(), new LogEventAuthorImpl("me", 0),
|
||||
trackedRace2.getRace().getCompetitors().iterator().next(), /* pPassId */ 1, TimePoint.now(), 0));
|
||||
MarkPassingRaceFingerprint fingerprint2 = factory.createFingerprint(trackedRace2);
|
||||
assertFalse(fingerprint1.matches(trackedRace2));
|
||||
assertFalse(fingerprint2.matches(trackedRace1));
|
||||
JSONObject json1 = fingerprint1.toJson();
|
||||
JSONObject json2 = fingerprint2.toJson();
|
||||
assertNotEquals("Json1 and Json2 are equal: " + json1 + " json2: " + json2, json1, json2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFixedMarkPassingRevocation() throws NotRevokableException {
|
||||
final LogEventAuthorImpl author = new LogEventAuthorImpl("me", 0);
|
||||
final RaceLogFixedMarkPassingEvent fixedMarkPassingEvent = new RaceLogFixedMarkPassingEventImpl(TimePoint.now(), author,
|
||||
trackedRace2.getRace().getCompetitors().iterator().next(), /* pPassId */ 1, TimePoint.now(), 0);
|
||||
trackedRace1.getAttachedRaceLogs().iterator().next().add(fixedMarkPassingEvent);
|
||||
trackedRace2.getAttachedRaceLogs().iterator().next().add(fixedMarkPassingEvent);
|
||||
MarkPassingRaceFingerprintFactory factory = MarkPassingRaceFingerprintFactory.INSTANCE;
|
||||
MarkPassingRaceFingerprint fingerprint1 = factory.createFingerprint(trackedRace1);
|
||||
assertTrue(fingerprint1.matches(trackedRace2));
|
||||
trackedRace2.getAttachedRaceLogs().iterator().next().revokeEvent(author, fixedMarkPassingEvent);
|
||||
MarkPassingRaceFingerprint fingerprint2 = factory.createFingerprint(trackedRace2);
|
||||
assertFalse(fingerprint1.matches(trackedRace2));
|
||||
assertFalse(fingerprint2.matches(trackedRace1));
|
||||
JSONObject json1 = fingerprint1.toJson();
|
||||
JSONObject json2 = fingerprint2.toJson();
|
||||
assertNotEquals("Json1 and Json2 are equal: " + json1 + " json2: " + json2, json1, json2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMarkPassingSuppressionAddition() {
|
||||
MarkPassingRaceFingerprintFactory factory = MarkPassingRaceFingerprintFactory.INSTANCE;
|
||||
MarkPassingRaceFingerprint fingerprint1 = factory.createFingerprint(trackedRace1);
|
||||
assertTrue(fingerprint1.matches(trackedRace2));
|
||||
trackedRace2.getAttachedRaceLogs().iterator().next().add(new RaceLogSuppressedMarkPassingsEventImpl(TimePoint.now(), new LogEventAuthorImpl("me", 0),
|
||||
trackedRace2.getRace().getCompetitors().iterator().next(), /* pPassId */ 1, 0));
|
||||
MarkPassingRaceFingerprint fingerprint2 = factory.createFingerprint(trackedRace2);
|
||||
assertFalse(fingerprint1.matches(trackedRace2));
|
||||
assertFalse(fingerprint2.matches(trackedRace1));
|
||||
JSONObject json1 = fingerprint1.toJson();
|
||||
JSONObject json2 = fingerprint2.toJson();
|
||||
assertNotEquals("Json1 and Json2 are equal: " + json1 + " json2: " + json2, json1, json2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMarkPassingSuppressionAdditionRevocation() throws NotRevokableException {
|
||||
final LogEventAuthorImpl author = new LogEventAuthorImpl("me", 0);
|
||||
final RaceLogSuppressedMarkPassingsEvent fixedMarkPassingEvent = new RaceLogSuppressedMarkPassingsEventImpl(TimePoint.now(), author,
|
||||
trackedRace2.getRace().getCompetitors().iterator().next(), /* pPassId */ 1, 0);
|
||||
trackedRace1.getAttachedRaceLogs().iterator().next().add(fixedMarkPassingEvent);
|
||||
trackedRace2.getAttachedRaceLogs().iterator().next().add(fixedMarkPassingEvent);
|
||||
MarkPassingRaceFingerprintFactory factory = MarkPassingRaceFingerprintFactory.INSTANCE;
|
||||
MarkPassingRaceFingerprint fingerprint1 = factory.createFingerprint(trackedRace1);
|
||||
assertTrue(fingerprint1.matches(trackedRace2));
|
||||
trackedRace2.getAttachedRaceLogs().iterator().next().revokeEvent(author, fixedMarkPassingEvent);
|
||||
MarkPassingRaceFingerprint fingerprint2 = factory.createFingerprint(trackedRace2);
|
||||
assertFalse(fingerprint1.matches(trackedRace2));
|
||||
assertFalse(fingerprint2.matches(trackedRace1));
|
||||
JSONObject json1 = fingerprint1.toJson();
|
||||
JSONObject json2 = fingerprint2.toJson();
|
||||
assertNotEquals("Json1 and Json2 are equal: " + json1 + " json2: " + json2, json1, json2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCompetitorFixChange() {
|
||||
DynamicTrackedRaceImpl testRace = trackedRace2;
|
||||
|
||||
+3
-2
@@ -44,6 +44,7 @@ import com.sap.sailing.domain.common.TargetTimeInfo;
|
||||
import com.sap.sailing.domain.common.Wind;
|
||||
import com.sap.sailing.domain.common.WindSource;
|
||||
import com.sap.sailing.domain.common.WindSourceType;
|
||||
import com.sap.sailing.domain.common.polars.NotEnoughDataHasBeenAddedException;
|
||||
import com.sap.sailing.domain.common.racelog.Flags;
|
||||
import com.sap.sailing.domain.common.tracking.GPSFix;
|
||||
import com.sap.sailing.domain.common.tracking.GPSFixMoving;
|
||||
@@ -52,7 +53,7 @@ import com.sap.sailing.domain.leaderboard.ScoringScheme;
|
||||
import com.sap.sailing.domain.leaderboard.impl.CompetitorAndRankComparable;
|
||||
import com.sap.sailing.domain.leaderboard.impl.CompetitorProviderFromRaceColumnsAndRegattaLike;
|
||||
import com.sap.sailing.domain.leaderboard.impl.RankAndRankComparable;
|
||||
import com.sap.sailing.domain.polars.NotEnoughDataHasBeenAddedException;
|
||||
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.polars.PolarDataService;
|
||||
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
|
||||
import com.sap.sailing.domain.ranking.RankingMetric;
|
||||
@@ -676,7 +677,7 @@ public class MockedTrackedRace implements DynamicTrackedRace {
|
||||
DynamicRaceDefinitionSet raceDefinitionSetToUpdate, boolean useMarkPassingcalculator,
|
||||
RaceLogAndTrackedRaceResolver raceLogResolver,
|
||||
Optional<ThreadLocalTransporter> threadLocalTransporter,
|
||||
TrackingConnectorInfo trackingConnectorInfo) {
|
||||
TrackingConnectorInfo trackingConnectorInfo, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -39,13 +39,13 @@ import com.sap.sailing.domain.common.TargetTimeInfo;
|
||||
import com.sap.sailing.domain.common.Wind;
|
||||
import com.sap.sailing.domain.common.WindSource;
|
||||
import com.sap.sailing.domain.common.WindSourceType;
|
||||
import com.sap.sailing.domain.common.polars.NotEnoughDataHasBeenAddedException;
|
||||
import com.sap.sailing.domain.common.tracking.GPSFix;
|
||||
import com.sap.sailing.domain.common.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.common.tracking.SensorFix;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard.RankComparableRank;
|
||||
import com.sap.sailing.domain.leaderboard.impl.CompetitorAndRankComparable;
|
||||
import com.sap.sailing.domain.leaderboard.impl.RankAndRankComparable;
|
||||
import com.sap.sailing.domain.polars.NotEnoughDataHasBeenAddedException;
|
||||
import com.sap.sailing.domain.polars.PolarDataService;
|
||||
import com.sap.sailing.domain.ranking.RankingMetric;
|
||||
import com.sap.sailing.domain.ranking.RankingMetric.RankingInfo;
|
||||
|
||||
+1
-1
@@ -122,6 +122,6 @@ public class TrackedRegattaTest {
|
||||
RaceDefinition race1 = new RaceDefinitionImpl(name, course, boatClass, Collections.emptyMap());
|
||||
return new DynamicTrackedRaceImpl(regatta, race1, Collections.<Sideline> emptyList(),
|
||||
EmptyWindStore.INSTANCE, 0, 0, 0, /* useMarkPassingCalculator */ false, OneDesignRankingMetric::new,
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null);
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* trackingConnectorInfo */ null, /* markPassingRaceFingerprintRegistry */ null);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user