From a6dcff6293e960b420e26c57374a281467821556 Mon Sep 17 00:00:00 2001 From: OszkarSemerath Date: Fri, 21 Jul 2023 20:27:30 +0200 Subject: VersionedMapStoreFactoryBuilder.java is introduced, all tests are updated. VersionedMapStoreBuilder.java is removed. --- .../refinery/store/map/VersionedMapStore.java | 20 ++-- .../store/map/VersionedMapStoreBuilder.java | 130 -------------------- .../store/map/VersionedMapStoreFactory.java | 19 +++ .../store/map/VersionedMapStoreFactoryBuilder.java | 24 ++++ .../DeltaBasedVersionedMapStoreFactory.java | 34 ++++++ .../StateBasedVersionedMapStoreFactory.java | 33 ++++++ .../VersionedMapStoreFactoryBuilderImpl.java | 132 +++++++++++++++++++++ .../store/map/tests/InOrderCursorTest.java | 18 +-- .../refinery/store/map/tests/MapUnitTests.java | 9 +- .../store/map/tests/fuzz/CommitFuzzTest.java | 21 ++-- .../map/tests/fuzz/ContentEqualsFuzzTest.java | 20 ++-- .../store/map/tests/fuzz/DiffCursorFuzzTest.java | 10 +- .../store/map/tests/fuzz/MultiThreadFuzzTest.java | 29 +++-- .../store/map/tests/fuzz/MutableFuzzTest.java | 8 +- .../store/map/tests/fuzz/RestoreFuzzTest.java | 30 ++--- .../store/map/tests/fuzz/SingleThreadFuzzTest.java | 10 +- .../map/tests/fuzz/utils/FuzzTestCollections.java | 52 ++++---- 17 files changed, 357 insertions(+), 242 deletions(-) delete mode 100644 subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStoreBuilder.java create mode 100644 subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStoreFactory.java create mode 100644 subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStoreFactoryBuilder.java create mode 100644 subprojects/store/src/main/java/tools/refinery/store/map/internal/DeltaBasedVersionedMapStoreFactory.java create mode 100644 subprojects/store/src/main/java/tools/refinery/store/map/internal/StateBasedVersionedMapStoreFactory.java create mode 100644 subprojects/store/src/main/java/tools/refinery/store/map/internal/VersionedMapStoreFactoryBuilderImpl.java (limited to 'subprojects/store/src') diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStore.java b/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStore.java index a8d7fb1a..7768287a 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStore.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStore.java @@ -1,14 +1,20 @@ package tools.refinery.store.map; +import tools.refinery.store.map.internal.VersionedMapStoreFactoryBuilderImpl; + import java.util.Set; public interface VersionedMapStore { - - public VersionedMap createMap(); - public VersionedMap createMap(long state); - - public Set getStates(); + VersionedMap createMap(); + + VersionedMap createMap(long state); + + Set getStates(); + + DiffCursor getDiffCursor(long fromState, long toState); - public DiffCursor getDiffCursor(long fromState, long toState); -} \ No newline at end of file + static VersionedMapStoreFactoryBuilder builder() { + return new VersionedMapStoreFactoryBuilderImpl<>(); + } +} diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStoreBuilder.java b/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStoreBuilder.java deleted file mode 100644 index 1a9aa0b3..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStoreBuilder.java +++ /dev/null @@ -1,130 +0,0 @@ -package tools.refinery.store.map; - -import java.util.ArrayList; -import java.util.List; - -public class VersionedMapStoreBuilder { - public enum StoreStrategy { - STATE, DELTA - } - - public enum DeltaStorageStrategy { - LIST, SET - } - - public enum StateStorageStrategy { - NO_NODE_CACHE, SHARED_NODE_CACHE, SHARED_NODE_CACHE_IN_GROUP - } - - public static VersionedMapStoreBuilder builder() { - return new VersionedMapStoreBuilder<>(); - } - protected VersionedMapStoreBuilder() { - } - protected VersionedMapStoreBuilder(VersionedMapStoreBuilder other) { - this.defaultValue = other.defaultValue; - this.defaultSet = other.defaultSet; - this.strategy = other.strategy; - this.stateBasedImmutableWhenCommitting = other.stateBasedImmutableWhenCommitting; - this.stateBasedNodeSharingStrategy = other.stateBasedNodeSharingStrategy; - this.hashProvider = other.hashProvider; - this.deltaStorageStrategy = other.deltaStorageStrategy; - } - protected boolean defaultSet = false; - protected V defaultValue = null; - protected StoreStrategy strategy = StoreStrategy.DELTA; - protected Boolean stateBasedImmutableWhenCommitting = false; - protected StateStorageStrategy stateBasedNodeSharingStrategy = StateStorageStrategy.SHARED_NODE_CACHE_IN_GROUP; - protected ContinousHashProvider hashProvider = null; - protected DeltaStorageStrategy deltaStorageStrategy = DeltaStorageStrategy.LIST; - - public VersionedMapStoreBuilder setDefaultValue(V defaultValue) { - var result = new VersionedMapStoreBuilder<>(this); - result.defaultValue = defaultValue; - result.defaultSet = true; - return result; - } - - public VersionedMapStoreBuilder setStrategy(StoreStrategy strategy) { - var result = new VersionedMapStoreBuilder<>(this); - result.strategy = strategy; - return result; - } - - public VersionedMapStoreBuilder setHashProvider(ContinousHashProvider hashProvider) { - var result = new VersionedMapStoreBuilder<>(this); - result.hashProvider = hashProvider; - return result; - } - - public VersionedMapStoreBuilder setStateBasedImmutableWhenCommitting(boolean toImmutableWhenCommitting) { - var result = new VersionedMapStoreBuilder<>(this); - result.stateBasedImmutableWhenCommitting = toImmutableWhenCommitting; - return result; - } - - public VersionedMapStoreBuilder setStateBasedNodeSharingStrategy(StateStorageStrategy strategy) { - var result = new VersionedMapStoreBuilder<>(this); - result.stateBasedNodeSharingStrategy = strategy; - return result; - } - - public VersionedMapStoreBuilder setDeltaStorageStrategy(DeltaStorageStrategy deltaStorageStrategy) { - var result = new VersionedMapStoreBuilder<>(this); - result.deltaStorageStrategy = deltaStorageStrategy; - return result; - } - - public VersionedMapStore buildOne() { - if(!defaultSet) { - throw new IllegalStateException("Default value is missing!"); - } - return switch (strategy) { - case DELTA -> new VersionedMapStoreDeltaImpl<>( - this.deltaStorageStrategy == DeltaStorageStrategy.SET, - this.defaultValue); - case STATE -> new VersionedMapStoreImpl<>( - this.hashProvider, - this.defaultValue, - new VersionedMapStoreConfiguration( - this.stateBasedImmutableWhenCommitting, - this.stateBasedNodeSharingStrategy != StateStorageStrategy.NO_NODE_CACHE, - this.stateBasedNodeSharingStrategy == StateStorageStrategy.SHARED_NODE_CACHE_IN_GROUP)); - }; - } - - public List> buildGroup(int amount) { - if(!defaultSet) { - throw new IllegalStateException("Default value is missing!"); - } - if (this.strategy == StoreStrategy.STATE && - this.stateBasedNodeSharingStrategy == StateStorageStrategy.SHARED_NODE_CACHE_IN_GROUP) { - return VersionedMapStoreImpl.createSharedVersionedMapStores( - amount, - this.hashProvider, - this.defaultValue, - new VersionedMapStoreConfiguration( - this.stateBasedImmutableWhenCommitting, - true, - true)); - } else { - List> result = new ArrayList<>(amount); - for (int i = 0; i < amount; i++) { - result.add(buildOne()); - } - return result; - } - } - - @Override - public String toString() { - return "VersionedMapStoreBuilder{" + - "defaultValue=" + defaultValue + - ", strategy=" + strategy + - ", stateBasedImmutableWhenCommitting=" + stateBasedImmutableWhenCommitting + - ", stateBasedNodeSharingStrategy=" + stateBasedNodeSharingStrategy + - ", hashProvider=" + hashProvider + - ", deltaStorageStrategy=" + deltaStorageStrategy + - '}'; - } -} diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStoreFactory.java b/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStoreFactory.java new file mode 100644 index 00000000..5f882a3a --- /dev/null +++ b/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStoreFactory.java @@ -0,0 +1,19 @@ +package tools.refinery.store.map; + +import java.util.List; + +public interface VersionedMapStoreFactory { + /** + * Constructs a new instance of {@link VersionedMap}. + * @return The new instance. + */ + VersionedMapStore createOne(); + + /** + * Constructs a group of {@link VersionedMap}s with the same configuration. If possible, the stores share + * resources with each other. + * @param amount The amount of new instances to be created. + * @return A list of new stores with the given number of elements. + */ + List> createGroup(int amount); +} diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStoreFactoryBuilder.java b/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStoreFactoryBuilder.java new file mode 100644 index 00000000..9cf17b49 --- /dev/null +++ b/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStoreFactoryBuilder.java @@ -0,0 +1,24 @@ +package tools.refinery.store.map; + +public interface VersionedMapStoreFactoryBuilder { + enum StoreStrategy { + STATE, DELTA + } + + enum DeltaTransactionStrategy { + LIST, SET + } + + enum SharingStrategy { + NO_NODE_CACHE, SHARED_NODE_CACHE, SHARED_NODE_CACHE_IN_GROUP + } + + VersionedMapStoreFactoryBuilder defaultValue(V defaultValue); + VersionedMapStoreFactoryBuilder strategy(StoreStrategy strategy); + VersionedMapStoreFactoryBuilder stateBasedImmutableWhenCommitting(boolean transformToImmutable); + VersionedMapStoreFactoryBuilder stateBasedSharingStrategy(SharingStrategy sharingStrategy); + VersionedMapStoreFactoryBuilder stateBasedHashProvider(ContinousHashProvider hashProvider); + VersionedMapStoreFactoryBuilder deltaTransactionStrategy(DeltaTransactionStrategy deltaStrategy); + + VersionedMapStoreFactory build(); +} diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/internal/DeltaBasedVersionedMapStoreFactory.java b/subprojects/store/src/main/java/tools/refinery/store/map/internal/DeltaBasedVersionedMapStoreFactory.java new file mode 100644 index 00000000..29ec0da1 --- /dev/null +++ b/subprojects/store/src/main/java/tools/refinery/store/map/internal/DeltaBasedVersionedMapStoreFactory.java @@ -0,0 +1,34 @@ +package tools.refinery.store.map.internal; + +import tools.refinery.store.map.VersionedMapStore; +import tools.refinery.store.map.VersionedMapStoreDeltaImpl; +import tools.refinery.store.map.VersionedMapStoreFactory; +import tools.refinery.store.map.VersionedMapStoreFactoryBuilder; + +import java.util.ArrayList; +import java.util.List; + +public class DeltaBasedVersionedMapStoreFactory implements VersionedMapStoreFactory { + private final V defaultValue; + private final boolean summarizeChanges; + + public DeltaBasedVersionedMapStoreFactory(V defaultValue, + VersionedMapStoreFactoryBuilder.DeltaTransactionStrategy deltaTransactionStrategy) { + this.defaultValue = defaultValue; + this.summarizeChanges = deltaTransactionStrategy == VersionedMapStoreFactoryBuilder.DeltaTransactionStrategy.SET; + } + + @Override + public VersionedMapStore createOne() { + return new VersionedMapStoreDeltaImpl<>(summarizeChanges, defaultValue); + } + + @Override + public List> createGroup(int amount) { + List> result = new ArrayList<>(amount); + for(int i=0; i(summarizeChanges,defaultValue)); + } + return result; + } +} diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/internal/StateBasedVersionedMapStoreFactory.java b/subprojects/store/src/main/java/tools/refinery/store/map/internal/StateBasedVersionedMapStoreFactory.java new file mode 100644 index 00000000..80dc347f --- /dev/null +++ b/subprojects/store/src/main/java/tools/refinery/store/map/internal/StateBasedVersionedMapStoreFactory.java @@ -0,0 +1,33 @@ +package tools.refinery.store.map.internal; + +import tools.refinery.store.map.*; + +import java.util.List; + +public class StateBasedVersionedMapStoreFactory implements VersionedMapStoreFactory { + private final V defaultValue; + private final ContinousHashProvider continousHashProvider; + private final VersionedMapStoreConfiguration config; + + public StateBasedVersionedMapStoreFactory(V defaultValue, Boolean transformToImmutable, VersionedMapStoreFactoryBuilder.SharingStrategy sharingStrategy, ContinousHashProvider continousHashProvider) { + this.defaultValue = defaultValue; + this.continousHashProvider = continousHashProvider; + + this.config = new VersionedMapStoreConfiguration( + transformToImmutable, + sharingStrategy == VersionedMapStoreFactoryBuilder.SharingStrategy.SHARED_NODE_CACHE || sharingStrategy == VersionedMapStoreFactoryBuilder.SharingStrategy.SHARED_NODE_CACHE_IN_GROUP, + sharingStrategy == VersionedMapStoreFactoryBuilder.SharingStrategy.SHARED_NODE_CACHE_IN_GROUP); + } + + @Override + public VersionedMapStore createOne() { + return new VersionedMapStoreImpl<>(continousHashProvider, defaultValue, config); + + } + + @Override + public List> createGroup(int amount) { + return VersionedMapStoreImpl.createSharedVersionedMapStores(amount, continousHashProvider, defaultValue, + config); + } +} diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/internal/VersionedMapStoreFactoryBuilderImpl.java b/subprojects/store/src/main/java/tools/refinery/store/map/internal/VersionedMapStoreFactoryBuilderImpl.java new file mode 100644 index 00000000..3719eef5 --- /dev/null +++ b/subprojects/store/src/main/java/tools/refinery/store/map/internal/VersionedMapStoreFactoryBuilderImpl.java @@ -0,0 +1,132 @@ +package tools.refinery.store.map.internal; + +import tools.refinery.store.map.ContinousHashProvider; +import tools.refinery.store.map.VersionedMapStoreFactory; +import tools.refinery.store.map.VersionedMapStoreFactoryBuilder; + +public class VersionedMapStoreFactoryBuilderImpl implements VersionedMapStoreFactoryBuilder { + + private boolean defaultSet = false; + private V defaultValue; + private StoreStrategy strategy = null; + private Boolean transformToImmutable = null; + private SharingStrategy sharingStrategy = null; + private ContinousHashProvider continousHashProvider = null; + private DeltaTransactionStrategy deltaTransactionStrategy = null; + + private StoreStrategy checkStrategy() { + StoreStrategy currentStrategy = strategy; + currentStrategy = mergeStrategies(currentStrategy, transformToImmutable, StoreStrategy.STATE); + currentStrategy = mergeStrategies(currentStrategy, sharingStrategy, StoreStrategy.STATE); + currentStrategy = mergeStrategies(currentStrategy, continousHashProvider, StoreStrategy.STATE); + currentStrategy = mergeStrategies(currentStrategy, deltaTransactionStrategy, StoreStrategy.DELTA); + return currentStrategy; + } + + private StoreStrategy mergeStrategies(StoreStrategy old, StoreStrategy newStrategy) { + if (old != null && newStrategy != null && old != newStrategy) { + throw new IllegalArgumentException("Mixed strategy parametrization in VersionedMap builder!"); + } + + if (old != null) { + return old; + } else { + return newStrategy; + } + } + + private StoreStrategy mergeStrategies(StoreStrategy old, Object parameter, StoreStrategy newStrategy) { + if (parameter != null) { + return mergeStrategies(old, newStrategy); + } else { + return old; + } + } + + @Override + public VersionedMapStoreFactoryBuilder defaultValue(V defaultValue) { + this.defaultSet = true; + this.defaultValue = defaultValue; + return this; + } + + @Override + public VersionedMapStoreFactoryBuilder strategy(StoreStrategy strategy) { + this.strategy = strategy; + checkStrategy(); + return this; + } + + @Override + public VersionedMapStoreFactoryBuilder stateBasedImmutableWhenCommitting(boolean transformToImmutable) { + this.transformToImmutable = transformToImmutable; + checkStrategy(); + return this; + } + + @Override + public VersionedMapStoreFactoryBuilder stateBasedSharingStrategy(SharingStrategy sharingStrategy) { + this.sharingStrategy = sharingStrategy; + checkStrategy(); + return this; + } + + @Override + public VersionedMapStoreFactoryBuilder stateBasedHashProvider(ContinousHashProvider hashProvider) { + this.continousHashProvider = hashProvider; + checkStrategy(); + return this; + } + + @Override + public VersionedMapStoreFactoryBuilder deltaTransactionStrategy(DeltaTransactionStrategy deltaTransactionStrategy) { + this.deltaTransactionStrategy = deltaTransactionStrategy; + checkStrategy(); + return this; + } + + private T getOrDefault(T value, T defaultValue) { + if(value != null) { + return value; + } else { + return defaultValue; + } + } + + @Override + public VersionedMapStoreFactory build() { + if (!defaultSet) { + throw new IllegalArgumentException("Default value is missing!"); + } + var strategyToUse = checkStrategy(); + if (strategyToUse == null) { + return new DeltaBasedVersionedMapStoreFactory<>(defaultValue, + getOrDefault(deltaTransactionStrategy, DeltaTransactionStrategy.LIST)); + } + return switch (strategyToUse) { + case STATE -> { + if(continousHashProvider == null) { + throw new IllegalArgumentException("Continuous hash provider is missing!"); + } + yield new StateBasedVersionedMapStoreFactory<>(defaultValue, + getOrDefault(transformToImmutable,true), + getOrDefault(sharingStrategy, SharingStrategy.SHARED_NODE_CACHE_IN_GROUP), + continousHashProvider); + } + case DELTA -> new DeltaBasedVersionedMapStoreFactory<>(defaultValue, + getOrDefault(deltaTransactionStrategy, DeltaTransactionStrategy.LIST)); + }; + } + + @Override + public String toString() { + return "VersionedMapStoreBuilder{" + + "defaultValue=" + defaultValue + + ", strategy=" + strategy + + ", stateBasedImmutableWhenCommitting=" + transformToImmutable + + ", stateBasedNodeSharingStrategy=" + sharingStrategy + + ", hashProvider=" + continousHashProvider + + ", deltaStorageStrategy=" + deltaTransactionStrategy + + '}'; + } +} diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/InOrderCursorTest.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/InOrderCursorTest.java index 05cf5a74..993e5531 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/InOrderCursorTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/InOrderCursorTest.java @@ -1,7 +1,8 @@ package tools.refinery.store.map.tests; import org.junit.jupiter.api.Test; -import tools.refinery.store.map.VersionedMapStoreBuilder; +import tools.refinery.store.map.VersionedMapStore; +import tools.refinery.store.map.VersionedMapStoreFactoryBuilder; import tools.refinery.store.map.internal.InOrderMapCursor; import tools.refinery.store.map.internal.VersionedMapImpl; import tools.refinery.store.map.tests.utils.MapTestEnvironment; @@ -11,13 +12,14 @@ import static org.junit.jupiter.api.Assertions.*; class InOrderCursorTest { @Test void testCursor() { - var store = VersionedMapStoreBuilder.builder() - .setStrategy(VersionedMapStoreBuilder.StoreStrategy.STATE) - .setStateBasedImmutableWhenCommitting(true) - .setHashProvider(MapTestEnvironment.prepareHashProvider(false)) - .setStateBasedNodeSharingStrategy(VersionedMapStoreBuilder.StateStorageStrategy.SHARED_NODE_CACHE) - .setDefaultValue("x") - .buildOne(); + var store = VersionedMapStore.builder() + .strategy(VersionedMapStoreFactoryBuilder.StoreStrategy.STATE) + .stateBasedImmutableWhenCommitting(true) + .stateBasedHashProvider(MapTestEnvironment.prepareHashProvider(false)) + .stateBasedSharingStrategy(VersionedMapStoreFactoryBuilder.SharingStrategy.SHARED_NODE_CACHE) + .defaultValue("x") + .build() + .createOne(); VersionedMapImpl map = (VersionedMapImpl) store.createMap(); checkMove(map,0); diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/MapUnitTests.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/MapUnitTests.java index 2216db76..6889fd07 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/MapUnitTests.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/MapUnitTests.java @@ -2,7 +2,6 @@ package tools.refinery.store.map.tests; import org.junit.jupiter.api.Test; import tools.refinery.store.map.VersionedMapStore; -import tools.refinery.store.map.VersionedMapStoreBuilder; import tools.refinery.store.map.VersionedMapStoreImpl; import tools.refinery.store.model.TupleHashProvider; import tools.refinery.store.tuple.Tuple; @@ -23,7 +22,7 @@ class MapUnitTests { @Test void deltaRestoreTest() { VersionedMapStore store = - VersionedMapStoreBuilder.builder().setDefaultValue("x").buildOne(); + VersionedMapStore.builder().defaultValue("x").build().createOne(); var map = store.createMap(); map.put(1,"val"); var version1 = map.commit(); @@ -36,7 +35,7 @@ class MapUnitTests { @Test void deltaRestoreTest2() { VersionedMapStore store = - VersionedMapStoreBuilder.builder().setDefaultValue("x").buildOne(); + VersionedMapStore.builder().defaultValue("x").build().createOne(); var map = store.createMap(); map.put(1,"x"); var version1 = map.commit(); @@ -48,7 +47,7 @@ class MapUnitTests { @Test void deltaRestoreTest3() { VersionedMapStore store = - VersionedMapStoreBuilder.builder().setDefaultValue("x").buildOne(); + VersionedMapStore.builder().defaultValue("x").build().createOne(); var map = store.createMap(); map.commit(); map.put(1,"1"); @@ -71,7 +70,7 @@ class MapUnitTests { @Test void deltaRestoreTest4() { VersionedMapStore store = - VersionedMapStoreBuilder.builder().setDefaultValue("x").buildOne(); + VersionedMapStore.builder().defaultValue("x").build().createOne(); var map = store.createMap(); map.commit(); map.put(1,"1"); diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/CommitFuzzTest.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/CommitFuzzTest.java index 14a9e2e0..7977f772 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/CommitFuzzTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/CommitFuzzTest.java @@ -1,30 +1,29 @@ package tools.refinery.store.map.tests.fuzz; -import static org.junit.jupiter.api.Assertions.fail; - -import java.util.Random; -import java.util.stream.Stream; - import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Timeout; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; - import tools.refinery.store.map.VersionedMapStore; -import tools.refinery.store.map.VersionedMapStoreBuilder; +import tools.refinery.store.map.VersionedMapStoreFactoryBuilder; import tools.refinery.store.map.tests.fuzz.utils.FuzzTestUtils; import tools.refinery.store.map.tests.utils.MapTestEnvironment; +import java.util.Random; +import java.util.stream.Stream; + +import static org.junit.jupiter.api.Assertions.fail; import static tools.refinery.store.map.tests.fuzz.utils.FuzzTestCollections.*; class CommitFuzzTest { private void runFuzzTest(String scenario, int seed, int steps, int maxKey, int maxValue, - boolean nullDefault, int commitFrequency, VersionedMapStoreBuilder builder) { + boolean nullDefault, int commitFrequency, + VersionedMapStoreFactoryBuilder builder) { String[] values = MapTestEnvironment.prepareValues(maxValue, nullDefault); - VersionedMapStore store = builder.setDefaultValue(values[0]).buildOne(); + VersionedMapStore store = builder.defaultValue(values[0]).build().createOne(); var sut = store.createMap(); MapTestEnvironment e = new MapTestEnvironment<>(sut); @@ -61,7 +60,7 @@ class CommitFuzzTest { @Timeout(value = 10) @Tag("fuzz") void parametrizedFastFuzz(int ignoredTests, int steps, int noKeys, int noValues, boolean nullDefault, int commitFrequency, - int seed, VersionedMapStoreBuilder builder) { + int seed, VersionedMapStoreFactoryBuilder builder) { runFuzzTest("CommitS" + steps + "K" + noKeys + "V" + noValues + "s" + seed, seed, steps, noKeys, noValues, nullDefault, commitFrequency, builder); } @@ -76,7 +75,7 @@ class CommitFuzzTest { @Tag("fuzz") @Tag("slow") void parametrizedSlowFuzz(int ignoredTests, int steps, int noKeys, int noValues, boolean nullDefault, int commitFrequency, - int seed, VersionedMapStoreBuilder builder) { + int seed, VersionedMapStoreFactoryBuilder builder) { runFuzzTest("CommitS" + steps + "K" + noKeys + "V" + noValues + "s" + seed, seed, steps, noKeys, noValues, nullDefault, commitFrequency, builder); } diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/ContentEqualsFuzzTest.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/ContentEqualsFuzzTest.java index b462ed40..99e76649 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/ContentEqualsFuzzTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/ContentEqualsFuzzTest.java @@ -5,7 +5,10 @@ import org.junit.jupiter.api.Timeout; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import tools.refinery.store.map.*; +import tools.refinery.store.map.Cursor; +import tools.refinery.store.map.VersionedMap; +import tools.refinery.store.map.VersionedMapStore; +import tools.refinery.store.map.VersionedMapStoreFactoryBuilder; import tools.refinery.store.map.tests.fuzz.utils.FuzzTestUtils; import tools.refinery.store.map.tests.utils.MapTestEnvironment; @@ -16,12 +19,13 @@ import java.util.List; import java.util.Random; import java.util.stream.Stream; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.fail; import static tools.refinery.store.map.tests.fuzz.utils.FuzzTestCollections.*; class ContentEqualsFuzzTest { private void runFuzzTest(String scenario, int seed, int steps, int maxKey, int maxValue, - boolean nullDefault, int commitFrequency, VersionedMapStoreBuilder builder) { + boolean nullDefault, int commitFrequency, + VersionedMapStoreFactoryBuilder builder) { String[] values = MapTestEnvironment.prepareValues(maxValue, nullDefault); @@ -30,10 +34,10 @@ class ContentEqualsFuzzTest { iterativeRandomPutsAndCommitsThenCompare(scenario, builder, steps, maxKey, values, r, commitFrequency); } - private void iterativeRandomPutsAndCommitsThenCompare(String scenario, VersionedMapStoreBuilder builder, + private void iterativeRandomPutsAndCommitsThenCompare(String scenario, VersionedMapStoreFactoryBuilder builder, int steps, int maxKey, String[] values, Random r, int commitFrequency) { - VersionedMapStore store1 = builder.setDefaultValue(values[0]).buildOne(); + VersionedMapStore store1 = builder.defaultValue(values[0]).build().createOne(); VersionedMap sut1 = store1.createMap(); // Fill one map @@ -63,7 +67,7 @@ class ContentEqualsFuzzTest { // Randomize the order of the content Collections.shuffle(content, r); - VersionedMapStore store2 = builder.setDefaultValue(values[0]).buildOne(); + VersionedMapStore store2 = builder.defaultValue(values[0]).build().createOne(); VersionedMap sut2 = store2.createMap(); int index2 = 1; for (SimpleEntry entry : content) { @@ -88,7 +92,7 @@ class ContentEqualsFuzzTest { @Timeout(value = 10) @Tag("fuzz") void parametrizedFastFuzz(int ignoredTests, int steps, int noKeys, int noValues, boolean nullDefault, int commitFrequency, - int seed, VersionedMapStoreBuilder builder) { + int seed, VersionedMapStoreFactoryBuilder builder) { runFuzzTest("CompareS" + steps + "K" + noKeys + "V" + noValues + "s" + seed, seed, steps, noKeys, noValues, nullDefault, commitFrequency, builder); } @@ -103,7 +107,7 @@ class ContentEqualsFuzzTest { @Tag("fuzz") @Tag("slow") void parametrizedSlowFuzz(int ignoredTests, int steps, int noKeys, int noValues, boolean defaultNull, int commitFrequency, - int seed, VersionedMapStoreBuilder builder) { + int seed, VersionedMapStoreFactoryBuilder builder) { runFuzzTest("CompareS" + steps + "K" + noKeys + "V" + noValues + "s" + seed, seed, steps, noKeys, noValues, defaultNull, commitFrequency, builder); } diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/DiffCursorFuzzTest.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/DiffCursorFuzzTest.java index b087906d..3a8852a9 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/DiffCursorFuzzTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/DiffCursorFuzzTest.java @@ -8,7 +8,7 @@ import org.junit.jupiter.params.provider.MethodSource; import tools.refinery.store.map.DiffCursor; import tools.refinery.store.map.VersionedMap; import tools.refinery.store.map.VersionedMapStore; -import tools.refinery.store.map.VersionedMapStoreBuilder; +import tools.refinery.store.map.VersionedMapStoreFactoryBuilder; import tools.refinery.store.map.tests.fuzz.utils.FuzzTestUtils; import tools.refinery.store.map.tests.utils.MapTestEnvironment; @@ -21,10 +21,10 @@ import static tools.refinery.store.map.tests.fuzz.utils.FuzzTestCollections.*; class DiffCursorFuzzTest { private void runFuzzTest(String scenario, int seed, int steps, int maxKey, int maxValue, boolean nullDefault, int commitFrequency, boolean commitBeforeDiffCursor, - VersionedMapStoreBuilder builder) { + VersionedMapStoreFactoryBuilder builder) { String[] values = MapTestEnvironment.prepareValues(maxValue, nullDefault); - VersionedMapStore store = builder.setDefaultValue(values[0]).buildOne(); + VersionedMapStore store = builder.defaultValue(values[0]).build().createOne(); iterativeRandomPutsAndCommitsThenDiffCursor(scenario, store, steps, maxKey, values, seed, commitFrequency, commitBeforeDiffCursor); } @@ -109,7 +109,7 @@ class DiffCursorFuzzTest { @Tag("fuzz") void parametrizedFuzz(int ignoredTests, int steps, int noKeys, int noValues, boolean nullDefault, int commitFrequency, int seed, boolean commitBeforeDiffCursor, - VersionedMapStoreBuilder builder) { + VersionedMapStoreFactoryBuilder builder) { runFuzzTest("DiffCursorS" + steps + "K" + noKeys + "V" + noValues + "s" + seed, seed, steps, noKeys, noValues, nullDefault, commitFrequency, commitBeforeDiffCursor, builder); } @@ -124,7 +124,7 @@ class DiffCursorFuzzTest { @Tag("fuzz") @Tag("slow") void parametrizedSlowFuzz(int ignoredTests, int steps, int noKeys, int noValues, boolean nullDefault, int commitFrequency, - int seed, boolean commitBeforeDiffCursor, VersionedMapStoreBuilder builder) { + int seed, boolean commitBeforeDiffCursor, VersionedMapStoreFactoryBuilder builder) { runFuzzTest("DiffCursorS" + steps + "K" + noKeys + "V" + noValues + "s" + seed, seed, steps, noKeys, noValues, nullDefault, commitFrequency, commitBeforeDiffCursor, builder); } diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MultiThreadFuzzTest.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MultiThreadFuzzTest.java index ec2224b4..ea58e1b7 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MultiThreadFuzzTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MultiThreadFuzzTest.java @@ -1,32 +1,31 @@ package tools.refinery.store.map.tests.fuzz; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.fail; -import static tools.refinery.store.map.tests.fuzz.utils.FuzzTestCollections.*; - -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.stream.Stream; - import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Timeout; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; - import tools.refinery.store.map.VersionedMapStore; -import tools.refinery.store.map.VersionedMapStoreBuilder; +import tools.refinery.store.map.VersionedMapStoreFactoryBuilder; import tools.refinery.store.map.tests.fuzz.utils.FuzzTestUtils; import tools.refinery.store.map.tests.utils.MapTestEnvironment; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; +import java.util.stream.Stream; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; +import static tools.refinery.store.map.tests.fuzz.utils.FuzzTestCollections.*; + class MultiThreadFuzzTest { public static final int noThreads = 10; - private void runFuzzTest(String scenario, int seed, int steps, int maxKey, int maxValue, boolean nullDefault, int commitFrequency, VersionedMapStoreBuilder builder) { + private void runFuzzTest(String scenario, int seed, int steps, int maxKey, int maxValue, boolean nullDefault, int commitFrequency, VersionedMapStoreFactoryBuilder builder) { String[] values = MapTestEnvironment.prepareValues(maxValue, nullDefault); - VersionedMapStore store = builder.setDefaultValue(values[0]).buildOne(); + VersionedMapStore store = builder.defaultValue(values[0]).build().createOne(); // initialize runnables MultiThreadTestRunnable[] runnables = new MultiThreadTestRunnable[noThreads]; @@ -73,7 +72,7 @@ class MultiThreadFuzzTest { @Timeout(value = 10) @Tag("fuzz") void parametrizedFastFuzz(int ignoredTests, int steps, int noKeys, int noValues, boolean defaultNull, - int commitFrequency, int seed, VersionedMapStoreBuilder builder) { + int commitFrequency, int seed, VersionedMapStoreFactoryBuilder builder) { runFuzzTest("MultiThreadS" + steps + "K" + noKeys + "V" + noValues + defaultNull + "CF" + commitFrequency + "s" + seed, seed, steps, noKeys, noValues, defaultNull, commitFrequency, builder); } @@ -88,7 +87,7 @@ class MultiThreadFuzzTest { @Tag("fuzz") @Tag("slow") void parametrizedSlowFuzz(int ignoredTests, int steps, int noKeys, int noValues, boolean nullDefault, - int commitFrequency, int seed, VersionedMapStoreBuilder builder) { + int commitFrequency, int seed, VersionedMapStoreFactoryBuilder builder) { runFuzzTest("RestoreS" + steps + "K" + noKeys + "V" + noValues + "s" + seed, seed, steps, noKeys, noValues, nullDefault, commitFrequency, builder); } diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MutableFuzzTest.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MutableFuzzTest.java index bdf72ce4..61b17362 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MutableFuzzTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MutableFuzzTest.java @@ -18,10 +18,10 @@ import tools.refinery.store.map.tests.utils.MapTestEnvironment; class MutableFuzzTest { private void runFuzzTest(String scenario, int seed, int steps, int maxKey, int maxValue, - boolean nullDefault, VersionedMapStoreBuilder builder) { + boolean nullDefault, VersionedMapStoreFactoryBuilder builder) { String[] values = MapTestEnvironment.prepareValues(maxValue, nullDefault); - VersionedMapStore store = builder.setDefaultValue(values[0]).buildOne(); + VersionedMapStore store = builder.defaultValue(values[0]).build().createOne(); VersionedMap sut = store.createMap(); MapTestEnvironment e = new MapTestEnvironment<>(sut); @@ -56,7 +56,7 @@ class MutableFuzzTest { @Timeout(value = 10) @Tag("fuzz") void parametrizedFuzz(int ignoredTests, int steps, int noKeys, int noValues, boolean defaultNull, int seed, - VersionedMapStoreBuilder builder) { + VersionedMapStoreFactoryBuilder builder) { runFuzzTest( "MutableS" + steps + "K" + noKeys + "V" + noValues + "s" + seed, seed, steps, noKeys, noValues, defaultNull, builder); @@ -72,7 +72,7 @@ class MutableFuzzTest { @Tag("fuzz") @Tag("slow") void parametrizedSlowFuzz(int ignoredTests, int steps, int noKeys, int noValues, boolean nullDefault, int seed, - VersionedMapStoreBuilder builder) { + VersionedMapStoreFactoryBuilder builder) { runFuzzTest( "MutableS" + steps + "K" + noKeys + "V" + noValues + "s" + seed, seed, steps, noKeys, noValues, nullDefault, builder); diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/RestoreFuzzTest.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/RestoreFuzzTest.java index 568aaac9..1661cccb 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/RestoreFuzzTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/RestoreFuzzTest.java @@ -1,31 +1,31 @@ package tools.refinery.store.map.tests.fuzz; -import static org.junit.jupiter.api.Assertions.fail; -import static tools.refinery.store.map.tests.fuzz.utils.FuzzTestCollections.*; - -import java.util.HashMap; -import java.util.Map; -import java.util.Random; -import java.util.stream.Stream; - import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Timeout; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; - -import tools.refinery.store.map.*; -import tools.refinery.store.map.internal.VersionedMapImpl; +import tools.refinery.store.map.VersionedMap; +import tools.refinery.store.map.VersionedMapStore; +import tools.refinery.store.map.VersionedMapStoreFactoryBuilder; import tools.refinery.store.map.tests.fuzz.utils.FuzzTestUtils; import tools.refinery.store.map.tests.utils.MapTestEnvironment; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; +import java.util.stream.Stream; + +import static org.junit.jupiter.api.Assertions.fail; +import static tools.refinery.store.map.tests.fuzz.utils.FuzzTestCollections.*; + class RestoreFuzzTest { private void runFuzzTest(String scenario, int seed, int steps, int maxKey, int maxValue, boolean nullDefault, int commitFrequency, - VersionedMapStoreBuilder builder) { + VersionedMapStoreFactoryBuilder builder) { String[] values = MapTestEnvironment.prepareValues(maxValue, nullDefault); - VersionedMapStore store = builder.setDefaultValue(values[0]).buildOne(); + VersionedMapStore store = builder.defaultValue(values[0]).build().createOne(); iterativeRandomPutsAndCommitsThenRestore(scenario, store, steps, maxKey, values, seed, commitFrequency); } @@ -84,7 +84,7 @@ class RestoreFuzzTest { @Timeout(value = 10) @Tag("smoke") void parametrizedFastFuzz(int ignoredTests, int steps, int noKeys, int noValues, boolean nullDefault, int commitFrequency, - int seed, VersionedMapStoreBuilder builder) { + int seed, VersionedMapStoreFactoryBuilder builder) { runFuzzTest("RestoreS" + steps + "K" + noKeys + "V" + noValues + "s" + seed, seed, steps, noKeys, noValues, nullDefault, commitFrequency, builder); } @@ -99,7 +99,7 @@ class RestoreFuzzTest { @Tag("smoke") @Tag("slow") void parametrizedSlowFuzz(int ignoredTests, int steps, int noKeys, int noValues, boolean nullDefault, int commitFrequency, - int seed, VersionedMapStoreBuilder builder) { + int seed, VersionedMapStoreFactoryBuilder builder) { runFuzzTest("RestoreS" + steps + "K" + noKeys + "V" + noValues + "s" + seed, seed, steps, noKeys, noValues, nullDefault, commitFrequency, builder); } diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/SingleThreadFuzzTest.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/SingleThreadFuzzTest.java index e7d49227..0e1f9f9f 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/SingleThreadFuzzTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/SingleThreadFuzzTest.java @@ -6,7 +6,7 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import tools.refinery.store.map.VersionedMapStore; -import tools.refinery.store.map.VersionedMapStoreBuilder; +import tools.refinery.store.map.VersionedMapStoreFactoryBuilder; import tools.refinery.store.map.tests.fuzz.utils.FuzzTestUtils; import tools.refinery.store.map.tests.utils.MapTestEnvironment; @@ -15,10 +15,10 @@ import java.util.stream.Stream; import static tools.refinery.store.map.tests.fuzz.utils.FuzzTestCollections.*; class SingleThreadFuzzTest { - private void runFuzzTest(String scenario, int seed, int steps, int maxKey, int maxValue, boolean nullDefault, int commitFrequency, VersionedMapStoreBuilder builder) { + private void runFuzzTest(String scenario, int seed, int steps, int maxKey, int maxValue, boolean nullDefault, int commitFrequency, VersionedMapStoreFactoryBuilder builder) { String[] values = MapTestEnvironment.prepareValues(maxValue, nullDefault); - VersionedMapStore store = builder.setDefaultValue(values[0]).buildOne(); + VersionedMapStore store = builder.defaultValue(values[0]).build().createOne(); // initialize runnables MultiThreadTestRunnable runnable = new MultiThreadTestRunnable(scenario, store, steps, maxKey, values, seed, commitFrequency); @@ -35,7 +35,7 @@ class SingleThreadFuzzTest { @Timeout(value = 10) @Tag("fuzz") void parametrizedFastFuzz(int ignoredTests, int steps, int noKeys, int noValues, boolean defaultNull, - int commitFrequency, int seed, VersionedMapStoreBuilder builder) { + int commitFrequency, int seed, VersionedMapStoreFactoryBuilder builder) { runFuzzTest("SingleThreadS" + steps + "K" + noKeys + "V" + noValues + defaultNull + "CF" + commitFrequency + "s" + seed, seed, steps, noKeys, noValues, defaultNull, commitFrequency, builder); } @@ -50,7 +50,7 @@ class SingleThreadFuzzTest { @Tag("fuzz") @Tag("slow") void parametrizedSlowFuzz(int ignoredTests, int steps, int noKeys, int noValues, boolean nullDefault, - int commitFrequency, int seed, VersionedMapStoreBuilder builder) { + int commitFrequency, int seed, VersionedMapStoreFactoryBuilder builder) { runFuzzTest("SingleThreadS" + steps + "K" + noKeys + "V" + noValues + "s" + seed, seed, steps, noKeys, noValues, nullDefault, commitFrequency, builder); } diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/utils/FuzzTestCollections.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/utils/FuzzTestCollections.java index b344d9b9..94c9cba7 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/utils/FuzzTestCollections.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/utils/FuzzTestCollections.java @@ -1,6 +1,7 @@ package tools.refinery.store.map.tests.fuzz.utils; -import tools.refinery.store.map.VersionedMapStoreBuilder; +import tools.refinery.store.map.VersionedMapStore; +import tools.refinery.store.map.VersionedMapStoreFactoryBuilder; import tools.refinery.store.map.tests.utils.MapTestEnvironment; public final class FuzzTestCollections { @@ -12,34 +13,27 @@ public final class FuzzTestCollections { public static final Object[] randomSeedOptions = {1}; public static final Object[] storeConfigs = { // State based - VersionedMapStoreBuilder.builder() - .setStrategy(VersionedMapStoreBuilder.StoreStrategy.STATE) - .setStateBasedImmutableWhenCommitting(true) - .setHashProvider(MapTestEnvironment.prepareHashProvider(false)) - .setStateBasedNodeSharingStrategy(VersionedMapStoreBuilder.StateStorageStrategy - .SHARED_NODE_CACHE), - VersionedMapStoreBuilder.builder() - .setStrategy(VersionedMapStoreBuilder.StoreStrategy.STATE) - .setStateBasedImmutableWhenCommitting(true) - .setHashProvider(MapTestEnvironment.prepareHashProvider(true)) - .setStateBasedNodeSharingStrategy(VersionedMapStoreBuilder.StateStorageStrategy - .SHARED_NODE_CACHE), - VersionedMapStoreBuilder.builder() - .setStrategy(VersionedMapStoreBuilder.StoreStrategy.STATE) - .setStateBasedImmutableWhenCommitting(false) - .setHashProvider(MapTestEnvironment.prepareHashProvider(false)) - .setStateBasedNodeSharingStrategy(VersionedMapStoreBuilder.StateStorageStrategy.SHARED_NODE_CACHE), - VersionedMapStoreBuilder.builder() - .setStrategy(VersionedMapStoreBuilder.StoreStrategy.STATE) - .setStateBasedImmutableWhenCommitting(false) - .setHashProvider(MapTestEnvironment.prepareHashProvider(false)) - .setStateBasedNodeSharingStrategy(VersionedMapStoreBuilder.StateStorageStrategy.NO_NODE_CACHE), + VersionedMapStore.builder() + .stateBasedImmutableWhenCommitting(true) + .stateBasedHashProvider(MapTestEnvironment.prepareHashProvider(false)) + .stateBasedSharingStrategy(VersionedMapStoreFactoryBuilder.SharingStrategy.SHARED_NODE_CACHE), + VersionedMapStore.builder() + .stateBasedImmutableWhenCommitting(true) + .stateBasedHashProvider(MapTestEnvironment.prepareHashProvider(true)) + .stateBasedSharingStrategy(VersionedMapStoreFactoryBuilder.SharingStrategy.SHARED_NODE_CACHE), + VersionedMapStore.builder() + .stateBasedImmutableWhenCommitting(false) + .stateBasedHashProvider(MapTestEnvironment.prepareHashProvider(false)) + .stateBasedSharingStrategy(VersionedMapStoreFactoryBuilder.SharingStrategy.SHARED_NODE_CACHE), + VersionedMapStore.builder() + .stateBasedImmutableWhenCommitting(false) + .stateBasedHashProvider(MapTestEnvironment.prepareHashProvider(false)) + .stateBasedSharingStrategy(VersionedMapStoreFactoryBuilder.SharingStrategy.NO_NODE_CACHE), + // Delta based - VersionedMapStoreBuilder.builder() - .setStrategy(VersionedMapStoreBuilder.StoreStrategy.DELTA) - .setDeltaStorageStrategy(VersionedMapStoreBuilder.DeltaStorageStrategy.SET), - VersionedMapStoreBuilder.builder() - .setStrategy(VersionedMapStoreBuilder.StoreStrategy.DELTA) - .setDeltaStorageStrategy(VersionedMapStoreBuilder.DeltaStorageStrategy.LIST) + VersionedMapStore.builder() + .deltaTransactionStrategy(VersionedMapStoreFactoryBuilder.DeltaTransactionStrategy.SET), + VersionedMapStore.builder() + .deltaTransactionStrategy(VersionedMapStoreFactoryBuilder.DeltaTransactionStrategy.LIST) }; } -- cgit v1.2.3-54-g00ecf