From 59da313e4c325b9b58f80d818c950e3fbd24a63c Mon Sep 17 00:00:00 2001 From: Nikolaus Krismer <nikolaus.krismer@uibk.ac.at> Date: Wed, 27 Aug 2014 10:52:24 +0200 Subject: [PATCH] using test result caching more often --- .../isochrone/network/AlgorithmHelper.java | 21 +++++++++++++++++++ .../network/AlgorithmRuntimeTest.java | 2 +- .../inf/isochrone/network/ComparisonTest.java | 19 ++++------------- 3 files changed, 26 insertions(+), 16 deletions(-) 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 d34e73a9..1478d901 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 c6100e99..2018a9ce 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 814fc838..73f147e7 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("-----------------------------"); -- GitLab