aboutsummaryrefslogtreecommitdiffstats
path: root/model-data/src/test/java/org/eclipse/viatra/solver/data/map/tests/smoke/MutableImmutableCompareSmokeTest.java
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <marussy@mit.bme.hu>2021-07-29 19:55:46 +0200
committerLibravatar Kristóf Marussy <marussy@mit.bme.hu>2021-07-29 19:55:46 +0200
commit4c04a8c8e1aedbca02b3ba8fd484c26e8b6e2413 (patch)
treed69e8e5c9c7f621b3109c28939091d07982d91dc /model-data/src/test/java/org/eclipse/viatra/solver/data/map/tests/smoke/MutableImmutableCompareSmokeTest.java
parentAdd new data structure for backend (diff)
downloadrefinery-4c04a8c8e1aedbca02b3ba8fd484c26e8b6e2413.tar.gz
refinery-4c04a8c8e1aedbca02b3ba8fd484c26e8b6e2413.tar.zst
refinery-4c04a8c8e1aedbca02b3ba8fd484c26e8b6e2413.zip
Data structure cleanup with Sonar
Diffstat (limited to 'model-data/src/test/java/org/eclipse/viatra/solver/data/map/tests/smoke/MutableImmutableCompareSmokeTest.java')
-rw-r--r--model-data/src/test/java/org/eclipse/viatra/solver/data/map/tests/smoke/MutableImmutableCompareSmokeTest.java88
1 files changed, 88 insertions, 0 deletions
diff --git a/model-data/src/test/java/org/eclipse/viatra/solver/data/map/tests/smoke/MutableImmutableCompareSmokeTest.java b/model-data/src/test/java/org/eclipse/viatra/solver/data/map/tests/smoke/MutableImmutableCompareSmokeTest.java
new file mode 100644
index 00000000..115b1fec
--- /dev/null
+++ b/model-data/src/test/java/org/eclipse/viatra/solver/data/map/tests/smoke/MutableImmutableCompareSmokeTest.java
@@ -0,0 +1,88 @@
1package org.eclipse.viatra.solver.data.map.tests.smoke;
2
3import static org.junit.jupiter.api.Assertions.fail;
4
5import java.util.Random;
6import java.util.stream.Stream;
7
8import org.eclipse.viatra.solver.data.map.ContinousHashProvider;
9import org.eclipse.viatra.solver.data.map.VersionedMapStore;
10import org.eclipse.viatra.solver.data.map.VersionedMapStoreImpl;
11import org.eclipse.viatra.solver.data.map.internal.VersionedMapImpl;
12import org.eclipse.viatra.solver.data.map.tests.smoke.utils.SmokeTestUtils;
13import org.eclipse.viatra.solver.data.map.tests.utils.MapTestEnvironment;
14import org.junit.jupiter.api.Tag;
15import org.junit.jupiter.api.Timeout;
16import org.junit.jupiter.params.ParameterizedTest;
17import org.junit.jupiter.params.provider.Arguments;
18import org.junit.jupiter.params.provider.MethodSource;
19
20class MutableImmutableCompareSmokeTest {
21 private void runSmokeTest(String scenario, int seed, int steps, int maxKey, int maxValue, int commitFrequency,
22 boolean evilHash) {
23 String[] values = MapTestEnvironment.prepareValues(maxValue);
24 ContinousHashProvider<Integer> chp = MapTestEnvironment.prepareHashProvider(evilHash);
25
26 VersionedMapStore<Integer, String> store = new VersionedMapStoreImpl<Integer, String>(chp, values[0]);
27 VersionedMapImpl<Integer, String> immutable = (VersionedMapImpl<Integer, String>) store.createMap();
28 VersionedMapImpl<Integer, String> mutable = (VersionedMapImpl<Integer, String>) store.createMap();
29
30 Random r = new Random(seed);
31
32 iterativeRandomPutsAndCommitsAndCompare(scenario, immutable, mutable, steps, maxKey, values, r,
33 commitFrequency);
34 }
35
36 private void iterativeRandomPutsAndCommitsAndCompare(String scenario, VersionedMapImpl<Integer, String> immutable,
37 VersionedMapImpl<Integer, String> mutable, int steps, int maxKey, String[] values, Random r,
38 int commitFrequency) {
39 for (int i = 0; i < steps; i++) {
40 int index = i + 1;
41 int nextKey = r.nextInt(maxKey);
42 String nextValue = values[r.nextInt(values.length)];
43 try {
44 immutable.put(nextKey, nextValue);
45 mutable.put(nextKey, nextValue);
46 } catch (Exception exception) {
47 exception.printStackTrace();
48 fail(scenario + ":" + index + ": exception happened: " + exception);
49 }
50 if (index % commitFrequency == 0) {
51 immutable.commit();
52 }
53 MapTestEnvironment.compareTwoMaps(scenario + ":" + index, immutable, mutable);
54
55 MapTestEnvironment.printStatus(scenario, index, steps, null);
56 }
57 }
58
59 @ParameterizedTest(name = "Mutable-Immutable Compare Smoke {index}/{0} Steps={1} Keys={2} Values={3} commit frequency={4} seed={5} evil-hash={6}")
60 @MethodSource
61 @Timeout(value = 10)
62 @Tag("smoke")
63 void parametrizedFastSmoke(int tests, int steps, int noKeys, int noValues, int commitFrequency, int seed,
64 boolean evilHash) {
65 runSmokeTest("SmokeMutableImmutableCompareS" + steps + "K" + noKeys + "V" + noValues + "s" + seed, seed, steps,
66 noKeys, noValues, commitFrequency, evilHash);
67 }
68
69 static Stream<Arguments> parametrizedFastSmoke() {
70 return SmokeTestUtils.permutationWithSize(new Object[] { 1000 }, new Object[] { 3, 32, 32 * 32 },
71 new Object[] { 2, 3 }, new Object[] { 1, 10, 100 }, new Object[] { 1, 2, 3 },
72 new Object[] { false, true });
73 }
74
75 @ParameterizedTest(name = "Mutable-Immutable Compare Smoke {index}/{0} Steps={1} Keys={2} Values={3} commit frequency={4} seed={5} evil-hash={6}")
76 @MethodSource
77 @Tag("smoke")
78 @Tag("slow")
79 void parametrizedSlowSmoke(int tests, int steps, int noKeys, int noValues, int commitFrequency, int seed,
80 boolean evilHash) {
81 runSmokeTest("SmokeMutableImmutableCompareS" + steps + "K" + noKeys + "V" + noValues + "s" + seed, seed, steps,
82 noKeys, noValues, commitFrequency, evilHash);
83 }
84
85 static Stream<Arguments> parametrizedSlowSmoke() {
86 return SmokeTestUtils.changeStepCount(MutableImmutableCompareSmokeTest.parametrizedSlowSmoke(), 1);
87 }
88}