aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/test/smoke
diff options
context:
space:
mode:
Diffstat (limited to 'Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/test/smoke')
-rw-r--r--Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/test/smoke/fast/SmokeTest5DiffCursor.java105
1 files changed, 104 insertions, 1 deletions
diff --git a/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/test/smoke/fast/SmokeTest5DiffCursor.java b/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/test/smoke/fast/SmokeTest5DiffCursor.java
index d25b6303..94324e96 100644
--- a/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/test/smoke/fast/SmokeTest5DiffCursor.java
+++ b/Solvers/VIATRA-Solver/org.eclipse.viatra.solver.data/tests/org/eclipse/viatra/solver/data/map/test/smoke/fast/SmokeTest5DiffCursor.java
@@ -1,5 +1,108 @@
1package org.eclipse.viatra.solver.data.map.test.smoke.fast; 1package org.eclipse.viatra.solver.data.map.test.smoke.fast;
2 2
3public class SmokeTest5DiffCursor { 3import static org.junit.Assert.fail;
4
5import java.util.Random;
6import java.util.stream.Stream;
4 7
8import org.eclipse.viatra.solver.data.map.ContinousHashProvider;
9import org.eclipse.viatra.solver.data.map.DiffCursor;
10import org.eclipse.viatra.solver.data.map.VersionedMapStore;
11import org.eclipse.viatra.solver.data.map.VersionedMapStoreImpl;
12import org.eclipse.viatra.solver.data.map.internal.VersionedMapImpl;
13import org.eclipse.viatra.solver.data.map.test.smoke.TestPermuter;
14import org.eclipse.viatra.solver.data.map.test.support.MapTestEnvironment;
15import org.junit.jupiter.params.ParameterizedTest;
16import org.junit.jupiter.params.provider.Arguments;
17import org.junit.jupiter.params.provider.MethodSource;
18
19public class SmokeTest5DiffCursor {
20 public void runSmokeTest(String scenario, int seed, int steps, int maxKey, int maxValue, int commitFrequency, boolean evilHash) {
21 String[] values = MapTestEnvironment.prepareValues(maxValue);
22 ContinousHashProvider<Integer> chp = MapTestEnvironment.prepareHashProvider(evilHash);
23
24 VersionedMapStore<Integer, String> store = new VersionedMapStoreImpl<Integer, String>(chp, values[0]);
25 iterativeRandomPutsAndCommitsThenDiffcursor(scenario,store, steps, maxKey, values, seed, commitFrequency);
26 }
27
28 void iterativeRandomPutsAndCommitsThenDiffcursor(
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 int largestCommit=-1;
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 largestCommit=(int) version;
55 }
56 if(index%10000==0) System.out.println(scenario+":"+index+"/"+steps+" building finished");
57 }
58 // 2. create a non-versioned map,
59 VersionedMapImpl<Integer, String> moving = (VersionedMapImpl<Integer, String>) store.createMap();
60 Random r2 = new Random(seed+1);
61
62 final int diffTravelFrequency = commitFrequency*2;
63 for(int i=0; i<steps; i++) {
64 int index = i+1;
65 if(index%diffTravelFrequency == 0) {
66 // difftravel
67 long travelToVersion = r2.nextInt(largestCommit+1);
68 DiffCursor<Integer, String> diffCursor = moving.getDiffCursor(travelToVersion);
69 moving.putAll(diffCursor);
70
71 } else {
72 // random puts
73 int nextKey = r2.nextInt(maxKey);
74 String nextValue = values[r2.nextInt(values.length)];
75 try {
76 moving.put(nextKey, nextValue);
77 } catch (Exception exception) {
78 exception.printStackTrace();
79 fail(scenario+":"+index+": exception happened: "+exception);
80 }
81 if(index%commitFrequency == 0) {
82 versioned.commit();
83 }
84 if(index%10000==0) System.out.println(scenario+":"+index+"/"+steps+" building finished");
85 }
86 }
87
88
89
90 }
91
92 @ParameterizedTest(name = "Mutable-Immutable Compare Smoke {index}/{0} Steps={1} Keys={2} Values={3} commit frequency={4} seed={5} evil-hash={6}")
93 @MethodSource
94 void parametrizedSmoke(int tests, int steps, int noKeys, int noValues, int commitFrequency, int seed, boolean evilHash) {
95 runSmokeTest("SmokeMutableImmutableCompareS"+steps+"K"+noKeys+"V"+noValues+"s"+seed,seed,steps,noKeys,noValues,commitFrequency,evilHash);
96 }
97
98 public static Stream<Arguments> parametrizedSmoke(){
99 return TestPermuter.permutationWithSize(
100 new Object[] {1000},
101 new Object[] {3,32, 32*32},
102 new Object[] {2,3},
103 new Object[] {1,10,100},
104 new Object[] {1,2,3},
105 new Object[] {false,true}
106 );
107 }
5} 108}