diff options
Diffstat (limited to 'Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org')
-rw-r--r-- | Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/SmokeTest4Restore.java | 99 |
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 @@ | |||
1 | package org.eclipse.viatra.solver.data.map; | ||
2 | |||
3 | import static org.junit.Assert.fail; | ||
4 | |||
5 | import java.util.HashMap; | ||
6 | import java.util.Map; | ||
7 | import java.util.Random; | ||
8 | import java.util.stream.Stream; | ||
9 | |||
10 | import org.eclipse.viatra.solver.data.map.internal.VersionedMapImpl; | ||
11 | import org.junit.jupiter.params.ParameterizedTest; | ||
12 | import org.junit.jupiter.params.provider.Arguments; | ||
13 | import org.junit.jupiter.params.provider.MethodSource; | ||
14 | |||
15 | public 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 | } | ||