aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers
diff options
context:
space:
mode:
authorLibravatar Oszkar Semerath <Oszkar Semerath@DESKTOP-DNR7JQ7>2021-07-25 01:59:24 +0200
committerLibravatar Oszkar Semerath <Oszkar Semerath@DESKTOP-DNR7JQ7>2021-07-25 01:59:24 +0200
commit2de88f6135915916260f23238372179c88007eb1 (patch)
treef74233069fec1d67cbc80acdf063c0b3c483f9b2 /Solvers
parenthash code fix and test environment reorganization (diff)
downloadVIATRA-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')
-rw-r--r--Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/MapTestEnvironment.java23
-rw-r--r--Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest1Mutable.java2
-rw-r--r--Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest2Commit.java2
-rw-r--r--Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest3MutableImmutableCompare.java74
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 @@
1package org.eclipse.viatra.solver.data.map; 1package org.eclipse.viatra.solver.data.map;
2 2
3import static org.junit.Assert.assertTrue;
3import static org.junit.Assert.fail; 4import static org.junit.Assert.fail;
5import static org.junit.jupiter.api.Assertions.assertEquals;
4 6
5import java.util.HashMap; 7import java.util.HashMap;
6import java.util.Iterator; 8import 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 @@
1package org.eclipse.viatra.solver.data.map;
2
3import static org.junit.Assert.fail;
4
5import java.util.Random;
6import java.util.stream.Stream;
7
8import org.eclipse.viatra.solver.data.map.internal.VersionedMapImpl;
9import org.junit.jupiter.params.ParameterizedTest;
10import org.junit.jupiter.params.provider.Arguments;
11import org.junit.jupiter.params.provider.MethodSource;
12
13public 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}