Merge branch 'plotting-test' into mark-rounding-inference

This commit is contained in:
Hudson Continuous Build server committed 2014-02-08 01:06:44 +00:00
commit bec8df2648
2 files changed
+66 -17

No files matched your search

@@ -99,7 +99,9 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl implements
* reported by the threads. The function that calculates the total progress is:
*
* <pre>
* total_progress = sum(progress(thread_i)) / sum(weight(thread_i))</pre>
* total_progress = sum(progress(thread_i)) / sum(weight(thread_i))
* </pre>
*
* The weight is also the maximum individual progress that a thread can send: if a thread has a weight = 10 its
* progress only can be between 0 and 10, e.g,:
* <p>
@@ -113,35 +115,81 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl implements
* The total progress that you receive is:
*
* <pre>
* total_progress = 0 + 0 / 10 + 1 = 0 / 11 = 0</pre>
* total_progress = 0 + 0 / 10 + 1 = 0 / 11 = 0
* </pre>
*
* Then, the "Course thread" retrieves the course from the server and it sends a new progress message to the system:
*
* <pre>
* Course thread -&gt; weight = 1, progress = 1 ---&gt total_progress = 0 + 1 / 10 + 1 = 1 / 11 = 0.090909091</pre>
* Course thread -&gt; weight = 1, progress = 1 ---&gt total_progress = 0 + 1 / 10 + 1 = 1 / 11 = 0.090909091
* </pre>
*
* Then, the "Competitor positions thread" goes to the server and it checks that there is a high number of positions
* for the competitors. It decides to change its weight:
*
* <pre>
* Competitor positions thread -&gt weight = 50, progress = 0 --&gt total_progress = 0 + 1 / 50 + 1 = 1 / 51 = 0.019607843</pre>
* Competitor positions thread -&gt weight = 50, progress = 0 --&gt total_progress = 0 + 1 / 50 + 1 = 1 / 51 = 0.019607843
* </pre>
*
* Then, the "Competitor positions thread" starts to retrieve positions and it sends several messages updating the
* progress:
* <ul>
* <li><pre>Competitor positions thread -&gt weight = 50, progress = 1 --&gt; total_progress = 1 + 1 / 50 + 1 = 2 / 51 = 0.039215686</pre></li>
* <li><pre>Competitor positions thread -&gt weight = 50, progress = 2 --&gt total_progress = 2 + 1 / 50 + 1 = 3 / 51 = 0.058823529</pre></li>
* <li><pre>Competitor positions thread -&gt weight = 50, progress = 3 --&gt total_progress = 3 + 1 / 50 + 1 = 4 / 51 = 0.078431373</pre></li>
* <li><pre>...</pre></li>
* <li><pre>Competitor positions thread -&gt weight = 50, progress = 50 --&gt total_progress = 50 + 1 / 50 + 1 = 51 / 51 = 1.0</pre></li>
* <li>
*
* <pre>
* Competitor positions thread -&gt weight = 50, progress = 1 --&gt; total_progress = 1 + 1 / 50 + 1 = 2 / 51 = 0.039215686
* </pre>
*
* </li>
* <li>
*
* <pre>
* Competitor positions thread -&gt weight = 50, progress = 2 --&gt total_progress = 2 + 1 / 50 + 1 = 3 / 51 = 0.058823529
* </pre>
*
* </li>
* <li>
*
* <pre>
* Competitor positions thread -&gt weight = 50, progress = 3 --&gt total_progress = 3 + 1 / 50 + 1 = 4 / 51 = 0.078431373
* </pre>
*
* </li>
* <li>
*
* <pre>
* ...
* </pre>
*
* </li>
* <li>
*
* <pre>
* Competitor positions thread -&gt weight = 50, progress = 50 --&gt total_progress = 50 + 1 / 50 + 1 = 51 / 51 = 1.0
* </pre>
*
* </li>
* </ul>
*
* This example shows that is possible to receive more that 3 values of the progress lower than one already
* received. It happens because the weight of the threads changes."</i><p>
* received. It happens because the weight of the threads changes."</i>
* <p>
*
* We assume that there won't be more than six threads in TTCM receiving data for the same race.
* We assume that there won't be more than eight threads in TTCM receiving data for the same race, based on Jorge's
* statement from 2014-02-06: "One thread per subscription where the subscriptions are:
* <ul>
* <li>Competitor positions</li>
* <li>Mark positions</li>
* <li>Mark passings</li>
* <li>Route</li>
* <li>Start/Stop times for race</li>
* <li>Start/Stop times for event</li>
* <li>Messages for race</li>
* <li>Messages for event</li>
* </ul>
* Potentially, you can create 8 threads per TTCM (connecting only with one single race)."
*/
static final Integer MAX_STORED_PACKET_HOP_ALLOWANCE = 6;
static final Integer MAX_STORED_PACKET_HOP_ALLOWANCE = 8;
private final Event tractracEvent;
private final com.sap.sailing.domain.base.Regatta regatta;
@@ -269,7 +317,7 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl implements
// check if there is a directory configured where stored data files can be cached
// only cache files for races in REPLAY state
if (raceStatus.equals(TracTracConnectionConstants.REPLAY_STATUS)) {
if (raceStatus != null && raceStatus.equals(TracTracConnectionConstants.REPLAY_STATUS)) {
storedURI = checkForCachedStoredData(storedURI);
}
@@ -315,8 +363,9 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl implements
}
private URI checkForCachedStoredData(URI storedURI){
if (System.getProperty("tractrac.mtb.cache.dir") != null) {
final String directory = System.getProperty("tractrac.mtb.cache.dir");
final String CACHE_DIR_PROPERTY = "tractrac.mtb.cache.dir";
if (System.getProperty(CACHE_DIR_PROPERTY) != null) {
final String directory = System.getProperty(CACHE_DIR_PROPERTY);
if (new File(directory).exists()) {
final String[] pathFragments = storedURI.getPath().split("\\/");
final String mtbFileName = pathFragments[pathFragments.length-1];
@@ -22,10 +22,10 @@
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc}"/>
<stringAttribute key="pde.version" value="3.3"/>
<booleanAttribute key="show_selected_only" value="false"/>
<stringAttribute key="target_bundles" value="com.rabbitmq.client@default:default,com.sun.jersey@default:default,com.sun.mail.javax.mail@default:default,javax.servlet*3.0.0.v201112011016@default:default,javax.validation@default:default,javax.ws.rs@default:default,jcl.over.slf4j@default:default,org.apache.activemq.activeio-core@default:default,org.apache.activemq.activemq-core@default:default,org.apache.activemq.kahadb@default:default,org.apache.commons.codec@default:default,org.apache.commons.fileupload@default:default,org.apache.commons.io@default:default,org.apache.commons.logging@default:default,org.apache.geronimo.specs.geronimo-annotation_1.0_spec@default:default,org.apache.geronimo.specs.geronimo-j2ee-management_1.1_spec@default:default,org.apache.geronimo.specs.geronimo-jms_1.1_spec@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.eclipse.equinox.console@default:default,org.eclipse.jetty.continuation@default:default,org.eclipse.jetty.deploy@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.jmx@default:default,org.eclipse.jetty.osgi.boot.jsp@default:false,org.eclipse.jetty.osgi.boot@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jetty.webapp@default:default,org.eclipse.jetty.websocket.api@default:default,org.eclipse.jetty.websocket.client@default:default,org.eclipse.jetty.websocket.common@default:default,org.eclipse.jetty.websocket.server@default:default,org.eclipse.jetty.websocket.servlet@default:default,org.eclipse.jetty.xml@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.jdom@default:default,org.objectweb.asm@default:default,rome@default:default,routeconverter@default:default,slf4j.api@default:default,slf4j.jdk14@default:false"/>
<stringAttribute key="target_bundles" value="com.rabbitmq.client@default:default,com.sun.jersey@default:default,com.sun.mail.javax.mail@default:default,javax.servlet*3.0.0.v201112011016@default:default,javax.validation@default:default,javax.ws.rs@default:default,jcl.over.slf4j@default:default,org.apache.activemq.activeio-core@default:default,org.apache.activemq.activemq-core@default:default,org.apache.activemq.kahadb@default:default,org.apache.commons.codec@default:default,org.apache.commons.fileupload@default:default,org.apache.commons.io@default:default,org.apache.commons.logging@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.geronimo.specs.geronimo-annotation_1.0_spec@default:default,org.apache.geronimo.specs.geronimo-j2ee-management_1.1_spec@default:default,org.apache.geronimo.specs.geronimo-jms_1.1_spec@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.eclipse.equinox.console@default:default,org.eclipse.jetty.continuation@default:default,org.eclipse.jetty.deploy@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.jmx@default:default,org.eclipse.jetty.osgi.boot@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jetty.webapp@default:default,org.eclipse.jetty.websocket.api@default:default,org.eclipse.jetty.websocket.client@default:default,org.eclipse.jetty.websocket.common@default:default,org.eclipse.jetty.websocket.server@default:default,org.eclipse.jetty.websocket.servlet@default:default,org.eclipse.jetty.xml@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.jdom@default:default,org.objectweb.asm@default:default,rome@default:default,routeconverter@default:default,slf4j.api@default:default,slf4j.jdk14@default:false"/>
<booleanAttribute key="tracing" value="false"/>
<booleanAttribute key="useCustomFeatures" value="false"/>
<booleanAttribute key="useDefaultConfigArea" value="false"/>
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@5:true,com.sap.sailing.domain.swisstimingreplayadapter@5:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@5:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@default:default,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@default:default,com.sap.sailing.server.replication@default:default,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xrr.resultimport@default:default,com.sap.sse.gwt@default:default,com.tractrac.clientmodule@default:default,de.csenk.gwt.ws@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.barbados.resultimport@default:default,com.sap.sailing.datamining.shared@default:default,com.sap.sailing.datamining@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.igtimiadapter.persistence@default:default,com.sap.sailing.domain.igtimiadapter@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.shared.android@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@5:true,com.sap.sailing.domain.swisstimingreplayadapter@5:true,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@5:true,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@default:default,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.manage2sail.resultimport@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.resultimport@default:default,com.sap.sailing.sailwave.resultimport@default:default,com.sap.sailing.server.gateway.ess40@default:default,com.sap.sailing.server.gateway.serialization@default:default,com.sap.sailing.server.gateway@default:default,com.sap.sailing.server.replication@default:default,com.sap.sailing.server.trackfiles@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.velum.resultimport@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xrr.resultimport@default:default,com.sap.sse.gwt@default:default,com.tractrac.clientmodule@default:default,de.csenk.gwt.ws@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
<stringAttribute key="yk-options" value="&#13;&#10;additional-options2=onexit\=snapshot&#13;&#10;"/>
</launchConfiguration>