/
LParallelGatewayTwoTimesProcess.java
83 lines (71 loc) · 2.85 KB
/
LParallelGatewayTwoTimesProcess.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package org.jbpm.test.performance.scenario.load;
import java.util.concurrent.TimeUnit;
import org.jbpm.test.performance.jbpm.JBPMController;
import org.jbpm.test.performance.jbpm.constant.ProcessStorage;
import org.jbpm.test.performance.jbpm.wih.ManualTaskWorkItemHandler;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.manager.RuntimeEngine;
import org.kie.api.runtime.manager.RuntimeManager;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Fork;
import org.openjdk.jmh.annotations.Level;
import org.openjdk.jmh.annotations.Measurement;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.annotations.Param;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.annotations.TearDown;
import org.openjdk.jmh.annotations.Threads;
import org.openjdk.jmh.annotations.Warmup;
@State(Scope.Benchmark)
@Fork(value = 1, jvmArgs = {"-Xms2G", "-Xmx2G"})
@Warmup(iterations = 1, time = 1)
@Measurement(iterations = 1, time = 1)
@Threads(1)
public class LParallelGatewayTwoTimesProcess {
// ! Must be overridden using -p from command line
@Param("")
public String runtimeManagerStrategy;
private JBPMController jc;
private RuntimeManager manager;
@State(Scope.Thread)
public static class ThreadScope {
private RuntimeEngine runtimeEngine;
@TearDown(Level.Invocation)
public void close(LParallelGatewayTwoTimesProcess lParallelGatewayTwoTimesProcess) {
lParallelGatewayTwoTimesProcess.manager.disposeRuntimeEngine(runtimeEngine);
}
}
@Setup(Level.Iteration)
public void init() {
// Sets jvm argument to runtimeManagerStrategy
System.setProperty("jbpm.runtimeManagerStrategy", runtimeManagerStrategy);
jc = JBPMController.getInstance();
jc.addWorkItemHandler("Manual Task", new ManualTaskWorkItemHandler());
manager = jc.createRuntimeManager(ProcessStorage.ParallelGatewayTwoTimes.getPath());
}
@BenchmarkMode(Mode.Throughput)
@OutputTimeUnit(TimeUnit.SECONDS)
@Benchmark
public void Throughput(ThreadScope threadScope) {
execute(threadScope);
}
@BenchmarkMode(Mode.SampleTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Benchmark
public void sampleTime(ThreadScope threadScope) {
execute(threadScope);
}
private void execute(ThreadScope threadScope) {
threadScope.runtimeEngine = jc.getRuntimeEngine();
KieSession ksession = threadScope.runtimeEngine.getKieSession();
ksession.startProcess(ProcessStorage.ParallelGatewayTwoTimes.getProcessDefinitionId());
}
@TearDown(Level.Iteration)
public void close() {
jc.tearDown();
}
}