added test case for bug 858, replicating two races with the same competitor; checking that on the replica only one competitor is created

This commit is contained in:
Axel Uhl committed 2012-12-11 18:16:17 +01:00
1 parent c279e9c91b
commit 132c22ab7a
1 file changed
+31
@@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
@@ -24,6 +25,7 @@ import com.sap.sailing.domain.common.DefaultLeaderboardName;
import com.sap.sailing.domain.common.RegattaName;
import com.sap.sailing.domain.common.impl.Util;
import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.domain.test.TrackBasedTest;
import com.sap.sailing.server.operationaltransformation.AddDefaultRegatta;
import com.sap.sailing.server.operationaltransformation.AddRaceDefinition;
import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboard;
@@ -100,4 +102,33 @@ public class ServerReplicationTest extends AbstractServerReplicationTest {
assertEquals("Buoy1", replicaCourse.getFirstWaypoint().getBuoys().iterator().next().getName());
assertEquals("Buoy3", replicaCourse.getLastWaypoint().getBuoys().iterator().next().getName());
}
@Test
public void testSameCompetitorInTwoRacesReplication() throws InterruptedException {
final String boatClassName = "49er";
// FIXME use master DomainFactory; see bug 592
final DomainFactory masterDomainFactory = DomainFactory.INSTANCE;
BoatClass boatClass = masterDomainFactory.getOrCreateBoatClass(boatClassName);
final String baseEventName = "Test Event";
AddDefaultRegatta addEventOperation = new AddDefaultRegatta(baseEventName, boatClassName);
Regatta regatta = master.apply(addEventOperation);
final String raceName1 = "Test Race 1";
final String raceName2 = "Test Race 2";
Competitor competitor = TrackBasedTest.createCompetitor("The Same Competitor");
final CourseImpl masterCourse = new CourseImpl("Test Course", new ArrayList<Waypoint>());
final ArrayList<Competitor> competitors = new ArrayList<Competitor>();
competitors.add(competitor);
RaceDefinition race1 = new RaceDefinitionImpl(raceName1, masterCourse, boatClass, competitors);
AddRaceDefinition addRaceOperation1 = new AddRaceDefinition(new RegattaName(regatta.getName()), race1);
master.apply(addRaceOperation1);
RaceDefinition race2 = new RaceDefinitionImpl(raceName2, masterCourse, boatClass, competitors);
AddRaceDefinition addRaceOperation2 = new AddRaceDefinition(new RegattaName(regatta.getName()), race2);
master.apply(addRaceOperation2);
Thread.sleep(3000); // wait 1s for JMS to deliver the message and the message to be applied
Regatta replicaEvent = replica.getRegatta(new RegattaName(regatta.getName()));
RaceDefinition replicaRace1 = replicaEvent.getRaceByName(raceName1);
RaceDefinition replicaRace2 = replicaEvent.getRaceByName(raceName2);
assertSame(replicaRace1.getCompetitors().iterator().next(), replicaRace2.getCompetitors().iterator().next());
}
}