aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers
diff options
context:
space:
mode:
authorLibravatar Oszkar Semerath <Oszkar Semerath@DESKTOP-DNR7JQ7>2021-07-25 02:58:00 +0200
committerLibravatar Oszkar Semerath <Oszkar Semerath@DESKTOP-DNR7JQ7>2021-07-25 02:58:00 +0200
commitbd8c310d6b63039f98d513b88c01be9fd74c21bc (patch)
tree4413a8b03163548ea2c4c7be576ae3db11754548 /Solvers
parentRemoved equals from hash provider, as nodes are compared without it. (diff)
downloadVIATRA-Generator-bd8c310d6b63039f98d513b88c01be9fd74c21bc.tar.gz
VIATRA-Generator-bd8c310d6b63039f98d513b88c01be9fd74c21bc.tar.zst
VIATRA-Generator-bd8c310d6b63039f98d513b88c01be9fd74c21bc.zip
Commit -> restore test
Diffstat (limited to 'Solvers')
-rw-r--r--Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest4Restore.java99
1 files changed, 99 insertions, 0 deletions
diff --git a/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest4Restore.java b/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest4Restore.java
new file mode 100644
index 00000000..8f087e77
--- /dev/null
+++ b/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest4Restore.java
@@ -0,0 +1,99 @@
1package org.eclipse.viatra.solver.data.map;
2
3import static org.junit.Assert.fail;
4
5import java.util.HashMap;
6import java.util.Map;
7import java.util.Random;
8import java.util.stream.Stream;
9
10import org.eclipse.viatra.solver.data.map.internal.VersionedMapImpl;
11import org.junit.jupiter.params.ParameterizedTest;
12import org.junit.jupiter.params.provider.Arguments;
13import org.junit.jupiter.params.provider.MethodSource;
14
15public class SmokeTest4Restore {
16 private void runSmokeTest(String scenario, int seed, int steps, int maxKey, int maxValue, int commitFrequency, boolean evilHash) {
17 String[] values = MapTestEnvironment.prepareValues(maxValue);
18 ContinousHashProvider<Integer> chp = MapTestEnvironment.prepareHashProvider(evilHash);
19
20 VersionedMapStore<Integer, String> store = new VersionedMapStoreImpl<Integer, String>(chp, values[0]);
21 //MapTestEnvironment<Integer, String> e = new MapTestEnvironment<Integer, String>(sut);
22
23
24
25 iterativeRandomPutsAndCommits(scenario,store, steps, maxKey, values, seed, commitFrequency);
26 }
27
28 void iterativeRandomPutsAndCommits(
29 String scenario,
30 VersionedMapStore<Integer, String> store,
31 int steps,
32 int maxKey,
33 String[] values,
34 int seed,
35 int commitFrequency)
36 {
37 // 1. build a map with versions
38 Random r = new Random(seed);
39 VersionedMapImpl<Integer, String> versioned = (VersionedMapImpl<Integer, String>) store.createMap();
40 Map<Integer,Long> index2Version = new HashMap<>();
41
42 for(int i=0; i<steps; i++) {
43 int index = i+1;
44 int nextKey = r.nextInt(maxKey);
45 String nextValue = values[r.nextInt(values.length)];
46 try {
47 versioned.put(nextKey, nextValue);
48 } catch (Exception exception) {
49 exception.printStackTrace();
50 fail(scenario+":"+index+": exception happened: "+exception);
51 }
52 if(index%commitFrequency == 0) {
53 long version = versioned.commit();
54 index2Version.put(i,version);
55 }
56 if(index%10000==0) System.out.println(scenario+":"+index+" building finished");
57 }
58 // 2. create a non-versioned and
59 VersionedMapImpl<Integer, String> reference = (VersionedMapImpl<Integer, String>) store.createMap();
60 r = new Random(seed);
61
62 for(int i=0; i<steps; i++) {
63 int index = i+1;
64 int nextKey = r.nextInt(maxKey);
65 String nextValue = values[r.nextInt(values.length)];
66 try {
67 reference.put(nextKey, nextValue);
68 } catch (Exception exception) {
69 exception.printStackTrace();
70 fail(scenario+":"+index+": exception happened: "+exception);
71 }
72 if(index%commitFrequency == 0) {
73 versioned.restore(index2Version.get(i));
74 MapTestEnvironment.compareTwoMaps(scenario+":"+index,reference, versioned);
75 }
76 if(index%10000==0) System.out.println(scenario+":"+index+" comparison finished");
77 }
78
79
80
81 }
82
83 @ParameterizedTest(name = "Mutable-Immutable Compare Smoke {index}/{0} Steps={1} Keys={2} Values={3} commit frequency={4} seed={5} evil-hash={6}")
84 @MethodSource
85 void parametrizedSmoke(int tests, int steps, int noKeys, int noValues, int commitFrequency, int seed, boolean evilHash) {
86 runSmokeTest("SmokeMutableImmutableCompareS"+steps+"K"+noKeys+"V"+noValues+"s"+seed,seed,steps,noKeys,noValues,commitFrequency,evilHash);
87 }
88
89 private static Stream<Arguments> parametrizedSmoke(){
90 return TestPermuter.permutationWithSize(
91 new Object[] {1000,32*32*32*32},
92 new Object[] {3,32, 32*32},
93 new Object[] {2,3},
94 new Object[] {1,10,100},
95 new Object[] {1,2,3},
96 new Object[] {false,true}
97 );
98 }
99}