diff --git a/src/test/java/it/unibz/inf/isochrone/network/AlgorithmHelper.java b/src/test/java/it/unibz/inf/isochrone/network/AlgorithmHelper.java index d34e73a9aa72c0771708eb4b8cecfc3a9717c612..1478d901caf49fabd0681452aa87e2723491defe 100644 --- a/src/test/java/it/unibz/inf/isochrone/network/AlgorithmHelper.java +++ b/src/test/java/it/unibz/inf/isochrone/network/AlgorithmHelper.java @@ -6,12 +6,15 @@ import it.unibz.inf.isochrone.util.Query; import java.lang.reflect.InvocationTargetException; import java.util.Collection; +import java.util.HashMap; +import java.util.Map; import java.util.SortedSet; import java.util.TreeSet; import org.testng.Assert; final class AlgorithmHelper { + private static Map<AlgorithmConfiguration, AlgorithmResult> cache = new HashMap<>(); public static final class AlgorithmResult { private final Isochrone algorithm; private final MemoryOutput output; @@ -49,7 +52,25 @@ final class AlgorithmHelper { return i1; } + public static AlgorithmResult run(final AlgorithmConfiguration config, final boolean useCache) { + if (!useCache) { + return AlgorithmHelper.compute(config); + } + + AlgorithmResult result = cache.get(config); + if (result == null) { + result = run(config, false); + cache.put(config, result); + } + + return result; + } + public static AlgorithmResult run(final AlgorithmConfiguration config) { + return run(config, true); + } + + private static AlgorithmResult compute(final AlgorithmConfiguration config) { final TestParameters params = config.getTestParameter(); final ConfigDataset c = ConfigDataset.getInstance(params.getDataset()); if (c == null) { diff --git a/src/test/java/it/unibz/inf/isochrone/network/AlgorithmRuntimeTest.java b/src/test/java/it/unibz/inf/isochrone/network/AlgorithmRuntimeTest.java index c6100e99c0d6ec9da77375fe6547f12ffdd155e3..2018a9cecd35941b8488c6c8e6dc2b389b0b37f3 100644 --- a/src/test/java/it/unibz/inf/isochrone/network/AlgorithmRuntimeTest.java +++ b/src/test/java/it/unibz/inf/isochrone/network/AlgorithmRuntimeTest.java @@ -203,7 +203,7 @@ public final class AlgorithmRuntimeTest { for (final TestParameters params : dsParams) { LOGGER.debug(" - executing for isochrone duration: " + params.getDuration()); final long startTime = Calendar.getInstance().getTimeInMillis(); - AlgorithmHelper.run(new AlgorithmConfiguration(clazz, params)); + AlgorithmHelper.run(new AlgorithmConfiguration(clazz, params), false); final long runTime = Calendar.getInstance().getTimeInMillis() - startTime; LOGGER.debug(" - runtime \"" + params.getDuration() + "\": " + runTime + "msec"); diff --git a/src/test/java/it/unibz/inf/isochrone/network/ComparisonTest.java b/src/test/java/it/unibz/inf/isochrone/network/ComparisonTest.java index 814fc838bdec43d15162f4eecd88437d42547962..73f147e798f1f1be17d3ed7079ac86326734c507 100644 --- a/src/test/java/it/unibz/inf/isochrone/network/ComparisonTest.java +++ b/src/test/java/it/unibz/inf/isochrone/network/ComparisonTest.java @@ -42,7 +42,6 @@ public final class ComparisonTest { 2, // every 2 hours 1 // every day }; - private static Map<AlgorithmConfiguration, Collection<Integer>> cache = new HashMap<>(); private static Map<String, List<TestParameters>> datasets = new HashMap<>(); private static Map<String, InitParams> datasetParams; private static Set<Integer> times; @@ -119,18 +118,6 @@ public final class ComparisonTest { datasets.put(datasetName, dsParams); } - private static Collection<Integer> getResult(final AlgorithmConfiguration key) { - Collection<Integer> result = cache.get(key); - if (result == null) { - final MemoryOutput o1 = AlgorithmHelper.run(key).getOutput(); - result = AlgorithmHelper.getDistinctIds(o1.getLinks()); - - cache.put(key, result); - } - - return result; - } - private static synchronized void initDatasets() { if (datasetParams != null) { return; @@ -184,8 +171,10 @@ public final class ComparisonTest { final Collection<TestParameters> dsParams = datasets.get(dsName); for (final TestParameters params : dsParams) { LOGGER.debug(" - comparing for isochrone duration: " + params.getDuration()); - final Collection<Integer> l1 = getResult(new AlgorithmConfiguration(clazz1, params, expireNodes)); - final Collection<Integer> l2 = getResult(new AlgorithmConfiguration(clazz2, params, expireNodes)); + final MemoryOutput o1 = AlgorithmHelper.run(new AlgorithmConfiguration(clazz1, params, expireNodes)).getOutput(); + final MemoryOutput o2 = AlgorithmHelper.run(new AlgorithmConfiguration(clazz2, params, expireNodes)).getOutput(); + final Collection<Integer> l1 = AlgorithmHelper.getDistinctIds(o1.getLinks()); + final Collection<Integer> l2 = AlgorithmHelper.getDistinctIds(o2.getLinks()); Assert.assertEquals(l1, l2, "Links from algorithm \"" + n1 + "\"" + " are not equal to links from algorithm \"" + n2 + "\""); } LOGGER.info("-----------------------------");