diff options
author | Oszkar Semerath <Oszkar Semerath@DESKTOP-DNR7JQ7> | 2021-07-25 01:59:24 +0200 |
---|---|---|
committer | Oszkar Semerath <Oszkar Semerath@DESKTOP-DNR7JQ7> | 2021-07-25 01:59:24 +0200 |
commit | 2de88f6135915916260f23238372179c88007eb1 (patch) | |
tree | f74233069fec1d67cbc80acdf063c0b3c483f9b2 /Solvers | |
parent | hash code fix and test environment reorganization (diff) | |
download | VIATRA-Generator-2de88f6135915916260f23238372179c88007eb1.tar.gz VIATRA-Generator-2de88f6135915916260f23238372179c88007eb1.tar.zst VIATRA-Generator-2de88f6135915916260f23238372179c88007eb1.zip |
Comparation tests between commiting and non-commiting maps.
Diffstat (limited to 'Solvers')
4 files changed, 99 insertions, 2 deletions
diff --git a/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/MapTestEnvironment.java b/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/MapTestEnvironment.java index 11e1c1a7..e53dc9f9 100644 --- a/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/MapTestEnvironment.java +++ b/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/MapTestEnvironment.java | |||
@@ -1,6 +1,8 @@ | |||
1 | package org.eclipse.viatra.solver.data.map; | 1 | package org.eclipse.viatra.solver.data.map; |
2 | 2 | ||
3 | import static org.junit.Assert.assertTrue; | ||
3 | import static org.junit.Assert.fail; | 4 | import static org.junit.Assert.fail; |
5 | import static org.junit.jupiter.api.Assertions.assertEquals; | ||
4 | 6 | ||
5 | import java.util.HashMap; | 7 | import java.util.HashMap; |
6 | import java.util.Iterator; | 8 | import java.util.Iterator; |
@@ -46,6 +48,27 @@ public class MapTestEnvironment<KEY,VALUE> { | |||
46 | return chp; | 48 | return chp; |
47 | } | 49 | } |
48 | 50 | ||
51 | public static <KEY, VALUE> void compareTwoMaps(VersionedMapImpl<KEY, VALUE> map1, VersionedMapImpl<KEY, VALUE> map2) { | ||
52 | //1. Comparing cursors. | ||
53 | Cursor<KEY, VALUE> cursor1 = map1.getCursor(); | ||
54 | Cursor<KEY, VALUE> cursor2 = map2.getCursor(); | ||
55 | while(!cursor1.isTerminated()) { | ||
56 | if(cursor2.isTerminated()) { | ||
57 | fail("cursor 2 terminated before cursor1"); | ||
58 | } | ||
59 | assertEquals(cursor1.getKey(), cursor2.getKey()); | ||
60 | assertEquals(cursor2.getValue(), cursor2.getValue()); | ||
61 | cursor1.move(); | ||
62 | cursor2.move(); | ||
63 | } | ||
64 | if(!cursor2.isTerminated()) fail("cursor 1 terminated before cursor 2"); | ||
65 | |||
66 | // 2.1. comparing hash codes | ||
67 | assertEquals(map1.hashCode(), map2.hashCode()); | ||
68 | assertTrue(map1.equals(map2)); | ||
69 | assertTrue(map2.equals(map1)); | ||
70 | } | ||
71 | |||
49 | VersionedMapImpl<KEY, VALUE> sut; | 72 | VersionedMapImpl<KEY, VALUE> sut; |
50 | Map<KEY,VALUE> oracle = new HashMap<KEY, VALUE>(); | 73 | Map<KEY,VALUE> oracle = new HashMap<KEY, VALUE>(); |
51 | 74 | ||
diff --git a/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest1Mutable.java b/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest1Mutable.java index 4e6e46e3..e77d6468 100644 --- a/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest1Mutable.java +++ b/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest1Mutable.java | |||
@@ -59,7 +59,7 @@ public class SmokeTest1Mutable { | |||
59 | } | 59 | } |
60 | } | 60 | } |
61 | 61 | ||
62 | @ParameterizedTest(name = "Mutable Smoke {index}/{0} Steps={1} Keys={2} Values={3} seed={4}, evil-hash={5}") | 62 | @ParameterizedTest(name = "Mutable Smoke {index}/{0} Steps={1} Keys={2} Values={3} seed={4} evil-hash={5}") |
63 | @MethodSource | 63 | @MethodSource |
64 | void parametrizedSmoke(int test, int steps, int noKeys, int noValues, int seed, boolean evilHash) { | 64 | void parametrizedSmoke(int test, int steps, int noKeys, int noValues, int seed, boolean evilHash) { |
65 | runSmokeTest("SmokeS"+steps+"K"+noKeys+"V"+noValues+"s"+seed+"H"+(evilHash?"Evil":"Normal"),seed,steps,noKeys,noValues,evilHash); | 65 | runSmokeTest("SmokeS"+steps+"K"+noKeys+"V"+noValues+"s"+seed+"H"+(evilHash?"Evil":"Normal"),seed,steps,noKeys,noValues,evilHash); |
diff --git a/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest2Commit.java b/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest2Commit.java index fa57f2d3..c9498381 100644 --- a/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest2Commit.java +++ b/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest2Commit.java | |||
@@ -64,7 +64,7 @@ public class SmokeTest2Commit { | |||
64 | } | 64 | } |
65 | 65 | ||
66 | 66 | ||
67 | @ParameterizedTest(name = "Immutable Smoke {index}/{0} Steps={1} Keys={2} Values={3} commit frequency={4} seed={5}") | 67 | @ParameterizedTest(name = "Immutable Smoke {index}/{0} Steps={1} Keys={2} Values={3} commit frequency={4} seed={5} evil-hash={6}") |
68 | @MethodSource | 68 | @MethodSource |
69 | void parametrizedSmoke(int tests, int steps, int noKeys, int noValues, int commitFrequency, int seed, boolean evilHash) { | 69 | void parametrizedSmoke(int tests, int steps, int noKeys, int noValues, int commitFrequency, int seed, boolean evilHash) { |
70 | runSmokeTest("SmokeCommitS"+steps+"K"+noKeys+"V"+noValues+"s"+seed,seed,steps,noKeys,noValues,commitFrequency,evilHash); | 70 | runSmokeTest("SmokeCommitS"+steps+"K"+noKeys+"V"+noValues+"s"+seed,seed,steps,noKeys,noValues,commitFrequency,evilHash); |
diff --git a/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest3MutableImmutableCompare.java b/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest3MutableImmutableCompare.java new file mode 100644 index 00000000..d6fbf223 --- /dev/null +++ b/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest3MutableImmutableCompare.java | |||
@@ -0,0 +1,74 @@ | |||
1 | package org.eclipse.viatra.solver.data.map; | ||
2 | |||
3 | import static org.junit.Assert.fail; | ||
4 | |||
5 | import java.util.Random; | ||
6 | import java.util.stream.Stream; | ||
7 | |||
8 | import org.eclipse.viatra.solver.data.map.internal.VersionedMapImpl; | ||
9 | import org.junit.jupiter.params.ParameterizedTest; | ||
10 | import org.junit.jupiter.params.provider.Arguments; | ||
11 | import org.junit.jupiter.params.provider.MethodSource; | ||
12 | |||
13 | public class SmokeTest3MutableImmutableCompare { | ||
14 | private void runSmokeTest(String scenario, int seed, int steps, int maxKey, int maxValue, int commitFrequency, boolean evilHash) { | ||
15 | String[] values = MapTestEnvironment.prepareValues(maxValue); | ||
16 | ContinousHashProvider<Integer> chp = MapTestEnvironment.prepareHashProvider(evilHash); | ||
17 | |||
18 | VersionedMapStore<Integer, String> store = new VersionedMapStoreImpl<Integer, String>(chp, values[0]); | ||
19 | VersionedMapImpl<Integer, String> immutable = (VersionedMapImpl<Integer, String>) store.createMap(); | ||
20 | VersionedMapImpl<Integer, String> mutable = (VersionedMapImpl<Integer, String>) store.createMap(); | ||
21 | //MapTestEnvironment<Integer, String> e = new MapTestEnvironment<Integer, String>(sut); | ||
22 | |||
23 | Random r = new Random(seed); | ||
24 | |||
25 | iterativeRandomPutsAndCommits(scenario,immutable,mutable, steps, maxKey, values, r, commitFrequency); | ||
26 | } | ||
27 | |||
28 | void iterativeRandomPutsAndCommits( | ||
29 | String scenario, | ||
30 | VersionedMapImpl<Integer, String> immutable, | ||
31 | VersionedMapImpl<Integer, String> mutable, | ||
32 | int steps, | ||
33 | int maxKey, | ||
34 | String[] values, | ||
35 | Random r, | ||
36 | int commitFrequency) | ||
37 | { | ||
38 | for(int i=0; i<steps; i++) { | ||
39 | int index = i+1; | ||
40 | int nextKey = r.nextInt(maxKey); | ||
41 | String nextValue = values[r.nextInt(values.length)]; | ||
42 | try { | ||
43 | immutable.put(nextKey, nextValue); | ||
44 | mutable.put(nextKey,nextValue); | ||
45 | } catch (Exception exception) { | ||
46 | exception.printStackTrace(); | ||
47 | fail(scenario+":"+index+": exception happened: "+exception); | ||
48 | } | ||
49 | if(index%commitFrequency == 0) { | ||
50 | immutable.commit(); | ||
51 | } | ||
52 | MapTestEnvironment.compareTwoMaps(immutable, mutable); | ||
53 | |||
54 | if(index%10000==0) System.out.println(scenario+":"+index+" finished"); | ||
55 | } | ||
56 | } | ||
57 | |||
58 | @ParameterizedTest(name = "Mutable-Immutable Compare Smoke {index}/{0} Steps={1} Keys={2} Values={3} commit frequency={4} seed={5} evil-hash={6}") | ||
59 | @MethodSource | ||
60 | void parametrizedSmoke(int tests, int steps, int noKeys, int noValues, int commitFrequency, int seed, boolean evilHash) { | ||
61 | runSmokeTest("SmokeMutableImmutableCompareS"+steps+"K"+noKeys+"V"+noValues+"s"+seed,seed,steps,noKeys,noValues,commitFrequency,evilHash); | ||
62 | } | ||
63 | |||
64 | private static Stream<Arguments> parametrizedSmoke(){ | ||
65 | return TestPermuter.permutationWithSize( | ||
66 | new Object[] {1000,32*32*32*32}, | ||
67 | new Object[] {3,32, 32*32}, | ||
68 | new Object[] {2,3}, | ||
69 | new Object[] {1,10,100}, | ||
70 | new Object[] {1,2,3}, | ||
71 | new Object[] {false,true} | ||
72 | ); | ||
73 | } | ||
74 | } | ||