implemented a test to check if the old finishing list confirmed event can be loaded correctly

This commit is contained in:
Armin Zamani committed 2013-06-12 18:58:33 +02:00
1 parent b5581636b5
commit 964178eac5
2 files changed
+86 -9

No files matched your search

@@ -1,6 +1,7 @@
package com.sap.sailing.mongodb.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import java.io.Serializable;
import java.net.UnknownHostException;
@@ -11,6 +12,9 @@ import java.util.UUID;
import org.junit.Before;
import org.junit.Test;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.MongoException;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.CourseBase;
@@ -32,6 +36,9 @@ import com.sap.sailing.domain.leaderboard.impl.ScoreCorrectionImpl;
import com.sap.sailing.domain.leaderboard.impl.ThresholdBasedResultDiscardingRuleImpl;
import com.sap.sailing.domain.persistence.MongoFactory;
import com.sap.sailing.domain.persistence.MongoRaceLogStoreFactory;
import com.sap.sailing.domain.persistence.impl.FieldNames;
import com.sap.sailing.domain.persistence.impl.MongoObjectFactoryImpl;
import com.sap.sailing.domain.persistence.impl.MongoUtils;
import com.sap.sailing.domain.racelog.RaceLog;
import com.sap.sailing.domain.racelog.RaceLogCourseAreaChangedEvent;
import com.sap.sailing.domain.racelog.RaceLogCourseDesignChangedEvent;
@@ -224,6 +231,50 @@ public class TestStoringAndRetrievingRaceLogInLeaderboards extends RaceLogMongoD
}
}
@Test
public void testStoreAndRetrieveSimpleLeaderboardWithBackwardsCompatibleRaceLogFinishPositioningConfirmedEvent() {
RaceLogFinishPositioningConfirmedEvent event = RaceLogEventFactory.INSTANCE.createFinishPositioningConfirmedEvent(now, 0, null);
createAndStoreOldRaceLogFinishPositioningConfirmedEventDBEntry();
RaceLog loadedRaceLog = retrieveRaceLog();
loadedRaceLog.lockForRead();
try {
RaceLogEvent loadedEvent = loadedRaceLog.getFirstRawFix();
RaceLogFinishPositioningConfirmedEvent loadedConfirmedEvent = (RaceLogFinishPositioningConfirmedEvent) loadedEvent;
assertEquals(now, loadedConfirmedEvent.getTimePoint());
assertEquals(0, loadedConfirmedEvent.getPassId());
assertEquals(0, loadedConfirmedEvent.getInvolvedBoats().size());
assertNull(event.getPositionedCompetitors());
assertNull(loadedConfirmedEvent.getPositionedCompetitors());
assertEquals(1, Util.size(loadedRaceLog.getFixes()));
} finally {
loadedRaceLog.unlockAfterRead();
}
}
private void createAndStoreOldRaceLogFinishPositioningConfirmedEventDBEntry() {
Fleet defaultFleet = leaderboard.getFleet(null);
RaceColumn raceColumn = leaderboard.getRaceColumnByName(raceColumnName);
mongoObjectFactory.storeLeaderboard(leaderboard);
DBObject result = new BasicDBObject();
result.put(FieldNames.TIME_AS_MILLIS.name(), now.asMillis());
result.put(FieldNames.RACE_LOG_EVENT_CREATED_AT.name(), now.asMillis());
result.put(FieldNames.RACE_LOG_EVENT_ID.name(), UUID.randomUUID());
result.put(FieldNames.RACE_LOG_EVENT_PASS_ID.name(), 0);
result.put(FieldNames.RACE_LOG_EVENT_INVOLVED_BOATS.name(), new BasicDBList());
result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RaceLogFinishPositioningConfirmedEvent.class.getSimpleName());
DBObject raceLogResult = new BasicDBObject();
raceLogResult.put(FieldNames.RACE_LOG_IDENTIFIER.name(), MongoUtils.escapeDollarAndDot(raceColumn.getRaceLogIdentifier(defaultFleet).getIdentifier().toString()));
raceLogResult.put(FieldNames.RACE_LOG_EVENT.name(), result);
MongoObjectFactoryImpl factoryImpl = (MongoObjectFactoryImpl) mongoObjectFactory;
factoryImpl.getRaceLogCollection().insert(raceLogResult);
}
@Test
public void testStoreAndRetrieveSimpleLeaderboardWithRaceLogFinishPositioningListChangeEvent() {
Competitor storedCompetitor = DomainFactory.INSTANCE.createCompetitor(UUID.randomUUID(), "SAP Extreme Sailing Team", null, null);
@@ -1,7 +1,6 @@
package com.sap.sailing.mongodb.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import java.io.Serializable;
@@ -14,6 +13,9 @@ import java.util.UUID;
import org.junit.Before;
import org.junit.Test;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.MongoException;
import com.sap.sailing.domain.base.BoatClass;
import com.sap.sailing.domain.base.Competitor;
@@ -40,6 +42,9 @@ import com.sap.sailing.domain.persistence.DomainObjectFactory;
import com.sap.sailing.domain.persistence.MongoFactory;
import com.sap.sailing.domain.persistence.MongoObjectFactory;
import com.sap.sailing.domain.persistence.MongoRaceLogStoreFactory;
import com.sap.sailing.domain.persistence.impl.FieldNames;
import com.sap.sailing.domain.persistence.impl.MongoObjectFactoryImpl;
import com.sap.sailing.domain.persistence.impl.MongoUtils;
import com.sap.sailing.domain.racelog.RaceLog;
import com.sap.sailing.domain.racelog.RaceLogCourseAreaChangedEvent;
import com.sap.sailing.domain.racelog.RaceLogCourseDesignChangedEvent;
@@ -127,7 +132,7 @@ public class TestStoringAndRetrievingRaceLogInRegatta extends RaceLogMongoDBTest
public void testStoreAndRetrieveSimpleLeaderboardWithRaceLogProtestStartTimeEvent() {
RaceLogProtestStartTimeEvent expectedEvent = RaceLogEventFactory.INSTANCE.createProtestStartTimeEvent(now, 0, MillisecondsTimePoint.now());
addAndStoreRaceLogEvent(regatta, raceColumnName, expectedEvent);
addAndStoreRaceLogEvent(regatta, raceColumnName, expectedEvent);
RaceLog loadedRaceLog = retrieveRaceLog();
@@ -293,10 +298,10 @@ public class TestStoringAndRetrievingRaceLogInRegatta extends RaceLogMongoDBTest
}
@Test
public void testStoreAndRetrieveSimpleLeaderboardWithBackwardsCompatibleRaceLogFinishPositioningConfirmedEvent() {
public void testStoreAndRetrieveSimpleLeaderboardWithBackwardsCompatibleRaceLogFinishPositioningConfirmedEvent() {
RaceLogFinishPositioningConfirmedEvent event = RaceLogEventFactory.INSTANCE.createFinishPositioningConfirmedEvent(now, 0, null);
addAndStoreRaceLogEvent(regatta, raceColumnName, event);
createAndStoreOldRaceLogFinishPositioningConfirmedEventDBEntry();
RaceLog loadedRaceLog = retrieveRaceLog();
@@ -304,18 +309,39 @@ public class TestStoringAndRetrievingRaceLogInRegatta extends RaceLogMongoDBTest
try {
RaceLogEvent loadedEvent = loadedRaceLog.getFirstRawFix();
RaceLogFinishPositioningConfirmedEvent loadedConfirmedEvent = (RaceLogFinishPositioningConfirmedEvent) loadedEvent;
assertEquals(event.getTimePoint(), loadedConfirmedEvent.getTimePoint());
assertEquals(event.getPassId(), loadedConfirmedEvent.getPassId());
assertEquals(event.getId(), loadedConfirmedEvent.getId());
assertEquals(event.getInvolvedBoats().size(), loadedConfirmedEvent.getInvolvedBoats().size());
assertEquals(now, loadedConfirmedEvent.getTimePoint());
assertEquals(0, loadedConfirmedEvent.getPassId());
assertEquals(0, loadedConfirmedEvent.getInvolvedBoats().size());
assertNull(event.getPositionedCompetitors());
assertNotNull(loadedConfirmedEvent.getPositionedCompetitors());
assertNull(loadedConfirmedEvent.getPositionedCompetitors());
assertEquals(1, Util.size(loadedRaceLog.getFixes()));
} finally {
loadedRaceLog.unlockAfterRead();
}
}
private void createAndStoreOldRaceLogFinishPositioningConfirmedEventDBEntry() {
Series series = regatta.getSeriesByName(seriesName);
Fleet fleet = series.getFleetByName(yellowFleetName);
RaceColumn raceColumn = series.getRaceColumnByName(raceColumnName);
mongoObjectFactory.storeRegatta(regatta);
DBObject result = new BasicDBObject();
result.put(FieldNames.TIME_AS_MILLIS.name(), now.asMillis());
result.put(FieldNames.RACE_LOG_EVENT_CREATED_AT.name(), now.asMillis());
result.put(FieldNames.RACE_LOG_EVENT_ID.name(), UUID.randomUUID());
result.put(FieldNames.RACE_LOG_EVENT_PASS_ID.name(), 0);
result.put(FieldNames.RACE_LOG_EVENT_INVOLVED_BOATS.name(), new BasicDBList());
result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RaceLogFinishPositioningConfirmedEvent.class.getSimpleName());
DBObject raceLogResult = new BasicDBObject();
raceLogResult.put(FieldNames.RACE_LOG_IDENTIFIER.name(), MongoUtils.escapeDollarAndDot(raceColumn.getRaceLogIdentifier(fleet).getIdentifier().toString()));
raceLogResult.put(FieldNames.RACE_LOG_EVENT.name(), result);
MongoObjectFactoryImpl factoryImpl = (MongoObjectFactoryImpl) mongoObjectFactory;
factoryImpl.getRaceLogCollection().insert(raceLogResult);
}
@Test
public void testStoreAndRetrieveSimpleLeaderboardWithRaceLogCourseAreaChangeEvent() {
final UUID uuid = UUID.randomUUID();