factored out commonalities of Kiel Week data based tests

This commit is contained in:
Axel Uhl committed 2011-08-01 11:49:44 +02:00
1 parent eca261552c
commit fbeadba61a
5 files changed
+162 -18

No files matched your search

@@ -2,6 +2,7 @@ package com.sap.sailing.domain.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
@@ -54,12 +55,10 @@ public class CourseUpdateTest extends AbstractTracTracLiveTest {
private Event domainEvent;
private DynamicTrackedEvent trackedEvent;
private final RouteData[] routeData = new RouteData[1];
private final List<Receiver> receivers;
private DomainFactory domainFactory;
public CourseUpdateTest() throws URISyntaxException, MalformedURLException {
super();
receivers = new ArrayList<Receiver>();
}
@Before
@@ -68,6 +67,7 @@ public class CourseUpdateTest extends AbstractTracTracLiveTest {
domainFactory = new DomainFactoryImpl();
domainEvent = domainFactory.createEvent(getEvent());
trackedEvent = domainFactory.getOrCreateTrackedEvent(domainEvent);
ArrayList<Receiver> receivers = new ArrayList<Receiver>();
receivers.add(new RaceCourseReceiver(domainFactory, trackedEvent, getEvent(), /* millisecondsOverWhichToAverageWind */
EmptyWindStore.INSTANCE, this,
30000, /* millisecondsOverWhichToAverageSpeed */30000) {
@@ -94,11 +94,6 @@ public class CourseUpdateTest extends AbstractTracTracLiveTest {
assertEquals("top", course.getLegs().get(1).getFrom().getName());
}
private void assertNull(RaceDefinition existingRaceDefinitionForRace) {
// TODO Auto-generated method stub
}
/**
* Asserts that the race course's legs have corresponding {@link TrackedLeg}s and the {@link TrackedLeg}s have
* {@link TrackedLegOfCompetitor} for each of the race's competitors.
@@ -3,9 +3,7 @@ package com.sap.sailing.domain.test;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -45,16 +43,13 @@ import com.sap.sailing.domain.tractracadapter.ReceiverType;
*
*/
@Ignore("Un-ignore when you need to fetch new tracks")
public class FetchTracksAndStoreLocallyTest extends AbstractTracTracLiveTest {
public class FetchTracksAndStoreLocallyTest extends KielerWoche2011BasedTest {
final private Object semaphor = new Object();
private final Map<Competitor, DynamicTrack<Competitor, GPSFixMoving>> tracks;
private boolean trackComplete;
public FetchTracksAndStoreLocallyTest() throws URISyntaxException, MalformedURLException {
super(Boolean.valueOf(System.getProperty("tractrac.tunnel", "false")) ? new URL("http://localhost:12348/events/event_20110609_KielerWoch/clientparams.php?event=event_20110609_KielerWoch&race=357c700a-9d9a-11e0-85be-406186cbf87c") :
new URL("http://germanmaster.traclive.dk/events/event_20110609_KielerWoch/clientparams.php?event=event_20110609_KielerWoch&race=357c700a-9d9a-11e0-85be-406186cbf87c"),
Boolean.valueOf(System.getProperty("tractrac.tunnel", "false")) ? new URI("tcp://localhost:1520") : new URI("tcp://germanmaster.traclive.dk:1520"),
Boolean.valueOf(System.getProperty("tractrac.tunnel", "false")) ? new URI("tcp://localhost:1521") : new URI("tcp://germanmaster.traclive.dk:1521"));
super();
tracks = new HashMap<Competitor, DynamicTrack<Competitor,GPSFixMoving>>();
}
@@ -144,7 +139,4 @@ public class FetchTracksAndStoreLocallyTest extends AbstractTracTracLiveTest {
}
}
protected String getExpectedEventName() {
return "Kieler Woche";
}
}
@@ -0,0 +1,101 @@
package com.sap.sailing.domain.test;
import static org.junit.Assert.assertNull;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
import com.sap.sailing.domain.base.Event;
import com.sap.sailing.domain.tracking.DynamicTrackedEvent;
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
import com.sap.sailing.domain.tractracadapter.Receiver;
import com.sap.sailing.domain.tractracadapter.ReceiverType;
import com.sap.sailing.domain.tractracadapter.impl.DomainFactoryImpl;
import com.tractrac.clientmodule.Race;
/**
* Connects to the Kieler Woche 2011 TracTrac data of the 505 Race 2. Subclasses have to implement a @Before method
* which calls {@link #setUp(ReceiverType[])} with a useful set of receiver types. When all stored data has been
* received, the {@link #getSemaphor() semaphor} is notified. Therefore, a typical pattern for subclasses should be
* to invoke {@link #setUp(ReceiverType[])}, then wait on the semaphor before starting with test processing.
*
* @author Axel Uhl (d043530)
*
*/
public abstract class KielerWoche2011BasedTest extends AbstractTracTracLiveTest {
private DomainFactoryImpl domainFactory;
private Event domainEvent;
private DynamicTrackedEvent trackedEvent;
private final Object semaphor = new Object();
/**
* When the {@link #semaphor} is notified, this flag indicates whether {@link #storedDataEnd()} has already
* been called.
*/
private boolean storedDataLoaded;
public KielerWoche2011BasedTest() throws MalformedURLException, URISyntaxException {
// 505 Race 2: ID = 357c700a-9d9a-11e0-85be-406186cbf87c
super(Boolean.valueOf(System.getProperty("tractrac.tunnel", "false")) ? new URL("http://localhost:12348/events/event_20110609_KielerWoch/clientparams.php?event=event_20110609_KielerWoch&race=357c700a-9d9a-11e0-85be-406186cbf87c") :
new URL("http://germanmaster.traclive.dk/events/event_20110609_KielerWoch/clientparams.php?event=event_20110609_KielerWoch&race=357c700a-9d9a-11e0-85be-406186cbf87c"),
Boolean.valueOf(System.getProperty("tractrac.tunnel", "false")) ? new URI("tcp://localhost:1520") : new URI("tcp://germanmaster.traclive.dk:1520"),
Boolean.valueOf(System.getProperty("tractrac.tunnel", "false")) ? new URI("tcp://localhost:1521") : new URI("tcp://germanmaster.traclive.dk:1521"));
}
protected void setUp(ReceiverType[] receiverTypes) throws MalformedURLException, IOException, InterruptedException {
super.setUp();
domainFactory = new DomainFactoryImpl();
domainEvent = domainFactory.createEvent(getEvent());
trackedEvent = domainFactory.getOrCreateTrackedEvent(domainEvent);
ArrayList<Receiver> receivers = new ArrayList<Receiver>();
for (Receiver r : domainFactory.getUpdateReceivers(trackedEvent, getEvent(), EmptyWindStore.INSTANCE,
/* tokenToRetrieveAssociatedRace */ this, receiverTypes)) {
receivers.add(r);
}
addListenersForStoredDataAndStartController(receivers);
Race tractracRace = getEvent().getRaceList().iterator().next();
// now we expect that there is no
assertNull(domainFactory.getExistingRaceDefinitionForRace(tractracRace));
}
/**
* When all stored data has been transmitted, notify the semaphor for tests to start processing
*/
@Override
public void storedDataEnd() {
super.storedDataEnd();
synchronized (semaphor) {
storedDataLoaded = true;
semaphor.notifyAll();
}
}
protected String getExpectedEventName() {
return "Kieler Woche";
}
protected DomainFactoryImpl getDomainFactory() {
return domainFactory;
}
protected Event getDomainEvent() {
return domainEvent;
}
protected DynamicTrackedEvent getTrackedEvent() {
return trackedEvent;
}
protected Object getSemaphor() {
return semaphor;
}
protected boolean isStoredDataLoaded() {
return storedDataLoaded;
}
}
@@ -0,0 +1,56 @@
package com.sap.sailing.domain.test;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import org.junit.Before;
import org.junit.Test;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.RaceDefinition;
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
import com.sap.sailing.domain.tractracadapter.ReceiverType;
import com.sap.sailing.util.Util;
import com.tractrac.clientmodule.Race;
public class WindEstimationOnKielerWocheDataTest extends KielerWoche2011BasedTest {
private RaceDefinition race;
private DynamicTrackedRace trackedRace;
public WindEstimationOnKielerWocheDataTest() throws MalformedURLException, URISyntaxException {
super();
}
@Before
public void setUp() throws MalformedURLException, IOException, InterruptedException {
super.setUp(new ReceiverType[] { ReceiverType.MARKPASSINGS, ReceiverType.RACECOURSE, ReceiverType.RAWPOSITIONS });
Race tractracRace = getEvent().getRaceList().iterator().next();
race = getDomainFactory().getRaceDefinition(tractracRace);
assertNotNull(race);
synchronized (getSemaphor()) {
while (!isStoredDataLoaded()) {
getSemaphor().wait();
}
}
trackedRace = getTrackedEvent().getTrackedRace(race);
}
private Competitor getCompetitorByName(String name) {
for (Competitor c : trackedRace.getRace().getCompetitors()) {
if (c.getName().equals(name)) {
return c;
}
}
return null;
}
@Test
public void testSetUp() {
assertNotNull(trackedRace);
assertTrue(Util.size(trackedRace.getTrack(getCompetitorByName("Dr.Plattner")).getFixes()) > 1000);
}
}
@@ -25,7 +25,7 @@ import com.sap.sailing.domain.tracking.Wind;
import com.sap.sailing.domain.tracking.impl.MarkPassingImpl;
import com.sap.sailing.util.Util;
public class WindEstimationTest extends StoredTrackBasedTest {
public class WindEstimationOnStoredTracksTest extends StoredTrackBasedTest {
private DynamicTrackedRace trackedRace;
@Before