Skip to content

Commit 0ddde0a

Browse files
authored
DROOLS-7573 - add parameter for h2vm/infinispan store (#268)
* add parameter for h2vm/infinispan store * add 'h2vmstore' option in Mode parameter * a fix for InsertOnlyBenchmark
1 parent 96f62f7 commit 0ddde0a

File tree

4 files changed

+85
-33
lines changed

4 files changed

+85
-33
lines changed

drools-benchmarks-parent/drools-benchmarks-reliability/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@
4747
<groupId>org.drools</groupId>
4848
<artifactId>drools-reliability-infinispan</artifactId>
4949
</dependency>
50+
<dependency>
51+
<groupId>org.drools</groupId>
52+
<artifactId>drools-reliability-h2mvstore</artifactId>
53+
</dependency>
5054
<dependency>
5155
<groupId>org.infinispan</groupId>
5256
<artifactId>infinispan-server-testdriver-core</artifactId>

drools-benchmarks-parent/drools-benchmarks-reliability/src/main/java/org/drools/benchmarks/reliability/AbstractReliabilityBenchmark.java

Lines changed: 70 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@
2121

2222
import org.drools.benchmarks.common.AbstractBenchmark;
2323
import org.drools.benchmarks.common.util.RuntimeUtil;
24+
import org.drools.reliability.core.ReliableGlobalResolverFactory;
25+
import org.drools.reliability.core.SimpleReliableObjectStoreFactory;
2426
import org.drools.reliability.core.StorageManagerFactory;
27+
import org.drools.reliability.h2mvstore.H2MVStoreStorageManager;
2528
import org.drools.reliability.infinispan.InfinispanStorageManager;
2629
import org.drools.reliability.infinispan.InfinispanStorageManagerFactory;
2730
import org.drools.util.FileUtils;
@@ -33,23 +36,26 @@
3336
import org.openjdk.jmh.annotations.Setup;
3437
import org.openjdk.jmh.annotations.TearDown;
3538

36-
import static org.drools.benchmarks.reliability.AbstractReliabilityBenchmark.Mode.EMBEDDED;
39+
import static org.drools.benchmarks.reliability.AbstractReliabilityBenchmark.Mode.INFINISPAN_EMBEDDED;
3740
import static org.drools.benchmarks.reliability.AbstractReliabilityBenchmark.Mode.NONE;
38-
import static org.drools.benchmarks.reliability.AbstractReliabilityBenchmark.Mode.REMOTE;
39-
import static org.drools.benchmarks.reliability.AbstractReliabilityBenchmark.Mode.REMOTEPROTO;
41+
import static org.drools.benchmarks.reliability.AbstractReliabilityBenchmark.Mode.INFINISPAN_REMOTE;
42+
import static org.drools.benchmarks.reliability.AbstractReliabilityBenchmark.Mode.INFINISPAN_REMOTEPROTO;
43+
import static org.drools.benchmarks.reliability.AbstractReliabilityBenchmark.Mode.H2MVSTORE;
4044
import static org.drools.reliability.infinispan.EmbeddedStorageManager.GLOBAL_STATE_DIR;
4145
import static org.drools.reliability.infinispan.InfinispanStorageManagerFactory.INFINISPAN_STORAGE_ALLOWED_PACKAGES;
4246
import static org.drools.reliability.infinispan.InfinispanStorageManagerFactory.INFINISPAN_STORAGE_MARSHALLER;
4347
import static org.drools.reliability.infinispan.InfinispanStorageManagerFactory.INFINISPAN_STORAGE_MODE;
48+
import static org.drools.util.Config.getConfig;
4449

4550
public abstract class AbstractReliabilityBenchmark extends AbstractBenchmark {
4651

4752
// infinispanStorageMode has to match InfinispanStorageManagerFactory.INFINISPAN_STORAGE_MODE
4853
public enum Mode {
4954
NONE(null),
50-
EMBEDDED("EMBEDDED"),
51-
REMOTE("REMOTE"),
52-
REMOTEPROTO("REMOTE");
55+
INFINISPAN_EMBEDDED("EMBEDDED"),
56+
INFINISPAN_REMOTE("REMOTE"),
57+
INFINISPAN_REMOTEPROTO("REMOTE"),
58+
H2MVSTORE("H2MVSTORE");
5359

5460
private String infinispanStorageMode;
5561

@@ -62,7 +68,14 @@ public String getInfinispanStorageMode() {
6268
}
6369
}
6470

65-
@Param({"NONE", "EMBEDDED", "REMOTE", "REMOTEPROTO"})
71+
public enum Module {
72+
INFINISPAN,
73+
H2MVSTORE
74+
}
75+
76+
public static final String DROOLS_RELIABILITY_MODULE_TEST = "drools.reliability.module.test";
77+
78+
@Param({"NONE", "INFINISPAN_EMBEDDED", "INFINISPAN_REMOTE", "INFINISPAN_REMOTEPROTO", "H2MVSTORE"})
6679
protected Mode mode;
6780

6881
@Param({"true", "false"})
@@ -74,25 +87,34 @@ public String getInfinispanStorageMode() {
7487
public void setupEnvironment() {
7588
FileUtils.deleteDirectory(Path.of(GLOBAL_STATE_DIR));
7689

77-
if (mode != NONE) {
78-
System.setProperty(INFINISPAN_STORAGE_MODE, mode.getInfinispanStorageMode());
79-
}
90+
if (mode == H2MVSTORE){
91+
H2MVStoreStorageManager.cleanUpDatabase();
92+
System.setProperty(DROOLS_RELIABILITY_MODULE_TEST, "H2MVSTORE");
93+
configureServicePriorities();
94+
}else {
95+
System.setProperty(DROOLS_RELIABILITY_MODULE_TEST, "INFINISPAN");
96+
if (mode != NONE) {
97+
System.setProperty(INFINISPAN_STORAGE_MODE, mode.getInfinispanStorageMode());
98+
}
8099

81-
if (mode == EMBEDDED || mode == REMOTE) {
82-
System.setProperty(INFINISPAN_STORAGE_ALLOWED_PACKAGES, "org.drools.benchmarks.common.model");
83-
}
100+
if (mode == INFINISPAN_EMBEDDED || mode == INFINISPAN_REMOTE) {
101+
System.setProperty(INFINISPAN_STORAGE_ALLOWED_PACKAGES, "org.drools.benchmarks.common.model");
102+
}
84103

85-
if (mode == REMOTEPROTO) {
86-
System.setProperty(INFINISPAN_STORAGE_MARSHALLER, "PROTOSTREAM");
87-
setupSerializationContext();
88-
}
104+
if (mode == INFINISPAN_REMOTEPROTO) {
105+
System.setProperty(INFINISPAN_STORAGE_MARSHALLER, "PROTOSTREAM");
106+
setupSerializationContext();
107+
}
108+
109+
configureServicePriorities();
89110

90-
if (mode == REMOTE || mode == REMOTEPROTO) {
91-
container = new InfinispanContainer();
92-
container.start();
93-
InfinispanStorageManager storageManager = (InfinispanStorageManager) StorageManagerFactory.get().getStorageManager();
94-
RemoteCacheManager remoteCacheManager = container.getRemoteCacheManager(storageManager.provideAdditionalRemoteConfigurationBuilder());
95-
storageManager.setRemoteCacheManager(remoteCacheManager);
111+
if (mode == INFINISPAN_REMOTE || mode == INFINISPAN_REMOTEPROTO) {
112+
container = new InfinispanContainer();
113+
container.start();
114+
InfinispanStorageManager storageManager = (InfinispanStorageManager) StorageManagerFactory.get().getStorageManager();
115+
RemoteCacheManager remoteCacheManager = container.getRemoteCacheManager(storageManager.provideAdditionalRemoteConfigurationBuilder());
116+
storageManager.setRemoteCacheManager(remoteCacheManager);
117+
}
96118
}
97119
}
98120

@@ -104,7 +126,7 @@ protected void setupSerializationContext() {
104126

105127
@TearDown
106128
public void tearDownEnvironment() {
107-
if (mode == REMOTE || mode == REMOTEPROTO) {
129+
if (mode == Mode.INFINISPAN_REMOTE || mode == Mode.INFINISPAN_REMOTEPROTO) {
108130
StorageManagerFactory.get().getStorageManager().close();
109131
container.stop();
110132
}
@@ -127,4 +149,28 @@ public void setup() {
127149
}
128150

129151
protected abstract void populateKieSessionPerIteration();
152+
153+
154+
public static void configureServicePriorities() {
155+
Module module = Module.valueOf(getConfig(DROOLS_RELIABILITY_MODULE_TEST, Module.INFINISPAN.name()));
156+
if (module == Module.INFINISPAN) {
157+
prioritizeInfinispanServices();
158+
} else if (module == Module.H2MVSTORE) {
159+
prioritizeH2MVStoreServices();
160+
} else {
161+
throw new IllegalStateException("Unknown module: " + module);
162+
}
163+
}
164+
165+
private static void prioritizeInfinispanServices() {
166+
ReliableGlobalResolverFactory.get("infinispan");
167+
SimpleReliableObjectStoreFactory.get("infinispan");
168+
StorageManagerFactory.get("infinispan");
169+
}
170+
171+
private static void prioritizeH2MVStoreServices() {
172+
ReliableGlobalResolverFactory.get("core");
173+
SimpleReliableObjectStoreFactory.get("core");
174+
StorageManagerFactory.get("h2mvstore");
175+
}
130176
}

drools-benchmarks-parent/drools-benchmarks-reliability/src/main/java/org/drools/benchmarks/reliability/FireAndAlarmBenchmark.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public class FireAndAlarmBenchmark extends AbstractReliabilityBenchmark{
6262
@Param({"100"})
6363
private int factsNr;
6464

65-
@Param({"EMBEDDED"})
65+
@Param({"INFINISPAN_EMBEDDED"})
6666
private Mode mode;
6767

6868
@Param({"true", "false"})

drools-benchmarks-parent/drools-benchmarks-reliability/src/main/java/org/drools/benchmarks/reliability/InsertFailoverFireBenchmark.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public class InsertFailoverFireBenchmark extends AbstractReliabilityBenchmarkFai
4343
@Param({"100"})
4444
private int factsNr;
4545

46-
@Param({"EMBEDDED"})
46+
@Param({"INFINISPAN_EMBEDDED", "H2MVSTORE"})
4747
private Mode mode;
4848

4949
@Param({"true", "false"})
@@ -63,7 +63,7 @@ public void setupKieBase() {
6363

6464
@Setup(Level.Iteration)
6565
public void setupAndFailover() {
66-
System.out.println("setupAndFailover!!");
66+
// System.out.println("setupAndFailover!!");
6767
if (mode != Mode.NONE) {
6868
persistenceStrategy = PersistedSessionOption.PersistenceStrategy.STORES_ONLY;
6969
safepointStrategy = useSafepoints ? PersistedSessionOption.SafepointStrategy.AFTER_FIRE : PersistedSessionOption.SafepointStrategy.ALWAYS;
@@ -110,18 +110,20 @@ public long test() {
110110
public static void main(String[] args) {
111111
InsertFailoverFireBenchmark benchmark = new InsertFailoverFireBenchmark();
112112
benchmark.factsNr = 10;
113-
benchmark.mode = Mode.EMBEDDED;
113+
benchmark.mode = Mode.H2MVSTORE;
114114
benchmark.useObjectStoreWithReferences = true;
115115
benchmark.useSafepoints = true;
116116

117-
benchmark.setupKieBase();
118-
benchmark.setupAndFailover();
119-
benchmark.test();
120-
benchmark.tearDown();
121-
117+
benchmark.setupEnvironment(benchmark.mode);
122118
benchmark.setupKieBase();
123119
benchmark.setupAndFailover();
124120
benchmark.test();
125121
benchmark.tearDown();
126122
}
123+
124+
// this method is only used by main
125+
protected void setupEnvironment(Mode mode) {
126+
super.mode = mode;
127+
super.setupEnvironment();
128+
}
127129
}

0 commit comments

Comments
 (0)