2121
2222import org .drools .benchmarks .common .AbstractBenchmark ;
2323import org .drools .benchmarks .common .util .RuntimeUtil ;
24+ import org .drools .reliability .core .ReliableGlobalResolverFactory ;
25+ import org .drools .reliability .core .SimpleReliableObjectStoreFactory ;
2426import org .drools .reliability .core .StorageManagerFactory ;
27+ import org .drools .reliability .h2mvstore .H2MVStoreStorageManager ;
2528import org .drools .reliability .infinispan .InfinispanStorageManager ;
2629import org .drools .reliability .infinispan .InfinispanStorageManagerFactory ;
2730import org .drools .util .FileUtils ;
3336import org .openjdk .jmh .annotations .Setup ;
3437import 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 ;
3740import 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 ;
4044import static org .drools .reliability .infinispan .EmbeddedStorageManager .GLOBAL_STATE_DIR ;
4145import static org .drools .reliability .infinispan .InfinispanStorageManagerFactory .INFINISPAN_STORAGE_ALLOWED_PACKAGES ;
4246import static org .drools .reliability .infinispan .InfinispanStorageManagerFactory .INFINISPAN_STORAGE_MARSHALLER ;
4347import static org .drools .reliability .infinispan .InfinispanStorageManagerFactory .INFINISPAN_STORAGE_MODE ;
48+ import static org .drools .util .Config .getConfig ;
4449
4550public 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}
0 commit comments