Skip to content
Snippets Groups Projects
Commit 5d61ef85 authored by Nikolaus Krismer's avatar Nikolaus Krismer
Browse files

minor code refactoring (added algorithm helper class to remove

duplicated code)
parent 7d2f11a5
No related branches found
No related tags found
No related merge requests found
package it.unibz.inf.isochrone.network;
import it.unibz.inf.isochrone.algorithm.Isochrone;
import it.unibz.inf.isochrone.config.ConfigDataset;
import it.unibz.inf.isochrone.util.Query;
import java.lang.reflect.InvocationTargetException;
import org.testng.Assert;
final class AlgorithmHelper {
// Constructor
private AlgorithmHelper() {
}
// Public static methods
public static void run(final Class<? extends Isochrone> algorithmClass, final TestParameters params) {
run(algorithmClass, params, true);
}
public static void run(final Class<? extends Isochrone> algorithmClass, final TestParameters params, final boolean expireNodes) {
Query query = new Query(params.getDirection(), params.getWalkingSpeed(), params.getRuntime(), params.getDate(), expireNodes, params.getMode());
query.setNodes(params.getNodeId());
Isochrone algorithm = null;
try {
algorithm = algorithmClass.getConstructor(ConfigDataset.class, Query.class).newInstance(params.getDataset(), query);
} catch (final InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
Assert.fail(e.getMessage());
}
algorithm.compute();
}
}
package it.unibz.inf.isochrone.network; package it.unibz.inf.isochrone.network;
import it.unibz.inf.isochrone.algorithm.Isochrone;
import it.unibz.inf.isochrone.algorithm.MDijkstra; import it.unibz.inf.isochrone.algorithm.MDijkstra;
import it.unibz.inf.isochrone.algorithm.MineX; import it.unibz.inf.isochrone.algorithm.MineX;
import it.unibz.inf.isochrone.algorithm.MrneX; import it.unibz.inf.isochrone.algorithm.MrneX;
import it.unibz.inf.isochrone.config.ConfigDataset;
import it.unibz.inf.isochrone.util.EnumContainer.Dataset; import it.unibz.inf.isochrone.util.EnumContainer.Dataset;
import it.unibz.inf.isochrone.util.EnumContainer.Direction; import it.unibz.inf.isochrone.util.EnumContainer.Direction;
import it.unibz.inf.isochrone.util.EnumContainer.Mode; import it.unibz.inf.isochrone.util.EnumContainer.Mode;
import it.unibz.inf.isochrone.util.Query;
import java.lang.reflect.InvocationTargetException;
import java.util.Calendar; import java.util.Calendar;
import java.util.GregorianCalendar; import java.util.GregorianCalendar;
import org.testng.Assert;
import org.testng.annotations.Test; import org.testng.annotations.Test;
public class AlgorithmTest { public class AlgorithmTest {
...@@ -26,37 +21,23 @@ public class AlgorithmTest { ...@@ -26,37 +21,23 @@ public class AlgorithmTest {
@Test @Test
public void testMDijkstra() { public void testMDijkstra() {
run(MDijkstra.class, false); AlgorithmHelper.run(MDijkstra.class, getParams(), false);
} }
@Test @Test
public void testMineX() { public void testMineX() {
run(MineX.class); AlgorithmHelper.run(MineX.class, getParams());
} }
@Test @Test
public void testMrneX() { public void testMrneX() {
run(MrneX.class); AlgorithmHelper.run(MrneX.class, getParams());
} }
// Private methods // Private methods
private static void run(final Class<? extends Isochrone> algorithmClass) { private static TestParameters getParams() {
run(algorithmClass, true); return new TestParameters(WALKING_SPEED, DURATION, TIME, Mode.MULTIMODAL, NODE_ID, TEST_DATASET, Integer.MAX_VALUE, Direction.INCOMING);
}
private static void run(final Class<? extends Isochrone> algorithmClass, final boolean expireNodes) {
final Query query = new Query(Direction.INCOMING, WALKING_SPEED, DURATION, TIME, expireNodes, Mode.MULTIMODAL);
query.setNodes(NODE_ID);
Isochrone algorithm = null;
try {
algorithm = algorithmClass.getConstructor(ConfigDataset.class, Query.class).newInstance(ConfigDataset.getInstance(TEST_DATASET), query);
} catch (final InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
Assert.fail(e.getLocalizedMessage());
}
algorithm.compute();
} }
} }
...@@ -4,17 +4,14 @@ import it.unibz.inf.isochrone.algorithm.Isochrone; ...@@ -4,17 +4,14 @@ import it.unibz.inf.isochrone.algorithm.Isochrone;
import it.unibz.inf.isochrone.algorithm.MDijkstra; import it.unibz.inf.isochrone.algorithm.MDijkstra;
import it.unibz.inf.isochrone.algorithm.MineX; import it.unibz.inf.isochrone.algorithm.MineX;
import it.unibz.inf.isochrone.algorithm.MrneX; import it.unibz.inf.isochrone.algorithm.MrneX;
import it.unibz.inf.isochrone.config.ConfigDataset;
import it.unibz.inf.isochrone.util.EnumContainer.Dataset; import it.unibz.inf.isochrone.util.EnumContainer.Dataset;
import it.unibz.inf.isochrone.util.EnumContainer.Direction; import it.unibz.inf.isochrone.util.EnumContainer.Direction;
import it.unibz.inf.isochrone.util.EnumContainer.Mode; import it.unibz.inf.isochrone.util.EnumContainer.Mode;
import it.unibz.inf.isochrone.util.Query;
import java.io.BufferedWriter; import java.io.BufferedWriter;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.lang.reflect.InvocationTargetException;
import java.util.Calendar; import java.util.Calendar;
import java.util.Collection; import java.util.Collection;
import java.util.GregorianCalendar; import java.util.GregorianCalendar;
...@@ -27,7 +24,6 @@ import java.util.TreeSet; ...@@ -27,7 +24,6 @@ import java.util.TreeSet;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.testng.Assert;
import org.testng.annotations.AfterClass; import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test; import org.testng.annotations.Test;
...@@ -40,7 +36,6 @@ import org.testng.annotations.Test; ...@@ -40,7 +36,6 @@ import org.testng.annotations.Test;
*/ */
public final class RuntimeComplex { public final class RuntimeComplex {
private static final Logger LOGGER = LoggerFactory.getLogger(RuntimeComplex.class); private static final Logger LOGGER = LoggerFactory.getLogger(RuntimeComplex.class);
private static final Dataset TEST_DATASET = Dataset.BZ;
private static final int REPEAT_COUNT = 5; private static final int REPEAT_COUNT = 5;
private static final int BZ_NODE_ID = 2000500; private static final int BZ_NODE_ID = 2000500;
private static final Calendar BZ_TIME = new GregorianCalendar(2011, 5, 10, 10, 10, 0); private static final Calendar BZ_TIME = new GregorianCalendar(2011, 5, 10, 10, 10, 0);
...@@ -142,7 +137,7 @@ public final class RuntimeComplex { ...@@ -142,7 +137,7 @@ public final class RuntimeComplex {
final Collection<TestParameters> allParams = datasets.values(); final Collection<TestParameters> allParams = datasets.values();
for (final TestParameters params : allParams) { for (final TestParameters params : allParams) {
long startTime = Calendar.getInstance().getTimeInMillis(); long startTime = Calendar.getInstance().getTimeInMillis();
runWithParams(clazz, params); AlgorithmHelper.run(clazz, params);
long runTime = Calendar.getInstance().getTimeInMillis() - startTime; long runTime = Calendar.getInstance().getTimeInMillis() - startTime;
LOGGER.debug(" - runtime \"" + params.getRuntime() + "\": " + runTime + "msec"); LOGGER.debug(" - runtime \"" + params.getRuntime() + "\": " + runTime + "msec");
...@@ -169,20 +164,6 @@ public final class RuntimeComplex { ...@@ -169,20 +164,6 @@ public final class RuntimeComplex {
} }
} }
private static void runWithParams(final Class<? extends Isochrone> algorithmClass, final TestParameters params) {
Query query = new Query(params.getDirection(), params.getWalkingSpeed(), params.getRuntime(), params.getDate(), true, params.getMode());
query.setNodes(params.getNodeId());
Isochrone algorithm = null;
try {
algorithm = algorithmClass.getConstructor(ConfigDataset.class, Query.class).newInstance(ConfigDataset.getInstance(TEST_DATASET), query);
} catch (final InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
Assert.fail(e.getMessage());
}
algorithm.compute();
}
private static void writeMapToXML(final File file, final Set<Entry<String, Map<String, Long>>> resultSet, final int repeatCount) { private static void writeMapToXML(final File file, final Set<Entry<String, Map<String, Long>>> resultSet, final int repeatCount) {
BufferedWriter fw = null; BufferedWriter fw = null;
try { try {
......
...@@ -4,16 +4,11 @@ import it.unibz.inf.isochrone.algorithm.Isochrone; ...@@ -4,16 +4,11 @@ import it.unibz.inf.isochrone.algorithm.Isochrone;
import it.unibz.inf.isochrone.algorithm.MDijkstra; import it.unibz.inf.isochrone.algorithm.MDijkstra;
import it.unibz.inf.isochrone.algorithm.MineX; import it.unibz.inf.isochrone.algorithm.MineX;
import it.unibz.inf.isochrone.algorithm.MrneX; import it.unibz.inf.isochrone.algorithm.MrneX;
import it.unibz.inf.isochrone.config.ConfigDataset;
import it.unibz.inf.isochrone.util.EnumContainer.Dataset;
import it.unibz.inf.isochrone.util.Query;
import java.lang.reflect.InvocationTargetException;
import java.util.Calendar; import java.util.Calendar;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.testng.Assert;
import org.testng.annotations.Test; import org.testng.annotations.Test;
/** /**
...@@ -26,7 +21,6 @@ import org.testng.annotations.Test; ...@@ -26,7 +21,6 @@ import org.testng.annotations.Test;
*/ */
public final class RuntimeSimple { public final class RuntimeSimple {
private static final Logger LOGGER = LoggerFactory.getLogger(RuntimeSimple.class); private static final Logger LOGGER = LoggerFactory.getLogger(RuntimeSimple.class);
private static final Dataset TEST_DATASET = Dataset.BZ;
@Test @Test
public void runMDijkstra() { public void runMDijkstra() {
...@@ -49,24 +43,10 @@ public final class RuntimeSimple { ...@@ -49,24 +43,10 @@ public final class RuntimeSimple {
LOGGER.info("Executing \"" + algorithmClass.getSimpleName() + "\""); LOGGER.info("Executing \"" + algorithmClass.getSimpleName() + "\"");
final TestParameters params = new TestParameters(); final TestParameters params = new TestParameters();
long startTime = Calendar.getInstance().getTimeInMillis(); long startTime = Calendar.getInstance().getTimeInMillis();
runWithParams(algorithmClass, params); AlgorithmHelper.run(algorithmClass, params);
long runTime = Calendar.getInstance().getTimeInMillis() - startTime; long runTime = Calendar.getInstance().getTimeInMillis() - startTime;
LOGGER.info(" - runtime: \"" + params.getRuntime() + "\": " + runTime + "msec"); LOGGER.info(" - runtime: \"" + params.getRuntime() + "\": " + runTime + "msec");
LOGGER.info("-----------------------------"); LOGGER.info("-----------------------------");
} }
private static void runWithParams(final Class<? extends Isochrone> algorithmClass, final TestParameters params) {
Query query = new Query(params.getDirection(), params.getWalkingSpeed(), params.getRuntime(), params.getDate(), true, params.getMode());
query.setNodes(params.getNodeId());
Isochrone algorithm = null;
try {
algorithm = algorithmClass.getConstructor(ConfigDataset.class, Query.class).newInstance(ConfigDataset.getInstance(TEST_DATASET), query);
} catch (final InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
Assert.fail(e.getLocalizedMessage());
}
algorithm.compute();
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment