You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kie.apache.org by kb...@apache.org on 2023/11/13 08:32:27 UTC

(incubator-kie-kogito-benchmarks) branch main updated (9d58c62 -> f1518aa)

This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git


    from 9d58c62  [kie-issues#628] Change JBoss Nexus to Apache Nexus. (#17)
     new c5b3e2b  kie-issues#570: replace copyrights headers/comments in kogito-benchmarks
     new 622ee2d  adding NOTICE
     new f1518aa  Merge pull request #16 from kbowers-ibm/kie-issues#570

The 38 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 NOTICE                                             |  9 ++++++++
 kogito-benchmarks-framework/pom.xml                | 16 ++++++++++++++
 .../org/kie/kogito/benchmarks/framework/App.java   | 25 ++++++++++++----------
 .../kogito/benchmarks/framework/BuildResult.java   | 25 ++++++++++++----------
 .../kie/kogito/benchmarks/framework/Commands.java  | 25 ++++++++++++----------
 .../benchmarks/framework/HTTPRequestInfo.java      | 25 ++++++++++++----------
 .../kogito/benchmarks/framework/LogBuilder.java    | 25 ++++++++++++----------
 .../org/kie/kogito/benchmarks/framework/Logs.java  | 25 ++++++++++++----------
 .../kie/kogito/benchmarks/framework/MvnCmds.java   | 25 ++++++++++++----------
 .../kie/kogito/benchmarks/framework/RunInfo.java   | 25 ++++++++++++----------
 .../kogito/benchmarks/framework/URLContent.java    | 25 ++++++++++++----------
 .../kogito/benchmarks/framework/WebpageTester.java | 25 ++++++++++++----------
 .../benchmarks/framework/WhitelistLogLines.java    | 25 ++++++++++++----------
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../smarthouse-02-quarkus-mvn/threshold.properties | 16 ++++++++++++++
 .../smarthouse-02-springboot/threshold.properties  | 16 ++++++++++++++
 .../smarthouse-03-quarkus-mvn/threshold.properties | 16 ++++++++++++++
 .../smarthouse-03-springboot/threshold.properties  | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 kogito-benchmarks-tests/pom.xml                    | 16 ++++++++++++++
 .../kogito/benchmarks/AbstractTemplateTest.java    | 25 ++++++++++++----------
 .../benchmarks/PMMLClusteringQuarkusTest.java      | 25 ++++++++++++----------
 .../benchmarks/PMMLClusteringSpringBootTest.java   | 25 ++++++++++++----------
 .../kogito/benchmarks/PMMLForestQuarkusTest.java   | 25 ++++++++++++----------
 .../benchmarks/PMMLForestSpringBootTest.java       | 25 ++++++++++++----------
 .../kie/kogito/benchmarks/PMMLMineQuarkusTest.java | 25 ++++++++++++----------
 .../kogito/benchmarks/PMMLMineSpringBootTest.java  | 25 ++++++++++++----------
 .../benchmarks/PMMLRegressionQuarkusTest.java      | 25 ++++++++++++----------
 .../benchmarks/PMMLRegressionSpringBootTest.java   | 25 ++++++++++++----------
 .../benchmarks/PMMLScorecardQuarkusTest.java       | 25 ++++++++++++----------
 .../benchmarks/PMMLScorecardSpringBootTest.java    | 25 ++++++++++++----------
 .../kogito/benchmarks/SmartHouse02QuarkusTest.java | 25 ++++++++++++----------
 .../benchmarks/SmartHouse02SpringBootTest.java     | 25 ++++++++++++----------
 .../kogito/benchmarks/SmartHouse03QuarkusTest.java | 25 ++++++++++++----------
 .../benchmarks/SmartHouse03SpringBootTest.java     | 25 ++++++++++++----------
 .../benchmarks/SmartHouseSTPQuarkusTest.java       | 25 ++++++++++++----------
 .../benchmarks/SmartHouseSTPSpringBootTest.java    | 25 ++++++++++++----------
 .../src/test/resources/logback-test.xml            | 16 ++++++++++++++
 pom.xml                                            | 16 ++++++++++++++
 49 files changed, 721 insertions(+), 308 deletions(-)
 create mode 100644 NOTICE


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 35/38: kie-issues#570: replace copyrights headers/comments in kogito-benchmarks

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit c5b3e2b0f9924fab1f15c99c36f251941bb4321d
Author: Kennedy Bowers <ke...@ibm.com>
AuthorDate: Tue Sep 26 20:04:05 2023 +0200

    kie-issues#570: replace copyrights headers/comments in kogito-benchmarks
---
 kogito-benchmarks-framework/pom.xml                | 16 ++++++++++++++
 .../org/kie/kogito/benchmarks/framework/App.java   | 25 ++++++++++++----------
 .../kogito/benchmarks/framework/BuildResult.java   | 25 ++++++++++++----------
 .../kie/kogito/benchmarks/framework/Commands.java  | 25 ++++++++++++----------
 .../benchmarks/framework/HTTPRequestInfo.java      | 25 ++++++++++++----------
 .../kogito/benchmarks/framework/LogBuilder.java    | 25 ++++++++++++----------
 .../org/kie/kogito/benchmarks/framework/Logs.java  | 25 ++++++++++++----------
 .../kie/kogito/benchmarks/framework/MvnCmds.java   | 25 ++++++++++++----------
 .../kie/kogito/benchmarks/framework/RunInfo.java   | 25 ++++++++++++----------
 .../kogito/benchmarks/framework/URLContent.java    | 25 ++++++++++++----------
 .../kogito/benchmarks/framework/WebpageTester.java | 25 ++++++++++++----------
 .../benchmarks/framework/WhitelistLogLines.java    | 25 ++++++++++++----------
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../smarthouse-02-quarkus-mvn/threshold.properties | 16 ++++++++++++++
 .../smarthouse-02-springboot/threshold.properties  | 16 ++++++++++++++
 .../smarthouse-03-quarkus-mvn/threshold.properties | 16 ++++++++++++++
 .../smarthouse-03-springboot/threshold.properties  | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 kogito-benchmarks-tests/pom.xml                    | 16 ++++++++++++++
 .../kogito/benchmarks/AbstractTemplateTest.java    | 25 ++++++++++++----------
 .../benchmarks/PMMLClusteringQuarkusTest.java      | 25 ++++++++++++----------
 .../benchmarks/PMMLClusteringSpringBootTest.java   | 25 ++++++++++++----------
 .../kogito/benchmarks/PMMLForestQuarkusTest.java   | 25 ++++++++++++----------
 .../benchmarks/PMMLForestSpringBootTest.java       | 25 ++++++++++++----------
 .../kie/kogito/benchmarks/PMMLMineQuarkusTest.java | 25 ++++++++++++----------
 .../kogito/benchmarks/PMMLMineSpringBootTest.java  | 25 ++++++++++++----------
 .../benchmarks/PMMLRegressionQuarkusTest.java      | 25 ++++++++++++----------
 .../benchmarks/PMMLRegressionSpringBootTest.java   | 25 ++++++++++++----------
 .../benchmarks/PMMLScorecardQuarkusTest.java       | 25 ++++++++++++----------
 .../benchmarks/PMMLScorecardSpringBootTest.java    | 25 ++++++++++++----------
 .../kogito/benchmarks/SmartHouse02QuarkusTest.java | 25 ++++++++++++----------
 .../benchmarks/SmartHouse02SpringBootTest.java     | 25 ++++++++++++----------
 .../kogito/benchmarks/SmartHouse03QuarkusTest.java | 25 ++++++++++++----------
 .../benchmarks/SmartHouse03SpringBootTest.java     | 25 ++++++++++++----------
 .../benchmarks/SmartHouseSTPQuarkusTest.java       | 25 ++++++++++++----------
 .../benchmarks/SmartHouseSTPSpringBootTest.java    | 25 ++++++++++++----------
 .../src/test/resources/logback-test.xml            | 16 ++++++++++++++
 pom.xml                                            | 16 ++++++++++++++
 48 files changed, 712 insertions(+), 308 deletions(-)

diff --git a/kogito-benchmarks-framework/pom.xml b/kogito-benchmarks-framework/pom.xml
index d9e01a1..a464ddd 100644
--- a/kogito-benchmarks-framework/pom.xml
+++ b/kogito-benchmarks-framework/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
index 9776d9b..5afd751 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks.framework;
 
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/BuildResult.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/BuildResult.java
index 43fe985..9ad4e48 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/BuildResult.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/BuildResult.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks.framework;
 
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
index 41e6e6d..ab5afee 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks.framework;
 
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
index 118eaaf..dedd4c3 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks.framework;
 
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java
index da2888c..5ffed9c 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks.framework;
 
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
index e28cb39..50cb114 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks.framework;
 
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
index a89c77f..0d69f4f 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks.framework;
 
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/RunInfo.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/RunInfo.java
index f80deb3..e248ad8 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/RunInfo.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/RunInfo.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks.framework;
 
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java
index cc0cb48..720caea 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks.framework;
 
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java
index 9aa4c1b..a663174 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks.framework;
 
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java
index 9fbe407..fc45c0f 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks.framework;
 
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-clustering-quarkus-mvn/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-clustering-quarkus-mvn/threshold.properties
index 35ec0ee..06e5079 100644
--- a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-clustering-quarkus-mvn/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-clustering-quarkus-mvn/threshold.properties
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#  http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
 linux.jvm.time.to.first.ok.request.threshold.ms=34000
 linux.jvm.RSS.threshold.kB=3800000
 linux.native.time.to.first.ok.request.threshold.ms=35
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-clustering-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-clustering-springboot/threshold.properties
index 35ec0ee..06e5079 100644
--- a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-clustering-springboot/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-clustering-springboot/threshold.properties
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#  http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
 linux.jvm.time.to.first.ok.request.threshold.ms=34000
 linux.jvm.RSS.threshold.kB=3800000
 linux.native.time.to.first.ok.request.threshold.ms=35
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-quarkus-mvn/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-quarkus-mvn/threshold.properties
index edcc331..3161423 100644
--- a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-quarkus-mvn/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-quarkus-mvn/threshold.properties
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#  http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
 linux.jvm.time.to.first.ok.request.threshold.ms=70000
 linux.jvm.RSS.threshold.kB=3800000
 linux.native.time.to.first.ok.request.threshold.ms=35
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-springboot/threshold.properties
index edcc331..3161423 100644
--- a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-springboot/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-springboot/threshold.properties
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#  http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
 linux.jvm.time.to.first.ok.request.threshold.ms=70000
 linux.jvm.RSS.threshold.kB=3800000
 linux.native.time.to.first.ok.request.threshold.ms=35
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-mine-quarkus-mvn/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-mine-quarkus-mvn/threshold.properties
index 35ec0ee..06e5079 100644
--- a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-mine-quarkus-mvn/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-mine-quarkus-mvn/threshold.properties
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#  http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
 linux.jvm.time.to.first.ok.request.threshold.ms=34000
 linux.jvm.RSS.threshold.kB=3800000
 linux.native.time.to.first.ok.request.threshold.ms=35
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-mine-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-mine-springboot/threshold.properties
index 35ec0ee..06e5079 100644
--- a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-mine-springboot/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-mine-springboot/threshold.properties
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#  http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
 linux.jvm.time.to.first.ok.request.threshold.ms=34000
 linux.jvm.RSS.threshold.kB=3800000
 linux.native.time.to.first.ok.request.threshold.ms=35
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-regression-quarkus-mvn/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-regression-quarkus-mvn/threshold.properties
index 35ec0ee..06e5079 100644
--- a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-regression-quarkus-mvn/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-regression-quarkus-mvn/threshold.properties
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#  http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
 linux.jvm.time.to.first.ok.request.threshold.ms=34000
 linux.jvm.RSS.threshold.kB=3800000
 linux.native.time.to.first.ok.request.threshold.ms=35
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-regression-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-regression-springboot/threshold.properties
index 35ec0ee..06e5079 100644
--- a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-regression-springboot/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-regression-springboot/threshold.properties
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#  http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
 linux.jvm.time.to.first.ok.request.threshold.ms=34000
 linux.jvm.RSS.threshold.kB=3800000
 linux.native.time.to.first.ok.request.threshold.ms=35
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-scorecard-quarkus-mvn/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-scorecard-quarkus-mvn/threshold.properties
index 35ec0ee..06e5079 100644
--- a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-scorecard-quarkus-mvn/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-scorecard-quarkus-mvn/threshold.properties
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#  http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
 linux.jvm.time.to.first.ok.request.threshold.ms=34000
 linux.jvm.RSS.threshold.kB=3800000
 linux.native.time.to.first.ok.request.threshold.ms=35
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-scorecard-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-scorecard-springboot/threshold.properties
index 35ec0ee..06e5079 100644
--- a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-scorecard-springboot/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-scorecard-springboot/threshold.properties
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#  http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
 linux.jvm.time.to.first.ok.request.threshold.ms=34000
 linux.jvm.RSS.threshold.kB=3800000
 linux.native.time.to.first.ok.request.threshold.ms=35
diff --git a/kogito-benchmarks-framework/src/main/resources/smarthouse-02-quarkus-mvn/threshold.properties b/kogito-benchmarks-framework/src/main/resources/smarthouse-02-quarkus-mvn/threshold.properties
index 36c0c1c..531ad02 100644
--- a/kogito-benchmarks-framework/src/main/resources/smarthouse-02-quarkus-mvn/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/smarthouse-02-quarkus-mvn/threshold.properties
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#  http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
 linux.jvm.time.to.first.ok.request.threshold.ms=3400
 linux.jvm.RSS.threshold.kB=380000
 linux.native.time.to.first.ok.request.threshold.ms=35
diff --git a/kogito-benchmarks-framework/src/main/resources/smarthouse-02-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/smarthouse-02-springboot/threshold.properties
index 91cd28f..34c980e 100644
--- a/kogito-benchmarks-framework/src/main/resources/smarthouse-02-springboot/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/smarthouse-02-springboot/threshold.properties
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#  http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
 linux.jvm.time.to.first.ok.request.threshold.ms=6000
 linux.jvm.RSS.threshold.kB=800000
 linux.native.time.to.first.ok.request.threshold.ms=35
diff --git a/kogito-benchmarks-framework/src/main/resources/smarthouse-03-quarkus-mvn/threshold.properties b/kogito-benchmarks-framework/src/main/resources/smarthouse-03-quarkus-mvn/threshold.properties
index 427e226..c4ae581 100644
--- a/kogito-benchmarks-framework/src/main/resources/smarthouse-03-quarkus-mvn/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/smarthouse-03-quarkus-mvn/threshold.properties
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#  http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
 linux.jvm.time.to.first.ok.request.threshold.ms=3400
 linux.jvm.RSS.threshold.kB=400000
 linux.native.time.to.first.ok.request.threshold.ms=35
diff --git a/kogito-benchmarks-framework/src/main/resources/smarthouse-03-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/smarthouse-03-springboot/threshold.properties
index 91cd28f..34c980e 100644
--- a/kogito-benchmarks-framework/src/main/resources/smarthouse-03-springboot/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/smarthouse-03-springboot/threshold.properties
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#  http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
 linux.jvm.time.to.first.ok.request.threshold.ms=6000
 linux.jvm.RSS.threshold.kB=800000
 linux.native.time.to.first.ok.request.threshold.ms=35
diff --git a/kogito-benchmarks-framework/src/main/resources/stp-smarthouse-03-quarkus-mvn/threshold.properties b/kogito-benchmarks-framework/src/main/resources/stp-smarthouse-03-quarkus-mvn/threshold.properties
index 427e226..c4ae581 100644
--- a/kogito-benchmarks-framework/src/main/resources/stp-smarthouse-03-quarkus-mvn/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/stp-smarthouse-03-quarkus-mvn/threshold.properties
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#  http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
 linux.jvm.time.to.first.ok.request.threshold.ms=3400
 linux.jvm.RSS.threshold.kB=400000
 linux.native.time.to.first.ok.request.threshold.ms=35
diff --git a/kogito-benchmarks-framework/src/main/resources/stp-smarthouse-03-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/stp-smarthouse-03-springboot/threshold.properties
index 47f90f9..f73a500 100644
--- a/kogito-benchmarks-framework/src/main/resources/stp-smarthouse-03-springboot/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/stp-smarthouse-03-springboot/threshold.properties
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#  http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
 linux.jvm.time.to.first.ok.request.threshold.ms=6000
 linux.jvm.RSS.threshold.kB=820000
 linux.native.time.to.first.ok.request.threshold.ms=35
diff --git a/kogito-benchmarks-tests/pom.xml b/kogito-benchmarks-tests/pom.xml
index 44852cf..06c4391 100644
--- a/kogito-benchmarks-tests/pom.xml
+++ b/kogito-benchmarks-tests/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
index 1df13b6..74449d5 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks;
 
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLClusteringQuarkusTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLClusteringQuarkusTest.java
index 5d2bee4..4cae660 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLClusteringQuarkusTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLClusteringQuarkusTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks;
 
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLClusteringSpringBootTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLClusteringSpringBootTest.java
index 635dfc0..7574362 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLClusteringSpringBootTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLClusteringSpringBootTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks;
 
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLForestQuarkusTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLForestQuarkusTest.java
index 4e28693..e652519 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLForestQuarkusTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLForestQuarkusTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks;
 
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLForestSpringBootTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLForestSpringBootTest.java
index 309327e..9668c83 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLForestSpringBootTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLForestSpringBootTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks;
 
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLMineQuarkusTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLMineQuarkusTest.java
index 126eb16..2cb42d0 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLMineQuarkusTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLMineQuarkusTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks;
 
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLMineSpringBootTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLMineSpringBootTest.java
index aeb50d2..e211602 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLMineSpringBootTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLMineSpringBootTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks;
 
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLRegressionQuarkusTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLRegressionQuarkusTest.java
index a9cc640..4f7921b 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLRegressionQuarkusTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLRegressionQuarkusTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks;
 
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLRegressionSpringBootTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLRegressionSpringBootTest.java
index 4e7d190..dc77678 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLRegressionSpringBootTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLRegressionSpringBootTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks;
 
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLScorecardQuarkusTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLScorecardQuarkusTest.java
index 2ef47b8..801b92d 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLScorecardQuarkusTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLScorecardQuarkusTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks;
 
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLScorecardSpringBootTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLScorecardSpringBootTest.java
index e12c157..c6417d7 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLScorecardSpringBootTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLScorecardSpringBootTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks;
 
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02QuarkusTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02QuarkusTest.java
index e4871af..df7dc18 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02QuarkusTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02QuarkusTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks;
 
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02SpringBootTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02SpringBootTest.java
index 250901b..5824b40 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02SpringBootTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02SpringBootTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks;
 
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03QuarkusTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03QuarkusTest.java
index ff228c3..fbff1ec 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03QuarkusTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03QuarkusTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks;
 
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03SpringBootTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03SpringBootTest.java
index 3b8d939..6ee26eb 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03SpringBootTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03SpringBootTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks;
 
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouseSTPQuarkusTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouseSTPQuarkusTest.java
index 87fdf55..8471d17 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouseSTPQuarkusTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouseSTPQuarkusTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks;
 
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouseSTPSpringBootTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouseSTPSpringBootTest.java
index f7b1616..203b8a0 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouseSTPSpringBootTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouseSTPSpringBootTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.kie.kogito.benchmarks;
 
diff --git a/kogito-benchmarks-tests/src/test/resources/logback-test.xml b/kogito-benchmarks-tests/src/test/resources/logback-test.xml
index 4f8d522..176c642 100644
--- a/kogito-benchmarks-tests/src/test/resources/logback-test.xml
+++ b/kogito-benchmarks-tests/src/test/resources/logback-test.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
 <configuration>
 
   <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
diff --git a/pom.xml b/pom.xml
index 852c82f..044094c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+      http://www.apache.org/licenses/LICENSE-2.0
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 05/38: Enhancements #3

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 16600d5ef402c3613ec1cdf7cebf1eb3a32bbd55
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Thu May 6 21:03:32 2021 +0200

    Enhancements #3
---
 .../java/org/kie/kogito/benchmarks/framework/Commands.java     | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
index 231c1fa..6b9ca73 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
@@ -79,6 +79,12 @@ public class Commands {
                 return sys;
             }
         }
+
+        String mainBuildRepo = System.getProperty("maven.repo.local");
+        if (StringUtils.isNotBlank(mainBuildRepo)) {
+            return mainBuildRepo;
+        }
+
         return System.getProperty("user.home") + File.separator + ".m2" + File.separator + "repository";
     }
 
@@ -271,6 +277,9 @@ public class Commands {
         }
         buildCmd.addAll(Arrays.asList(baseCommand));
         buildCmd.add("-Dmaven.repo.local=" + getLocalMavenRepoDir());
+        // use the same settings.xml as the main build
+        buildCmd.add("-s");
+        buildCmd.add(System.getProperty("maven.settings"));
 
         return Collections.unmodifiableList(buildCmd);
     }
@@ -602,6 +611,7 @@ public class Commands {
             pb.redirectOutput(ProcessBuilder.Redirect.to(log));
             Process p = null;
             try {
+                LOGGER.info("Running command: " + String.join(" ", command));
                 p = pb.start();
             } catch (IOException e) {
                 e.printStackTrace();


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 12/38: Tidy up, properly name modules, use logback instead of log4j2

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit f9ae5a96ef37b8de0549f29641632d404e9df1be
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Tue Jun 1 23:31:41 2021 +0200

    Tidy up, properly name modules, use logback instead of log4j2
---
 {framework => kogito-benchmarks-framework}/pom.xml |  39 ++--
 .../org/kie/kogito/benchmarks/framework/App.java   |   4 +-
 .../kogito/benchmarks/framework/BuildResult.java   |   0
 .../kie/kogito/benchmarks/framework/Commands.java  | 182 +--------------
 .../benchmarks/framework/HTTPRequestInfo.java      |   3 +
 .../kogito/benchmarks/framework/LogBuilder.java    |   0
 .../org/kie/kogito/benchmarks/framework/Logs.java  |  65 +-----
 .../kie/kogito/benchmarks/framework/MvnCmds.java   |  20 +-
 .../kie/kogito/benchmarks/framework/RunInfo.java   |   3 +
 .../kogito/benchmarks/framework/URLContent.java    |   0
 .../kogito/benchmarks/framework/WebpageTester.java |  13 +-
 .../benchmarks/framework/WhitelistLogLines.java    |   0
 .../src/main/resources/CtrlC.exe                   | Bin
 .../src/main/resources/README.md                   |   0
 .../smarthouse-02-dm-quarkus/threshold.properties  |   0
 .../threshold.properties                           |   0
 .../smarthouse-03-dm-quarkus/threshold.properties  |   0
 .../threshold.properties                           |   0
 {tests => kogito-benchmarks-tests}/pom.xml         |  20 +-
 .../kogito/benchmarks/AbstractTemplateTest.java    | 142 ++++++-----
 .../kogito/benchmarks/SmartHouse02QuarkusTest.java |   4 +-
 .../benchmarks/SmartHouse02SpringBootTest.java     |   2 +-
 .../kogito/benchmarks/SmartHouse03QuarkusTest.java |   2 +-
 .../benchmarks/SmartHouse03SpringBootTest.java     |   2 +-
 .../src/test/resources/logback-test.xml            |  16 ++
 pom.xml                                            |   9 +-
 sample-kogito-app/pom.xml                          | 115 ---------
 .../src/main/java/mypackage/GreetingEndpoint.java  |  47 ----
 .../src/main/resources/LoanApplication.bpmn        | 259 ---------------------
 .../src/main/resources/MortgageApproval.dmn        |  81 -------
 .../src/main/resources/application.properties      |  36 ---
 sample-kogito-app/threshold.properties             |   6 -
 .../kie/kogito/benchmarks/QuarkusSmallTest.java    |  20 --
 .../org/kie/kogito/benchmarks/QuarkusTest.java     |   9 -
 tests/src/test/resources/log4j2.xml                |  13 --
 35 files changed, 160 insertions(+), 952 deletions(-)

diff --git a/framework/pom.xml b/kogito-benchmarks-framework/pom.xml
similarity index 75%
rename from framework/pom.xml
rename to kogito-benchmarks-framework/pom.xml
index bf46da0..dd5404f 100644
--- a/framework/pom.xml
+++ b/kogito-benchmarks-framework/pom.xml
@@ -10,10 +10,10 @@
     <version>2.0.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>framework</artifactId>
+  <artifactId>kogito-benchmarks-framework</artifactId>
 
-  <name></name>
-  <description></description>
+  <name>Kogito :: Benchmarks :: Framework</name>
+  <description>Framework for starting, measuring and stopping Kogito apps</description>
 
   <properties>
     <log4j.version>2.13.2</log4j.version>
@@ -59,16 +59,16 @@
         <scope>compile</scope>
       </dependency>
 
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-api</artifactId>
-        <version>${log4j.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-core</artifactId>
-        <version>${log4j.version}</version>
-      </dependency>
+<!--      <dependency>-->
+<!--        <groupId>org.apache.logging.log4j</groupId>-->
+<!--        <artifactId>log4j-api</artifactId>-->
+<!--        <version>${log4j.version}</version>-->
+<!--      </dependency>-->
+<!--      <dependency>-->
+<!--        <groupId>org.apache.logging.log4j</groupId>-->
+<!--        <artifactId>log4j-core</artifactId>-->
+<!--        <version>${log4j.version}</version>-->
+<!--      </dependency>-->
     </dependencies>
   </dependencyManagement>
 
@@ -77,11 +77,6 @@
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.jboss.logging</groupId>
-      <artifactId>jboss-logging</artifactId>
-      <version>3.4.1.Final</version> <!-- TODO find another logging library-->
-    </dependency>
     <dependency>
       <groupId>org.junit.jupiter</groupId>
       <artifactId>junit-jupiter</artifactId>
@@ -95,12 +90,12 @@
 
     <!-- Logging -->
     <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-api</artifactId>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-core</artifactId>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-classic</artifactId>
     </dependency>
   </dependencies>
 
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
similarity index 94%
rename from framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
rename to kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
index e363ba9..ce16304 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
@@ -17,8 +17,8 @@ public enum App {
     SMARTHOUSE_02_QUARKUS_JVM("smarthouse-02-dm-quarkus", MvnCmds.QUARKUS_JVM, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
     SMARTHOUSE_03_QUARKUS_JVM("smarthouse-03-dm-quarkus", MvnCmds.QUARKUS_JVM, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING),
 
-    SMARTHOUSE_02_SPRING_BOOT("smarthouse-02-dm-springboot", MvnCmds.SPRING_BOOT_02_JVM, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
-    SMARTHOUSE_03_SPRING_BOOT("smarthouse-03-dm-springboot", MvnCmds.SPRING_BOOT_03_JVM, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING);
+    SMARTHOUSE_02_SPRING_BOOT("smarthouse-02-dm-springboot", MvnCmds.SPRING_BOOT_JVM, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
+    SMARTHOUSE_03_SPRING_BOOT("smarthouse-03-dm-springboot", MvnCmds.SPRING_BOOT_JVM, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING);
 
     public final String dir;
     public final MvnCmds mavenCommands;
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/BuildResult.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/BuildResult.java
similarity index 100%
rename from framework/src/main/java/org/kie/kogito/benchmarks/framework/BuildResult.java
rename to kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/BuildResult.java
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
similarity index 70%
rename from framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
rename to kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
index 004af2e..37fe5b7 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
@@ -28,24 +28,16 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
 import org.apache.commons.lang3.StringUtils;
 import org.assertj.core.api.Assertions;
-import org.jboss.logging.Logger;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import static org.kie.kogito.benchmarks.framework.Logs.appendln;
 import static org.kie.kogito.benchmarks.framework.Logs.appendlnSection;
 
 public class Commands {
-    private static final Logger LOGGER = Logger.getLogger(Commands.class.getName());
+    private static final Logger logger = LoggerFactory.getLogger(Commands.class);
 
     public static final String BASE_DIR = getBaseDir();
     public static final String APPS_DIR = getAppsDir();
@@ -113,7 +105,7 @@ public class Commands {
                 return sys;
             }
         }
-        LOGGER.warn("Failed to detect quarkus.platform.version/QUARKUS_PLATFORM_VERSION, defaulting to getQuarkusVersion().");
+        logger.warn("Failed to detect quarkus.platform.version/QUARKUS_PLATFORM_VERSION, defaulting to getQuarkusVersion().");
         return getQuarkusVersion();
     }
 
@@ -166,36 +158,6 @@ public class Commands {
         return envPropertyValue;
     }
 
-    public static String getCodeQuarkusURL() {
-        return getCodeQuarkusURL("https://code.quarkus.io");
-    }
-
-    public static String getCodeQuarkusURL(String fallbackURL) {
-        String url = null;
-        for (String p : new String[] { "CODE_QUARKUS_URL", "code.quarkus.url" }) {
-            String env = System.getenv().get(p);
-            if (StringUtils.isNotBlank(env)) {
-                url = env;
-                break;
-            }
-            String sys = System.getProperty(p);
-            if (StringUtils.isNotBlank(sys)) {
-                url = sys;
-                break;
-            }
-        }
-        if (url == null) {
-            url = fallbackURL;
-            LOGGER.warn("Failed to detect code.quarkus.url/CODE_QUARKUS_URL env/sys props, defaulting to " + url);
-            return url;
-        }
-        Matcher m = trailingSlash.matcher(url);
-        if (m.find()) {
-            url = m.replaceAll("");
-        }
-        return url;
-    }
-
     public static void cleanTarget(App app) {
         String target = APPS_DIR + File.separator + app.dir + File.separator + "target";
         String logs = APPS_DIR + File.separator + app.dir + File.separator + "logs";
@@ -231,13 +193,10 @@ public class Commands {
         List<String> cmd = getRunCommand(app.mavenCommands.mvnCmds[1]);
         appendln(whatIDidReport, appDir.getAbsolutePath());
         appendlnSection(whatIDidReport, String.join(" ", cmd));
-        long runStarts = System.currentTimeMillis();
         Process pA = runCommand(cmd, appDir, runLogA);
-        long runEnds = System.currentTimeMillis();
-        System.out.println("RunEnds (" + runEnds + ") - RunStarts (" + runStarts + ") : " + (runEnds - runStarts));
         // Test web pages
         long timeToFirstOKRequest = WebpageTester.testWeb(app.urlContent.urlContent[0][0], 10, app.urlContent.urlContent[0][1], true);
-        LOGGER.info("Testing web page content...");
+        logger.info("Testing web page content...");
         for (String[] urlContent : app.urlContent.urlContent) {
             WebpageTester.testWeb(urlContent[0], 5, urlContent[1], false);
         }
@@ -246,7 +205,7 @@ public class Commands {
     }
 
     public static void setCPUAffinity(RunInfo runInfo, int numOfCores) throws IOException, InterruptedException {
-        LOGGER.info("Setting CPU affinity of app to " + numOfCores + " core(s)");
+        logger.info("Setting CPU affinity of app to " + numOfCores + " core(s)");
         String listOfCores = "0-" + (numOfCores - 1);
         String processId = String.valueOf(runInfo.getProcess().pid());
         ProcessBuilder pBuilder = new ProcessBuilder("taskset", "-cpa", listOfCores, processId);
@@ -304,117 +263,6 @@ public class Commands {
         return Collections.unmodifiableList(buildCmd);
     }
 
-    //    public static List<String> getBuildCommand(String[] baseCommand, String repoDir) {
-    //        List<String> buildCmd = new ArrayList<>();
-    //        if (isThisWindows) {
-    //            buildCmd.add("cmd");
-    //            buildCmd.add("/C");
-    //        }
-    //        buildCmd.addAll(Arrays.asList(baseCommand));
-    //        buildCmd.add("-Dmaven.repo.local=" + repoDir);
-    //        buildCmd.add("--settings=" + BASE_DIR + File.separator + App.GENERATED_SKELETON.dir + File.separator + "settings.xml");
-    //
-    //        return Collections.unmodifiableList(buildCmd);
-    //    }
-
-    //    public static List<String> getGeneratorCommand(Set<TestFlags> flags, String[] baseCommand, String[] extensions, String repoDir) {
-    //        List<String> generatorCmd = new ArrayList<>();
-    //        if (isThisWindows) {
-    //            generatorCmd.add("cmd");
-    //            generatorCmd.add("/C");
-    //        }
-    //        generatorCmd.addAll(Arrays.asList(baseCommand));
-    //        if (flags.contains(TestFlags.PRODUCT_BOM)) {
-    //            generatorCmd.add("-DplatformArtifactId=quarkus-product-bom");
-    //            generatorCmd.add("-DplatformGroupId=com.redhat.quarkus");
-    //            generatorCmd.add("-DplatformVersion=" + getQuarkusPlatformVersion());
-    //        } else if (flags.contains(TestFlags.QUARKUS_BOM)) {
-    //            generatorCmd.add("-DplatformArtifactId=quarkus-bom");
-    //            generatorCmd.add("-DplatformVersion=" + getQuarkusVersion());
-    //        } else if (flags.contains(TestFlags.UNIVERSE_BOM)) {
-    //            generatorCmd.add("-DplatformArtifactId=quarkus-universe-bom");
-    //            generatorCmd.add("-DplatformVersion=" + getQuarkusVersion());
-    //        } else if (flags.contains(TestFlags.UNIVERSE_PRODUCT_BOM)) {
-    //            generatorCmd.add("-DplatformArtifactId=quarkus-universe-bom");
-    //            generatorCmd.add("-DplatformGroupId=com.redhat.quarkus");
-    //            generatorCmd.add("-DplatformVersion=" + getQuarkusPlatformVersion());
-    //        }
-    //        generatorCmd.add("-Dextensions=" + String.join(",", extensions));
-    //        generatorCmd.add("-Dmaven.repo.local=" + repoDir);
-    //        generatorCmd.add("--settings=" + BASE_DIR + File.separator + App.GENERATED_SKELETON.dir + File.separator + "settings.xml");
-    //
-    //        return Collections.unmodifiableList(generatorCmd);
-    //    }
-
-    public static List<String> getGeneratorCommand(String[] baseCommand, String[] extensions) {
-        List<String> generatorCmd = new ArrayList<>();
-        if (isThisWindows) {
-            generatorCmd.add("cmd");
-            generatorCmd.add("/C");
-        }
-        generatorCmd.addAll(Arrays.asList(baseCommand));
-        generatorCmd.add("-DplatformVersion=" + getQuarkusVersion());
-        generatorCmd.add("-Dextensions=" + String.join(",", extensions));
-        generatorCmd.add("-Dmaven.repo.local=" + getLocalMavenRepoDir());
-
-        return Collections.unmodifiableList(generatorCmd);
-    }
-
-    //    /**
-    //     * Download a zip file with an example project
-    //     *
-    //     * @param extensions         collection of extension codes, @See {@link io.quarkus.ts.startstop.utils.CodeQuarkusExtensions}
-    //     * @param destinationZipFile path where the zip file will be written
-    //     * @return the actual URL used for audit and logging purposes
-    //     * @throws IOException
-    //     */
-    //    public static String download(Collection<CodeQuarkusExtensions> extensions, String destinationZipFile) throws IOException {
-    //        String downloadURL = getCodeQuarkusURL() + "/api/download?s=" +
-    //                extensions.stream().map(x -> x.shortId).collect(Collectors.joining("."));
-    //        try (ReadableByteChannel readableByteChannel = Channels.newChannel(
-    //                new URL(downloadURL).openStream());
-    //             FileChannel fileChannel = new FileOutputStream(destinationZipFile).getChannel()) {
-    //            fileChannel.transferFrom(readableByteChannel, 0, Long.MAX_VALUE);
-    //        }
-    //        return downloadURL;
-    //    }
-
-    public static File unzip(String zipFilePath, String destinationDir) throws InterruptedException, IOException {
-        ProcessBuilder pb;
-        if (isThisWindows) {
-            pb = new ProcessBuilder("powershell", "-c", "Expand-Archive", "-Path", zipFilePath, "-DestinationPath", destinationDir, "-Force");
-        } else {
-            pb = new ProcessBuilder("unzip", "-o", zipFilePath, "-d", destinationDir);
-        }
-        Map<String, String> env = pb.environment();
-        env.put("PATH", System.getenv("PATH"));
-        pb.directory(new File(destinationDir));
-        pb.redirectErrorStream(true);
-        File unzipLog = new File(zipFilePath + ".log");
-        unzipLog.delete();
-        pb.redirectOutput(ProcessBuilder.Redirect.to(unzipLog));
-        Process p = pb.start();
-        p.waitFor(3, TimeUnit.MINUTES);
-        return unzipLog;
-    }
-
-    public static void removeRepositoriesAndPluginRepositories(String pomFilePath) throws Exception {
-        File pomFile = new File(pomFilePath);
-        Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(pomFile);
-        NodeList repositories = doc.getElementsByTagName("repositories");
-        if (repositories.getLength() == 1) {
-            Node node = repositories.item(0);
-            node.getParentNode().removeChild(node);
-        }
-        NodeList pluginRepositories = doc.getElementsByTagName("pluginRepositories");
-        if (pluginRepositories.getLength() == 1) {
-            Node node = pluginRepositories.item(0);
-            node.getParentNode().removeChild(node);
-        }
-        Transformer transformer = TransformerFactory.newInstance().newTransformer();
-        transformer.transform(new DOMSource(doc), new StreamResult(pomFile));
-    }
-
     public static boolean waitForTcpClosed(String host, int port, long loopTimeoutS) throws InterruptedException, UnknownHostException {
         InetAddress address = InetAddress.getByName(host);
         long now = System.currentTimeMillis();
@@ -428,7 +276,7 @@ public class Commands {
                 socket.getOutputStream().write(1);
                 socket.shutdownInput();
                 socket.shutdownOutput();
-                LOGGER.info("Socket still available: " + host + ":" + port);
+                logger.info("Socket still available: " + host + ":" + port);
             } catch (IOException e) {
                 // Exception thrown - socket is likely closed.
                 return true;
@@ -439,15 +287,7 @@ public class Commands {
         return false;
     }
 
-    //    // TODO we should get rid of it once Quarkus progresses with walid config per extension in generated examples
-    //    public static void confAppPropsForSkeleton(String appDir) throws IOException {
-    //        // Config, see app-generated-skeleton/README.md
-    //        String appPropsSrc = BASE_DIR + File.separator + App.GENERATED_SKELETON.dir + File.separator + "application.properties";
-    //        String appPropsDst = appDir + File.separator + "src" + File.separator + "main" + File.separator + "resources" + File.separator + "application.properties";
-    //        Files.copy(Paths.get(appPropsSrc),
-    //                Paths.get(appPropsDst), StandardCopyOption.REPLACE_EXISTING);
-    //    }
-
+    // TODO this may be useful in the future
     public static void adjustPrettyPrintForJsonLogging(String appDir) throws IOException {
         Path appProps = Paths.get(appDir + File.separator + "src" + File.separator + "main" + File.separator + "resources" + File.separator + "application.properties");
         Path appYaml = Paths.get(appDir + File.separator + "src" + File.separator + "main" + File.separator + "resources" + File.separator + "application.yml");
@@ -499,7 +339,7 @@ public class Commands {
                 Runtime.getRuntime().exec(new String[] { "kill", force ? "-9" : "-15", Long.toString(pid) });
             }
         } catch (IOException | InterruptedException e) {
-            LOGGER.error(e.getMessage(), e);
+            logger.error(e.getMessage(), e);
         }
     }
 
@@ -593,7 +433,7 @@ public class Commands {
      * 3.473028811 seconds time elapsed
      */
 
-    // Ask Karm about this
+    // TODO Ask Karm about this
     public static void processStopper(Process p, boolean force) throws InterruptedException, IOException {
         p.children().forEach(child -> {
             if (child.supportsNormalTermination()) {
@@ -631,7 +471,7 @@ public class Commands {
             pb.redirectOutput(ProcessBuilder.Redirect.to(log));
             Process p = null;
             try {
-                LOGGER.info("Running command: " + String.join(" ", command));
+                logger.info("Running command: " + String.join(" ", command));
                 p = pb.start();
             } catch (IOException e) {
                 e.printStackTrace();
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
similarity index 99%
rename from framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
rename to kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
index 98ac827..8c83b22 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
@@ -3,6 +3,9 @@ package org.kie.kogito.benchmarks.framework;
 import java.util.HashMap;
 import java.util.Map;
 
+/**
+ * A class representing
+ */
 public class HTTPRequestInfo {
 
     private String uri;
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java
similarity index 100%
rename from framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java
rename to kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
similarity index 82%
rename from framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
rename to kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
index 2e2d031..4ec318e 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
@@ -16,7 +16,8 @@ import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 import org.apache.commons.lang3.StringUtils;
-import org.jboss.logging.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
@@ -26,7 +27,7 @@ import static org.kie.kogito.benchmarks.framework.Commands.BASE_DIR;
 import static org.kie.kogito.benchmarks.framework.Commands.isThisWindows;
 
 public class Logs {
-    private static final Logger LOGGER = Logger.getLogger(Logs.class.getName());
+    private static final Logger logger = LoggerFactory.getLogger(Logs.class);
 
     public static final String jarSuffix = "redhat";
     private static final Pattern jarNamePattern = Pattern.compile("^((?!" + jarSuffix + ").)*jar$");
@@ -62,9 +63,9 @@ public class Logs {
                 boolean error = warnErrorDetectionPattern.matcher(line).matches();
                 if (error) {
                     if (isWhiteListed(app.whitelistLogLines.errs, line)) {
-                        LOGGER.info(cmd.name() + " log for " + testMethod + " contains whitelisted error: `" + line + "'");
+                        logger.info(cmd.name() + " log for " + testMethod + " contains whitelisted error: `" + line + "'");
                     } else if (isWhiteListed(app.whitelistLogLines.platformErrs(), line)) {
-                        LOGGER.info(cmd.name() + " log for " + testMethod + " contains platform specific whitelisted error: `" + line + "'");
+                        logger.info(cmd.name() + " log for " + testMethod + " contains platform specific whitelisted error: `" + line + "'");
                     } else {
                         offendingLines.add(line);
                     }
@@ -113,36 +114,6 @@ public class Logs {
         return false;
     }
 
-    //    public static void checkJarSuffixes(Set<TestFlags> flags, File appDir) throws IOException {
-    //        if (flags.contains(TestFlags.PRODUCT_BOM) || flags.contains(TestFlags.UNIVERSE_PRODUCT_BOM)) {
-    //            List<Path> possiblyUnwantedArtifacts = Logs.listJarsFailingNameCheck(
-    //                    appDir.getAbsolutePath() + File.separator + "target" + File.separator + "lib");
-    //            List<String> reportArtifacts = new ArrayList<>();
-    //            boolean containsNotWhitelisted = false;
-    //            for (Path p : possiblyUnwantedArtifacts) {
-    //                boolean found = false;
-    //                for (String w : WhitelistProductBomJars.PRODUCT_BOM.jarNames) {
-    //                    if (p.toString().contains(w)) {
-    //                        found = true;
-    //                        break;
-    //                    }
-    //                }
-    //                if (found) {
-    //                    reportArtifacts.add("WHITELISTED: " + p);
-    //                } else {
-    //                    containsNotWhitelisted = true;
-    //                    reportArtifacts.add(p.toString());
-    //                }
-    //            }
-    //            assertFalse(containsNotWhitelisted, "There are not-whitelisted artifacts without expected string " + jarSuffix + " suffix, see: \n"
-    //                    + String.join("\n", reportArtifacts));
-    //            if (!reportArtifacts.isEmpty()) {
-    //                LOGGER.warn("There are whitelisted artifacts without expected string " + jarSuffix + " suffix, see: \n"
-    //                                    + String.join("\n", reportArtifacts));
-    //            }
-    //        }
-    //    }
-
     public static void checkThreshold(App app, MvnCmds cmd, long rssKb, long timeToFirstOKRequest, long timeToReloadedOKRequest) {
         String propPrefix = isThisWindows ? "windows" : "linux";
         if (cmd.isJVM()) {
@@ -180,7 +151,7 @@ public class Logs {
 
     public static void archiveLog(String testClass, String testMethod, File log) throws IOException {
         if (log == null || !log.exists()) {
-            LOGGER.warn("log must be a valid, existing file. Skipping operation.");
+            logger.warn("log must be a valid, existing file. Skipping operation.");
             return;
         }
         if (StringUtils.isBlank(testClass)) {
@@ -242,7 +213,7 @@ public class Logs {
             Files.write(path, (log.headerCSV + "\n").getBytes(UTF_8), StandardOpenOption.CREATE);
         }
         Files.write(path, (log.lineCSV + "\n").getBytes(UTF_8), StandardOpenOption.APPEND);
-        LOGGER.info("\n" + log.headerCSV + "\n" + log.lineCSV);
+        logger.info("\n" + log.headerCSV + "\n" + log.lineCSV);
     }
 
     public static void logMeasurementsSummary(LogBuilder.Log log, Path path) throws IOException {
@@ -273,7 +244,7 @@ public class Logs {
 
         Files.write(path, (lines.stream().collect(Collectors.joining(System.lineSeparator())) + System.lineSeparator()).getBytes());
 
-        LOGGER.info("\n" + log.headerCSV + "\n" + log.lineCSV);
+        logger.info("\n" + log.headerCSV + "\n" + log.lineCSV);
     }
 
     private static String stripAppAndModeColumns(String line) {
@@ -281,22 +252,6 @@ public class Logs {
         return line.substring(secondOccurrence + 1);
     }
 
-    /**
-     * List Jar file names failing regexp pattern check
-     *
-     * Note the pattern is hardcoded to look for jars not containing word 'redhat',
-     * but it could be easily generalized if needed.
-     *
-     * @param path to the root of directory tree
-     * @return list of offending jar paths
-     */
-    public static List<Path> listJarsFailingNameCheck(String path) throws IOException {
-        return Files.find(Paths.get(path),
-                500, //if this is not enough, something is broken anyway
-                (filePath, fileAttr) -> fileAttr.isRegularFile() && jarNamePattern.matcher(filePath.getFileName().toString()).matches())
-                .collect(Collectors.toList());
-    }
-
     public static float[] parseStartStopTimestamps(File log, App app) throws IOException {
         float[] startedStopped = new float[] { -1f, -1f };
         try (Scanner sc = new Scanner(log, UTF_8)) {
@@ -328,12 +283,12 @@ public class Logs {
             }
         }
         if (startedStopped[0] == -1f) {
-            LOGGER.error("Parsing start time from log failed. " +
+            logger.error("Parsing start time from log failed. " +
                     "Might not be the right time to call this method. The process might have ben killed before it wrote to log. " +
                     "Find " + log.getName() + " in your target dir.");
         }
         if (startedStopped[1] == -1f && !app.isSpringBoot()) { // Spring Boot doesn't provide stop time
-            LOGGER.error("Parsing stop time from log failed. " +
+            logger.error("Parsing stop time from log failed. " +
                     "Might not be the right time to call this method. The process might have been killed before it wrote to log. " +
                     "Find " + log.getName() + " in your target dir.");
         }
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
similarity index 69%
rename from framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
rename to kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
index 9a2db59..b664ae8 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
@@ -10,14 +10,12 @@ public enum MvnCmds {
             new String[] { "mvn", "clean", "package", "-Dquarkus.package.output-name=quarkus" },
             new String[] { "java", "-jar", "target/quarkus-runner.jar" }
     }),
-    SPRING_BOOT_02_JVM(new String[][] {
-            new String[] { "mvn", "clean", "package" }, // There is no possibility of changing the final name of the artifact
-            new String[] { "java", "-jar", "target/smarthouse.jar" }
-    }),
-    SPRING_BOOT_03_JVM(new String[][] {
-            new String[] { "mvn", "clean", "package" },
+    SPRING_BOOT_JVM(new String[][] {
+            new String[] { "mvn", "clean", "package" }, // The JAR name is unified by setting finalName in the kie-assets-library repo
             new String[] { "java", "-jar", "target/smarthouse.jar" }
     }),
+
+    // These are not used now but may be useful in the future
     DEV(new String[][] {
             new String[] { "mvn", "clean", "quarkus:dev", "-Dmaven.repo.local=" + getLocalMavenRepoDir() }
     }),
@@ -26,16 +24,6 @@ public enum MvnCmds {
                     getQuarkusNativeProperties().stream()).toArray(String[]::new),
             new String[] { Commands.isThisWindows ? "target\\quarkus-runner" : "./target/quarkus-runner" }
     }),
-    //    GENERATOR(new String[][] {
-    //            new String[] {
-    //                    "mvn",
-    //                    "io.quarkus:quarkus-maven-plugin:" + getQuarkusVersion() + ":create",
-    //                    "-DprojectGroupId=my-groupId",
-    //                    "-DprojectArtifactId=" + App.GENERATED_SKELETON.dir,
-    //                    "-DprojectVersion=1.0.0-SNAPSHOT",
-    //                    "-DpackageName=org.my.group"
-    //            }
-    //    }),
     MVNW_DEV(new String[][] {
             new String[] { Commands.MVNW, "quarkus:dev" }
     }),
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/RunInfo.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/RunInfo.java
similarity index 89%
rename from framework/src/main/java/org/kie/kogito/benchmarks/framework/RunInfo.java
rename to kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/RunInfo.java
index e7f4599..01f6d0a 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/RunInfo.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/RunInfo.java
@@ -2,6 +2,9 @@ package org.kie.kogito.benchmarks.framework;
 
 import java.io.File;
 
+/**
+ * A class which holds information about a started application.
+ */
 public class RunInfo {
 
     private final Process process;
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java
similarity index 100%
rename from framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java
rename to kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java
similarity index 83%
rename from framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java
rename to kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java
index f88118e..2a1eedf 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java
@@ -7,12 +7,13 @@ import java.nio.charset.StandardCharsets;
 import java.util.Scanner;
 
 import org.apache.commons.lang3.StringUtils;
-import org.jboss.logging.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class WebpageTester {
-    private static final Logger LOGGER = Logger.getLogger(WebpageTester.class.getName());
+    private static final Logger logger = LoggerFactory.getLogger(WebpageTester.class);
 
     /**
      * Patiently try to wait for a web page and examine it
@@ -34,7 +35,6 @@ public class WebpageTester {
         String webPage = "";
 
         long now = System.currentTimeMillis();
-        System.out.println("Now in the testWeb method: " + now);
         final long startTime = now;
         boolean found = false;
         long foundTimestamp = -1L;
@@ -42,19 +42,16 @@ public class WebpageTester {
             URLConnection c = new URL(url).openConnection();
             c.setRequestProperty("Accept", "*/*");
             c.setConnectTimeout(500);
-            long requestStart = System.currentTimeMillis();
             try (Scanner scanner = new Scanner(c.getInputStream(), StandardCharsets.UTF_8.toString())) {
                 scanner.useDelimiter("\\A");
                 webPage = scanner.hasNext() ? scanner.next() : "";
             } catch (Exception e) {
-                LOGGER.debug("Waiting `" + stringToLookFor + "' to appear on " + url);
+                logger.debug("Waiting `" + stringToLookFor + "' to appear on " + url);
             }
             if (webPage.contains(stringToLookFor)) {
                 found = true;
                 if (measureTime) {
                     foundTimestamp = System.currentTimeMillis();
-                    System.out.println("Found timestamp " + foundTimestamp);
-                    System.out.println("Request took " + (foundTimestamp - requestStart));
                 }
                 break;
             }
@@ -70,7 +67,7 @@ public class WebpageTester {
                 (StringUtils.isNotBlank(webPage) ? webPage + " must contain string: " : "Empty webpage does not contain string: ") +
                 "`" + stringToLookFor + "'";
         if (!found) {
-            LOGGER.info(failureMessage);
+            logger.info(failureMessage);
         }
         assertTrue(found, failureMessage);
         return foundTimestamp - startTime;
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java
similarity index 100%
rename from framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java
rename to kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java
diff --git a/framework/src/main/resources/CtrlC.exe b/kogito-benchmarks-framework/src/main/resources/CtrlC.exe
similarity index 100%
rename from framework/src/main/resources/CtrlC.exe
rename to kogito-benchmarks-framework/src/main/resources/CtrlC.exe
diff --git a/framework/src/main/resources/README.md b/kogito-benchmarks-framework/src/main/resources/README.md
similarity index 100%
rename from framework/src/main/resources/README.md
rename to kogito-benchmarks-framework/src/main/resources/README.md
diff --git a/framework/src/main/resources/smarthouse-02-dm-quarkus/threshold.properties b/kogito-benchmarks-framework/src/main/resources/smarthouse-02-dm-quarkus/threshold.properties
similarity index 100%
rename from framework/src/main/resources/smarthouse-02-dm-quarkus/threshold.properties
rename to kogito-benchmarks-framework/src/main/resources/smarthouse-02-dm-quarkus/threshold.properties
diff --git a/framework/src/main/resources/smarthouse-02-dm-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/smarthouse-02-dm-springboot/threshold.properties
similarity index 100%
rename from framework/src/main/resources/smarthouse-02-dm-springboot/threshold.properties
rename to kogito-benchmarks-framework/src/main/resources/smarthouse-02-dm-springboot/threshold.properties
diff --git a/framework/src/main/resources/smarthouse-03-dm-quarkus/threshold.properties b/kogito-benchmarks-framework/src/main/resources/smarthouse-03-dm-quarkus/threshold.properties
similarity index 100%
rename from framework/src/main/resources/smarthouse-03-dm-quarkus/threshold.properties
rename to kogito-benchmarks-framework/src/main/resources/smarthouse-03-dm-quarkus/threshold.properties
diff --git a/framework/src/main/resources/smarthouse-03-dm-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/smarthouse-03-dm-springboot/threshold.properties
similarity index 100%
rename from framework/src/main/resources/smarthouse-03-dm-springboot/threshold.properties
rename to kogito-benchmarks-framework/src/main/resources/smarthouse-03-dm-springboot/threshold.properties
diff --git a/tests/pom.xml b/kogito-benchmarks-tests/pom.xml
similarity index 66%
rename from tests/pom.xml
rename to kogito-benchmarks-tests/pom.xml
index 5274a7b..abd6d17 100644
--- a/tests/pom.xml
+++ b/kogito-benchmarks-tests/pom.xml
@@ -10,35 +10,43 @@
     <version>2.0.0-SNAPSHOT</version>
   </parent>
 
-  <artifactId>tests</artifactId>
+  <artifactId>kogito-benchmarks-tests</artifactId>
 
-  <name></name>
-  <description></description>
+  <name>Kogito :: Benchmarks :: Tests</name>
+  <description>Benchmarks of sample Kogito apps themselves</description>
 
   <properties>
+    <!-- Skip benchmarks by default -->
+    <skipTests>true</skipTests>
     <appsDir>${project.parent.basedir}/</appsDir>
+
+    <version.org.apache.httpcomponents>4.5.13</version.org.apache.httpcomponents>
   </properties>
 
   <dependencyManagement>
     <dependencies>
       <dependency>
         <groupId>org.kie.kogito</groupId>
-        <artifactId>framework</artifactId>
+        <artifactId>kogito-benchmarks-framework</artifactId>
         <version>${project.version}</version>
       </dependency>
+      <dependency>
+        <groupId>org.apache.httpcomponents</groupId>
+        <artifactId>httpclient</artifactId>
+        <version>${version.org.apache.httpcomponents}</version>
+      </dependency>
     </dependencies>
   </dependencyManagement>
 
   <dependencies>
     <dependency>
       <groupId>org.kie.kogito</groupId>
-      <artifactId>framework</artifactId>
+      <artifactId>kogito-benchmarks-framework</artifactId>
     </dependency>
 
     <dependency>
       <groupId>org.apache.httpcomponents</groupId>
       <artifactId>httpclient</artifactId>
-      <version>4.5.13</version>
     </dependency>
   </dependencies>
 
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
similarity index 76%
rename from tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
rename to kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
index a8b9b11..80edb77 100644
--- a/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
@@ -18,10 +18,7 @@ import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.util.EntityUtils;
 import org.assertj.core.api.Assertions;
-import org.jboss.logging.Logger;
-import org.junit.jupiter.api.MethodOrderer;
 import org.junit.jupiter.api.TestInfo;
-import org.junit.jupiter.api.TestMethodOrder;
 import org.kie.kogito.benchmarks.framework.App;
 import org.kie.kogito.benchmarks.framework.BuildResult;
 import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
@@ -29,6 +26,8 @@ import org.kie.kogito.benchmarks.framework.LogBuilder;
 import org.kie.kogito.benchmarks.framework.Logs;
 import org.kie.kogito.benchmarks.framework.MvnCmds;
 import org.kie.kogito.benchmarks.framework.RunInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.kie.kogito.benchmarks.framework.Commands.buildApp;
@@ -52,13 +51,13 @@ import static org.kie.kogito.benchmarks.framework.Logs.writeReport;
 
 public abstract class AbstractTemplateTest {
 
-    private static final Logger LOGGER = Logger.getLogger(AbstractTemplateTest.class.getName());
+    private static final Logger logger = LoggerFactory.getLogger(AbstractTemplateTest.class);
 
     public static final int START_STOP_ITERATIONS = 3;
     public static final String LOCALHOST = "http://localhost:8080";
 
     public void startStop(TestInfo testInfo, App app) throws IOException, InterruptedException {
-        LOGGER.info("Testing app startStop: " + app.toString() + ", mode: " + app.mavenCommands.toString());
+        logger.info("Testing app startStop: " + app.toString() + ", mode: " + app.mavenCommands.toString());
 
         Process pA = null;
         File buildLogA = null;
@@ -89,7 +88,7 @@ public abstract class AbstractTemplateTest {
             List<Long> openedFilesValues = new ArrayList<>(START_STOP_ITERATIONS);
 
             for (int i = 0; i < START_STOP_ITERATIONS; i++) {
-                LOGGER.info("Running... round " + i);
+                logger.info("Running... round " + i);
                 // Build
                 buildResult = buildApp(app, mn, cn, whatIDidReport);
                 buildLogA = buildResult.getBuildLog();
@@ -102,7 +101,7 @@ public abstract class AbstractTemplateTest {
                 pA = runInfo.getProcess();
                 runLogA = runInfo.getRunLog();
 
-                LOGGER.info("Terminate and scan logs...");
+                logger.info("Terminate and scan logs...");
                 pA.getInputStream().available(); // TODO Ask Karm
 
                 long rssKb = getRSSkB(pA.pid());
@@ -110,7 +109,7 @@ public abstract class AbstractTemplateTest {
 
                 processStopper(pA, false);
 
-                LOGGER.info("Gonna wait for ports closed...");
+                logger.info("Gonna wait for ports closed...");
                 // Release ports
                 assertTrue(waitForTcpClosed("localhost", parsePort(app.urlContent.urlContent[0][0]), 60),
                         "Main port is still open");
@@ -165,8 +164,8 @@ public abstract class AbstractTemplateTest {
                     .build();
             Logs.logMeasurementsSummary(log, measurementsSummary);
 
-            LOGGER.info("AVG timeToFirstOKRequest without min and max values: " + timeToFirstOKRequestAvgWithoutMinMax);
-            LOGGER.info("AVG rssKb without min and max values: " + rssKbAvgWithoutMinMax);
+            logger.info("AVG timeToFirstOKRequest without min and max values: " + timeToFirstOKRequestAvgWithoutMinMax);
+            logger.info("AVG rssKb without min and max values: " + rssKbAvgWithoutMinMax);
             checkThreshold(app, mvnCmds, rssKbAvgWithoutMinMax, timeToFirstOKRequestAvgWithoutMinMax, SKIP);
         } finally {
             // Make sure processes are down even if there was an exception / failure
@@ -177,7 +176,6 @@ public abstract class AbstractTemplateTest {
             archiveLog(cn, mn, buildLogA);
             archiveLog(cn, mn, runLogA);
             writeReport(cn, mn, whatIDidReport.toString());
-            //cleanTarget(app);
         }
     }
 
@@ -188,7 +186,7 @@ public abstract class AbstractTemplateTest {
     }
 
     public void loadTest(TestInfo testInfo, App app, HTTPRequestInfo requestInfo) throws IOException, InterruptedException {
-        LOGGER.info("Testing app loadTest: " + app.toString() + ", mode: " + app.mavenCommands.toString());
+        logger.info("Testing app loadTest: " + app.toString() + ", mode: " + app.mavenCommands.toString());
 
         Process pA = null;
         File buildLogA = null;
@@ -220,70 +218,67 @@ public abstract class AbstractTemplateTest {
 
             List<Long> values = new ArrayList<>(20000);
 
-
+            // Intentionally commented, still considering implementing a pluggable REST client interface
             // Plain OLD Java "HTTP Client"
-//            long startTime = System.currentTimeMillis();
-//            for (int i = 0; i < 20000; i++) {
-//                long requestStartTime = System.nanoTime();
-//                HttpURLConnection c = (HttpURLConnection) new URL(requestInfo.getURI()).openConnection();
-//                requestInfo.getHeaders().forEach(c::setRequestProperty);
-//                c.setRequestMethod(requestInfo.getMethod());
-//                c.setDoOutput(true);
-//                c.setConnectTimeout(500);
-//
-//                try (OutputStream os = c.getOutputStream()) {
-//                    os.write(requestInfo.getBody().getBytes());
-//                }
-//
-//                try (Scanner scanner = new Scanner(c.getInputStream(), StandardCharsets.UTF_8.toString())) {
-//                    Assertions.assertThat(c.getResponseCode()).isEqualTo(requestInfo.getExpectedResponseStatusCode());
-////                    System.out.println("Response code: " + c.getResponseCode());
-//                    scanner.useDelimiter("\\A");
-//                    String webPage = scanner.hasNext() ? scanner.next() : "";
-////                    System.out.println("Page is: " + webPage);
-//                } catch (Exception e) {
-//                    LOGGER.info("Error when executing request on " + requestInfo.getURI(), e);
-//                }
-//
-//                long requestEndTime = System.nanoTime();
-//                long duration = requestEndTime - requestStartTime;
-//                values.add(duration);
-////                System.out.println(duration);
-//            }
-//            long endTime = System.currentTimeMillis();
-
+            //            long startTime = System.currentTimeMillis();
+            //            for (int i = 0; i < 20000; i++) {
+            //                long requestStartTime = System.nanoTime();
+            //                HttpURLConnection c = (HttpURLConnection) new URL(requestInfo.getURI()).openConnection();
+            //                requestInfo.getHeaders().forEach(c::setRequestProperty);
+            //                c.setRequestMethod(requestInfo.getMethod());
+            //                c.setDoOutput(true);
+            //                c.setConnectTimeout(500);
+            //
+            //                try (OutputStream os = c.getOutputStream()) {
+            //                    os.write(requestInfo.getBody().getBytes());
+            //                }
+            //
+            //                try (Scanner scanner = new Scanner(c.getInputStream(), StandardCharsets.UTF_8.toString())) {
+            //                    Assertions.assertThat(c.getResponseCode()).isEqualTo(requestInfo.getExpectedResponseStatusCode());
+            ////                    System.out.println("Response code: " + c.getResponseCode());
+            //                    scanner.useDelimiter("\\A");
+            //                    String webPage = scanner.hasNext() ? scanner.next() : "";
+            ////                    System.out.println("Page is: " + webPage);
+            //                } catch (Exception e) {
+            //                    LOGGER.info("Error when executing request on " + requestInfo.getURI(), e);
+            //                }
+            //
+            //                long requestEndTime = System.nanoTime();
+            //                long duration = requestEndTime - requestStartTime;
+            //                values.add(duration);
+            ////                System.out.println(duration);
+            //            }
+            //            long endTime = System.currentTimeMillis();
 
             // Java 11 HTTP Client
 
-//            HttpClient httpClient = HttpClient.newHttpClient();
-//            HttpRequest.Builder requestBuilder = HttpRequest.newBuilder(URI.create(requestInfo.getURI()))
-//                    .POST(HttpRequest.BodyPublishers.ofString(requestInfo.getBody()));
-//            requestInfo.getHeaders().forEach(requestBuilder::header);
-//            HttpRequest request = requestBuilder.build();
-//
-//
-//
-//
-//            long startTime = System.currentTimeMillis();
-//            for (int i = 0; i < 20000; i++) {
-//                long requestStartTime = System.nanoTime();
-//                HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
-//                Assertions.assertThat(response.statusCode()).isEqualTo(requestInfo.getExpectedResponseStatusCode());
-////                System.out.println("Response code: " + response.statusCode());
-////                System.out.println("Page is: " + response.body());
-//                long requestEndTime = System.nanoTime();
-//                long duration = requestEndTime - requestStartTime;
-//                values.add(duration);
-////                System.out.println(duration);
-//            }
-//            long endTime = System.currentTimeMillis();
-
-
+            //            HttpClient httpClient = HttpClient.newHttpClient();
+            //            HttpRequest.Builder requestBuilder = HttpRequest.newBuilder(URI.create(requestInfo.getURI()))
+            //                    .POST(HttpRequest.BodyPublishers.ofString(requestInfo.getBody()));
+            //            requestInfo.getHeaders().forEach(requestBuilder::header);
+            //            HttpRequest request = requestBuilder.build();
+            //
+            //
+            //
+            //
+            //            long startTime = System.currentTimeMillis();
+            //            for (int i = 0; i < 20000; i++) {
+            //                long requestStartTime = System.nanoTime();
+            //                HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
+            //                Assertions.assertThat(response.statusCode()).isEqualTo(requestInfo.getExpectedResponseStatusCode());
+            ////                System.out.println("Response code: " + response.statusCode());
+            ////                System.out.println("Page is: " + response.body());
+            //                long requestEndTime = System.nanoTime();
+            //                long duration = requestEndTime - requestStartTime;
+            //                values.add(duration);
+            ////                System.out.println(duration);
+            //            }
+            //            long endTime = System.currentTimeMillis();
 
             // Apache HTTP Client 4
             long totalDuration;
             long firstResponseTime;
-            try (CloseableHttpClient client = HttpClients.createDefault()){
+            try (CloseableHttpClient client = HttpClients.createDefault()) {
                 HttpPost postRequest = new HttpPost(requestInfo.getURI());
                 postRequest.setEntity(new StringEntity(requestInfo.getBody()));
                 requestInfo.getHeaders().forEach(postRequest::setHeader);
@@ -301,6 +296,7 @@ public abstract class AbstractTemplateTest {
                 totalDuration = endTime - startTime;
             }
 
+            // Intentionally left here until a proper reporting to a file is present
             System.out.println("First response time: " + firstResponseTime);
             System.out.println("First response times: " + values.stream().limit(100).collect(Collectors.toList()));
             System.out.println("Last response times: " + values.stream().skip(values.size() - 100).collect(Collectors.toList()));
@@ -308,15 +304,15 @@ public abstract class AbstractTemplateTest {
             System.out.println("Total duration: " + totalDuration);
 
             long rssKbFinal = getRSSkB(pA.pid());
-            long openedFiles = getOpenedFDs(pA.pid()); // TODO also do before the "test" itself?
+            long openedFiles = getOpenedFDs(pA.pid()); // TODO also do before the "test" itself? Maybe not needed as before is covered in a startStop test
 
             // Stop the App
             processStopper(pA, false);
 
-            LOGGER.info("Gonna wait for ports closed...");
+            logger.info("Gonna wait for ports closed...");
             // Release ports
             assertTrue(waitForTcpClosed("localhost", parsePort(app.urlContent.urlContent[0][0]), 60),
-                       "Main port is still open");
+                    "Main port is still open");
             checkLog(cn, mn, app, mvnCmds, runLogA);
             checkListeningHost(cn, mn, mvnCmds, runLogA);
 
@@ -359,8 +355,6 @@ public abstract class AbstractTemplateTest {
             archiveLog(cn, mn, buildLogA);
             archiveLog(cn, mn, runLogA);
             writeReport(cn, mn, whatIDidReport.toString());
-            //cleanTarget(app);
-
         }
     }
 
@@ -369,8 +363,6 @@ public abstract class AbstractTemplateTest {
             long requestStartTime = System.nanoTime();
             try (CloseableHttpResponse response = client.execute(request)) {
                 Assertions.assertThat(response.getStatusLine().getStatusCode()).isEqualTo(expectedResponseStatusCode);
-//                        System.out.println("Response code: " + response.getStatusLine().getStatusCode());
-//                        System.out.println("Page is: " + EntityUtils.toString(response.getEntity()));
                 EntityUtils.consume(response.getEntity());
             }
             long requestEndTime = System.nanoTime();
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02QuarkusTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02QuarkusTest.java
similarity index 79%
rename from tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02QuarkusTest.java
rename to kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02QuarkusTest.java
index 0e3661d..f537b47 100644
--- a/tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02QuarkusTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02QuarkusTest.java
@@ -1,7 +1,5 @@
 package org.kie.kogito.benchmarks;
 
-import static org.kie.kogito.benchmarks.framework.Logs.getLogsDir;
-
 import java.io.IOException;
 
 import org.junit.jupiter.api.Test;
@@ -28,7 +26,7 @@ public class SmartHouse02QuarkusTest extends AbstractTemplateTest {
                 .header("Content-Type", "application/json")
                 .expectedResponseStatusCode(200)
                 .build(); // This may be directly replaced for example by Apache-specific class, but this keeps
-                          // it detached from any framework
+                                                                                                                                                                                                                                                                                  // it detached from any framework
 
         loadTest(testInfo, APP_TO_TEST, requestInfo);
     }
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02SpringBootTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02SpringBootTest.java
similarity index 79%
rename from tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02SpringBootTest.java
rename to kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02SpringBootTest.java
index dc6d7e9..c97db35 100644
--- a/tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02SpringBootTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02SpringBootTest.java
@@ -26,7 +26,7 @@ public class SmartHouse02SpringBootTest extends AbstractTemplateTest {
                 .header("Content-Type", "application/json")
                 .expectedResponseStatusCode(200)
                 .build(); // This may be directly replaced for example by Apache-specific class, but this keeps
-                          // it detached from any framework
+                                                                                                                                                                                                                                                                                  // it detached from any framework
 
         loadTest(testInfo, APP_TO_TEST, requestInfo);
     }
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03QuarkusTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03QuarkusTest.java
similarity index 79%
rename from tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03QuarkusTest.java
rename to kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03QuarkusTest.java
index eaafc48..beee3bc 100644
--- a/tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03QuarkusTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03QuarkusTest.java
@@ -26,7 +26,7 @@ public class SmartHouse03QuarkusTest extends AbstractTemplateTest {
                 .header("Content-Type", "application/json")
                 .expectedResponseStatusCode(200)
                 .build(); // This may be directly replaced for example by Apache-specific class, but this keeps
-                          // it detached from any framework
+                                                                                                                                                                                                                                                                                  // it detached from any framework
 
         loadTest(testInfo, APP_TO_TEST, requestInfo);
     }
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03SpringBootTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03SpringBootTest.java
similarity index 79%
rename from tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03SpringBootTest.java
rename to kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03SpringBootTest.java
index 1a79de9..f5c9e1e 100644
--- a/tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03SpringBootTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03SpringBootTest.java
@@ -26,7 +26,7 @@ public class SmartHouse03SpringBootTest extends AbstractTemplateTest {
                 .header("Content-Type", "application/json")
                 .expectedResponseStatusCode(200)
                 .build(); // This may be directly replaced for example by Apache-specific class, but this keeps
-                          // it detached from any framework
+                                                                                                                                                                                                                                                                                  // it detached from any framework
 
         loadTest(testInfo, APP_TO_TEST, requestInfo);
     }
diff --git a/kogito-benchmarks-tests/src/test/resources/logback-test.xml b/kogito-benchmarks-tests/src/test/resources/logback-test.xml
new file mode 100644
index 0000000..af25563
--- /dev/null
+++ b/kogito-benchmarks-tests/src/test/resources/logback-test.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+
+  <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
+    <encoder>
+      <!-- %l lowers performance -->
+      <!--<pattern>%d [%t] %-5p %l%n  %m%n</pattern>-->
+      <pattern>%d [%cyan(%t)|%magenta(%C)] %highlight(%-5p) %m%n</pattern>
+    </encoder>
+  </appender>
+
+  <root level="info">
+    <appender-ref ref="consoleAppender" />
+  </root>
+
+</configuration>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index c37181a..0a7d55d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,17 +13,16 @@
   <artifactId>kogito-benchmarks</artifactId>
   <packaging>pom</packaging>
 
-  <name></name>
-  <description></description>
+  <name>Kogito :: Benchmarks</name>
+  <description>Benchmarks of sample Kogito apps</description>
 
   <properties>
     <maven.compiler.release>11</maven.compiler.release> <!-- Mainly because of the additions to the Process API introduced in Java 9 -->
   </properties>
 
   <modules>
-    <module>framework</module>
-    <module>sample-kogito-app</module>
-    <module>tests</module>
+    <module>kogito-benchmarks-framework</module>
+    <module>kogito-benchmarks-tests</module>
   </modules>
 
 
diff --git a/sample-kogito-app/pom.xml b/sample-kogito-app/pom.xml
deleted file mode 100644
index e33c2b2..0000000
--- a/sample-kogito-app/pom.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.kie.kogito</groupId>
-    <artifactId>kogito-benchmarks</artifactId>
-    <version>2.0.0-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>sample-kogito-app</artifactId>
-
-  <properties>
-    <!-- Skip tests by default -->
-    <skipTests>true</skipTests>
-    <quarkus.version>1.11.5.Final</quarkus.version>
-    <kogito.version>1.4.1.Final</kogito.version>
-    <surefire.version>2.22.2</surefire.version>
-    <compiler.version>3.8.1</compiler.version>
-
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.release>11</maven.compiler.release>
-  </properties>
-
-  <dependencyManagement>
-    <dependencies>
-      <dependency>
-        <groupId>org.kie.kogito</groupId>
-        <artifactId>kogito-quarkus-bom</artifactId>
-        <version>${kogito.version}</version>
-        <type>pom</type>
-        <scope>import</scope>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.kie.kogito</groupId>
-      <artifactId>kogito-quarkus</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.quarkus</groupId>
-      <artifactId>quarkus-resteasy</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.quarkus</groupId>
-      <artifactId>quarkus-resteasy-jackson</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.quarkus</groupId>
-      <artifactId>quarkus-smallrye-openapi</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.quarkus</groupId>
-      <artifactId>quarkus-smallrye-health</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.quarkus</groupId>
-      <artifactId>quarkus-arc</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>io.quarkus</groupId>
-      <artifactId>quarkus-junit5</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>io.rest-assured</groupId>
-      <artifactId>rest-assured</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>${compiler.version}</version>
-        <configuration>
-          <release>11</release>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <version>${surefire.version}</version>
-        <configuration>
-          <systemPropertyVariables>
-            <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
-            <maven.home>${maven.home}</maven.home>
-          </systemPropertyVariables>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>io.quarkus</groupId>
-        <artifactId>quarkus-maven-plugin</artifactId>
-        <version>${quarkus.version}</version>
-        <executions>
-          <execution>
-            <goals>
-              <goal>build</goal>
-              <goal>generate-code</goal>
-              <goal>generate-code-tests</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-
-</project>
\ No newline at end of file
diff --git a/sample-kogito-app/src/main/java/mypackage/GreetingEndpoint.java b/sample-kogito-app/src/main/java/mypackage/GreetingEndpoint.java
deleted file mode 100644
index 812c1b5..0000000
--- a/sample-kogito-app/src/main/java/mypackage/GreetingEndpoint.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package mypackage;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import javax.enterprise.event.Observes;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-
-import io.quarkus.runtime.StartupEvent;
-
-@Path("/")
-public class GreetingEndpoint {
-
-    private static final String template = "Hello, %s!";
-
-    @GET
-    @Path("/greeting")
-    @Produces(MediaType.APPLICATION_JSON)
-    public String greeting(@QueryParam("name") String name) {
-        System.out.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new java.util.Date(System.currentTimeMillis())));
-        String suffix = name != null ? name : "World";
-        return String.valueOf(System.currentTimeMillis());
-    }
-
-    void onStart(@Observes StartupEvent startup) {
-        System.out.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()));
-    }
-}
\ No newline at end of file
diff --git a/sample-kogito-app/src/main/resources/LoanApplication.bpmn b/sample-kogito-app/src/main/resources/LoanApplication.bpmn
deleted file mode 100644
index df67fc3..0000000
--- a/sample-kogito-app/src/main/resources/LoanApplication.bpmn
+++ /dev/null
@@ -1,259 +0,0 @@
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:bpsim="http://www.bpsim.org/schemas/1.0" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:drools="http://www.jboss.org/drools" id="_an5RsHt5EDmPCqW-qXr3vw" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd http://www. [...]
-  <bpmn2:itemDefinition id="_amountItem" structureRef="Integer"/>
-  <bpmn2:itemDefinition id="_approvedItem" structureRef="Boolean"/>
-  <bpmn2:itemDefinition id="__A27A8002-A5DB-4448-9DC8-FC702E9AF322_namespaceInputXItem" structureRef="java.lang.String"/>
-  <bpmn2:itemDefinition id="__A27A8002-A5DB-4448-9DC8-FC702E9AF322_modelInputXItem" structureRef="java.lang.String"/>
-  <bpmn2:itemDefinition id="__A27A8002-A5DB-4448-9DC8-FC702E9AF322_decisionInputXItem" structureRef="java.lang.String"/>
-  <bpmn2:itemDefinition id="__A27A8002-A5DB-4448-9DC8-FC702E9AF322_amountInputXItem" structureRef="Integer"/>
-  <bpmn2:itemDefinition id="__A27A8002-A5DB-4448-9DC8-FC702E9AF322_mortgageApprovedOutputXItem" structureRef="Boolean"/>
-  <bpmn2:process id="LoanApplication" drools:packageName="com.example" drools:version="1.0" drools:adHoc="false" name="LoanApplication" isExecutable="true" processType="Public">
-    <bpmn2:property id="amount" itemSubjectRef="_amountItem" name="amount">
-      <bpmn2:extensionElements>
-        <drools:metaData name="customTags">
-          <drools:metaValue><![CDATA[tracked]]></drools:metaValue>
-        </drools:metaData>
-      </bpmn2:extensionElements>
-    </bpmn2:property>
-    <bpmn2:property id="approved" itemSubjectRef="_approvedItem" name="approved">
-      <bpmn2:extensionElements>
-        <drools:metaData name="customTags">
-          <drools:metaValue><![CDATA[tracked]]></drools:metaValue>
-        </drools:metaData>
-      </bpmn2:extensionElements>
-    </bpmn2:property>
-    <bpmn2:sequenceFlow id="_CA9E497D-E2DE-47B3-8CB6-7CEB6BCC302A" sourceRef="_293C116F-8607-4D9C-AFFE-9901DF5B9D33" targetRef="_E7D37FE2-7E1C-4AE2-8D5B-22D6AF4F0F6E"/>
-    <bpmn2:sequenceFlow id="_2C3AB5A8-9862-4AEB-8B74-7274A67CAB71" sourceRef="_7CA472D9-AB07-42B5-9D05-C2F6661F033C" targetRef="_C4FB5974-F764-42C7-95AA-DE6F6F14D167"/>
-    <bpmn2:sequenceFlow id="_33084556-2A2C-44ED-92D6-53C4957E6670" sourceRef="_7CA472D9-AB07-42B5-9D05-C2F6661F033C" targetRef="_293C116F-8607-4D9C-AFFE-9901DF5B9D33">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="http://www.java.com/java"><![CDATA[return approved;]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="_CC99D2A0-69E2-4488-A0DB-F01FB1DBE2CD" sourceRef="_A27A8002-A5DB-4448-9DC8-FC702E9AF322" targetRef="_7CA472D9-AB07-42B5-9D05-C2F6661F033C"/>
-    <bpmn2:sequenceFlow id="_C7CF5D2E-E5B1-4240-8DA8-4B75CE6EB936" sourceRef="_C4FB5974-F764-42C7-95AA-DE6F6F14D167" targetRef="_C8496017-134C-4C70-9D16-9E67C7D3CEBF"/>
-    <bpmn2:sequenceFlow id="_6FC874CA-F759-4F96-AE0E-9C397789E1C2" sourceRef="_0002A37F-EAEE-447C-A9D2-11458967B7AE" targetRef="_A27A8002-A5DB-4448-9DC8-FC702E9AF322">
-      <bpmn2:extensionElements>
-        <drools:metaData name="isAutoConnection.source">
-          <drools:metaValue><![CDATA[true]]></drools:metaValue>
-        </drools:metaData>
-        <drools:metaData name="isAutoConnection.target">
-          <drools:metaValue><![CDATA[true]]></drools:metaValue>
-        </drools:metaData>
-      </bpmn2:extensionElements>
-    </bpmn2:sequenceFlow>
-    <bpmn2:scriptTask id="_C4FB5974-F764-42C7-95AA-DE6F6F14D167" name="Declined" scriptFormat="http://www.java.com/java">
-      <bpmn2:extensionElements>
-        <drools:metaData name="elementname">
-          <drools:metaValue><![CDATA[Declined]]></drools:metaValue>
-        </drools:metaData>
-      </bpmn2:extensionElements>
-      <bpmn2:incoming>_2C3AB5A8-9862-4AEB-8B74-7274A67CAB71</bpmn2:incoming>
-      <bpmn2:outgoing>_C7CF5D2E-E5B1-4240-8DA8-4B75CE6EB936</bpmn2:outgoing>
-      <bpmn2:script>System.out.println("Mortgage has been DECLINED");</bpmn2:script>
-    </bpmn2:scriptTask>
-    <bpmn2:scriptTask id="_293C116F-8607-4D9C-AFFE-9901DF5B9D33" name="Approved" scriptFormat="http://www.java.com/java">
-      <bpmn2:extensionElements>
-        <drools:metaData name="elementname">
-          <drools:metaValue><![CDATA[Approved]]></drools:metaValue>
-        </drools:metaData>
-      </bpmn2:extensionElements>
-      <bpmn2:incoming>_33084556-2A2C-44ED-92D6-53C4957E6670</bpmn2:incoming>
-      <bpmn2:outgoing>_CA9E497D-E2DE-47B3-8CB6-7CEB6BCC302A</bpmn2:outgoing>
-      <bpmn2:script>System.out.println("Mortgage has been APPROVED");</bpmn2:script>
-    </bpmn2:scriptTask>
-    <bpmn2:endEvent id="_E7D37FE2-7E1C-4AE2-8D5B-22D6AF4F0F6E">
-      <bpmn2:incoming>_CA9E497D-E2DE-47B3-8CB6-7CEB6BCC302A</bpmn2:incoming>
-    </bpmn2:endEvent>
-    <bpmn2:exclusiveGateway id="_7CA472D9-AB07-42B5-9D05-C2F6661F033C" drools:dg="_2C3AB5A8-9862-4AEB-8B74-7274A67CAB71" gatewayDirection="Diverging" default="_2C3AB5A8-9862-4AEB-8B74-7274A67CAB71">
-      <bpmn2:incoming>_CC99D2A0-69E2-4488-A0DB-F01FB1DBE2CD</bpmn2:incoming>
-      <bpmn2:outgoing>_33084556-2A2C-44ED-92D6-53C4957E6670</bpmn2:outgoing>
-      <bpmn2:outgoing>_2C3AB5A8-9862-4AEB-8B74-7274A67CAB71</bpmn2:outgoing>
-    </bpmn2:exclusiveGateway>
-    <bpmn2:businessRuleTask id="_A27A8002-A5DB-4448-9DC8-FC702E9AF322" name="Mortgage Approval" implementation="http://www.jboss.org/drools/dmn">
-      <bpmn2:extensionElements>
-        <drools:metaData name="elementname">
-          <drools:metaValue><![CDATA[Mortgage Approval]]></drools:metaValue>
-        </drools:metaData>
-      </bpmn2:extensionElements>
-      <bpmn2:incoming>_6FC874CA-F759-4F96-AE0E-9C397789E1C2</bpmn2:incoming>
-      <bpmn2:outgoing>_CC99D2A0-69E2-4488-A0DB-F01FB1DBE2CD</bpmn2:outgoing>
-      <bpmn2:ioSpecification>
-        <bpmn2:dataInput id="_A27A8002-A5DB-4448-9DC8-FC702E9AF322_namespaceInputX" drools:dtype="java.lang.String" itemSubjectRef="__A27A8002-A5DB-4448-9DC8-FC702E9AF322_namespaceInputXItem" name="namespace"/>
-        <bpmn2:dataInput id="_A27A8002-A5DB-4448-9DC8-FC702E9AF322_decisionInputX" drools:dtype="java.lang.String" itemSubjectRef="__A27A8002-A5DB-4448-9DC8-FC702E9AF322_decisionInputXItem" name="decision"/>
-        <bpmn2:dataInput id="_A27A8002-A5DB-4448-9DC8-FC702E9AF322_modelInputX" drools:dtype="java.lang.String" itemSubjectRef="__A27A8002-A5DB-4448-9DC8-FC702E9AF322_modelInputXItem" name="model"/>
-        <bpmn2:dataInput id="_A27A8002-A5DB-4448-9DC8-FC702E9AF322_amountInputX" drools:dtype="Integer" itemSubjectRef="__A27A8002-A5DB-4448-9DC8-FC702E9AF322_amountInputXItem" name="amount"/>
-        <bpmn2:dataOutput id="_A27A8002-A5DB-4448-9DC8-FC702E9AF322_mortgageApprovedOutputX" drools:dtype="Boolean" itemSubjectRef="__A27A8002-A5DB-4448-9DC8-FC702E9AF322_mortgageApprovedOutputXItem" name="mortgageApproved"/>
-        <bpmn2:inputSet>
-          <bpmn2:dataInputRefs>_A27A8002-A5DB-4448-9DC8-FC702E9AF322_namespaceInputX</bpmn2:dataInputRefs>
-          <bpmn2:dataInputRefs>_A27A8002-A5DB-4448-9DC8-FC702E9AF322_decisionInputX</bpmn2:dataInputRefs>
-          <bpmn2:dataInputRefs>_A27A8002-A5DB-4448-9DC8-FC702E9AF322_modelInputX</bpmn2:dataInputRefs>
-          <bpmn2:dataInputRefs>_A27A8002-A5DB-4448-9DC8-FC702E9AF322_amountInputX</bpmn2:dataInputRefs>
-        </bpmn2:inputSet>
-        <bpmn2:outputSet>
-          <bpmn2:dataOutputRefs>_A27A8002-A5DB-4448-9DC8-FC702E9AF322_mortgageApprovedOutputX</bpmn2:dataOutputRefs>
-        </bpmn2:outputSet>
-      </bpmn2:ioSpecification>
-      <bpmn2:dataInputAssociation>
-        <bpmn2:targetRef>_A27A8002-A5DB-4448-9DC8-FC702E9AF322_namespaceInputX</bpmn2:targetRef>
-        <bpmn2:assignment>
-          <bpmn2:from xsi:type="bpmn2:tFormalExpression"><![CDATA[https://kiegroup.org/dmn/_28B07541-BCAA-4D8D-B754-05ED035496BA]]></bpmn2:from>
-          <bpmn2:to xsi:type="bpmn2:tFormalExpression"><![CDATA[_A27A8002-A5DB-4448-9DC8-FC702E9AF322_namespaceInputX]]></bpmn2:to>
-        </bpmn2:assignment>
-      </bpmn2:dataInputAssociation>
-      <bpmn2:dataInputAssociation>
-        <bpmn2:targetRef>_A27A8002-A5DB-4448-9DC8-FC702E9AF322_decisionInputX</bpmn2:targetRef>
-        <bpmn2:assignment>
-          <bpmn2:from xsi:type="bpmn2:tFormalExpression"><![CDATA[MortgageApproved]]></bpmn2:from>
-          <bpmn2:to xsi:type="bpmn2:tFormalExpression"><![CDATA[_A27A8002-A5DB-4448-9DC8-FC702E9AF322_decisionInputX]]></bpmn2:to>
-        </bpmn2:assignment>
-      </bpmn2:dataInputAssociation>
-      <bpmn2:dataInputAssociation>
-        <bpmn2:targetRef>_A27A8002-A5DB-4448-9DC8-FC702E9AF322_modelInputX</bpmn2:targetRef>
-        <bpmn2:assignment>
-          <bpmn2:from xsi:type="bpmn2:tFormalExpression"><![CDATA[MortgageApproval]]></bpmn2:from>
-          <bpmn2:to xsi:type="bpmn2:tFormalExpression"><![CDATA[_A27A8002-A5DB-4448-9DC8-FC702E9AF322_modelInputX]]></bpmn2:to>
-        </bpmn2:assignment>
-      </bpmn2:dataInputAssociation>
-      <bpmn2:dataInputAssociation>
-        <bpmn2:sourceRef>amount</bpmn2:sourceRef>
-        <bpmn2:targetRef>_A27A8002-A5DB-4448-9DC8-FC702E9AF322_amountInputX</bpmn2:targetRef>
-      </bpmn2:dataInputAssociation>
-      <bpmn2:dataOutputAssociation>
-        <bpmn2:sourceRef>_A27A8002-A5DB-4448-9DC8-FC702E9AF322_mortgageApprovedOutputX</bpmn2:sourceRef>
-        <bpmn2:targetRef>approved</bpmn2:targetRef>
-      </bpmn2:dataOutputAssociation>
-    </bpmn2:businessRuleTask>
-    <bpmn2:endEvent id="_C8496017-134C-4C70-9D16-9E67C7D3CEBF">
-      <bpmn2:incoming>_C7CF5D2E-E5B1-4240-8DA8-4B75CE6EB936</bpmn2:incoming>
-    </bpmn2:endEvent>
-    <bpmn2:startEvent id="_0002A37F-EAEE-447C-A9D2-11458967B7AE">
-      <bpmn2:outgoing>_6FC874CA-F759-4F96-AE0E-9C397789E1C2</bpmn2:outgoing>
-    </bpmn2:startEvent>
-  </bpmn2:process>
-  <bpmndi:BPMNDiagram>
-    <bpmndi:BPMNPlane bpmnElement="LoanApplication">
-      <bpmndi:BPMNShape id="shape__0002A37F-EAEE-447C-A9D2-11458967B7AE" bpmnElement="_0002A37F-EAEE-447C-A9D2-11458967B7AE">
-        <dc:Bounds height="56" width="56" x="134" y="186"/>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="shape__C8496017-134C-4C70-9D16-9E67C7D3CEBF" bpmnElement="_C8496017-134C-4C70-9D16-9E67C7D3CEBF">
-        <dc:Bounds height="56" width="56" x="830" y="262"/>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="shape__A27A8002-A5DB-4448-9DC8-FC702E9AF322" bpmnElement="_A27A8002-A5DB-4448-9DC8-FC702E9AF322">
-        <dc:Bounds height="102" width="154" x="270" y="163"/>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="shape__7CA472D9-AB07-42B5-9D05-C2F6661F033C" bpmnElement="_7CA472D9-AB07-42B5-9D05-C2F6661F033C">
-        <dc:Bounds height="56" width="56" x="504" y="186"/>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="shape__E7D37FE2-7E1C-4AE2-8D5B-22D6AF4F0F6E" bpmnElement="_E7D37FE2-7E1C-4AE2-8D5B-22D6AF4F0F6E">
-        <dc:Bounds height="56" width="56" x="830" y="102"/>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="shape__293C116F-8607-4D9C-AFFE-9901DF5B9D33" bpmnElement="_293C116F-8607-4D9C-AFFE-9901DF5B9D33">
-        <dc:Bounds height="102" width="154" x="618" y="79"/>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="shape__C4FB5974-F764-42C7-95AA-DE6F6F14D167" bpmnElement="_C4FB5974-F764-42C7-95AA-DE6F6F14D167">
-        <dc:Bounds height="102" width="154" x="618" y="239"/>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="edge_shape__0002A37F-EAEE-447C-A9D2-11458967B7AE_to_shape__A27A8002-A5DB-4448-9DC8-FC702E9AF322" bpmnElement="_6FC874CA-F759-4F96-AE0E-9C397789E1C2">
-        <di:waypoint x="190" y="214"/>
-        <di:waypoint x="270" y="214"/>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="edge_shape__C4FB5974-F764-42C7-95AA-DE6F6F14D167_to_shape__C8496017-134C-4C70-9D16-9E67C7D3CEBF" bpmnElement="_C7CF5D2E-E5B1-4240-8DA8-4B75CE6EB936">
-        <di:waypoint x="695" y="290"/>
-        <di:waypoint x="830" y="290"/>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="edge_shape__A27A8002-A5DB-4448-9DC8-FC702E9AF322_to_shape__7CA472D9-AB07-42B5-9D05-C2F6661F033C" bpmnElement="_CC99D2A0-69E2-4488-A0DB-F01FB1DBE2CD">
-        <di:waypoint x="424" y="214"/>
-        <di:waypoint x="504" y="214"/>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="edge_shape__7CA472D9-AB07-42B5-9D05-C2F6661F033C_to_shape__293C116F-8607-4D9C-AFFE-9901DF5B9D33" bpmnElement="_33084556-2A2C-44ED-92D6-53C4957E6670">
-        <di:waypoint x="532" y="186"/>
-        <di:waypoint x="532" y="130"/>
-        <di:waypoint x="618" y="130"/>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="edge_shape__7CA472D9-AB07-42B5-9D05-C2F6661F033C_to_shape__C4FB5974-F764-42C7-95AA-DE6F6F14D167" bpmnElement="_2C3AB5A8-9862-4AEB-8B74-7274A67CAB71">
-        <di:waypoint x="532" y="242"/>
-        <di:waypoint x="532.0000000000026" y="290"/>
-        <di:waypoint x="618" y="290"/>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="edge_shape__293C116F-8607-4D9C-AFFE-9901DF5B9D33_to_shape__E7D37FE2-7E1C-4AE2-8D5B-22D6AF4F0F6E" bpmnElement="_CA9E497D-E2DE-47B3-8CB6-7CEB6BCC302A">
-        <di:waypoint x="695" y="130"/>
-        <di:waypoint x="830" y="130"/>
-      </bpmndi:BPMNEdge>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
-  <bpmn2:relationship type="BPSimData">
-    <bpmn2:extensionElements>
-      <bpsim:BPSimData>
-        <bpsim:Scenario id="default" name="Simulationscenario">
-          <bpsim:ScenarioParameters/>
-          <bpsim:ElementParameters elementRef="_0002A37F-EAEE-447C-A9D2-11458967B7AE">
-            <bpsim:TimeParameters>
-              <bpsim:ProcessingTime>
-                <bpsim:NormalDistribution mean="0" standardDeviation="0"/>
-              </bpsim:ProcessingTime>
-            </bpsim:TimeParameters>
-          </bpsim:ElementParameters>
-          <bpsim:ElementParameters elementRef="_A27A8002-A5DB-4448-9DC8-FC702E9AF322">
-            <bpsim:TimeParameters>
-              <bpsim:ProcessingTime>
-                <bpsim:NormalDistribution mean="0" standardDeviation="0"/>
-              </bpsim:ProcessingTime>
-            </bpsim:TimeParameters>
-            <bpsim:ResourceParameters>
-              <bpsim:Availability>
-                <bpsim:FloatingParameter value="0"/>
-              </bpsim:Availability>
-              <bpsim:Quantity>
-                <bpsim:FloatingParameter value="0"/>
-              </bpsim:Quantity>
-            </bpsim:ResourceParameters>
-            <bpsim:CostParameters>
-              <bpsim:UnitCost>
-                <bpsim:FloatingParameter value="0"/>
-              </bpsim:UnitCost>
-            </bpsim:CostParameters>
-          </bpsim:ElementParameters>
-          <bpsim:ElementParameters elementRef="_293C116F-8607-4D9C-AFFE-9901DF5B9D33">
-            <bpsim:TimeParameters>
-              <bpsim:ProcessingTime>
-                <bpsim:NormalDistribution mean="0" standardDeviation="0"/>
-              </bpsim:ProcessingTime>
-            </bpsim:TimeParameters>
-            <bpsim:ResourceParameters>
-              <bpsim:Availability>
-                <bpsim:FloatingParameter value="0"/>
-              </bpsim:Availability>
-              <bpsim:Quantity>
-                <bpsim:FloatingParameter value="0"/>
-              </bpsim:Quantity>
-            </bpsim:ResourceParameters>
-            <bpsim:CostParameters>
-              <bpsim:UnitCost>
-                <bpsim:FloatingParameter value="0"/>
-              </bpsim:UnitCost>
-            </bpsim:CostParameters>
-          </bpsim:ElementParameters>
-          <bpsim:ElementParameters elementRef="_C4FB5974-F764-42C7-95AA-DE6F6F14D167">
-            <bpsim:TimeParameters>
-              <bpsim:ProcessingTime>
-                <bpsim:NormalDistribution mean="0" standardDeviation="0"/>
-              </bpsim:ProcessingTime>
-            </bpsim:TimeParameters>
-            <bpsim:ResourceParameters>
-              <bpsim:Availability>
-                <bpsim:FloatingParameter value="0"/>
-              </bpsim:Availability>
-              <bpsim:Quantity>
-                <bpsim:FloatingParameter value="0"/>
-              </bpsim:Quantity>
-            </bpsim:ResourceParameters>
-            <bpsim:CostParameters>
-              <bpsim:UnitCost>
-                <bpsim:FloatingParameter value="0"/>
-              </bpsim:UnitCost>
-            </bpsim:CostParameters>
-          </bpsim:ElementParameters>
-        </bpsim:Scenario>
-      </bpsim:BPSimData>
-    </bpmn2:extensionElements>
-    <bpmn2:source>_an5RsHt5EDmPCqW-qXr3vw</bpmn2:source>
-    <bpmn2:target>_an5RsHt5EDmPCqW-qXr3vw</bpmn2:target>
-  </bpmn2:relationship>
-</bpmn2:definitions>
\ No newline at end of file
diff --git a/sample-kogito-app/src/main/resources/MortgageApproval.dmn b/sample-kogito-app/src/main/resources/MortgageApproval.dmn
deleted file mode 100644
index 3ca0ed3..0000000
--- a/sample-kogito-app/src/main/resources/MortgageApproval.dmn
+++ /dev/null
@@ -1,81 +0,0 @@
-<dmn:definitions xmlns:dmn="http://www.omg.org/spec/DMN/20180521/MODEL/" xmlns="https://kiegroup.org/dmn/_28B07541-BCAA-4D8D-B754-05ED035496BA" xmlns:feel="http://www.omg.org/spec/DMN/20180521/FEEL/" xmlns:kie="http://www.drools.org/kie/dmn/1.2" xmlns:dmndi="http://www.omg.org/spec/DMN/20180521/DMNDI/" xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/" xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/" id="_905E3E6C-C346-4DA3-AA28-9ED076578E03" name="MortgageApproval" typeLanguage="htt [...]
-  <dmn:extensionElements/>
-  <dmn:inputData id="_23558138-A90D-4685-9B08-1ABD1DDD0A2A" name="amount">
-    <dmn:extensionElements/>
-    <dmn:variable id="_F42026F3-B207-41FF-8177-9954910B16A7" name="amount"/>
-  </dmn:inputData>
-  <dmn:decision id="_B0928930-EC40-4726-B8B1-4D9D5AEF1C82" name="mortgageApproved">
-    <dmn:extensionElements/>
-    <dmn:variable id="_C54E9DA3-878C-4713-B790-606CB9C01721" name="mortgageApproved" typeRef="boolean"/>
-    <dmn:informationRequirement id="_AF4E07ED-DE25-4E44-BB37-3FDF52056005">
-      <dmn:requiredInput href="#_23558138-A90D-4685-9B08-1ABD1DDD0A2A"/>
-    </dmn:informationRequirement>
-    <dmn:decisionTable id="_1D72E97A-473F-460A-A2F1-6602AF93FE3B" hitPolicy="FIRST" preferredOrientation="Rule-as-Row">
-      <dmn:input id="_3E5D7B3E-6C23-46B0-B385-2362EEB99ADB">
-        <dmn:inputExpression id="_D4F176DB-19F7-4B89-A1C6-57C126B9C4C3" typeRef="number">
-          <dmn:text>amount</dmn:text>
-        </dmn:inputExpression>
-      </dmn:input>
-      <dmn:output id="_2F517F3D-D449-4AAF-B150-B8DF82E3A1C3"/>
-      <dmn:annotation name="Description"/>
-      <dmn:rule id="_8C26AAB7-6CCE-4BD3-9F40-A0B7F0CC3848">
-        <dmn:inputEntry id="_7E7C0CAF-CDCA-4313-BDA9-EE13BCA8CB84">
-          <dmn:text>&lt;5000</dmn:text>
-        </dmn:inputEntry>
-        <dmn:outputEntry id="_67260421-5E3A-4131-BB54-8ACA4B36B2C3">
-          <dmn:text>true</dmn:text>
-        </dmn:outputEntry>
-        <dmn:annotationEntry>
-          <dmn:text>Less than 5000 is OK</dmn:text>
-        </dmn:annotationEntry>
-      </dmn:rule>
-      <dmn:rule id="_55C03D40-47FF-43D9-A15E-B08E5C53AE0E">
-        <dmn:inputEntry id="_07A49F5D-8932-441D-8AF7-59C93E7E5752">
-          <dmn:text>&gt;=5000</dmn:text>
-        </dmn:inputEntry>
-        <dmn:outputEntry id="_ABECCAE3-5CEA-45CC-B111-E504B0947318">
-          <dmn:text>false</dmn:text>
-        </dmn:outputEntry>
-        <dmn:annotationEntry>
-          <dmn:text>5000 and more is too much</dmn:text>
-        </dmn:annotationEntry>
-      </dmn:rule>
-    </dmn:decisionTable>
-  </dmn:decision>
-  <dmndi:DMNDI>
-    <dmndi:DMNDiagram id="_18B53C8E-F1CA-40CC-B2FF-4310382BDF60" name="DRG">
-      <di:extension>
-        <kie:ComponentsWidthsExtension>
-          <kie:ComponentWidths dmnElementRef="_1D72E97A-473F-460A-A2F1-6602AF93FE3B">
-            <kie:width>50</kie:width>
-            <kie:width>100</kie:width>
-            <kie:width>190</kie:width>
-            <kie:width>355</kie:width>
-          </kie:ComponentWidths>
-        </kie:ComponentsWidthsExtension>
-      </di:extension>
-      <dmndi:DMNShape id="dmnshape-drg-_23558138-A90D-4685-9B08-1ABD1DDD0A2A" dmnElementRef="_23558138-A90D-4685-9B08-1ABD1DDD0A2A" isCollapsed="false">
-        <dmndi:DMNStyle>
-          <dmndi:FillColor red="255" green="255" blue="255"/>
-          <dmndi:StrokeColor red="0" green="0" blue="0"/>
-          <dmndi:FontColor red="0" green="0" blue="0"/>
-        </dmndi:DMNStyle>
-        <dc:Bounds x="281" y="266" width="100" height="50"/>
-        <dmndi:DMNLabel/>
-      </dmndi:DMNShape>
-      <dmndi:DMNShape id="dmnshape-drg-_B0928930-EC40-4726-B8B1-4D9D5AEF1C82" dmnElementRef="_B0928930-EC40-4726-B8B1-4D9D5AEF1C82" isCollapsed="false">
-        <dmndi:DMNStyle>
-          <dmndi:FillColor red="255" green="255" blue="255"/>
-          <dmndi:StrokeColor red="0" green="0" blue="0"/>
-          <dmndi:FontColor red="0" green="0" blue="0"/>
-        </dmndi:DMNStyle>
-        <dc:Bounds x="255" y="108" width="154" height="72"/>
-        <dmndi:DMNLabel/>
-      </dmndi:DMNShape>
-      <dmndi:DMNEdge id="dmnedge-drg-_AF4E07ED-DE25-4E44-BB37-3FDF52056005" dmnElementRef="_AF4E07ED-DE25-4E44-BB37-3FDF52056005">
-        <di:waypoint x="331" y="291"/>
-        <di:waypoint x="332" y="180"/>
-      </dmndi:DMNEdge>
-    </dmndi:DMNDiagram>
-  </dmndi:DMNDI>
-</dmn:definitions>
\ No newline at end of file
diff --git a/sample-kogito-app/src/main/resources/application.properties b/sample-kogito-app/src/main/resources/application.properties
deleted file mode 100644
index a733bf3..0000000
--- a/sample-kogito-app/src/main/resources/application.properties
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Copyright 2020 Red Hat, Inc. and/or its affiliates.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-#https://quarkus.io/guides/openapi-swaggerui
-quarkus.swagger-ui.always-include=true
-
-kogito.service.url=http://localhost:8080
-
-# events configuration
-
-kafka.bootstrap.servers=localhost:9092
-
-mp.messaging.outgoing.kogito-processinstances-events.connector=smallrye-kafka
-mp.messaging.outgoing.kogito-processinstances-events.topic=kogito-processinstances-events
-mp.messaging.outgoing.kogito-processinstances-events.value.serializer=org.apache.kafka.common.serialization.StringSerializer
-
-mp.messaging.outgoing.kogito-usertaskinstances-events.connector=smallrye-kafka
-mp.messaging.outgoing.kogito-usertaskinstances-events.topic=kogito-usertaskinstances-events
-mp.messaging.outgoing.kogito-usertaskinstances-events.value.serializer=org.apache.kafka.common.serialization.StringSerializer
-
-mp.messaging.outgoing.kogito-variables-events.connector=smallrye-kafka
-mp.messaging.outgoing.kogito-variables-events.topic=kogito-variables-events
-mp.messaging.outgoing.kogito-variables-events.value.serializer=org.apache.kafka.common.serialization.StringSerializer
\ No newline at end of file
diff --git a/sample-kogito-app/threshold.properties b/sample-kogito-app/threshold.properties
deleted file mode 100644
index ea23577..0000000
--- a/sample-kogito-app/threshold.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-linux.jvm.time.to.first.ok.request.threshold.ms=3000
-linux.jvm.RSS.threshold.kB=380000
-linux.native.time.to.first.ok.request.threshold.ms=35
-linux.native.RSS.threshold.kB=90000
-windows.jvm.time.to.first.ok.request.threshold.ms=2000
-windows.jvm.RSS.threshold.kB=4000
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusSmallTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusSmallTest.java
deleted file mode 100644
index e012a7e..0000000
--- a/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusSmallTest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.kie.kogito.benchmarks;
-
-import java.io.IOException;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.TestInfo;
-import org.kie.kogito.benchmarks.framework.App;
-
-public class QuarkusSmallTest extends AbstractTemplateTest {
-
-    private static final App APP_TO_TEST = App.SMARTHOUSE_02_QUARKUS_JVM;
-
-    public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
-        startStop(testInfo, APP_TO_TEST);
-    }
-
-    public void loadTest(TestInfo testInfo) {
-        // TODO
-    }
-}
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusTest.java
deleted file mode 100644
index 0a598e3..0000000
--- a/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusTest.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.kie.kogito.benchmarks;
-
-import org.kie.kogito.benchmarks.framework.MvnCmds;
-
-public abstract class QuarkusTest extends AbstractTemplateTest {
-
-    protected static final MvnCmds MavenCommands = MvnCmds.QUARKUS_JVM;
-
-}
diff --git a/tests/src/test/resources/log4j2.xml b/tests/src/test/resources/log4j2.xml
deleted file mode 100644
index 1faad0e..0000000
--- a/tests/src/test/resources/log4j2.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT">
-            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{%-5p}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=green, DEBUG=green bold, TRACE=blue} [%style{%C{1.}}{cyan}] (%style{%M}{magenta}) %m%n"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 26/38: BAQE-2006 - Include loadTest metrics in the CSV report

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit c72634ebc991accb9f3ee3fb39a5f61bcb57c5bf
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Thu Aug 5 20:53:22 2021 +0200

    BAQE-2006 - Include loadTest metrics in the CSV report
---
 .../kogito/benchmarks/framework/LogBuilder.java    | 51 ++++++++++++++++++++++
 .../kogito/benchmarks/AbstractTemplateTest.java    | 20 ++++++---
 2 files changed, 64 insertions(+), 7 deletions(-)

diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java
index 90ddfd7..da2888c 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java
@@ -46,7 +46,13 @@ public class LogBuilder {
     private static final String rssKbHeader = "RSSKb";
     private long rssKb = -1L;
     private static final String rssKbFinalHeader = "RSSKbFinal";
+    private static final String avgResponseTimeHeader = "avgResponseTimeMs";
+    private static final String firstResponseTimeHeader = "firstResponseTimeMs";
+    private static final String totalDurationHeader = "totalDurationS";
     private long rssKbFinal = -1L;
+    private double avgResponseTime = -1.0;
+    private double firstResponseTime = -1.0;
+    private double totalDuration = -1.0;
     private static final String openedFilesHeader = "FDs";
     private long openedFiles = -1L;
     private static final String appHeader = "App";
@@ -110,6 +116,30 @@ public class LogBuilder {
         return this;
     }
 
+    public LogBuilder avgResponseTime(double avgResponseTime) {
+        if (avgResponseTime <= 0) {
+            throw new IllegalArgumentException("avgResponseTime must be a positive double, was: " + rssKb);
+        }
+        this.avgResponseTime = avgResponseTime;
+        return this;
+    }
+
+    public LogBuilder firstResponseTime(double firstResponseTime) {
+        if (firstResponseTime <= 0) {
+            throw new IllegalArgumentException("firstResponseTime must be a positive double, was: " + rssKb);
+        }
+        this.firstResponseTime = firstResponseTime;
+        return this;
+    }
+
+    public LogBuilder totalDuration(double totalDuration) {
+        if (totalDuration <= 0) {
+            throw new IllegalArgumentException("totalDuration must be a positive double, was: " + rssKb);
+        }
+        this.totalDuration = totalDuration;
+        return this;
+    }
+
     public LogBuilder openedFiles(long openedFiles) {
         if (openedFiles <= 0) {
             throw new IllegalArgumentException("openedFiles must be a positive long, was: " + openedFiles);
@@ -197,6 +227,27 @@ public class LogBuilder {
             l.append(',');
             sections++;
         }
+        if (avgResponseTime != -1L) {
+            h.append(avgResponseTimeHeader);
+            h.append(',');
+            l.append(avgResponseTime);
+            l.append(',');
+            sections++;
+        }
+        if (firstResponseTime != -1L) {
+            h.append(firstResponseTimeHeader);
+            h.append(',');
+            l.append(firstResponseTime);
+            l.append(',');
+            sections++;
+        }
+        if (totalDuration != -1L) {
+            h.append(totalDurationHeader);
+            h.append(',');
+            l.append(totalDuration);
+            l.append(',');
+            sections++;
+        }
         if (openedFiles != -1L) {
             h.append(openedFilesHeader);
             h.append(',');
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
index 0f99132..d1ecaf7 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
@@ -22,7 +22,7 @@ import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import java.util.stream.Collectors;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpPost;
@@ -71,6 +71,9 @@ public abstract class AbstractTemplateTest {
     public static final int CPU_AFFINITY = Integer.parseInt(System.getProperty("cpuAffinity"));
     public static final String LOCALHOST = "http://localhost:8080";
 
+    private static final double NANOS_IN_MILLISECOND = TimeUnit.MILLISECONDS.toNanos(1);
+    private static final double MILLIS_IN_SECOND = TimeUnit.SECONDS.toMillis(1);
+
     public void startStop(TestInfo testInfo, App app) throws IOException, InterruptedException {
         logger.info("Running startStop test. Testing app: " + app.toString() + ", mode: " + app.mavenCommands.toString());
 
@@ -312,12 +315,9 @@ public abstract class AbstractTemplateTest {
                 totalDuration = endTime - startTime;
             }
 
-            // Intentionally left here until a proper reporting to a file is present
-            System.out.println("First response time: " + firstResponseTime);
-            System.out.println("First response times: " + values.stream().limit(100).collect(Collectors.toList()));
-            System.out.println("Last response times: " + values.stream().skip(values.size() - 100).collect(Collectors.toList()));
-            System.out.println("Average response time: " + values.stream().mapToLong(Long::longValue).average());
-            System.out.println("Total duration: " + totalDuration);
+            double avgResponseTimeMs = values.stream().mapToLong(Long::longValue).average().orElse(-1) / NANOS_IN_MILLISECOND;
+            double firstResponseTimeMs = firstResponseTime / NANOS_IN_MILLISECOND;
+            double totalDurationS = totalDuration / MILLIS_IN_SECOND;
 
             long rssKbFinal = getRSSkB(pA.pid());
             long openedFiles = getOpenedFDs(pA.pid()); // TODO also do before the "test" itself? Maybe not needed as before is covered in a startStop test
@@ -347,6 +347,9 @@ public abstract class AbstractTemplateTest {
                     .stoppedInMs(stoppedInMs)
                     .rssKb(rssKb)
                     .rssKbFinal(rssKbFinal)
+                    .avgResponseTime(avgResponseTimeMs)
+                    .firstResponseTime(firstResponseTimeMs)
+                    .totalDuration(totalDurationS)
                     .openedFiles(openedFiles)
                     .build();
 
@@ -356,6 +359,9 @@ public abstract class AbstractTemplateTest {
                     .app(app)
                     .mode(mvnCmds)
                     .rssKbFinal(rssKbFinal)
+                    .avgResponseTime(avgResponseTimeMs)
+                    .firstResponseTime(firstResponseTimeMs)
+                    .totalDuration(totalDurationS)
                     .build();
             Logs.logMeasurementsSummary(summaryLog, measurementsSummaryLog);
             appendln(whatIDidReport, "Measurements:");


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 18/38: BAQE-1918 - Add GitHub Actions PR check

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit ff5e9817364828e006781bd94c8fb6a79993dc20
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Tue Jun 22 16:22:20 2021 +0200

    BAQE-1918 - Add GitHub Actions PR check
---
 .github/workflows/pull_request.yml | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml
new file mode 100644
index 0000000..2be199e
--- /dev/null
+++ b/.github/workflows/pull_request.yml
@@ -0,0 +1,32 @@
+name: PR Check
+
+on:
+  push:
+    branches:
+      - main
+
+  pull_request:
+    branches:
+      - main
+
+jobs:
+  pr-check:
+    name: Java 11 Compilation
+    runs-on: ubuntu-latest
+    steps:
+      - name: Check  out Git repository
+        uses: actions/checkout@v2
+      - name: Set up JDK
+        uses: actions/setup-java@v2
+        with:
+          java-version: 11
+          distribution: adopt
+      # See https://docs.github.com/en/actions/guides/building-and-testing-java-with-maven#caching-dependencies
+      - name: Cache Maven packages
+        uses: actions/cache@v2
+        with:
+          path: ~/.m2
+          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
+          restore-keys: ${{ runner.os }}-m2
+      - name: Maven Build using Java
+        run: mvn -B --fail-at-end clean install -DskipTests -Dvalidate-formatting
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 17/38: BAQE-1917 - Add license headers

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit f26689f79c14b8b993c2896d9edb8f1befadfb1b
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Mon Jun 21 19:21:00 2021 +0200

    BAQE-1917 - Add license headers
---
 .../org/kie/kogito/benchmarks/framework/App.java   | 15 +++++++++++++
 .../kogito/benchmarks/framework/BuildResult.java   | 15 +++++++++++++
 .../kie/kogito/benchmarks/framework/Commands.java  | 15 +++++++++++++
 .../benchmarks/framework/HTTPRequestInfo.java      | 25 +++++++++++++++++-----
 .../kogito/benchmarks/framework/LogBuilder.java    | 15 +++++++++++++
 .../org/kie/kogito/benchmarks/framework/Logs.java  | 15 +++++++++++++
 .../kie/kogito/benchmarks/framework/MvnCmds.java   | 15 +++++++++++++
 .../kie/kogito/benchmarks/framework/RunInfo.java   | 15 +++++++++++++
 .../kogito/benchmarks/framework/URLContent.java    | 15 +++++++++++++
 .../kogito/benchmarks/framework/WebpageTester.java | 15 +++++++++++++
 .../benchmarks/framework/WhitelistLogLines.java    | 15 +++++++++++++
 .../kogito/benchmarks/AbstractTemplateTest.java    | 16 +++++++++++++-
 .../kogito/benchmarks/SmartHouse02QuarkusTest.java | 15 +++++++++++++
 .../benchmarks/SmartHouse02SpringBootTest.java     | 15 +++++++++++++
 .../kogito/benchmarks/SmartHouse03QuarkusTest.java | 15 +++++++++++++
 .../benchmarks/SmartHouse03SpringBootTest.java     | 15 +++++++++++++
 16 files changed, 245 insertions(+), 6 deletions(-)

diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
index 70c83c7..f9996b9 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.kie.kogito.benchmarks.framework;
 
 import java.io.File;
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/BuildResult.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/BuildResult.java
index 19ab591..43fe985 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/BuildResult.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/BuildResult.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.kie.kogito.benchmarks.framework;
 
 import java.io.File;
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
index 333f039..45b30bf 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.kie.kogito.benchmarks.framework;
 
 import java.io.BufferedReader;
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
index 40bcf6c..c5a236c 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.kie.kogito.benchmarks.framework;
 
 import java.util.HashMap;
@@ -6,11 +21,11 @@ import java.util.Map;
 /**
  * A class representing HTTP Request details such as:
  * <ul>
- *     <li> URI</li>
- *     <li>Request body</li>
- *     <li>HTTP method</li>
- *     <li>HTTP headers</li>
- *     <li>Expected status code of the response</li>
+ * <li>URI</li>
+ * <li>Request body</li>
+ * <li>HTTP method</li>
+ * <li>HTTP headers</li>
+ * <li>Expected status code of the response</li>
  * </ul>
  */
 public class HTTPRequestInfo {
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java
index 2caeb80..90ddfd7 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.kie.kogito.benchmarks.framework;
 
 import java.util.Objects;
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
index 22fd7f0..ed894b9 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.kie.kogito.benchmarks.framework;
 
 import java.io.File;
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
index b664ae8..c24143c 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.kie.kogito.benchmarks.framework;
 
 import java.util.stream.Stream;
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/RunInfo.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/RunInfo.java
index 01f6d0a..f80deb3 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/RunInfo.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/RunInfo.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.kie.kogito.benchmarks.framework;
 
 import java.io.File;
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java
index d81bea4..5de9107 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.kie.kogito.benchmarks.framework;
 
 public enum URLContent {
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java
index 2a1eedf..b192a27 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.kie.kogito.benchmarks.framework;
 
 import java.io.IOException;
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java
index d2daa80..9fbe407 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.kie.kogito.benchmarks.framework;
 
 import java.util.regex.Pattern;
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
index 0d47e70..329dad8 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
@@ -1,10 +1,24 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.kie.kogito.benchmarks;
 
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02QuarkusTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02QuarkusTest.java
index f537b47..e4871af 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02QuarkusTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02QuarkusTest.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.kie.kogito.benchmarks;
 
 import java.io.IOException;
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02SpringBootTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02SpringBootTest.java
index c97db35..250901b 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02SpringBootTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02SpringBootTest.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.kie.kogito.benchmarks;
 
 import java.io.IOException;
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03QuarkusTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03QuarkusTest.java
index beee3bc..ff228c3 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03QuarkusTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03QuarkusTest.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.kie.kogito.benchmarks;
 
 import java.io.IOException;
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03SpringBootTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03SpringBootTest.java
index f5c9e1e..3b8d939 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03SpringBootTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03SpringBootTest.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.kie.kogito.benchmarks;
 
 import java.io.IOException;


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 13/38: Remove log4j references and don't skip benchmarks by default

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 4cc660269a162d9f9c81a20d3480607db6df1f21
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Tue Jun 1 23:49:03 2021 +0200

    Remove log4j references and don't skip benchmarks by default
---
 kogito-benchmarks-framework/pom.xml | 13 +------------
 kogito-benchmarks-tests/pom.xml     |  2 --
 2 files changed, 1 insertion(+), 14 deletions(-)

diff --git a/kogito-benchmarks-framework/pom.xml b/kogito-benchmarks-framework/pom.xml
index dd5404f..d9e01a1 100644
--- a/kogito-benchmarks-framework/pom.xml
+++ b/kogito-benchmarks-framework/pom.xml
@@ -16,7 +16,7 @@
   <description>Framework for starting, measuring and stopping Kogito apps</description>
 
   <properties>
-    <log4j.version>2.13.2</log4j.version>
+
   </properties>
 
   <dependencyManagement>
@@ -58,17 +58,6 @@
         <version>${version.org.junit.platform}</version>
         <scope>compile</scope>
       </dependency>
-
-<!--      <dependency>-->
-<!--        <groupId>org.apache.logging.log4j</groupId>-->
-<!--        <artifactId>log4j-api</artifactId>-->
-<!--        <version>${log4j.version}</version>-->
-<!--      </dependency>-->
-<!--      <dependency>-->
-<!--        <groupId>org.apache.logging.log4j</groupId>-->
-<!--        <artifactId>log4j-core</artifactId>-->
-<!--        <version>${log4j.version}</version>-->
-<!--      </dependency>-->
     </dependencies>
   </dependencyManagement>
 
diff --git a/kogito-benchmarks-tests/pom.xml b/kogito-benchmarks-tests/pom.xml
index abd6d17..0b19972 100644
--- a/kogito-benchmarks-tests/pom.xml
+++ b/kogito-benchmarks-tests/pom.xml
@@ -16,8 +16,6 @@
   <description>Benchmarks of sample Kogito apps themselves</description>
 
   <properties>
-    <!-- Skip benchmarks by default -->
-    <skipTests>true</skipTests>
     <appsDir>${project.parent.basedir}/</appsDir>
 
     <version.org.apache.httpcomponents>4.5.13</version.org.apache.httpcomponents>


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 14/38: Remove commented code and a small refactor

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit cf668a097769a547fc201b81135262fc2c5b44d2
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Thu Jun 3 15:55:10 2021 +0200

    Remove commented code and a small refactor
---
 .../kie/kogito/benchmarks/framework/Commands.java  |  4 +--
 .../benchmarks/framework/HTTPRequestInfo.java      | 39 ++++++++--------------
 .../org/kie/kogito/benchmarks/framework/Logs.java  |  2 --
 .../benchmarks/framework/WhitelistLogLines.java    |  2 --
 .../kogito/benchmarks/AbstractTemplateTest.java    |  7 ++--
 5 files changed, 18 insertions(+), 36 deletions(-)

diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
index 37fe5b7..e57f32c 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
@@ -170,7 +170,6 @@ public class Commands {
         ExecutorService buildService = Executors.newFixedThreadPool(1);
 
         List<String> baseBuildCmd = new ArrayList<>(Arrays.asList(app.mavenCommands.mvnCmds[0]));
-        //baseBuildCmd.add("-Dquarkus.version=" + getQuarkusVersion());
         List<String> cmd = getBuildCommand(baseBuildCmd.toArray(new String[0]));
 
         buildService.submit(new Commands.ProcessRunner(appDir, buildLogA, cmd, 20)); // TODO exit code handling
@@ -230,9 +229,8 @@ public class Commands {
                         .sorted(Comparator.reverseOrder())
                         .map(Path::toFile)
                         .forEach(File::delete);
-                //FileUtils.forceDelete(new File(s));
             } catch (IOException e) {
-                //Silence is golden
+                logger.warn("Unable to delete directories or files", e);
             }
         }
     }
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
index 8c83b22..40bcf6c 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
@@ -4,7 +4,14 @@ import java.util.HashMap;
 import java.util.Map;
 
 /**
- * A class representing
+ * A class representing HTTP Request details such as:
+ * <ul>
+ *     <li> URI</li>
+ *     <li>Request body</li>
+ *     <li>HTTP method</li>
+ *     <li>HTTP headers</li>
+ *     <li>Expected status code of the response</li>
+ * </ul>
  */
 public class HTTPRequestInfo {
 
@@ -14,26 +21,6 @@ public class HTTPRequestInfo {
     private Map<String, String> headers = new HashMap<>();
     private int expectedResponseStatusCode;
 
-    private void setURI(String uri) {
-        this.uri = uri;
-    }
-
-    private void setBody(String body) {
-        this.body = body;
-    }
-
-    private void setMethod(String method) {
-        this.method = method;
-    }
-
-    private void addHeader(String name, String value) {
-        this.headers.put(name, value);
-    }
-
-    private void setExpectedResponseStatusCode(int expectedResponseStatusCode) {
-        this.expectedResponseStatusCode = expectedResponseStatusCode;
-    }
-
     public String getURI() {
         return uri;
     }
@@ -63,27 +50,27 @@ public class HTTPRequestInfo {
         private final HTTPRequestInfo instance = new HTTPRequestInfo();
 
         public Builder URI(String uri) {
-            instance.setURI(uri);
+            instance.uri = uri;
             return this;
         }
 
         public Builder body(String body) {
-            instance.setBody(body);
+            instance.body = body;
             return this;
         }
 
         public Builder method(String method) {
-            instance.setMethod(method);
+            instance.method = method;
             return this;
         }
 
         public Builder header(String name, String value) {
-            instance.addHeader(name, value);
+            instance.headers.put(name, value);
             return this;
         }
 
         public Builder expectedResponseStatusCode(int statusCode) {
-            instance.setExpectedResponseStatusCode(statusCode);
+            instance.expectedResponseStatusCode = statusCode;
             return this;
         }
 
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
index 4ec318e..a78c143 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
@@ -122,8 +122,6 @@ public class Logs {
             propPrefix += ".native";
         } else if (cmd == MvnCmds.DEV) {
             propPrefix += ".dev";
-            //        } else if (cmd == MvnCmds.GENERATOR) {
-            //            propPrefix += ".generated.dev";
         } else {
             throw new IllegalArgumentException("Unexpected mode. Check MvnCmds.java.");
         }
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java
index d70315c..d2daa80 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java
@@ -4,8 +4,6 @@ import java.util.regex.Pattern;
 
 /**
  * Whitelists errors in log files.
- *
- * @author Michal Karm Babacek <ka...@redhat.com>
  */
 public enum WhitelistLogLines {
     EVERYTHING(new Pattern[] { Pattern.compile(".*") }),
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
index 80edb77..e5b299d 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
@@ -57,7 +57,7 @@ public abstract class AbstractTemplateTest {
     public static final String LOCALHOST = "http://localhost:8080";
 
     public void startStop(TestInfo testInfo, App app) throws IOException, InterruptedException {
-        logger.info("Testing app startStop: " + app.toString() + ", mode: " + app.mavenCommands.toString());
+        logger.info("Running startStop test. Testing app: " + app.toString() + ", mode: " + app.mavenCommands.toString());
 
         Process pA = null;
         File buildLogA = null;
@@ -186,7 +186,7 @@ public abstract class AbstractTemplateTest {
     }
 
     public void loadTest(TestInfo testInfo, App app, HTTPRequestInfo requestInfo) throws IOException, InterruptedException {
-        logger.info("Testing app loadTest: " + app.toString() + ", mode: " + app.mavenCommands.toString());
+        logger.info("Running loadTest test. Testing app: " + app.toString() + ", mode: " + app.mavenCommands.toString());
 
         Process pA = null;
         File buildLogA = null;
@@ -345,7 +345,8 @@ public abstract class AbstractTemplateTest {
             appendln(whatIDidReport, "Measurements:");
             appendln(whatIDidReport, log.headerMarkdown + "\n" + log.lineMarkdown);
 
-            //checkThreshold(app, mvnCmds, rssKbAvgWithoutMinMax, timeToFirstOKRequestAvgWithoutMinMax, SKIP);
+            // TODO check other load test-related metrics here, e.g. rssKbFinal
+            checkThreshold(app, mvnCmds, rssKb, runInfo.getTimeToFirstOKRequest(), SKIP);
         } finally {
             // Make sure processes are down even if there was an exception / failure
             if (pA != null) {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 30/38: Merge pull request #11 from jiripetrlik/BAPL-2028

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 2b11502e08b2c0f8b95802cd487b004f5e381280
Merge: bc44f38 165e431
Author: Jiri Petrlik <ji...@gmail.com>
AuthorDate: Wed Jan 19 14:18:01 2022 +0100

    Merge pull request #11 from jiripetrlik/BAPL-2028
    
    BAPL-2028 - Performance regression testing of PMML Kogito

 .../org/kie/kogito/benchmarks/framework/App.java   | 12 +++++-
 .../kie/kogito/benchmarks/framework/Commands.java  |  2 +-
 .../benchmarks/framework/HTTPRequestInfo.java      | 32 ++++++++++++++-
 .../kie/kogito/benchmarks/framework/MvnCmds.java   |  2 +-
 .../kogito/benchmarks/framework/URLContent.java    |  4 +-
 .../threshold.properties                           |  6 +++
 .../threshold.properties                           |  6 +++
 .../threshold.properties                           |  6 +++
 .../threshold.properties                           |  6 +++
 .../threshold.properties                           |  6 +++
 .../threshold.properties                           |  6 +++
 .../threshold.properties                           |  6 +++
 .../threshold.properties                           |  6 +++
 .../threshold.properties                           |  6 +++
 .../threshold.properties                           |  6 +++
 .../benchmarks/PMMLClusteringQuarkusTest.java      | 47 ++++++++++++++++++++++
 .../benchmarks/PMMLClusteringSpringBootTest.java   | 47 ++++++++++++++++++++++
 .../kogito/benchmarks/PMMLForestQuarkusTest.java   | 47 ++++++++++++++++++++++
 .../benchmarks/PMMLForestSpringBootTest.java       | 47 ++++++++++++++++++++++
 .../kie/kogito/benchmarks/PMMLMineQuarkusTest.java | 47 ++++++++++++++++++++++
 .../kogito/benchmarks/PMMLMineSpringBootTest.java  | 47 ++++++++++++++++++++++
 .../benchmarks/PMMLRegressionQuarkusTest.java      | 47 ++++++++++++++++++++++
 .../benchmarks/PMMLRegressionSpringBootTest.java   | 47 ++++++++++++++++++++++
 .../benchmarks/PMMLScorecardQuarkusTest.java       | 47 ++++++++++++++++++++++
 .../benchmarks/PMMLScorecardSpringBootTest.java    | 47 ++++++++++++++++++++++
 25 files changed, 577 insertions(+), 5 deletions(-)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 36/38: adding NOTICE

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 622ee2d9404c427769a9aba96aa1184ab741b400
Author: Kennedy Bowers <ke...@ibm.com>
AuthorDate: Wed Sep 27 18:02:02 2023 +0200

    adding NOTICE
---
 NOTICE | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..cd5d12b
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,9 @@
+Apache KIE
+Copyright 2023 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+The Initial Developer of some parts of the framework, which are copied from, derived from, or
+inspired by KIE (Knowledge Is Everthing) group, is Red Hat, Inc (https://www.redhat.com/).
+Copyright Red Hat, Inc. and/or its affiliates.. All Rights Reserved.
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 20/38: Skip cleaning of non-existing directories and files

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 85ac16d1abdc982c1bf12c1205ece1882b665dd5
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Fri Jun 11 14:00:48 2021 +0200

    Skip cleaning of non-existing directories and files
---
 .../src/main/java/org/kie/kogito/benchmarks/framework/Commands.java    | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
index 45b30bf..b2966d5 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
@@ -25,6 +25,7 @@ import java.net.Socket;
 import java.net.UnknownHostException;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
+import java.nio.file.NoSuchFileException;
 import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -234,6 +235,8 @@ public class Commands {
                         .sorted(Comparator.reverseOrder())
                         .map(Path::toFile)
                         .forEach(File::delete);
+            } catch (NoSuchFileException e) {
+                logger.info("Cleaning of directory {} skipped because it does not exist.", e.getFile());
             } catch (IOException e) {
                 throw new RuntimeException("Unable to delete directories or files", e);
             }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 34/38: Add a proper README

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit fb5661809de80373991bb72c08b51f51f3a33a6c
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Mon Jun 12 18:05:32 2023 +0200

    Add a proper README
---
 README.md | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 20fb0e9..17ea86f 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,9 @@
-# kogito-benchmarks-poc
\ No newline at end of file
+# Kogito Benchmarks [![PR Check](https://github.com/kiegroup/kogito-benchmarks/actions/workflows/pull_request.yml/badge.svg "helloooooooooo")](https://github.com/kiegroup/kogito-benchmarks/actions/workflows/pull_request.yml)
+
+Bare-metal ("2nd-level") benchmarks for Kogito Decision (DMN), Prediction (PMML) and Process (BPMN) Services covering different scenarios (load testing, memory usage, start/stop duration…) on Quarkus and Spring Boot.
+
+Repository consists of 2 modules:
+* kogito-benchmarks-framework - framework itself
+* kogito-benchmarks-tests - tests which use the first module as a dependency
+
+The framework is based on the [quarkus-qe/quarkus-startstop](https://github.com/quarkus-qe/quarkus-startstop) framework but adds support for Spring Boot.


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 02/38: Initial hierarchy, build and start methods, 3 REST clients, appended log measurements

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 34569dc753972c66647fe975d95b219daa886d8f
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Fri Apr 30 13:34:19 2021 +0200

    Initial hierarchy, build and start methods, 3 REST clients, appended log measurements
---
 .gitignore                                         |  23 +
 framework/pom.xml                                  | 107 ++++
 .../org/kie/kogito/benchmarks/framework/App.java   |  61 +++
 .../kogito/benchmarks/framework/BuildResult.java   |  28 +
 .../kie/kogito/benchmarks/framework/Commands.java  | 604 +++++++++++++++++++++
 .../benchmarks/framework/HTTPRequestInfo.java      |  93 ++++
 .../kogito/benchmarks/framework/LogBuilder.java    | 201 +++++++
 .../org/kie/kogito/benchmarks/framework/Logs.java  | 336 ++++++++++++
 .../kie/kogito/benchmarks/framework/MvnCmds.java   |  53 ++
 .../kie/kogito/benchmarks/framework/RunInfo.java   |  28 +
 .../kogito/benchmarks/framework/URLContent.java    |  33 ++
 .../kogito/benchmarks/framework/WebpageTester.java |  78 +++
 .../benchmarks/framework/WhitelistLogLines.java    | 112 ++++
 pom.xml                                            |  30 +
 sample-kogito-app/pom.xml                          | 115 ++++
 .../src/main/java/mypackage/GreetingEndpoint.java  |  47 ++
 .../src/main/resources/LoanApplication.bpmn        | 259 +++++++++
 .../src/main/resources/MortgageApproval.dmn        |  81 +++
 .../src/main/resources/application.properties      |  36 ++
 sample-kogito-app/threshold.properties             |   6 +
 tests/pom.xml                                      |  41 ++
 .../kogito/benchmarks/AbstractTemplateTest.java    | 367 +++++++++++++
 .../kie/kogito/benchmarks/QuarkusLargeTest.java    |  69 +++
 .../kie/kogito/benchmarks/QuarkusSmallTest.java    |  22 +
 .../org/kie/kogito/benchmarks/QuarkusTest.java     |   9 +
 .../org/kie/kogito/benchmarks/StartStopTest.java   | 214 ++++++++
 tests/src/test/resources/log4j2.xml                |  13 +
 27 files changed, 3066 insertions(+)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..96c49bd
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,23 @@
+target/
+/local
+
+logs/
+
+**/.idea
+
+# Repository wide ignore mac DS_Store files
+.DS_Store
+
+# Eclipse, Netbeans and IntelliJ files
+!.gitignore
+!.github
+/nbproject
+/*.ipr
+/*.iws
+*.iml
+.settings/
+.project
+.classpath
+.factorypath
+.vscode
+.run/
\ No newline at end of file
diff --git a/framework/pom.xml b/framework/pom.xml
new file mode 100644
index 0000000..bf46da0
--- /dev/null
+++ b/framework/pom.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.kie.kogito</groupId>
+    <artifactId>kogito-benchmarks</artifactId>
+    <version>2.0.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>framework</artifactId>
+
+  <name></name>
+  <description></description>
+
+  <properties>
+    <log4j.version>2.13.2</log4j.version>
+  </properties>
+
+  <dependencyManagement>
+    <dependencies>
+      <!-- Override test scope coming from parent -->
+      <dependency>
+        <groupId>org.junit.jupiter</groupId>
+        <artifactId>junit-jupiter-api</artifactId>
+        <version>${version.org.junit.jupiter}</version>
+        <scope>compile</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.junit.jupiter</groupId>
+        <artifactId>junit-jupiter</artifactId>
+        <version>${version.org.junit.jupiter}</version>
+        <scope>compile</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.junit.jupiter</groupId>
+        <artifactId>junit-jupiter-engine</artifactId>
+        <version>${version.org.junit.jupiter}</version>
+        <scope>compile</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.junit.jupiter</groupId>
+        <artifactId>junit-jupiter-params</artifactId>
+        <version>${version.org.junit.jupiter}</version>
+        <scope>compile</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.junit.platform</groupId>
+        <artifactId>junit-platform-engine</artifactId>
+        <version>${version.org.junit.platform}</version>
+        <scope>compile</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.junit.platform</groupId>
+        <artifactId>junit-platform-commons</artifactId>
+        <version>${version.org.junit.platform}</version>
+        <scope>compile</scope>
+      </dependency>
+
+      <dependency>
+        <groupId>org.apache.logging.log4j</groupId>
+        <artifactId>log4j-api</artifactId>
+        <version>${log4j.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.logging.log4j</groupId>
+        <artifactId>log4j-core</artifactId>
+        <version>${log4j.version}</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.jboss.logging</groupId>
+      <artifactId>jboss-logging</artifactId>
+      <version>3.4.1.Final</version> <!-- TODO find another logging library-->
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.assertj</groupId>
+      <artifactId>assertj-core</artifactId>
+      <scope>compile</scope>
+    </dependency>
+
+    <!-- Logging -->
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
+    </dependency>
+  </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
new file mode 100644
index 0000000..ab39a3a
--- /dev/null
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
@@ -0,0 +1,61 @@
+package org.kie.kogito.benchmarks.framework;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.commons.lang3.StringUtils;
+
+import static org.kie.kogito.benchmarks.framework.Commands.BASE_DIR;
+
+public enum App {
+    SAMPLE_KOGITO_APP_QUARKUS_JVM("sample-kogito-app", MvnCmds.QUARKUS_JVM, URLContent.SAMPLE_KOGITO_APP, WhitelistLogLines.SAMPLE_KOGITO_APP),
+    SAMPLE_KOGITO_APP_SPRING_BOOT("sample-kogito-app", MvnCmds.SPRING_BOOT_JVM, URLContent.SAMPLE_KOGITO_APP, WhitelistLogLines.SAMPLE_KOGITO_APP);
+    //    JAX_RS_MINIMAL("app-jax-rs-minimal", URLContent.JAX_RS_MINIMAL, WhitelistLogLines.JAX_RS_MINIMAL),
+    //    FULL_MICROPROFILE("app-full-microprofile", URLContent.FULL_MICROPROFILE, WhitelistLogLines.FULL_MICROPROFILE),
+    //    GENERATED_SKELETON("app-generated-skeleton", URLContent.GENERATED_SKELETON, WhitelistLogLines.GENERATED_SKELETON);
+
+    public final String dir;
+    public final MvnCmds mavenCommands;
+    public final URLContent urlContent;
+    public final WhitelistLogLines whitelistLogLines;
+    public final Map<String, Long> thresholdProperties = new HashMap<>();
+
+    App(String dir, MvnCmds mavenCommands, URLContent urlContent, WhitelistLogLines whitelistLogLines) {
+        this.dir = dir;
+        this.mavenCommands = mavenCommands;
+        this.urlContent = urlContent;
+        this.whitelistLogLines = whitelistLogLines;
+        File tpFile = new File(BASE_DIR + File.separator + dir + File.separator + "threshold.properties");
+        String appDirNormalized = dir.toUpperCase().replace('-', '_') + "_";
+        try (InputStream input = new FileInputStream(tpFile)) {
+            Properties props = new Properties();
+            props.load(input);
+            for (String pn : props.stringPropertyNames()) {
+                String normPn = pn.toUpperCase().replace('.', '_');
+                String env = System.getenv().get(appDirNormalized + normPn);
+                if (StringUtils.isNotBlank(env)) {
+                    props.replace(pn, env);
+                }
+                String sys = System.getProperty(appDirNormalized + normPn);
+                if (StringUtils.isNotBlank(sys)) {
+                    props.replace(pn, sys);
+                }
+                thresholdProperties.put(pn, Long.parseLong(props.getProperty(pn)));
+            }
+        } catch (NumberFormatException e) {
+            throw new IllegalArgumentException("Check threshold.properties and Sys and Env variables (upper case, underscores instead of dots). " +
+                    "All values are expected to be of type long.");
+        } catch (IOException e) {
+            throw new RuntimeException("Couldn't find " + tpFile.getAbsolutePath());
+        }
+    }
+
+    public File getAppDir(String parent) {
+        return new File(parent + File.separator + dir);
+    }
+}
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/BuildResult.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/BuildResult.java
new file mode 100644
index 0000000..19ab591
--- /dev/null
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/BuildResult.java
@@ -0,0 +1,28 @@
+package org.kie.kogito.benchmarks.framework;
+
+import java.io.File;
+
+public class BuildResult {
+
+    private final long buildTimeMs;
+    private final File buildLog;
+    private final int exitCode;
+
+    public BuildResult(long buildTimeMs, File buildLog, int exitCode) {
+        this.buildTimeMs = buildTimeMs;
+        this.buildLog = buildLog;
+        this.exitCode = exitCode;
+    }
+
+    public long getBuildTimeMs() {
+        return buildTimeMs;
+    }
+
+    public File getBuildLog() {
+        return buildLog;
+    }
+
+    public int getExitCode() {
+        return exitCode;
+    }
+}
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
new file mode 100644
index 0000000..de70e59
--- /dev/null
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
@@ -0,0 +1,604 @@
+package org.kie.kogito.benchmarks.framework;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.net.UnknownHostException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Scanner;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.commons.lang3.StringUtils;
+import org.jboss.logging.Logger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import static org.kie.kogito.benchmarks.framework.Logs.appendln;
+import static org.kie.kogito.benchmarks.framework.Logs.appendlnSection;
+
+public class Commands {
+    private static final Logger LOGGER = Logger.getLogger(Commands.class.getName());
+
+    public static final String BASE_DIR = getBaseDir();
+    public static final String MVNW = Commands.isThisWindows ? "mvnw.cmd" : "./mvnw";
+    public static final boolean isThisWindows = System.getProperty("os.name").matches(".*[Ww]indows.*");
+    private static final Pattern numPattern = Pattern.compile("[ \t]*[0-9]+[ \t]*");
+    private static final Pattern quarkusVersionPattern = Pattern.compile("[ \t]*<quarkus.version>([^<]*)</quarkus.version>.*");
+    private static final Pattern trailingSlash = Pattern.compile("/+$");
+
+    public static String getArtifactGeneBaseDir() {
+        for (String p : new String[] { "ARTIFACT_GENERATOR_WORKSPACE", "artifact.generator.workspace" }) {
+            String env = System.getenv().get(p);
+            if (StringUtils.isNotBlank(env)) {
+                return env;
+            }
+            String sys = System.getProperty(p);
+            if (StringUtils.isNotBlank(sys)) {
+                return sys;
+            }
+        }
+        return System.getProperty("java.io.tmpdir");
+    }
+
+    public static String getLocalMavenRepoDir() {
+        for (String p : new String[] { "TESTS_MAVEN_REPO_LOCAL", "tests.maven.repo.local" }) {
+            String env = System.getenv().get(p);
+            if (StringUtils.isNotBlank(env)) {
+                return env;
+            }
+            String sys = System.getProperty(p);
+            if (StringUtils.isNotBlank(sys)) {
+                return sys;
+            }
+        }
+        return System.getProperty("user.home") + File.separator + ".m2" + File.separator + "repository";
+    }
+
+    /**
+     * Get system properties starting with `quarkus.native` prefix, for example quarkus.native.builder-image
+     * 
+     * @return List of `-Dquarkus.native.xyz=foo` strings
+     */
+    public static List<String> getQuarkusNativeProperties() {
+        List<String> quarkusNativeProperties = System.getProperties().entrySet().stream()
+                .filter(e -> e.getKey().toString().contains("quarkus.native"))
+                .map(e -> "-D" + e.getKey() + "=" + e.getValue())
+                .collect(Collectors.toList());
+        return quarkusNativeProperties;
+    }
+
+    public static String getQuarkusPlatformVersion() {
+        for (String p : new String[] { "QUARKUS_PLATFORM_VERSION", "quarkus.platform.version" }) {
+            String env = System.getenv().get(p);
+            if (StringUtils.isNotBlank(env)) {
+                return env;
+            }
+            String sys = System.getProperty(p);
+            if (StringUtils.isNotBlank(sys)) {
+                return sys;
+            }
+        }
+        LOGGER.warn("Failed to detect quarkus.platform.version/QUARKUS_PLATFORM_VERSION, defaulting to getQuarkusVersion().");
+        return getQuarkusVersion();
+    }
+
+    public static String getQuarkusVersion() {
+        for (String p : new String[] { "QUARKUS_VERSION", "quarkus.version" }) {
+            String env = System.getenv().get(p);
+            if (StringUtils.isNotBlank(env)) {
+                return env;
+            }
+            String sys = System.getProperty(p);
+            if (StringUtils.isNotBlank(sys)) {
+                return sys;
+            }
+        }
+        String failure = "Failed to determine quarkus.version. Check pom.xm, check env and sys vars QUARKUS_VERSION";
+        try (Scanner sc = new Scanner(new File(getBaseDir() + File.separator + "pom.xml"), StandardCharsets.UTF_8)) {
+            while (sc.hasNextLine()) {
+                String line = sc.nextLine();
+                Matcher m = quarkusVersionPattern.matcher(line);
+                if (m.matches()) {
+                    return m.group(1);
+                }
+            }
+        } catch (IOException e) {
+            throw new IllegalArgumentException(failure);
+        }
+        throw new IllegalArgumentException(failure);
+    }
+
+    public static String getBaseDir() {
+        String env = System.getenv().get("basedir");
+        String sys = System.getProperty("basedir");
+        if (StringUtils.isNotBlank(env)) {
+            return new File(env).getParent();
+        }
+        if (StringUtils.isBlank(sys)) {
+            throw new IllegalArgumentException("Unable to determine project.basedir.");
+        }
+        return new File(sys).getParent();
+    }
+
+    public static String getCodeQuarkusURL() {
+        return getCodeQuarkusURL("https://code.quarkus.io");
+    }
+
+    public static String getCodeQuarkusURL(String fallbackURL) {
+        String url = null;
+        for (String p : new String[] { "CODE_QUARKUS_URL", "code.quarkus.url" }) {
+            String env = System.getenv().get(p);
+            if (StringUtils.isNotBlank(env)) {
+                url = env;
+                break;
+            }
+            String sys = System.getProperty(p);
+            if (StringUtils.isNotBlank(sys)) {
+                url = sys;
+                break;
+            }
+        }
+        if (url == null) {
+            url = fallbackURL;
+            LOGGER.warn("Failed to detect code.quarkus.url/CODE_QUARKUS_URL env/sys props, defaulting to " + url);
+            return url;
+        }
+        Matcher m = trailingSlash.matcher(url);
+        if (m.find()) {
+            url = m.replaceAll("");
+        }
+        return url;
+    }
+
+    public static void cleanTarget(App app) {
+        String target = BASE_DIR + File.separator + app.dir + File.separator + "target";
+        String logs = BASE_DIR + File.separator + app.dir + File.separator + "logs";
+        cleanDirOrFile(target, logs);
+    }
+
+    public static BuildResult buildApp(App app, String methodName, String className, StringBuilder whatIDidReport) throws InterruptedException {
+        File appDir = app.getAppDir(BASE_DIR);
+        File buildLogA = new File(appDir.getAbsolutePath() + File.separator + "logs" + File.separator + app.mavenCommands.name().toLowerCase() + "-build.log");
+        ExecutorService buildService = Executors.newFixedThreadPool(1);
+
+        List<String> baseBuildCmd = new ArrayList<>(Arrays.asList(app.mavenCommands.mvnCmds[0]));
+        //baseBuildCmd.add("-Dquarkus.version=" + getQuarkusVersion());
+        List<String> cmd = getBuildCommand(baseBuildCmd.toArray(new String[0]));
+
+        buildService.submit(new Commands.ProcessRunner(appDir, buildLogA, cmd, 20)); // TODO exit code handling
+        appendln(whatIDidReport, "# " + className + ", " + methodName);
+        appendln(whatIDidReport, (new Date()).toString());
+        appendln(whatIDidReport, appDir.getAbsolutePath());
+        appendlnSection(whatIDidReport, String.join(" ", cmd));
+        long buildStarts = System.currentTimeMillis();
+        buildService.shutdown();
+        buildService.awaitTermination(30, TimeUnit.MINUTES);
+        long buildEnds = System.currentTimeMillis();
+        long buildTimeMs = buildEnds - buildStarts;
+
+        return new BuildResult(buildTimeMs, buildLogA, 0);
+    }
+
+    public static RunInfo startApp(App app, StringBuilder whatIDidReport) throws IOException, InterruptedException {
+        File appDir = app.getAppDir(BASE_DIR);
+        File runLogA = new File(appDir.getAbsolutePath() + File.separator + "logs" + File.separator + app.mavenCommands.name().toLowerCase() + "-run.log");
+        List<String> cmd = getRunCommand(app.mavenCommands.mvnCmds[1]);
+        appendln(whatIDidReport, appDir.getAbsolutePath());
+        appendlnSection(whatIDidReport, String.join(" ", cmd));
+        long runStarts = System.currentTimeMillis();
+        Process pA = runCommand(cmd, appDir, runLogA);
+        long runEnds = System.currentTimeMillis();
+        System.out.println("RunEnds (" + runEnds + ") - RunStarts (" + runStarts + ") : " + (runEnds - runStarts));
+        // Test web pages
+        long timeToFirstOKRequest = WebpageTester.testWeb(app.urlContent.urlContent[0][0], 10, app.urlContent.urlContent[0][1], true);
+        LOGGER.info("Testing web page content...");
+        for (String[] urlContent : app.urlContent.urlContent) {
+            WebpageTester.testWeb(urlContent[0], 5, urlContent[1], false);
+        }
+
+        return new RunInfo(pA, runLogA, timeToFirstOKRequest);
+    }
+
+    public static void cleanDirOrFile(String... path) {
+        for (String s : path) {
+            try {
+                Files.walk(Paths.get(s))
+                        .sorted(Comparator.reverseOrder())
+                        .map(Path::toFile)
+                        .forEach(File::delete);
+                //FileUtils.forceDelete(new File(s));
+            } catch (IOException e) {
+                //Silence is golden
+            }
+        }
+    }
+
+    public static List<String> getRunCommand(String[] baseCommand) {
+        List<String> runCmd = new ArrayList<>();
+        if (isThisWindows) {
+            runCmd.add("cmd");
+            runCmd.add("/C");
+        }
+        runCmd.addAll(Arrays.asList(baseCommand));
+
+        return Collections.unmodifiableList(runCmd);
+    }
+
+    public static List<String> getBuildCommand(String[] baseCommand) {
+        List<String> buildCmd = new ArrayList<>();
+        if (isThisWindows) {
+            buildCmd.add("cmd");
+            buildCmd.add("/C");
+        }
+        buildCmd.addAll(Arrays.asList(baseCommand));
+        buildCmd.add("-Dmaven.repo.local=" + getLocalMavenRepoDir());
+
+        return Collections.unmodifiableList(buildCmd);
+    }
+
+    //    public static List<String> getBuildCommand(String[] baseCommand, String repoDir) {
+    //        List<String> buildCmd = new ArrayList<>();
+    //        if (isThisWindows) {
+    //            buildCmd.add("cmd");
+    //            buildCmd.add("/C");
+    //        }
+    //        buildCmd.addAll(Arrays.asList(baseCommand));
+    //        buildCmd.add("-Dmaven.repo.local=" + repoDir);
+    //        buildCmd.add("--settings=" + BASE_DIR + File.separator + App.GENERATED_SKELETON.dir + File.separator + "settings.xml");
+    //
+    //        return Collections.unmodifiableList(buildCmd);
+    //    }
+
+    //    public static List<String> getGeneratorCommand(Set<TestFlags> flags, String[] baseCommand, String[] extensions, String repoDir) {
+    //        List<String> generatorCmd = new ArrayList<>();
+    //        if (isThisWindows) {
+    //            generatorCmd.add("cmd");
+    //            generatorCmd.add("/C");
+    //        }
+    //        generatorCmd.addAll(Arrays.asList(baseCommand));
+    //        if (flags.contains(TestFlags.PRODUCT_BOM)) {
+    //            generatorCmd.add("-DplatformArtifactId=quarkus-product-bom");
+    //            generatorCmd.add("-DplatformGroupId=com.redhat.quarkus");
+    //            generatorCmd.add("-DplatformVersion=" + getQuarkusPlatformVersion());
+    //        } else if (flags.contains(TestFlags.QUARKUS_BOM)) {
+    //            generatorCmd.add("-DplatformArtifactId=quarkus-bom");
+    //            generatorCmd.add("-DplatformVersion=" + getQuarkusVersion());
+    //        } else if (flags.contains(TestFlags.UNIVERSE_BOM)) {
+    //            generatorCmd.add("-DplatformArtifactId=quarkus-universe-bom");
+    //            generatorCmd.add("-DplatformVersion=" + getQuarkusVersion());
+    //        } else if (flags.contains(TestFlags.UNIVERSE_PRODUCT_BOM)) {
+    //            generatorCmd.add("-DplatformArtifactId=quarkus-universe-bom");
+    //            generatorCmd.add("-DplatformGroupId=com.redhat.quarkus");
+    //            generatorCmd.add("-DplatformVersion=" + getQuarkusPlatformVersion());
+    //        }
+    //        generatorCmd.add("-Dextensions=" + String.join(",", extensions));
+    //        generatorCmd.add("-Dmaven.repo.local=" + repoDir);
+    //        generatorCmd.add("--settings=" + BASE_DIR + File.separator + App.GENERATED_SKELETON.dir + File.separator + "settings.xml");
+    //
+    //        return Collections.unmodifiableList(generatorCmd);
+    //    }
+
+    public static List<String> getGeneratorCommand(String[] baseCommand, String[] extensions) {
+        List<String> generatorCmd = new ArrayList<>();
+        if (isThisWindows) {
+            generatorCmd.add("cmd");
+            generatorCmd.add("/C");
+        }
+        generatorCmd.addAll(Arrays.asList(baseCommand));
+        generatorCmd.add("-DplatformVersion=" + getQuarkusVersion());
+        generatorCmd.add("-Dextensions=" + String.join(",", extensions));
+        generatorCmd.add("-Dmaven.repo.local=" + getLocalMavenRepoDir());
+
+        return Collections.unmodifiableList(generatorCmd);
+    }
+
+    //    /**
+    //     * Download a zip file with an example project
+    //     *
+    //     * @param extensions         collection of extension codes, @See {@link io.quarkus.ts.startstop.utils.CodeQuarkusExtensions}
+    //     * @param destinationZipFile path where the zip file will be written
+    //     * @return the actual URL used for audit and logging purposes
+    //     * @throws IOException
+    //     */
+    //    public static String download(Collection<CodeQuarkusExtensions> extensions, String destinationZipFile) throws IOException {
+    //        String downloadURL = getCodeQuarkusURL() + "/api/download?s=" +
+    //                extensions.stream().map(x -> x.shortId).collect(Collectors.joining("."));
+    //        try (ReadableByteChannel readableByteChannel = Channels.newChannel(
+    //                new URL(downloadURL).openStream());
+    //             FileChannel fileChannel = new FileOutputStream(destinationZipFile).getChannel()) {
+    //            fileChannel.transferFrom(readableByteChannel, 0, Long.MAX_VALUE);
+    //        }
+    //        return downloadURL;
+    //    }
+
+    public static File unzip(String zipFilePath, String destinationDir) throws InterruptedException, IOException {
+        ProcessBuilder pb;
+        if (isThisWindows) {
+            pb = new ProcessBuilder("powershell", "-c", "Expand-Archive", "-Path", zipFilePath, "-DestinationPath", destinationDir, "-Force");
+        } else {
+            pb = new ProcessBuilder("unzip", "-o", zipFilePath, "-d", destinationDir);
+        }
+        Map<String, String> env = pb.environment();
+        env.put("PATH", System.getenv("PATH"));
+        pb.directory(new File(destinationDir));
+        pb.redirectErrorStream(true);
+        File unzipLog = new File(zipFilePath + ".log");
+        unzipLog.delete();
+        pb.redirectOutput(ProcessBuilder.Redirect.to(unzipLog));
+        Process p = pb.start();
+        p.waitFor(3, TimeUnit.MINUTES);
+        return unzipLog;
+    }
+
+    public static void removeRepositoriesAndPluginRepositories(String pomFilePath) throws Exception {
+        File pomFile = new File(pomFilePath);
+        Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(pomFile);
+        NodeList repositories = doc.getElementsByTagName("repositories");
+        if (repositories.getLength() == 1) {
+            Node node = repositories.item(0);
+            node.getParentNode().removeChild(node);
+        }
+        NodeList pluginRepositories = doc.getElementsByTagName("pluginRepositories");
+        if (pluginRepositories.getLength() == 1) {
+            Node node = pluginRepositories.item(0);
+            node.getParentNode().removeChild(node);
+        }
+        Transformer transformer = TransformerFactory.newInstance().newTransformer();
+        transformer.transform(new DOMSource(doc), new StreamResult(pomFile));
+    }
+
+    public static boolean waitForTcpClosed(String host, int port, long loopTimeoutS) throws InterruptedException, UnknownHostException {
+        InetAddress address = InetAddress.getByName(host);
+        long now = System.currentTimeMillis();
+        long startTime = now;
+        InetSocketAddress socketAddr = new InetSocketAddress(address, port);
+        while (now - startTime < 1000 * loopTimeoutS) {
+            try (Socket socket = new Socket()) {
+                // If it let's you write something there, it is still ready.
+                socket.connect(socketAddr, 1000);
+                socket.setSendBufferSize(1);
+                socket.getOutputStream().write(1);
+                socket.shutdownInput();
+                socket.shutdownOutput();
+                LOGGER.info("Socket still available: " + host + ":" + port);
+            } catch (IOException e) {
+                // Exception thrown - socket is likely closed.
+                return true;
+            }
+            Thread.sleep(1000);
+            now = System.currentTimeMillis();
+        }
+        return false;
+    }
+
+    //    // TODO we should get rid of it once Quarkus progresses with walid config per extension in generated examples
+    //    public static void confAppPropsForSkeleton(String appDir) throws IOException {
+    //        // Config, see app-generated-skeleton/README.md
+    //        String appPropsSrc = BASE_DIR + File.separator + App.GENERATED_SKELETON.dir + File.separator + "application.properties";
+    //        String appPropsDst = appDir + File.separator + "src" + File.separator + "main" + File.separator + "resources" + File.separator + "application.properties";
+    //        Files.copy(Paths.get(appPropsSrc),
+    //                Paths.get(appPropsDst), StandardCopyOption.REPLACE_EXISTING);
+    //    }
+
+    public static void adjustPrettyPrintForJsonLogging(String appDir) throws IOException {
+        Path appProps = Paths.get(appDir + File.separator + "src" + File.separator + "main" + File.separator + "resources" + File.separator + "application.properties");
+        Path appYaml = Paths.get(appDir + File.separator + "src" + File.separator + "main" + File.separator + "resources" + File.separator + "application.yml");
+
+        adjustFileContent(appProps, "quarkus.log.console.json.pretty-print=true", "quarkus.log.console.json.pretty-print=false");
+        adjustFileContent(appYaml, "pretty-print: true", "pretty-print: fase");
+    }
+
+    private static void adjustFileContent(Path path, String regex, String replacement) throws IOException {
+        if (Files.exists(path)) {
+            String content = new String(Files.readAllBytes(path), StandardCharsets.UTF_8);
+            content = content.replaceAll(regex, replacement);
+            Files.write(path, content.getBytes(StandardCharsets.UTF_8));
+        }
+    }
+
+    public static int parsePort(String url) {
+        return Integer.parseInt(url.split(":")[2].split("/")[0]);
+    }
+
+    public static Process runCommand(List<String> command, File directory, File logFile) {
+        ProcessBuilder pa = new ProcessBuilder(command);
+        Map<String, String> envA = pa.environment();
+        envA.put("PATH", System.getenv("PATH"));
+        pa.directory(directory);
+        pa.redirectErrorStream(true);
+        pa.redirectOutput(ProcessBuilder.Redirect.to(logFile));
+        Process pA = null;
+        try {
+            pA = pa.start();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return pA;
+    }
+
+    public static void pidKiller(long pid, boolean force) {
+        try {
+            if (isThisWindows) {
+                if (!force) {
+                    Process p = Runtime.getRuntime().exec(new String[] {
+                            BASE_DIR + File.separator + "testsuite" + File.separator + "src" + File.separator + "it" + File.separator + "resources" + File.separator +
+                                    "CtrlC.exe ",
+                            Long.toString(pid) });
+                    p.waitFor(1, TimeUnit.MINUTES);
+                }
+                Runtime.getRuntime().exec(new String[] { "cmd", "/C", "taskkill", "/PID", Long.toString(pid), "/F", "/T" });
+            } else {
+                Runtime.getRuntime().exec(new String[] { "kill", force ? "-9" : "-15", Long.toString(pid) });
+            }
+        } catch (IOException | InterruptedException e) {
+            LOGGER.error(e.getMessage(), e);
+        }
+    }
+
+    public static long getRSSkB(long pid) throws IOException, InterruptedException {
+        ProcessBuilder pa;
+        if (isThisWindows) {
+            // Note that PeakWorkingSetSize might be better, but we would need to change it on Linux too...
+            // https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-process
+            pa = new ProcessBuilder("wmic", "process", "where", "processid=" + pid, "get", "WorkingSetSize");
+        } else {
+            pa = new ProcessBuilder("ps", "-p", Long.toString(pid), "-o", "rss=");
+        }
+        Map<String, String> envA = pa.environment();
+        envA.put("PATH", System.getenv("PATH"));
+        pa.redirectErrorStream(true);
+        Process p = pa.start();
+        try (BufferedReader processOutputReader =
+                new BufferedReader(new InputStreamReader(p.getInputStream(), StandardCharsets.UTF_8))) {
+            String l;
+            while ((l = processOutputReader.readLine()) != null) {
+                if (numPattern.matcher(l).matches()) {
+                    if (isThisWindows) {
+                        // Qualifiers: DisplayName ("Working Set Size"), Units ("bytes")
+                        return Long.parseLong(l.trim()) / 1024L;
+                    } else {
+                        return Long.parseLong(l.trim());
+                    }
+                }
+            }
+            p.waitFor();
+        }
+        return -1L;
+    }
+
+    public static long getOpenedFDs(long pid) throws IOException, InterruptedException {
+        ProcessBuilder pa;
+        long count = 0;
+        if (isThisWindows) {
+            pa = new ProcessBuilder("wmic", "process", "where", "processid=" + pid, "get", "HandleCount");
+        } else {
+            pa = new ProcessBuilder("lsof", "-F0n", "-p", Long.toString(pid));
+        }
+        Map<String, String> envA = pa.environment();
+        envA.put("PATH", System.getenv("PATH"));
+        pa.redirectErrorStream(true);
+        Process p = pa.start();
+        try (BufferedReader processOutputReader =
+                new BufferedReader(new InputStreamReader(p.getInputStream(), StandardCharsets.UTF_8))) {
+            if (isThisWindows) {
+                String l;
+                // TODO: We just get a magical number with all FDs... Is it O.K.?
+                while ((l = processOutputReader.readLine()) != null) {
+                    if (numPattern.matcher(l).matches()) {
+                        return Long.parseLong(l.trim());
+                    }
+                }
+            } else {
+                // TODO: For the time being we count apples and oranges; we might want to distinguish .so and .jar ?
+                while (processOutputReader.readLine() != null) {
+                    count++;
+                }
+            }
+            p.waitFor();
+        }
+        return count;
+    }
+
+    /*
+     * TODO: CPU cycles used
+     * 
+     * Pros: good data
+     * Cons: dependency on perf tool; will not translate to Windows data
+     * 
+     * karm@local:~/workspaceRH/fooBar$ perf stat java -jar target/fooBar-1.0.0-SNAPSHOT-runner.jar
+     * 2020-02-25 16:07:00,870 INFO [io.quarkus] (main) fooBar 1.0.0-SNAPSHOT (running on Quarkus 999-SNAPSHOT) started in 0.776s.
+     * 2020-02-25 16:07:00,873 INFO [io.quarkus] (main) Profile prod activated.
+     * 2020-02-25 16:07:00,873 INFO [io.quarkus] (main) Installed features: [amazon-lambda, cdi, resteasy]
+     * 2020-02-25 16:07:03,360 INFO [io.quarkus] (main) fooBar stopped in 0.018s
+     * 
+     * Performance counter stats for 'java -jar target/fooBar-1.0.0-SNAPSHOT-runner.jar':
+     * 
+     * 1688.910052 task-clock:u (msec) # 0.486 CPUs utilized
+     * 0 context-switches:u # 0.000 K/sec
+     * 0 cpu-migrations:u # 0.000 K/sec
+     * 12,865 page-faults:u # 0.008 M/sec
+     * 4,274,799,448 cycles:u # 2.531 GHz
+     * 4,325,761,598 instructions:u # 1.01 insn per cycle
+     * 919,713,769 branches:u # 544.561 M/sec
+     * 29,310,015 branch-misses:u # 3.19% of all branches
+     * 
+     * 3.473028811 seconds time elapsed
+     */
+
+    // Ask Karm about this
+    public static void processStopper(Process p, boolean force) throws InterruptedException, IOException {
+        p.children().forEach(child -> {
+            if (child.supportsNormalTermination()) {
+                child.destroy();
+            }
+            pidKiller(child.pid(), force);
+        });
+        if (p.supportsNormalTermination()) {
+            p.destroy();
+            p.waitFor(3, TimeUnit.MINUTES);
+        }
+        pidKiller(p.pid(), force);
+    }
+
+    public static class ProcessRunner implements Runnable {
+        final File directory;
+        final File log;
+        final List<String> command;
+        final long timeoutMinutes;
+
+        public ProcessRunner(File directory, File log, List<String> command, long timeoutMinutes) {
+            this.directory = directory;
+            this.log = log;
+            this.command = command;
+            this.timeoutMinutes = timeoutMinutes;
+        }
+
+        @Override
+        public void run() {
+            ProcessBuilder pb = new ProcessBuilder(command);
+            Map<String, String> env = pb.environment();
+            env.put("PATH", System.getenv("PATH"));
+            pb.directory(directory);
+            pb.redirectErrorStream(true);
+            pb.redirectOutput(ProcessBuilder.Redirect.to(log));
+            Process p = null;
+            try {
+                p = pb.start();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+            try {
+                Objects.requireNonNull(p).waitFor(timeoutMinutes, TimeUnit.MINUTES);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+}
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
new file mode 100644
index 0000000..74d0ecc
--- /dev/null
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
@@ -0,0 +1,93 @@
+package org.kie.kogito.benchmarks.framework;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class HTTPRequestInfo {
+
+    private String uri;
+    private String body;
+    private String method;
+    private Map<String, String> headers = new HashMap<>();
+    private int expectedResponseStatusCode;
+
+    private void setURI(String uri) {
+        this.uri = uri;
+    }
+
+    private void setBody(String body) {
+        this.body = body;
+    }
+
+    private void setMethod(String method) {
+        this.method = method;
+    }
+
+    private void addHeader(String name, String value) {
+        this.headers.put(name, value);
+    }
+
+    private void setExpectedResponseStatusCode(int expectedResponseStatusCode) {
+        this.expectedResponseStatusCode = expectedResponseStatusCode;
+    }
+
+    public String getURI() {
+        return uri;
+    }
+
+    public String getBody() {
+        return body;
+    }
+
+    public String getMethod() {
+        return method;
+    }
+
+    public Map<String, String> getHeaders() {
+        return headers;
+    }
+
+    public int getExpectedResponseStatusCode() {
+        return expectedResponseStatusCode;
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+
+        private final HTTPRequestInfo instance = new HTTPRequestInfo();
+
+        public Builder URI(String uri) {
+            instance.setURI(uri);
+            return this;
+        }
+
+        public Builder body(String body) {
+            instance.setBody(body);
+            return this;
+        }
+
+        public Builder method(String method) {
+            instance.setMethod(method);
+            return this;
+        }
+
+        public Builder header(String name, String value) {
+            instance.addHeader(name, value);
+            return this;
+        }
+
+        public Builder expectedResponseStatusCode(int statusCode) {
+            instance.setExpectedResponseStatusCode(statusCode);
+            return this;
+        }
+
+        public HTTPRequestInfo build() {
+            return instance;
+        }
+
+    }
+
+}
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java
new file mode 100644
index 0000000..2294df5
--- /dev/null
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java
@@ -0,0 +1,201 @@
+package org.kie.kogito.benchmarks.framework;
+
+import java.util.Objects;
+
+public class LogBuilder {
+
+    public static class Log {
+        public final String headerCSV;
+        public final String headerMarkdown;
+        public final String lineCSV;
+        public final String lineMarkdown;
+
+        public Log(String headerCSV, String headerMarkdown, String lineCSV, String lineMarkdown) {
+            this.headerCSV = headerCSV;
+            this.headerMarkdown = headerMarkdown;
+            this.lineCSV = lineCSV;
+            this.lineMarkdown = lineMarkdown;
+        }
+    }
+
+    private static final String buildTimeMsHeader = "buildTimeMs";
+    private long buildTimeMs = -1L;
+    private static final String timeToFirstOKRequestMsHeader = "timeToFirstOKRequestMs";
+    private long timeToFirstOKRequestMs = -1L;
+    private static final String timeToReloadedOKRequestHeader = "timeToReloadMs";
+    private long timeToReloadedOKRequest = -1L;
+    private static final String startedInMsHeader = "startedInMs";
+    private long startedInMs = -1L;
+    private static final String stoppedInMsHeader = "stoppedInMs";
+    private long stoppedInMs = -1L;
+    private static final String rssKbHeader = "RSSKb";
+    private long rssKb = -1L;
+    private static final String rssKbFinalHeader = "RSSKbFinal";
+    private long rssKbFinal = -1L;
+    private static final String openedFilesHeader = "FDs";
+    private long openedFiles = -1L;
+    private static final String appHeader = "App";
+    private App app = null;
+    private static final String modeHeader = "Mode";
+    private MvnCmds mode = null;
+
+    public LogBuilder buildTimeMs(long buildTimeMs) {
+        if (buildTimeMs <= 0) {
+            throw new IllegalArgumentException("buildTimeMs must be a positive long, was: " + buildTimeMs);
+        }
+        this.buildTimeMs = buildTimeMs;
+        return this;
+    }
+
+    public LogBuilder timeToFirstOKRequestMs(long timeToFirstOKRequestMs) {
+        if (timeToFirstOKRequestMs <= 0) {
+            throw new IllegalArgumentException("timeToFirstOKRequestMs must be a positive long, was: " + timeToFirstOKRequestMs);
+        }
+        this.timeToFirstOKRequestMs = timeToFirstOKRequestMs;
+        return this;
+    }
+
+    public LogBuilder timeToReloadedOKRequest(long timeToReloadedOKRequest) {
+        if (timeToReloadedOKRequest <= 0) {
+            throw new IllegalArgumentException("timeToReloadedOKRequest must be a positive long, was: " + timeToFirstOKRequestMs);
+        }
+        this.timeToReloadedOKRequest = timeToReloadedOKRequest;
+        return this;
+    }
+
+    public LogBuilder startedInMs(long startedInMs) {
+        if (startedInMs <= 0) {
+            throw new IllegalArgumentException("startedInMs must be a positive long, was: " + startedInMs);
+        }
+        this.startedInMs = startedInMs;
+        return this;
+    }
+
+    public LogBuilder stoppedInMs(long stoppedInMs) {
+        if (stoppedInMs <= 0) {
+            throw new IllegalArgumentException("stoppedInMs must be a positive long, was: " + stoppedInMs);
+        }
+        this.stoppedInMs = stoppedInMs;
+        return this;
+    }
+
+    public LogBuilder rssKb(long rssKb) {
+        if (rssKb <= 0) {
+            throw new IllegalArgumentException("rssKb must be a positive long, was: " + rssKb);
+        }
+        this.rssKb = rssKb;
+        return this;
+    }
+
+    public LogBuilder rssKbFinal(long rssKbFinal) {
+        if (rssKbFinal <= 0) {
+            throw new IllegalArgumentException("rssKb must be a positive long, was: " + rssKb);
+        }
+        this.rssKbFinal = rssKbFinal;
+        return this;
+    }
+
+    public LogBuilder openedFiles(long openedFiles) {
+        if (openedFiles <= 0) {
+            throw new IllegalArgumentException("openedFiles must be a positive long, was: " + openedFiles);
+        }
+        this.openedFiles = openedFiles;
+        return this;
+    }
+
+    public LogBuilder app(App app) {
+        Objects.requireNonNull(app, "Valid app flavour must be provided");
+        this.app = app;
+        return this;
+    }
+
+    public LogBuilder mode(MvnCmds mode) {
+        Objects.requireNonNull(mode, "Valid app flavour must be provided");
+        this.mode = mode;
+        return this;
+    }
+
+    public Log build() {
+        StringBuilder h = new StringBuilder(512);
+        StringBuilder l = new StringBuilder(512);
+        int sections = 0;
+        if (app != null) {
+            h.append(appHeader);
+            h.append(',');
+            l.append(app);
+            l.append(',');
+            sections++;
+        }
+        if (mode != null) {
+            h.append(modeHeader);
+            h.append(',');
+            l.append(mode);
+            l.append(',');
+            sections++;
+        }
+        if (buildTimeMs != -1L) {
+            h.append(buildTimeMsHeader);
+            h.append(',');
+            l.append(buildTimeMs);
+            l.append(',');
+            sections++;
+        }
+        if (timeToFirstOKRequestMs != -1L) {
+            h.append(timeToFirstOKRequestMsHeader);
+            h.append(',');
+            l.append(timeToFirstOKRequestMs);
+            l.append(',');
+            sections++;
+        }
+        if (timeToReloadedOKRequest != -1L) {
+            h.append(timeToReloadedOKRequestHeader);
+            h.append(',');
+            l.append(timeToReloadedOKRequest);
+            l.append(',');
+            sections++;
+        }
+        if (startedInMs != -1L) {
+            h.append(startedInMsHeader);
+            h.append(',');
+            l.append(startedInMs);
+            l.append(',');
+            sections++;
+        }
+        if (stoppedInMs != -1L) {
+            h.append(stoppedInMsHeader);
+            h.append(',');
+            l.append(stoppedInMs);
+            l.append(',');
+            sections++;
+        }
+        if (rssKb != -1L) {
+            h.append(rssKbHeader);
+            h.append(',');
+            l.append(rssKb);
+            l.append(',');
+            sections++;
+        }
+        if (rssKbFinal != -1L) {
+            h.append(rssKbFinalHeader);
+            h.append(',');
+            l.append(rssKbFinal);
+            l.append(',');
+            sections++;
+        }
+        if (openedFiles != -1L) {
+            h.append(openedFilesHeader);
+            h.append(',');
+            l.append(openedFiles);
+            l.append(',');
+            sections++;
+        }
+        String header = h.toString();
+        // Strip trailing ',' for CSV
+        String headerCSV = header.substring(0, header.length() - 1);
+        String headerMarkdown = "|" + header.replaceAll(",", "|") + "\n|" + " --- |".repeat(sections);
+        String line = l.toString();
+        String lineCSV = line.substring(0, line.length() - 1);
+        String lineMarkdown = "|" + line.replaceAll(",", "|");
+        return new Log(headerCSV, headerMarkdown, lineCSV, lineMarkdown);
+    }
+}
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
new file mode 100644
index 0000000..dba7874
--- /dev/null
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
@@ -0,0 +1,336 @@
+package org.kie.kogito.benchmarks.framework;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardOpenOption;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Scanner;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+import org.apache.commons.lang3.StringUtils;
+import org.jboss.logging.Logger;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.kie.kogito.benchmarks.framework.Commands.BASE_DIR;
+import static org.kie.kogito.benchmarks.framework.Commands.isThisWindows;
+
+public class Logs {
+    private static final Logger LOGGER = Logger.getLogger(Logs.class.getName());
+
+    public static final String jarSuffix = "redhat";
+    private static final Pattern jarNamePattern = Pattern.compile("^((?!" + jarSuffix + ").)*jar$");
+
+    private static final Pattern startedPattern = Pattern.compile(".* started in ([0-9\\.]+)s.*", Pattern.DOTALL);
+    private static final Pattern stoppedPattern = Pattern.compile(".* stopped in ([0-9\\.]+)s.*", Pattern.DOTALL);
+    /*
+     * Due to console colouring, Windows has control characters in the sequence.
+     * So "1.778s" in "started in 1.778s." becomes "[38;5;188m1.778".
+     * e.g.
+     * //started in 1.228s.
+     * //stopped in 0.024s
+     * 
+     * Although when run from Jenkins service account; those symbols might not be present
+     * depending on whether you checked AllowInteractingWithDesktop.
+     * // TODO to make it smoother?
+     */
+    private static final Pattern startedPatternControlSymbols = Pattern.compile(".* started in .*188m([0-9\\.]+).*", Pattern.DOTALL);
+    private static final Pattern stoppedPatternControlSymbols = Pattern.compile(".* stopped in .*188m([0-9\\.]+).*", Pattern.DOTALL);
+
+    private static final Pattern warnErrorDetectionPattern = Pattern.compile("(?i:.*(ERROR|WARN|SLF4J:).*)");
+    private static final Pattern listeningOnDetectionPattern = Pattern.compile("(?i:.*Listening on:.*)");
+    private static final Pattern devExpectedHostPattern = Pattern.compile("(?i:.*localhost:.*)");
+    private static final Pattern defaultExpectedHostPattern = Pattern.compile("(?i:.*0.0.0.0:.*)");
+
+    public static final long SKIP = -1L;
+
+    public static void checkLog(String testClass, String testMethod, App app, MvnCmds cmd, File log) throws IOException {
+        try (Scanner sc = new Scanner(log, UTF_8)) {
+            Set<String> offendingLines = new HashSet<>();
+            while (sc.hasNextLine()) {
+                String line = sc.nextLine();
+                boolean error = warnErrorDetectionPattern.matcher(line).matches();
+                if (error) {
+                    if (isWhiteListed(app.whitelistLogLines.errs, line)) {
+                        LOGGER.info(cmd.name() + " log for " + testMethod + " contains whitelisted error: `" + line + "'");
+                    } else if (isWhiteListed(app.whitelistLogLines.platformErrs(), line)) {
+                        LOGGER.info(cmd.name() + " log for " + testMethod + " contains platform specific whitelisted error: `" + line + "'");
+                    } else {
+                        offendingLines.add(line);
+                    }
+                }
+            }
+            assertTrue(offendingLines.isEmpty(),
+                    cmd.name() + " log should not contain error or warning lines that are not whitelisted. " +
+                            "See testsuite" + File.separator + "target" + File.separator + "archived-logs" +
+                            File.separator + testClass + File.separator + testMethod + File.separator + log.getName() +
+                            " and check these offending lines: \n" + String.join("\n", offendingLines));
+        }
+    }
+
+    public static void checkListeningHost(String testClass, String testMethod, MvnCmds cmd, File log) throws IOException {
+        boolean isOffending = true;
+        try (Scanner sc = new Scanner(log, UTF_8)) {
+            while (sc.hasNextLine()) {
+                String line = sc.nextLine();
+                if (listeningOnDetectionPattern.matcher(line).matches()) {
+                    Pattern expectedHostPattern = defaultExpectedHostPattern;
+                    if (cmd == MvnCmds.DEV || cmd == MvnCmds.MVNW_DEV) {
+                        expectedHostPattern = devExpectedHostPattern;
+                    }
+
+                    isOffending = !expectedHostPattern.matcher(line).matches();
+                }
+            }
+        }
+
+        assertFalse(isOffending,
+                cmd.name() + " log should contain expected listening host. " +
+                        "See testsuite" + File.separator + "target" + File.separator + "archived-logs" +
+                        File.separator + testClass + File.separator + testMethod + File.separator + log.getName() +
+                        " and check the listening host.");
+    }
+
+    private static boolean isWhiteListed(Pattern[] patterns, String line) {
+        for (Pattern p : patterns) {
+            if (p.matcher(line).matches()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    //    public static void checkJarSuffixes(Set<TestFlags> flags, File appDir) throws IOException {
+    //        if (flags.contains(TestFlags.PRODUCT_BOM) || flags.contains(TestFlags.UNIVERSE_PRODUCT_BOM)) {
+    //            List<Path> possiblyUnwantedArtifacts = Logs.listJarsFailingNameCheck(
+    //                    appDir.getAbsolutePath() + File.separator + "target" + File.separator + "lib");
+    //            List<String> reportArtifacts = new ArrayList<>();
+    //            boolean containsNotWhitelisted = false;
+    //            for (Path p : possiblyUnwantedArtifacts) {
+    //                boolean found = false;
+    //                for (String w : WhitelistProductBomJars.PRODUCT_BOM.jarNames) {
+    //                    if (p.toString().contains(w)) {
+    //                        found = true;
+    //                        break;
+    //                    }
+    //                }
+    //                if (found) {
+    //                    reportArtifacts.add("WHITELISTED: " + p);
+    //                } else {
+    //                    containsNotWhitelisted = true;
+    //                    reportArtifacts.add(p.toString());
+    //                }
+    //            }
+    //            assertFalse(containsNotWhitelisted, "There are not-whitelisted artifacts without expected string " + jarSuffix + " suffix, see: \n"
+    //                    + String.join("\n", reportArtifacts));
+    //            if (!reportArtifacts.isEmpty()) {
+    //                LOGGER.warn("There are whitelisted artifacts without expected string " + jarSuffix + " suffix, see: \n"
+    //                                    + String.join("\n", reportArtifacts));
+    //            }
+    //        }
+    //    }
+
+    public static void checkThreshold(App app, MvnCmds cmd, long rssKb, long timeToFirstOKRequest, long timeToReloadedOKRequest) {
+        String propPrefix = isThisWindows ? "windows" : "linux";
+        if (cmd == MvnCmds.QUARKUS_JVM) {
+            propPrefix += ".jvm";
+        } else if (cmd == MvnCmds.NATIVE) {
+            propPrefix += ".native";
+        } else if (cmd == MvnCmds.DEV) {
+            propPrefix += ".dev";
+            //        } else if (cmd == MvnCmds.GENERATOR) {
+            //            propPrefix += ".generated.dev";
+        } else {
+            throw new IllegalArgumentException("Unexpected mode. Check MvnCmds.java.");
+        }
+        if (timeToFirstOKRequest != SKIP) {
+            long timeToFirstOKRequestThresholdMs = app.thresholdProperties.get(propPrefix + ".time.to.first.ok.request.threshold.ms");
+            assertTrue(timeToFirstOKRequest <= timeToFirstOKRequestThresholdMs,
+                    "Application " + app + " in " + cmd + " mode took " + timeToFirstOKRequest
+                            + " ms to get the first OK request, which is over " +
+                            timeToFirstOKRequestThresholdMs + " ms threshold.");
+        }
+        if (rssKb != SKIP) {
+            long rssThresholdKb = app.thresholdProperties.get(propPrefix + ".RSS.threshold.kB");
+            assertTrue(rssKb <= rssThresholdKb,
+                    "Application " + app + " in " + cmd + " consumed " + rssKb + " kB, which is over " +
+                            rssThresholdKb + " kB threshold.");
+        }
+        if (timeToReloadedOKRequest != SKIP) {
+            long timeToReloadedOKRequestThresholdMs = app.thresholdProperties.get(propPrefix + ".time.to.reload.threshold.ms");
+            assertTrue(timeToReloadedOKRequest <= timeToReloadedOKRequestThresholdMs,
+                    "Application " + app + " in " + cmd + " mode took " + timeToReloadedOKRequest
+                            + " ms to get the first OK request after dev mode reload, which is over " +
+                            timeToReloadedOKRequestThresholdMs + " ms threshold.");
+        }
+    }
+
+    public static void archiveLog(String testClass, String testMethod, File log) throws IOException {
+        if (log == null || !log.exists()) {
+            LOGGER.warn("log must be a valid, existing file. Skipping operation.");
+            return;
+        }
+        if (StringUtils.isBlank(testClass)) {
+            throw new IllegalArgumentException("testClass must not be blank");
+        }
+        if (StringUtils.isBlank(testMethod)) {
+            throw new IllegalArgumentException("testMethod must not be blank");
+        }
+        Path destDir = getLogsDir(testClass, testMethod);
+        Files.createDirectories(destDir);
+        String filename = log.getName();
+        Files.copy(log.toPath(), Paths.get(destDir.toString(), filename), REPLACE_EXISTING);
+    }
+
+    public static void writeReport(String testClass, String testMethod, String text) throws IOException {
+        Path destDir = getLogsDir(testClass, testMethod);
+        Files.createDirectories(destDir);
+        Files.write(Paths.get(destDir.toString(), "report.md"), text.getBytes(UTF_8), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
+        Path agregateReport = Paths.get(getLogsDir().toString(), "aggregated-report.md");
+        if (Files.notExists(agregateReport)) {
+            Files.write(agregateReport, ("# Aggregated Report\n\n").getBytes(UTF_8), StandardOpenOption.CREATE);
+        }
+        Files.write(agregateReport, text.getBytes(UTF_8), StandardOpenOption.APPEND);
+    }
+
+    /**
+     * Markdown needs two newlines to make a new paragraph.
+     */
+    public static void appendln(StringBuilder s, String text) {
+        s.append(text);
+        s.append("\n\n");
+    }
+
+    public static void appendlnSection(StringBuilder s, String text) {
+        s.append(text);
+        s.append("\n\n---\n");
+    }
+
+    public static Path getLogsDir(String testClass, String testMethod) throws IOException {
+        Path destDir = new File(getLogsDir(testClass).toString() + File.separator + testMethod).toPath();
+        Files.createDirectories(destDir);
+        return destDir;
+    }
+
+    public static Path getLogsDir(String testClass) throws IOException {
+        Path destDir = new File(getLogsDir().toString() + File.separator + testClass).toPath();
+        Files.createDirectories(destDir);
+        return destDir;
+    }
+
+    public static Path getLogsDir() throws IOException {
+        Path destDir = new File(BASE_DIR + File.separator + "testsuite" + File.separator + "target" +
+                File.separator + "archived-logs").toPath();
+        Files.createDirectories(destDir);
+        return destDir;
+    }
+
+    public static void logMeasurements(LogBuilder.Log log, Path path) throws IOException {
+        if (Files.notExists(path)) {
+            Files.write(path, (log.headerCSV + "\n").getBytes(UTF_8), StandardOpenOption.CREATE);
+        }
+        Files.write(path, (log.lineCSV + "\n").getBytes(UTF_8), StandardOpenOption.APPEND);
+        LOGGER.info("\n" + log.headerCSV + "\n" + log.lineCSV);
+    }
+
+    public static void logMeasurementsSummary(LogBuilder.Log log, Path path) throws IOException {
+        if (Files.notExists(path)) {
+            Files.write(path, (log.headerCSV + "\n").getBytes(UTF_8), StandardOpenOption.CREATE);
+            Files.write(path, (log.lineCSV + "\n").getBytes(UTF_8), StandardOpenOption.APPEND);
+            return;
+        }
+
+        List<String> lines = Files.lines(path).collect(Collectors.toCollection(ArrayList::new));
+        String currentHeader = lines.get(0);
+        String headerWithoutAppAndMode = Arrays.stream(log.headerCSV.split(",")).skip(2).collect(Collectors.joining(","));
+        if (!currentHeader.contains(headerWithoutAppAndMode)) {
+            lines.set(0, currentHeader + "," + headerWithoutAppAndMode);
+            currentHeader = lines.get(0);
+        }
+
+        String lastLine = lines.get(lines.size() - 1);
+
+        long headerLength = currentHeader.chars().filter(value -> value == ',').count();
+        long lastLineLength = lastLine.chars().filter(value -> value == ',').count();
+        if (lastLineLength < headerLength) {
+            String newDataWithoutAppAndMode = Arrays.stream(log.lineCSV.split(",")).skip(2).collect(Collectors.joining(","));
+            lines.set(lines.size() - 1, lastLine + "," + newDataWithoutAppAndMode);
+        } else {
+            lines.add(log.lineCSV);
+        }
+
+        Files.write(path, (lines.stream().collect(Collectors.joining(System.lineSeparator())) + System.lineSeparator()).getBytes());
+
+        LOGGER.info("\n" + log.headerCSV + "\n" + log.lineCSV);
+    }
+
+    /**
+     * List Jar file names failing regexp pattern check
+     *
+     * Note the pattern is hardcoded to look for jars not containing word 'redhat',
+     * but it could be easily generalized if needed.
+     *
+     * @param path to the root of directory tree
+     * @return list of offending jar paths
+     */
+    public static List<Path> listJarsFailingNameCheck(String path) throws IOException {
+        return Files.find(Paths.get(path),
+                500, //if this is not enough, something is broken anyway
+                (filePath, fileAttr) -> fileAttr.isRegularFile() && jarNamePattern.matcher(filePath.getFileName().toString()).matches())
+                .collect(Collectors.toList());
+    }
+
+    public static float[] parseStartStopTimestamps(File log) throws IOException {
+        float[] startedStopped = new float[] { -1f, -1f };
+        try (Scanner sc = new Scanner(log, UTF_8)) {
+            while (sc.hasNextLine()) {
+                String line = sc.nextLine();
+
+                Matcher m = startedPatternControlSymbols.matcher(line);
+                if (startedStopped[0] == -1f && m.matches()) {
+                    startedStopped[0] = Float.parseFloat(m.group(1));
+                    continue;
+                }
+
+                m = startedPattern.matcher(line);
+                if (startedStopped[0] == -1f && m.matches()) {
+                    startedStopped[0] = Float.parseFloat(m.group(1));
+                    continue;
+                }
+
+                m = stoppedPatternControlSymbols.matcher(line);
+                if (startedStopped[1] == -1f && m.matches()) {
+                    startedStopped[1] = Float.parseFloat(m.group(1));
+                    continue;
+                }
+
+                m = stoppedPattern.matcher(line);
+                if (startedStopped[1] == -1f && m.matches()) {
+                    startedStopped[1] = Float.parseFloat(m.group(1));
+                }
+            }
+        }
+        if (startedStopped[0] == -1f) {
+            LOGGER.error("Parsing start time from log failed. " +
+                    "Might not be the right time to call this method. The process might have ben killed before it wrote to log." +
+                    "Find " + log.getName() + " in your target dir.");
+        }
+        if (startedStopped[1] == -1f) {
+            LOGGER.error("Parsing stop time from log failed. " +
+                    "Might not be the right time to call this method. The process might have been killed before it wrote to log." +
+                    "Find " + log.getName() + " in your target dir.");
+        }
+        return startedStopped;
+    }
+}
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
new file mode 100644
index 0000000..e4bbeb4
--- /dev/null
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
@@ -0,0 +1,53 @@
+package org.kie.kogito.benchmarks.framework;
+
+import java.util.stream.Stream;
+
+import static org.kie.kogito.benchmarks.framework.Commands.getLocalMavenRepoDir;
+import static org.kie.kogito.benchmarks.framework.Commands.getQuarkusNativeProperties;
+
+public enum MvnCmds {
+    QUARKUS_JVM(new String[][] {
+            new String[] { "mvn", "clean", "package", /* "quarkus:build", */"-Dquarkus.package.output-name=quarkus" },
+            new String[] { "java", "-jar", "target/quarkus-runner.jar" }
+    }),
+    SPRING_BOOT_JVM(new String[][] {
+            new String[] { "mvn", "clean", "package", /* "quarkus:build", */"-Dquarkus.package.output-name=quarkus" },
+            new String[] { "java", "-jar", "target/quarkus-runner.jar" }
+    }),
+    DEV(new String[][] {
+            new String[] { "mvn", "clean", "quarkus:dev", "-Dmaven.repo.local=" + getLocalMavenRepoDir() }
+    }),
+    NATIVE(new String[][] {
+            Stream.concat(Stream.of("mvn", "clean", "compile", "package", "-Pnative"),
+                    getQuarkusNativeProperties().stream()).toArray(String[]::new),
+            new String[] { Commands.isThisWindows ? "target\\quarkus-runner" : "./target/quarkus-runner" }
+    }),
+    //    GENERATOR(new String[][] {
+    //            new String[] {
+    //                    "mvn",
+    //                    "io.quarkus:quarkus-maven-plugin:" + getQuarkusVersion() + ":create",
+    //                    "-DprojectGroupId=my-groupId",
+    //                    "-DprojectArtifactId=" + App.GENERATED_SKELETON.dir,
+    //                    "-DprojectVersion=1.0.0-SNAPSHOT",
+    //                    "-DpackageName=org.my.group"
+    //            }
+    //    }),
+    MVNW_DEV(new String[][] {
+            new String[] { Commands.MVNW, "quarkus:dev" }
+    }),
+    MVNW_JVM(new String[][] {
+            new String[] { Commands.MVNW, "clean", "compile", "quarkus:build", "-Dquarkus.package.output-name=quarkus" },
+            new String[] { "java", "-jar", "target/quarkus-app/quarkus-run.jar" }
+    }),
+    MVNW_NATIVE(new String[][] {
+            Stream.concat(Stream.of(Commands.MVNW, "clean", "compile", "package", "-Pnative", "-Dquarkus.package.output-name=quarkus"),
+                    getQuarkusNativeProperties().stream()).toArray(String[]::new),
+            new String[] { Commands.isThisWindows ? "target\\quarkus-runner" : "./target/quarkus-runner" }
+    });
+
+    public final String[][] mvnCmds;
+
+    MvnCmds(String[][] mvnCmds) {
+        this.mvnCmds = mvnCmds;
+    }
+}
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/RunInfo.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/RunInfo.java
new file mode 100644
index 0000000..e7f4599
--- /dev/null
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/RunInfo.java
@@ -0,0 +1,28 @@
+package org.kie.kogito.benchmarks.framework;
+
+import java.io.File;
+
+public class RunInfo {
+
+    private final Process process;
+    private final File runLog;
+    private final long timeToFirstOKRequest;
+
+    public RunInfo(Process process, File runLog, long timeToFirstOKRequest) {
+        this.process = process;
+        this.runLog = runLog;
+        this.timeToFirstOKRequest = timeToFirstOKRequest;
+    }
+
+    public Process getProcess() {
+        return process;
+    }
+
+    public File getRunLog() {
+        return runLog;
+    }
+
+    public long getTimeToFirstOKRequest() {
+        return timeToFirstOKRequest;
+    }
+}
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java
new file mode 100644
index 0000000..d44dc8e
--- /dev/null
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java
@@ -0,0 +1,33 @@
+package org.kie.kogito.benchmarks.framework;
+
+public enum URLContent {
+    SAMPLE_KOGITO_APP(new String[][] { new String[] { "http://localhost:8080/LoanApplication", "[]" },
+            new String[] { "http://localhost:8080/greeting", "1" } }),
+    JAX_RS_MINIMAL(new String[][] {
+            new String[] { "http://localhost:8080", "Hello from a simple JAX-RS app." },
+            new String[] { "http://localhost:8080/data/hello", "Hello World" }
+    }),
+    FULL_MICROPROFILE(new String[][] {
+            new String[] { "http://localhost:8080", "Hello from a full MicroProfile suite" },
+            new String[] { "http://localhost:8080/data/hello", "Hello World" },
+            new String[] { "http://localhost:8080/data/config/injected", "Config value as Injected by CDI Injected value" },
+            new String[] { "http://localhost:8080/data/config/lookup", "Config value from ConfigProvider lookup value" },
+            new String[] { "http://localhost:8080/data/resilience", "Fallback answer due to timeout" },
+            new String[] { "http://localhost:8080/health", "\"UP\"" },
+            new String[] { "http://localhost:8080/data/metric/timed", "Request is used in statistics, check with the Metrics call." },
+            new String[] { "http://localhost:8080/metrics", "ontroller_timed_request_seconds_count" },
+            new String[] { "http://localhost:8080/data/secured/test", "Jessie specific value" },
+            new String[] { "http://localhost:8080/openapi", "/resilience" },
+            new String[] { "http://localhost:8080/data/client/test/parameterValue=xxx", "Processed parameter value 'parameterValue=xxx'" }
+    }),
+    GENERATED_SKELETON(new String[][] {
+            new String[] { "http://localhost:8080", "Congratulations" },
+            new String[] { "http://localhost:8080/hello-spring", "Bye Spring" }
+    });
+
+    public final String[][] urlContent;
+
+    URLContent(String[][] urlContent) {
+        this.urlContent = urlContent;
+    }
+}
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java
new file mode 100644
index 0000000..f88118e
--- /dev/null
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java
@@ -0,0 +1,78 @@
+package org.kie.kogito.benchmarks.framework;
+
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.nio.charset.StandardCharsets;
+import java.util.Scanner;
+
+import org.apache.commons.lang3.StringUtils;
+import org.jboss.logging.Logger;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class WebpageTester {
+    private static final Logger LOGGER = Logger.getLogger(WebpageTester.class.getName());
+
+    /**
+     * Patiently try to wait for a web page and examine it
+     *
+     * @param url address
+     * @param timeoutS in seconds
+     * @param stringToLookFor string must be present on the page
+     */
+    public static long testWeb(String url, long timeoutS, String stringToLookFor, boolean measureTime) throws InterruptedException, IOException {
+        if (StringUtils.isBlank(url)) {
+            throw new IllegalArgumentException("url must not be empty");
+        }
+        if (timeoutS < 0) {
+            throw new IllegalArgumentException("timeoutS must be positive");
+        }
+        if (StringUtils.isBlank(stringToLookFor)) {
+            throw new IllegalArgumentException("stringToLookFor must contain a non-empty string");
+        }
+        String webPage = "";
+
+        long now = System.currentTimeMillis();
+        System.out.println("Now in the testWeb method: " + now);
+        final long startTime = now;
+        boolean found = false;
+        long foundTimestamp = -1L;
+        while (now - startTime < 1000 * timeoutS) {
+            URLConnection c = new URL(url).openConnection();
+            c.setRequestProperty("Accept", "*/*");
+            c.setConnectTimeout(500);
+            long requestStart = System.currentTimeMillis();
+            try (Scanner scanner = new Scanner(c.getInputStream(), StandardCharsets.UTF_8.toString())) {
+                scanner.useDelimiter("\\A");
+                webPage = scanner.hasNext() ? scanner.next() : "";
+            } catch (Exception e) {
+                LOGGER.debug("Waiting `" + stringToLookFor + "' to appear on " + url);
+            }
+            if (webPage.contains(stringToLookFor)) {
+                found = true;
+                if (measureTime) {
+                    foundTimestamp = System.currentTimeMillis();
+                    System.out.println("Found timestamp " + foundTimestamp);
+                    System.out.println("Request took " + (foundTimestamp - requestStart));
+                }
+                break;
+            }
+            if (!measureTime) {
+                Thread.sleep(500);
+            } else {
+                Thread.sleep(0, 100000);
+            }
+            now = System.currentTimeMillis();
+        }
+
+        String failureMessage = "Timeout " + timeoutS + "s was reached. " +
+                (StringUtils.isNotBlank(webPage) ? webPage + " must contain string: " : "Empty webpage does not contain string: ") +
+                "`" + stringToLookFor + "'";
+        if (!found) {
+            LOGGER.info(failureMessage);
+        }
+        assertTrue(found, failureMessage);
+        return foundTimestamp - startTime;
+    }
+}
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java
new file mode 100644
index 0000000..41aa220
--- /dev/null
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java
@@ -0,0 +1,112 @@
+package org.kie.kogito.benchmarks.framework;
+
+import java.util.regex.Pattern;
+
+/**
+ * Whitelists errors in log files.
+ *
+ * @author Michal Karm Babacek <ka...@redhat.com>
+ */
+public enum WhitelistLogLines {
+    SAMPLE_KOGITO_APP(new Pattern[] { Pattern.compile(".*") }),
+    JAX_RS_MINIMAL(new Pattern[] {
+            // Some artifacts names...
+            Pattern.compile(".*maven-error-diagnostics.*"),
+            Pattern.compile(".*errorprone.*"),
+    }),
+    FULL_MICROPROFILE(new Pattern[] {
+            // Some artifacts names...
+            Pattern.compile(".*maven-error-diagnostics.*"),
+            Pattern.compile(".*errorprone.*"),
+            // Needs fixing in the demo app?
+            Pattern.compile(".*TestSecureController.java.*"),
+            // Well, the RestClient demo probably should do some cleanup before shutdown...?
+            Pattern.compile(".*Closing a class org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient.*"),
+    }),
+    GENERATED_SKELETON(new Pattern[] {
+            // It so happens that the dummy skeleton tries to find Mongo. This is expected.
+            // See app-generated-skeleton/README.md for explanation of the scope.
+            Pattern.compile(".*The remote computer refused the network connection.*"),
+            // Harmless warning
+            Pattern.compile(".*The Agroal dependency is present but no JDBC datasources have been defined.*"),
+            // Due to our not exactly accurate application.properties, these expected warnings occur...
+            Pattern.compile(".*Unrecognized configuration key[ \\\\\"]*(" +
+                    "quarkus.oidc.auth-server-url|" +
+                    "quarkus.oidc.client-id|" +
+                    "quarkus.oidc-client.auth-server-url|" +
+                    "quarkus.oidc-client.client-id|" +
+                    "quarkus.oidc-client.token-path|" +
+                    "quarkus.oidc-client.discovery-enabled|" +
+                    "quarkus.smallrye-jwt.enabled|" +
+                    "quarkus.jaeger.service-name|" +
+                    "quarkus.jaeger.sampler-param|" +
+                    "quarkus.jaeger.endpoint|" +
+                    "quarkus.jaeger.sampler-type" +
+                    ")[ \\\\\"]*was provided.*"),
+            // Some artifacts names...
+            Pattern.compile(".*maven-error-diagnostics.*"),
+            Pattern.compile(".*errorprone.*"),
+            Pattern.compile(".*google-cloud-errorreporting-bom.*"),
+            // When GraalVM is used; unrelated to the test
+            Pattern.compile(".*forcing TieredStopAtLevel to full optimization because JVMCI is enabled.*"),
+            Pattern.compile(".*error_prone_annotations.*"),
+            Pattern.compile(".*SRGQL010000: Schema is null, or it has no operations. Not bootstrapping SmallRye GraphQL*"),
+            Pattern.compile(".*No WebJars were found in the project.*"),
+            Pattern.compile(
+                    ".*This application uses the MP Metrics API. The micrometer extension currently provides a compatibility layer that supports the MP Metrics API, but metric names and recorded values will be different. Note that the MP Metrics compatibility layer will move to a different extension in the future.*"),
+            // kubernetes-client tries to configure client from service account
+            Pattern.compile(".*Error reading service account token from.*"),
+            // hibernate-orm issues this warning when default datasource is ambiguous
+            // (no explicit configuration, none or multiple JDBC driver extensions)
+            // Result of DevServices support https://github.com/quarkusio/quarkus/pull/14960
+            Pattern.compile(".*Unable to determine a database type for default datasource.*"),
+    });
+
+    public final Pattern[] errs;
+
+    WhitelistLogLines(Pattern[] errs) {
+        this.errs = errs;
+    }
+
+    public final Pattern[] platformErrs() {
+        switch (OS.current()) {
+            case MAC:
+                return new Pattern[] {
+                        Pattern.compile(".*objcopy executable not found in PATH. Debug symbols will not be separated from executable.*"),
+                        Pattern.compile(".*That will result in a larger native image with debug symbols embedded in it.*"),
+                };
+        }
+        return new Pattern[] {};
+    }
+
+    enum OS {
+        MAC,
+        LINUX,
+        WINDOWS,
+        UNKNOWN;
+
+        public static OS current() {
+            if (isMac()) {
+                return MAC;
+            } else if (isWindows()) {
+                return WINDOWS;
+            } else if (isLinux()) {
+                return LINUX;
+            } else {
+                return UNKNOWN;
+            }
+        }
+    }
+
+    private static boolean isMac() {
+        return System.getProperty("os.name").toLowerCase().contains("mac");
+    }
+
+    private static boolean isWindows() {
+        return System.getProperty("os.name").toLowerCase().contains("windows");
+    }
+
+    private static boolean isLinux() {
+        return System.getProperty("os.name").toLowerCase().contains("linux");
+    }
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..c37181a
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.kie.kogito</groupId>
+    <artifactId>kogito-build-parent</artifactId>
+    <version>2.0.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>kogito-benchmarks</artifactId>
+  <packaging>pom</packaging>
+
+  <name></name>
+  <description></description>
+
+  <properties>
+    <maven.compiler.release>11</maven.compiler.release> <!-- Mainly because of the additions to the Process API introduced in Java 9 -->
+  </properties>
+
+  <modules>
+    <module>framework</module>
+    <module>sample-kogito-app</module>
+    <module>tests</module>
+  </modules>
+
+
+</project>
\ No newline at end of file
diff --git a/sample-kogito-app/pom.xml b/sample-kogito-app/pom.xml
new file mode 100644
index 0000000..e33c2b2
--- /dev/null
+++ b/sample-kogito-app/pom.xml
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.kie.kogito</groupId>
+    <artifactId>kogito-benchmarks</artifactId>
+    <version>2.0.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>sample-kogito-app</artifactId>
+
+  <properties>
+    <!-- Skip tests by default -->
+    <skipTests>true</skipTests>
+    <quarkus.version>1.11.5.Final</quarkus.version>
+    <kogito.version>1.4.1.Final</kogito.version>
+    <surefire.version>2.22.2</surefire.version>
+    <compiler.version>3.8.1</compiler.version>
+
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.release>11</maven.compiler.release>
+  </properties>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.kie.kogito</groupId>
+        <artifactId>kogito-quarkus-bom</artifactId>
+        <version>${kogito.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.kie.kogito</groupId>
+      <artifactId>kogito-quarkus</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.quarkus</groupId>
+      <artifactId>quarkus-resteasy</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.quarkus</groupId>
+      <artifactId>quarkus-resteasy-jackson</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.quarkus</groupId>
+      <artifactId>quarkus-smallrye-openapi</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.quarkus</groupId>
+      <artifactId>quarkus-smallrye-health</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.quarkus</groupId>
+      <artifactId>quarkus-arc</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>io.quarkus</groupId>
+      <artifactId>quarkus-junit5</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>io.rest-assured</groupId>
+      <artifactId>rest-assured</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>${compiler.version}</version>
+        <configuration>
+          <release>11</release>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <version>${surefire.version}</version>
+        <configuration>
+          <systemPropertyVariables>
+            <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
+            <maven.home>${maven.home}</maven.home>
+          </systemPropertyVariables>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>io.quarkus</groupId>
+        <artifactId>quarkus-maven-plugin</artifactId>
+        <version>${quarkus.version}</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>build</goal>
+              <goal>generate-code</goal>
+              <goal>generate-code-tests</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
\ No newline at end of file
diff --git a/sample-kogito-app/src/main/java/mypackage/GreetingEndpoint.java b/sample-kogito-app/src/main/java/mypackage/GreetingEndpoint.java
new file mode 100644
index 0000000..812c1b5
--- /dev/null
+++ b/sample-kogito-app/src/main/java/mypackage/GreetingEndpoint.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package mypackage;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import javax.enterprise.event.Observes;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import io.quarkus.runtime.StartupEvent;
+
+@Path("/")
+public class GreetingEndpoint {
+
+    private static final String template = "Hello, %s!";
+
+    @GET
+    @Path("/greeting")
+    @Produces(MediaType.APPLICATION_JSON)
+    public String greeting(@QueryParam("name") String name) {
+        System.out.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new java.util.Date(System.currentTimeMillis())));
+        String suffix = name != null ? name : "World";
+        return String.valueOf(System.currentTimeMillis());
+    }
+
+    void onStart(@Observes StartupEvent startup) {
+        System.out.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()));
+    }
+}
\ No newline at end of file
diff --git a/sample-kogito-app/src/main/resources/LoanApplication.bpmn b/sample-kogito-app/src/main/resources/LoanApplication.bpmn
new file mode 100644
index 0000000..df67fc3
--- /dev/null
+++ b/sample-kogito-app/src/main/resources/LoanApplication.bpmn
@@ -0,0 +1,259 @@
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:bpsim="http://www.bpsim.org/schemas/1.0" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:drools="http://www.jboss.org/drools" id="_an5RsHt5EDmPCqW-qXr3vw" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd http://www. [...]
+  <bpmn2:itemDefinition id="_amountItem" structureRef="Integer"/>
+  <bpmn2:itemDefinition id="_approvedItem" structureRef="Boolean"/>
+  <bpmn2:itemDefinition id="__A27A8002-A5DB-4448-9DC8-FC702E9AF322_namespaceInputXItem" structureRef="java.lang.String"/>
+  <bpmn2:itemDefinition id="__A27A8002-A5DB-4448-9DC8-FC702E9AF322_modelInputXItem" structureRef="java.lang.String"/>
+  <bpmn2:itemDefinition id="__A27A8002-A5DB-4448-9DC8-FC702E9AF322_decisionInputXItem" structureRef="java.lang.String"/>
+  <bpmn2:itemDefinition id="__A27A8002-A5DB-4448-9DC8-FC702E9AF322_amountInputXItem" structureRef="Integer"/>
+  <bpmn2:itemDefinition id="__A27A8002-A5DB-4448-9DC8-FC702E9AF322_mortgageApprovedOutputXItem" structureRef="Boolean"/>
+  <bpmn2:process id="LoanApplication" drools:packageName="com.example" drools:version="1.0" drools:adHoc="false" name="LoanApplication" isExecutable="true" processType="Public">
+    <bpmn2:property id="amount" itemSubjectRef="_amountItem" name="amount">
+      <bpmn2:extensionElements>
+        <drools:metaData name="customTags">
+          <drools:metaValue><![CDATA[tracked]]></drools:metaValue>
+        </drools:metaData>
+      </bpmn2:extensionElements>
+    </bpmn2:property>
+    <bpmn2:property id="approved" itemSubjectRef="_approvedItem" name="approved">
+      <bpmn2:extensionElements>
+        <drools:metaData name="customTags">
+          <drools:metaValue><![CDATA[tracked]]></drools:metaValue>
+        </drools:metaData>
+      </bpmn2:extensionElements>
+    </bpmn2:property>
+    <bpmn2:sequenceFlow id="_CA9E497D-E2DE-47B3-8CB6-7CEB6BCC302A" sourceRef="_293C116F-8607-4D9C-AFFE-9901DF5B9D33" targetRef="_E7D37FE2-7E1C-4AE2-8D5B-22D6AF4F0F6E"/>
+    <bpmn2:sequenceFlow id="_2C3AB5A8-9862-4AEB-8B74-7274A67CAB71" sourceRef="_7CA472D9-AB07-42B5-9D05-C2F6661F033C" targetRef="_C4FB5974-F764-42C7-95AA-DE6F6F14D167"/>
+    <bpmn2:sequenceFlow id="_33084556-2A2C-44ED-92D6-53C4957E6670" sourceRef="_7CA472D9-AB07-42B5-9D05-C2F6661F033C" targetRef="_293C116F-8607-4D9C-AFFE-9901DF5B9D33">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="http://www.java.com/java"><![CDATA[return approved;]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="_CC99D2A0-69E2-4488-A0DB-F01FB1DBE2CD" sourceRef="_A27A8002-A5DB-4448-9DC8-FC702E9AF322" targetRef="_7CA472D9-AB07-42B5-9D05-C2F6661F033C"/>
+    <bpmn2:sequenceFlow id="_C7CF5D2E-E5B1-4240-8DA8-4B75CE6EB936" sourceRef="_C4FB5974-F764-42C7-95AA-DE6F6F14D167" targetRef="_C8496017-134C-4C70-9D16-9E67C7D3CEBF"/>
+    <bpmn2:sequenceFlow id="_6FC874CA-F759-4F96-AE0E-9C397789E1C2" sourceRef="_0002A37F-EAEE-447C-A9D2-11458967B7AE" targetRef="_A27A8002-A5DB-4448-9DC8-FC702E9AF322">
+      <bpmn2:extensionElements>
+        <drools:metaData name="isAutoConnection.source">
+          <drools:metaValue><![CDATA[true]]></drools:metaValue>
+        </drools:metaData>
+        <drools:metaData name="isAutoConnection.target">
+          <drools:metaValue><![CDATA[true]]></drools:metaValue>
+        </drools:metaData>
+      </bpmn2:extensionElements>
+    </bpmn2:sequenceFlow>
+    <bpmn2:scriptTask id="_C4FB5974-F764-42C7-95AA-DE6F6F14D167" name="Declined" scriptFormat="http://www.java.com/java">
+      <bpmn2:extensionElements>
+        <drools:metaData name="elementname">
+          <drools:metaValue><![CDATA[Declined]]></drools:metaValue>
+        </drools:metaData>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>_2C3AB5A8-9862-4AEB-8B74-7274A67CAB71</bpmn2:incoming>
+      <bpmn2:outgoing>_C7CF5D2E-E5B1-4240-8DA8-4B75CE6EB936</bpmn2:outgoing>
+      <bpmn2:script>System.out.println("Mortgage has been DECLINED");</bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="_293C116F-8607-4D9C-AFFE-9901DF5B9D33" name="Approved" scriptFormat="http://www.java.com/java">
+      <bpmn2:extensionElements>
+        <drools:metaData name="elementname">
+          <drools:metaValue><![CDATA[Approved]]></drools:metaValue>
+        </drools:metaData>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>_33084556-2A2C-44ED-92D6-53C4957E6670</bpmn2:incoming>
+      <bpmn2:outgoing>_CA9E497D-E2DE-47B3-8CB6-7CEB6BCC302A</bpmn2:outgoing>
+      <bpmn2:script>System.out.println("Mortgage has been APPROVED");</bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="_E7D37FE2-7E1C-4AE2-8D5B-22D6AF4F0F6E">
+      <bpmn2:incoming>_CA9E497D-E2DE-47B3-8CB6-7CEB6BCC302A</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:exclusiveGateway id="_7CA472D9-AB07-42B5-9D05-C2F6661F033C" drools:dg="_2C3AB5A8-9862-4AEB-8B74-7274A67CAB71" gatewayDirection="Diverging" default="_2C3AB5A8-9862-4AEB-8B74-7274A67CAB71">
+      <bpmn2:incoming>_CC99D2A0-69E2-4488-A0DB-F01FB1DBE2CD</bpmn2:incoming>
+      <bpmn2:outgoing>_33084556-2A2C-44ED-92D6-53C4957E6670</bpmn2:outgoing>
+      <bpmn2:outgoing>_2C3AB5A8-9862-4AEB-8B74-7274A67CAB71</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:businessRuleTask id="_A27A8002-A5DB-4448-9DC8-FC702E9AF322" name="Mortgage Approval" implementation="http://www.jboss.org/drools/dmn">
+      <bpmn2:extensionElements>
+        <drools:metaData name="elementname">
+          <drools:metaValue><![CDATA[Mortgage Approval]]></drools:metaValue>
+        </drools:metaData>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>_6FC874CA-F759-4F96-AE0E-9C397789E1C2</bpmn2:incoming>
+      <bpmn2:outgoing>_CC99D2A0-69E2-4488-A0DB-F01FB1DBE2CD</bpmn2:outgoing>
+      <bpmn2:ioSpecification>
+        <bpmn2:dataInput id="_A27A8002-A5DB-4448-9DC8-FC702E9AF322_namespaceInputX" drools:dtype="java.lang.String" itemSubjectRef="__A27A8002-A5DB-4448-9DC8-FC702E9AF322_namespaceInputXItem" name="namespace"/>
+        <bpmn2:dataInput id="_A27A8002-A5DB-4448-9DC8-FC702E9AF322_decisionInputX" drools:dtype="java.lang.String" itemSubjectRef="__A27A8002-A5DB-4448-9DC8-FC702E9AF322_decisionInputXItem" name="decision"/>
+        <bpmn2:dataInput id="_A27A8002-A5DB-4448-9DC8-FC702E9AF322_modelInputX" drools:dtype="java.lang.String" itemSubjectRef="__A27A8002-A5DB-4448-9DC8-FC702E9AF322_modelInputXItem" name="model"/>
+        <bpmn2:dataInput id="_A27A8002-A5DB-4448-9DC8-FC702E9AF322_amountInputX" drools:dtype="Integer" itemSubjectRef="__A27A8002-A5DB-4448-9DC8-FC702E9AF322_amountInputXItem" name="amount"/>
+        <bpmn2:dataOutput id="_A27A8002-A5DB-4448-9DC8-FC702E9AF322_mortgageApprovedOutputX" drools:dtype="Boolean" itemSubjectRef="__A27A8002-A5DB-4448-9DC8-FC702E9AF322_mortgageApprovedOutputXItem" name="mortgageApproved"/>
+        <bpmn2:inputSet>
+          <bpmn2:dataInputRefs>_A27A8002-A5DB-4448-9DC8-FC702E9AF322_namespaceInputX</bpmn2:dataInputRefs>
+          <bpmn2:dataInputRefs>_A27A8002-A5DB-4448-9DC8-FC702E9AF322_decisionInputX</bpmn2:dataInputRefs>
+          <bpmn2:dataInputRefs>_A27A8002-A5DB-4448-9DC8-FC702E9AF322_modelInputX</bpmn2:dataInputRefs>
+          <bpmn2:dataInputRefs>_A27A8002-A5DB-4448-9DC8-FC702E9AF322_amountInputX</bpmn2:dataInputRefs>
+        </bpmn2:inputSet>
+        <bpmn2:outputSet>
+          <bpmn2:dataOutputRefs>_A27A8002-A5DB-4448-9DC8-FC702E9AF322_mortgageApprovedOutputX</bpmn2:dataOutputRefs>
+        </bpmn2:outputSet>
+      </bpmn2:ioSpecification>
+      <bpmn2:dataInputAssociation>
+        <bpmn2:targetRef>_A27A8002-A5DB-4448-9DC8-FC702E9AF322_namespaceInputX</bpmn2:targetRef>
+        <bpmn2:assignment>
+          <bpmn2:from xsi:type="bpmn2:tFormalExpression"><![CDATA[https://kiegroup.org/dmn/_28B07541-BCAA-4D8D-B754-05ED035496BA]]></bpmn2:from>
+          <bpmn2:to xsi:type="bpmn2:tFormalExpression"><![CDATA[_A27A8002-A5DB-4448-9DC8-FC702E9AF322_namespaceInputX]]></bpmn2:to>
+        </bpmn2:assignment>
+      </bpmn2:dataInputAssociation>
+      <bpmn2:dataInputAssociation>
+        <bpmn2:targetRef>_A27A8002-A5DB-4448-9DC8-FC702E9AF322_decisionInputX</bpmn2:targetRef>
+        <bpmn2:assignment>
+          <bpmn2:from xsi:type="bpmn2:tFormalExpression"><![CDATA[MortgageApproved]]></bpmn2:from>
+          <bpmn2:to xsi:type="bpmn2:tFormalExpression"><![CDATA[_A27A8002-A5DB-4448-9DC8-FC702E9AF322_decisionInputX]]></bpmn2:to>
+        </bpmn2:assignment>
+      </bpmn2:dataInputAssociation>
+      <bpmn2:dataInputAssociation>
+        <bpmn2:targetRef>_A27A8002-A5DB-4448-9DC8-FC702E9AF322_modelInputX</bpmn2:targetRef>
+        <bpmn2:assignment>
+          <bpmn2:from xsi:type="bpmn2:tFormalExpression"><![CDATA[MortgageApproval]]></bpmn2:from>
+          <bpmn2:to xsi:type="bpmn2:tFormalExpression"><![CDATA[_A27A8002-A5DB-4448-9DC8-FC702E9AF322_modelInputX]]></bpmn2:to>
+        </bpmn2:assignment>
+      </bpmn2:dataInputAssociation>
+      <bpmn2:dataInputAssociation>
+        <bpmn2:sourceRef>amount</bpmn2:sourceRef>
+        <bpmn2:targetRef>_A27A8002-A5DB-4448-9DC8-FC702E9AF322_amountInputX</bpmn2:targetRef>
+      </bpmn2:dataInputAssociation>
+      <bpmn2:dataOutputAssociation>
+        <bpmn2:sourceRef>_A27A8002-A5DB-4448-9DC8-FC702E9AF322_mortgageApprovedOutputX</bpmn2:sourceRef>
+        <bpmn2:targetRef>approved</bpmn2:targetRef>
+      </bpmn2:dataOutputAssociation>
+    </bpmn2:businessRuleTask>
+    <bpmn2:endEvent id="_C8496017-134C-4C70-9D16-9E67C7D3CEBF">
+      <bpmn2:incoming>_C7CF5D2E-E5B1-4240-8DA8-4B75CE6EB936</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:startEvent id="_0002A37F-EAEE-447C-A9D2-11458967B7AE">
+      <bpmn2:outgoing>_6FC874CA-F759-4F96-AE0E-9C397789E1C2</bpmn2:outgoing>
+    </bpmn2:startEvent>
+  </bpmn2:process>
+  <bpmndi:BPMNDiagram>
+    <bpmndi:BPMNPlane bpmnElement="LoanApplication">
+      <bpmndi:BPMNShape id="shape__0002A37F-EAEE-447C-A9D2-11458967B7AE" bpmnElement="_0002A37F-EAEE-447C-A9D2-11458967B7AE">
+        <dc:Bounds height="56" width="56" x="134" y="186"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__C8496017-134C-4C70-9D16-9E67C7D3CEBF" bpmnElement="_C8496017-134C-4C70-9D16-9E67C7D3CEBF">
+        <dc:Bounds height="56" width="56" x="830" y="262"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__A27A8002-A5DB-4448-9DC8-FC702E9AF322" bpmnElement="_A27A8002-A5DB-4448-9DC8-FC702E9AF322">
+        <dc:Bounds height="102" width="154" x="270" y="163"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__7CA472D9-AB07-42B5-9D05-C2F6661F033C" bpmnElement="_7CA472D9-AB07-42B5-9D05-C2F6661F033C">
+        <dc:Bounds height="56" width="56" x="504" y="186"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__E7D37FE2-7E1C-4AE2-8D5B-22D6AF4F0F6E" bpmnElement="_E7D37FE2-7E1C-4AE2-8D5B-22D6AF4F0F6E">
+        <dc:Bounds height="56" width="56" x="830" y="102"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__293C116F-8607-4D9C-AFFE-9901DF5B9D33" bpmnElement="_293C116F-8607-4D9C-AFFE-9901DF5B9D33">
+        <dc:Bounds height="102" width="154" x="618" y="79"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="shape__C4FB5974-F764-42C7-95AA-DE6F6F14D167" bpmnElement="_C4FB5974-F764-42C7-95AA-DE6F6F14D167">
+        <dc:Bounds height="102" width="154" x="618" y="239"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="edge_shape__0002A37F-EAEE-447C-A9D2-11458967B7AE_to_shape__A27A8002-A5DB-4448-9DC8-FC702E9AF322" bpmnElement="_6FC874CA-F759-4F96-AE0E-9C397789E1C2">
+        <di:waypoint x="190" y="214"/>
+        <di:waypoint x="270" y="214"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="edge_shape__C4FB5974-F764-42C7-95AA-DE6F6F14D167_to_shape__C8496017-134C-4C70-9D16-9E67C7D3CEBF" bpmnElement="_C7CF5D2E-E5B1-4240-8DA8-4B75CE6EB936">
+        <di:waypoint x="695" y="290"/>
+        <di:waypoint x="830" y="290"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="edge_shape__A27A8002-A5DB-4448-9DC8-FC702E9AF322_to_shape__7CA472D9-AB07-42B5-9D05-C2F6661F033C" bpmnElement="_CC99D2A0-69E2-4488-A0DB-F01FB1DBE2CD">
+        <di:waypoint x="424" y="214"/>
+        <di:waypoint x="504" y="214"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="edge_shape__7CA472D9-AB07-42B5-9D05-C2F6661F033C_to_shape__293C116F-8607-4D9C-AFFE-9901DF5B9D33" bpmnElement="_33084556-2A2C-44ED-92D6-53C4957E6670">
+        <di:waypoint x="532" y="186"/>
+        <di:waypoint x="532" y="130"/>
+        <di:waypoint x="618" y="130"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="edge_shape__7CA472D9-AB07-42B5-9D05-C2F6661F033C_to_shape__C4FB5974-F764-42C7-95AA-DE6F6F14D167" bpmnElement="_2C3AB5A8-9862-4AEB-8B74-7274A67CAB71">
+        <di:waypoint x="532" y="242"/>
+        <di:waypoint x="532.0000000000026" y="290"/>
+        <di:waypoint x="618" y="290"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="edge_shape__293C116F-8607-4D9C-AFFE-9901DF5B9D33_to_shape__E7D37FE2-7E1C-4AE2-8D5B-22D6AF4F0F6E" bpmnElement="_CA9E497D-E2DE-47B3-8CB6-7CEB6BCC302A">
+        <di:waypoint x="695" y="130"/>
+        <di:waypoint x="830" y="130"/>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+  <bpmn2:relationship type="BPSimData">
+    <bpmn2:extensionElements>
+      <bpsim:BPSimData>
+        <bpsim:Scenario id="default" name="Simulationscenario">
+          <bpsim:ScenarioParameters/>
+          <bpsim:ElementParameters elementRef="_0002A37F-EAEE-447C-A9D2-11458967B7AE">
+            <bpsim:TimeParameters>
+              <bpsim:ProcessingTime>
+                <bpsim:NormalDistribution mean="0" standardDeviation="0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters elementRef="_A27A8002-A5DB-4448-9DC8-FC702E9AF322">
+            <bpsim:TimeParameters>
+              <bpsim:ProcessingTime>
+                <bpsim:NormalDistribution mean="0" standardDeviation="0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+            <bpsim:ResourceParameters>
+              <bpsim:Availability>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:Availability>
+              <bpsim:Quantity>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:Quantity>
+            </bpsim:ResourceParameters>
+            <bpsim:CostParameters>
+              <bpsim:UnitCost>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:UnitCost>
+            </bpsim:CostParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters elementRef="_293C116F-8607-4D9C-AFFE-9901DF5B9D33">
+            <bpsim:TimeParameters>
+              <bpsim:ProcessingTime>
+                <bpsim:NormalDistribution mean="0" standardDeviation="0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+            <bpsim:ResourceParameters>
+              <bpsim:Availability>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:Availability>
+              <bpsim:Quantity>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:Quantity>
+            </bpsim:ResourceParameters>
+            <bpsim:CostParameters>
+              <bpsim:UnitCost>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:UnitCost>
+            </bpsim:CostParameters>
+          </bpsim:ElementParameters>
+          <bpsim:ElementParameters elementRef="_C4FB5974-F764-42C7-95AA-DE6F6F14D167">
+            <bpsim:TimeParameters>
+              <bpsim:ProcessingTime>
+                <bpsim:NormalDistribution mean="0" standardDeviation="0"/>
+              </bpsim:ProcessingTime>
+            </bpsim:TimeParameters>
+            <bpsim:ResourceParameters>
+              <bpsim:Availability>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:Availability>
+              <bpsim:Quantity>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:Quantity>
+            </bpsim:ResourceParameters>
+            <bpsim:CostParameters>
+              <bpsim:UnitCost>
+                <bpsim:FloatingParameter value="0"/>
+              </bpsim:UnitCost>
+            </bpsim:CostParameters>
+          </bpsim:ElementParameters>
+        </bpsim:Scenario>
+      </bpsim:BPSimData>
+    </bpmn2:extensionElements>
+    <bpmn2:source>_an5RsHt5EDmPCqW-qXr3vw</bpmn2:source>
+    <bpmn2:target>_an5RsHt5EDmPCqW-qXr3vw</bpmn2:target>
+  </bpmn2:relationship>
+</bpmn2:definitions>
\ No newline at end of file
diff --git a/sample-kogito-app/src/main/resources/MortgageApproval.dmn b/sample-kogito-app/src/main/resources/MortgageApproval.dmn
new file mode 100644
index 0000000..3ca0ed3
--- /dev/null
+++ b/sample-kogito-app/src/main/resources/MortgageApproval.dmn
@@ -0,0 +1,81 @@
+<dmn:definitions xmlns:dmn="http://www.omg.org/spec/DMN/20180521/MODEL/" xmlns="https://kiegroup.org/dmn/_28B07541-BCAA-4D8D-B754-05ED035496BA" xmlns:feel="http://www.omg.org/spec/DMN/20180521/FEEL/" xmlns:kie="http://www.drools.org/kie/dmn/1.2" xmlns:dmndi="http://www.omg.org/spec/DMN/20180521/DMNDI/" xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/" xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/" id="_905E3E6C-C346-4DA3-AA28-9ED076578E03" name="MortgageApproval" typeLanguage="htt [...]
+  <dmn:extensionElements/>
+  <dmn:inputData id="_23558138-A90D-4685-9B08-1ABD1DDD0A2A" name="amount">
+    <dmn:extensionElements/>
+    <dmn:variable id="_F42026F3-B207-41FF-8177-9954910B16A7" name="amount"/>
+  </dmn:inputData>
+  <dmn:decision id="_B0928930-EC40-4726-B8B1-4D9D5AEF1C82" name="mortgageApproved">
+    <dmn:extensionElements/>
+    <dmn:variable id="_C54E9DA3-878C-4713-B790-606CB9C01721" name="mortgageApproved" typeRef="boolean"/>
+    <dmn:informationRequirement id="_AF4E07ED-DE25-4E44-BB37-3FDF52056005">
+      <dmn:requiredInput href="#_23558138-A90D-4685-9B08-1ABD1DDD0A2A"/>
+    </dmn:informationRequirement>
+    <dmn:decisionTable id="_1D72E97A-473F-460A-A2F1-6602AF93FE3B" hitPolicy="FIRST" preferredOrientation="Rule-as-Row">
+      <dmn:input id="_3E5D7B3E-6C23-46B0-B385-2362EEB99ADB">
+        <dmn:inputExpression id="_D4F176DB-19F7-4B89-A1C6-57C126B9C4C3" typeRef="number">
+          <dmn:text>amount</dmn:text>
+        </dmn:inputExpression>
+      </dmn:input>
+      <dmn:output id="_2F517F3D-D449-4AAF-B150-B8DF82E3A1C3"/>
+      <dmn:annotation name="Description"/>
+      <dmn:rule id="_8C26AAB7-6CCE-4BD3-9F40-A0B7F0CC3848">
+        <dmn:inputEntry id="_7E7C0CAF-CDCA-4313-BDA9-EE13BCA8CB84">
+          <dmn:text>&lt;5000</dmn:text>
+        </dmn:inputEntry>
+        <dmn:outputEntry id="_67260421-5E3A-4131-BB54-8ACA4B36B2C3">
+          <dmn:text>true</dmn:text>
+        </dmn:outputEntry>
+        <dmn:annotationEntry>
+          <dmn:text>Less than 5000 is OK</dmn:text>
+        </dmn:annotationEntry>
+      </dmn:rule>
+      <dmn:rule id="_55C03D40-47FF-43D9-A15E-B08E5C53AE0E">
+        <dmn:inputEntry id="_07A49F5D-8932-441D-8AF7-59C93E7E5752">
+          <dmn:text>&gt;=5000</dmn:text>
+        </dmn:inputEntry>
+        <dmn:outputEntry id="_ABECCAE3-5CEA-45CC-B111-E504B0947318">
+          <dmn:text>false</dmn:text>
+        </dmn:outputEntry>
+        <dmn:annotationEntry>
+          <dmn:text>5000 and more is too much</dmn:text>
+        </dmn:annotationEntry>
+      </dmn:rule>
+    </dmn:decisionTable>
+  </dmn:decision>
+  <dmndi:DMNDI>
+    <dmndi:DMNDiagram id="_18B53C8E-F1CA-40CC-B2FF-4310382BDF60" name="DRG">
+      <di:extension>
+        <kie:ComponentsWidthsExtension>
+          <kie:ComponentWidths dmnElementRef="_1D72E97A-473F-460A-A2F1-6602AF93FE3B">
+            <kie:width>50</kie:width>
+            <kie:width>100</kie:width>
+            <kie:width>190</kie:width>
+            <kie:width>355</kie:width>
+          </kie:ComponentWidths>
+        </kie:ComponentsWidthsExtension>
+      </di:extension>
+      <dmndi:DMNShape id="dmnshape-drg-_23558138-A90D-4685-9B08-1ABD1DDD0A2A" dmnElementRef="_23558138-A90D-4685-9B08-1ABD1DDD0A2A" isCollapsed="false">
+        <dmndi:DMNStyle>
+          <dmndi:FillColor red="255" green="255" blue="255"/>
+          <dmndi:StrokeColor red="0" green="0" blue="0"/>
+          <dmndi:FontColor red="0" green="0" blue="0"/>
+        </dmndi:DMNStyle>
+        <dc:Bounds x="281" y="266" width="100" height="50"/>
+        <dmndi:DMNLabel/>
+      </dmndi:DMNShape>
+      <dmndi:DMNShape id="dmnshape-drg-_B0928930-EC40-4726-B8B1-4D9D5AEF1C82" dmnElementRef="_B0928930-EC40-4726-B8B1-4D9D5AEF1C82" isCollapsed="false">
+        <dmndi:DMNStyle>
+          <dmndi:FillColor red="255" green="255" blue="255"/>
+          <dmndi:StrokeColor red="0" green="0" blue="0"/>
+          <dmndi:FontColor red="0" green="0" blue="0"/>
+        </dmndi:DMNStyle>
+        <dc:Bounds x="255" y="108" width="154" height="72"/>
+        <dmndi:DMNLabel/>
+      </dmndi:DMNShape>
+      <dmndi:DMNEdge id="dmnedge-drg-_AF4E07ED-DE25-4E44-BB37-3FDF52056005" dmnElementRef="_AF4E07ED-DE25-4E44-BB37-3FDF52056005">
+        <di:waypoint x="331" y="291"/>
+        <di:waypoint x="332" y="180"/>
+      </dmndi:DMNEdge>
+    </dmndi:DMNDiagram>
+  </dmndi:DMNDI>
+</dmn:definitions>
\ No newline at end of file
diff --git a/sample-kogito-app/src/main/resources/application.properties b/sample-kogito-app/src/main/resources/application.properties
new file mode 100644
index 0000000..a733bf3
--- /dev/null
+++ b/sample-kogito-app/src/main/resources/application.properties
@@ -0,0 +1,36 @@
+#
+# Copyright 2020 Red Hat, Inc. and/or its affiliates.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+#https://quarkus.io/guides/openapi-swaggerui
+quarkus.swagger-ui.always-include=true
+
+kogito.service.url=http://localhost:8080
+
+# events configuration
+
+kafka.bootstrap.servers=localhost:9092
+
+mp.messaging.outgoing.kogito-processinstances-events.connector=smallrye-kafka
+mp.messaging.outgoing.kogito-processinstances-events.topic=kogito-processinstances-events
+mp.messaging.outgoing.kogito-processinstances-events.value.serializer=org.apache.kafka.common.serialization.StringSerializer
+
+mp.messaging.outgoing.kogito-usertaskinstances-events.connector=smallrye-kafka
+mp.messaging.outgoing.kogito-usertaskinstances-events.topic=kogito-usertaskinstances-events
+mp.messaging.outgoing.kogito-usertaskinstances-events.value.serializer=org.apache.kafka.common.serialization.StringSerializer
+
+mp.messaging.outgoing.kogito-variables-events.connector=smallrye-kafka
+mp.messaging.outgoing.kogito-variables-events.topic=kogito-variables-events
+mp.messaging.outgoing.kogito-variables-events.value.serializer=org.apache.kafka.common.serialization.StringSerializer
\ No newline at end of file
diff --git a/sample-kogito-app/threshold.properties b/sample-kogito-app/threshold.properties
new file mode 100644
index 0000000..ea23577
--- /dev/null
+++ b/sample-kogito-app/threshold.properties
@@ -0,0 +1,6 @@
+linux.jvm.time.to.first.ok.request.threshold.ms=3000
+linux.jvm.RSS.threshold.kB=380000
+linux.native.time.to.first.ok.request.threshold.ms=35
+linux.native.RSS.threshold.kB=90000
+windows.jvm.time.to.first.ok.request.threshold.ms=2000
+windows.jvm.RSS.threshold.kB=4000
diff --git a/tests/pom.xml b/tests/pom.xml
new file mode 100644
index 0000000..38a9d04
--- /dev/null
+++ b/tests/pom.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.kie.kogito</groupId>
+    <artifactId>kogito-benchmarks</artifactId>
+    <version>2.0.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>tests</artifactId>
+
+  <name></name>
+  <description></description>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.kie.kogito</groupId>
+        <artifactId>framework</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.kie.kogito</groupId>
+      <artifactId>framework</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.httpcomponents</groupId>
+      <artifactId>httpclient</artifactId>
+      <version>4.5.13</version>
+    </dependency>
+  </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
new file mode 100644
index 0000000..e9d93dd
--- /dev/null
+++ b/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
@@ -0,0 +1,367 @@
+package org.kie.kogito.benchmarks;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URI;
+import java.net.URL;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.time.Duration;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Scanner;
+import java.util.stream.Collectors;
+
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+import org.assertj.core.api.Assertions;
+import org.jboss.logging.Logger;
+import org.junit.jupiter.api.TestInfo;
+import org.kie.kogito.benchmarks.framework.App;
+import org.kie.kogito.benchmarks.framework.BuildResult;
+import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
+import org.kie.kogito.benchmarks.framework.LogBuilder;
+import org.kie.kogito.benchmarks.framework.Logs;
+import org.kie.kogito.benchmarks.framework.MvnCmds;
+import org.kie.kogito.benchmarks.framework.RunInfo;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.kie.kogito.benchmarks.framework.Commands.BASE_DIR;
+import static org.kie.kogito.benchmarks.framework.Commands.buildApp;
+import static org.kie.kogito.benchmarks.framework.Commands.cleanTarget;
+import static org.kie.kogito.benchmarks.framework.Commands.getOpenedFDs;
+import static org.kie.kogito.benchmarks.framework.Commands.getRSSkB;
+import static org.kie.kogito.benchmarks.framework.Commands.parsePort;
+import static org.kie.kogito.benchmarks.framework.Commands.processStopper;
+import static org.kie.kogito.benchmarks.framework.Commands.startApp;
+import static org.kie.kogito.benchmarks.framework.Commands.waitForTcpClosed;
+import static org.kie.kogito.benchmarks.framework.Logs.SKIP;
+import static org.kie.kogito.benchmarks.framework.Logs.appendln;
+import static org.kie.kogito.benchmarks.framework.Logs.archiveLog;
+import static org.kie.kogito.benchmarks.framework.Logs.checkListeningHost;
+import static org.kie.kogito.benchmarks.framework.Logs.checkLog;
+import static org.kie.kogito.benchmarks.framework.Logs.checkThreshold;
+import static org.kie.kogito.benchmarks.framework.Logs.getLogsDir;
+import static org.kie.kogito.benchmarks.framework.Logs.parseStartStopTimestamps;
+import static org.kie.kogito.benchmarks.framework.Logs.writeReport;
+
+public abstract class AbstractTemplateTest {
+
+    private static final Logger LOGGER = Logger.getLogger(StartStopTest.class.getName());
+
+    public static final int START_STOP_ITERATIONS = 3;
+    public static final String LOCALHOST = "http://localhost:8080";
+
+    public void startStop(TestInfo testInfo, App app) throws IOException, InterruptedException {
+        LOGGER.info("Testing app startStop: " + app.toString() + ", mode: " + app.mavenCommands.toString());
+
+        Process pA = null;
+        File buildLogA = null;
+        File runLogA = null;
+        StringBuilder whatIDidReport = new StringBuilder();
+        File appDir = app.getAppDir(BASE_DIR);
+        MvnCmds mvnCmds = app.mavenCommands;
+        String cn = testInfo.getTestClass().get().getCanonicalName();
+        String mn = testInfo.getTestMethod().get().getName();
+        try {
+            // Cleanup
+            cleanTarget(app);
+            Files.createDirectories(Paths.get(appDir.getAbsolutePath() + File.separator + "logs"));
+
+            // Build
+            BuildResult buildResult = buildApp(app, mn, cn, whatIDidReport);
+            buildLogA = buildResult.getBuildLog();
+
+            assertTrue(buildLogA.exists());
+            checkLog(cn, mn, app, mvnCmds, buildLogA);
+
+            // Prepare for run
+            List<Long> rssKbValues = new ArrayList<>(START_STOP_ITERATIONS);
+            List<Long> timeToFirstOKRequestValues = new ArrayList<>(START_STOP_ITERATIONS);
+            List<Long> startedInMsValues = new ArrayList<>(START_STOP_ITERATIONS);
+            List<Long> stoppedInMsValues = new ArrayList<>(START_STOP_ITERATIONS);
+            List<Long> openedFilesValues = new ArrayList<>(START_STOP_ITERATIONS);
+
+            for (int i = 0; i < START_STOP_ITERATIONS; i++) {
+                // Run
+                LOGGER.info("Running... round " + i);
+                RunInfo runInfo = startApp(app, whatIDidReport);
+                pA = runInfo.getProcess();
+                runLogA = runInfo.getRunLog();
+
+                LOGGER.info("Terminate and scan logs...");
+                pA.getInputStream().available(); // TODO Ask Karm
+
+                long rssKb = getRSSkB(pA.pid());
+                long openedFiles = getOpenedFDs(pA.pid());
+
+                processStopper(pA, false);
+
+                LOGGER.info("Gonna wait for ports closed...");
+                // Release ports
+                assertTrue(waitForTcpClosed("localhost", parsePort(app.urlContent.urlContent[0][0]), 60),
+                        "Main port is still open");
+                checkLog(cn, mn, app, mvnCmds, runLogA);
+                checkListeningHost(cn, mn, mvnCmds, runLogA);
+
+                float[] startedStopped = parseStartStopTimestamps(runLogA);
+                long startedInMs = (long) (startedStopped[0] * 1000);
+                long stoppedInMs = (long) (startedStopped[1] * 1000);
+
+                Path measurementsLog = Paths.get(getLogsDir(cn, mn).toString(), "measurements.csv");
+                LogBuilder.Log log = new LogBuilder()
+                        .app(app)
+                        .mode(mvnCmds)
+                        .buildTimeMs(buildResult.getBuildTimeMs())
+                        .timeToFirstOKRequestMs(runInfo.getTimeToFirstOKRequest())
+                        .startedInMs(startedInMs)
+                        .stoppedInMs(stoppedInMs)
+                        .rssKb(rssKb)
+                        .openedFiles(openedFiles)
+                        .build();
+                Logs.logMeasurements(log, measurementsLog);
+                appendln(whatIDidReport, "Measurements:");
+                appendln(whatIDidReport, log.headerMarkdown + "\n" + log.lineMarkdown);
+
+                rssKbValues.add(rssKb);
+                openedFilesValues.add(openedFiles);
+                timeToFirstOKRequestValues.add(runInfo.getTimeToFirstOKRequest());
+                startedInMsValues.add(startedInMs);
+                stoppedInMsValues.add(stoppedInMs);
+            }
+
+            long rssKbAvgWithoutMinMax = getAvgWithoutMinMax(rssKbValues);
+            long openedFilesAvgWithoutMinMax = getAvgWithoutMinMax(openedFilesValues);
+            long timeToFirstOKRequestAvgWithoutMinMax = getAvgWithoutMinMax(timeToFirstOKRequestValues);
+            long startedInMsAvgWithoutMinMax = getAvgWithoutMinMax(startedInMsValues);
+            long stoppedInMsAvgWithoutMinMax = getAvgWithoutMinMax(stoppedInMsValues);
+
+            Path measurementsSummary = Paths.get(getLogsDir(cn).toString(), "measurementsSummary.csv");
+
+            LogBuilder.Log log = new LogBuilder()
+                    .app(app)
+                    .mode(mvnCmds)
+                    .buildTimeMs(buildResult.getBuildTimeMs())
+                    .timeToFirstOKRequestMs(timeToFirstOKRequestAvgWithoutMinMax)
+                    .startedInMs(startedInMsAvgWithoutMinMax)
+                    .stoppedInMs(stoppedInMsAvgWithoutMinMax)
+                    .rssKb(rssKbAvgWithoutMinMax)
+                    .openedFiles(openedFilesAvgWithoutMinMax)
+                    .build();
+            Logs.logMeasurementsSummary(log, measurementsSummary);
+
+            LOGGER.info("AVG timeToFirstOKRequest without min and max values: " + timeToFirstOKRequestAvgWithoutMinMax);
+            LOGGER.info("AVG rssKb without min and max values: " + rssKbAvgWithoutMinMax);
+            checkThreshold(app, mvnCmds, rssKbAvgWithoutMinMax, timeToFirstOKRequestAvgWithoutMinMax, SKIP);
+        } finally {
+            // Make sure processes are down even if there was an exception / failure
+            if (pA != null) {
+                processStopper(pA, true);
+            }
+            // Archive logs no matter what
+            archiveLog(cn, mn, buildLogA);
+            archiveLog(cn, mn, runLogA);
+            writeReport(cn, mn, whatIDidReport.toString());
+            //cleanTarget(app);
+        }
+    }
+
+    private long getAvgWithoutMinMax(List<Long> listOfValues) { // TODO Median?
+        listOfValues.remove(Collections.min(listOfValues));
+        listOfValues.remove(Collections.max(listOfValues));
+        return (long) listOfValues.stream().mapToLong(val -> val).average().orElse(Long.MAX_VALUE);
+    }
+
+    public void loadTest(TestInfo testInfo, App app, HTTPRequestInfo requestInfo) throws IOException, InterruptedException {
+        LOGGER.info("Testing app startStop: " + app.toString() + ", mode: " + app.mavenCommands.toString());
+
+        Process pA = null;
+        File buildLogA = null;
+        File runLogA = null;
+        StringBuilder whatIDidReport = new StringBuilder();
+        File appDir = app.getAppDir(BASE_DIR);
+        MvnCmds mvnCmds = app.mavenCommands;
+        String cn = testInfo.getTestClass().get().getCanonicalName();
+        String mn = testInfo.getTestMethod().get().getName();
+        try {
+            // Cleanup
+            cleanTarget(app);
+            Files.createDirectories(Paths.get(appDir.getAbsolutePath() + File.separator + "logs"));
+
+            // Build
+            BuildResult buildResult = buildApp(app, mn, cn, whatIDidReport);
+            buildLogA = buildResult.getBuildLog();
+
+            assertTrue(buildLogA.exists());
+            checkLog(cn, mn, app, mvnCmds, buildLogA);
+
+            // Start the App
+            RunInfo runInfo = startApp(app, whatIDidReport);
+            pA = runInfo.getProcess();
+            runLogA = runInfo.getRunLog();
+
+            long rssKb = getRSSkB(pA.pid());
+
+            List<Long> values = new ArrayList<>(20000);
+
+
+            // Plain OLD Java "HTTP Client"
+//            long startTime = System.currentTimeMillis();
+//            for (int i = 0; i < 20000; i++) {
+//                long requestStartTime = System.nanoTime();
+//                HttpURLConnection c = (HttpURLConnection) new URL(requestInfo.getURI()).openConnection();
+//                requestInfo.getHeaders().forEach(c::setRequestProperty);
+//                c.setRequestMethod(requestInfo.getMethod());
+//                c.setDoOutput(true);
+//                c.setConnectTimeout(500);
+//
+//                try (OutputStream os = c.getOutputStream()) {
+//                    os.write(requestInfo.getBody().getBytes());
+//                }
+//
+//                try (Scanner scanner = new Scanner(c.getInputStream(), StandardCharsets.UTF_8.toString())) {
+//                    Assertions.assertThat(c.getResponseCode()).isEqualTo(requestInfo.getExpectedResponseStatusCode());
+////                    System.out.println("Response code: " + c.getResponseCode());
+//                    scanner.useDelimiter("\\A");
+//                    String webPage = scanner.hasNext() ? scanner.next() : "";
+////                    System.out.println("Page is: " + webPage);
+//                } catch (Exception e) {
+//                    LOGGER.info("Error when executing request on " + requestInfo.getURI(), e);
+//                }
+//
+//                long requestEndTime = System.nanoTime();
+//                long duration = requestEndTime - requestStartTime;
+//                values.add(duration);
+////                System.out.println(duration);
+//            }
+//            long endTime = System.currentTimeMillis();
+
+
+            // Java 11 HTTP Client
+
+//            HttpClient httpClient = HttpClient.newHttpClient();
+//            HttpRequest.Builder requestBuilder = HttpRequest.newBuilder(URI.create(requestInfo.getURI()))
+//                    .POST(HttpRequest.BodyPublishers.ofString(requestInfo.getBody()));
+//            requestInfo.getHeaders().forEach(requestBuilder::header);
+//            HttpRequest request = requestBuilder.build();
+//
+//
+//
+//
+//            long startTime = System.currentTimeMillis();
+//            for (int i = 0; i < 20000; i++) {
+//                long requestStartTime = System.nanoTime();
+//                HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
+//                Assertions.assertThat(response.statusCode()).isEqualTo(requestInfo.getExpectedResponseStatusCode());
+////                System.out.println("Response code: " + response.statusCode());
+////                System.out.println("Page is: " + response.body());
+//                long requestEndTime = System.nanoTime();
+//                long duration = requestEndTime - requestStartTime;
+//                values.add(duration);
+////                System.out.println(duration);
+//            }
+//            long endTime = System.currentTimeMillis();
+
+
+
+            // Apache HTTP Client 4
+            long startTime;
+            try (CloseableHttpClient client = HttpClients.createDefault()){
+                HttpPost postRequest = new HttpPost(requestInfo.getURI());
+                postRequest.setEntity(new StringEntity(requestInfo.getBody()));
+                requestInfo.getHeaders().forEach(postRequest::setHeader);
+
+                startTime = System.currentTimeMillis();
+                for (int i = 0; i < 20000; i++) {
+                    long requestStartTime = System.nanoTime();
+                    try (CloseableHttpResponse response = client.execute(postRequest)) {
+                        Assertions.assertThat(response.getStatusLine().getStatusCode()).isEqualTo(requestInfo.getExpectedResponseStatusCode());
+//                        System.out.println("Response code: " + response.getStatusLine().getStatusCode());
+//                        System.out.println("Page is: " + EntityUtils.toString(response.getEntity()));
+                        EntityUtils.consume(response.getEntity());
+                    }
+                    long requestEndTime = System.nanoTime();
+                    long duration = requestEndTime - requestStartTime;
+                    values.add(duration);
+                }
+            }
+            long endTime = System.currentTimeMillis();
+
+            System.out.println("First response time: " + values.get(0));
+            System.out.println("Second response time: " + values.get(1));
+            System.out.println("Third response time: " + values.get(2));
+            System.out.println("Average response time: " + values.stream().mapToLong(Long::longValue).skip(1).average());
+            System.out.println("Total duration: " + (endTime - startTime));
+
+            long rssKbFinal = getRSSkB(pA.pid());
+            long openedFiles = getOpenedFDs(pA.pid()); // TODO also do before the "test" itself?
+
+            // Stop the App
+            processStopper(pA, false);
+
+            LOGGER.info("Gonna wait for ports closed...");
+            // Release ports
+            assertTrue(waitForTcpClosed("localhost", parsePort(app.urlContent.urlContent[0][0]), 60),
+                       "Main port is still open");
+            checkLog(cn, mn, app, mvnCmds, runLogA);
+            checkListeningHost(cn, mn, mvnCmds, runLogA);
+
+            float[] startedStopped = parseStartStopTimestamps(runLogA);// Don't need this in the load test?
+            long startedInMs = (long) (startedStopped[0] * 1000);
+            long stoppedInMs = (long) (startedStopped[1] * 1000);
+
+            Path measurementsLog = Paths.get(getLogsDir(cn, mn).toString(), "measurements.csv");
+            Path measurementsSummaryLog = Paths.get(getLogsDir(cn).toString(), "measurementsSummary.csv");
+            LogBuilder.Log log = new LogBuilder()
+                    .app(app)
+                    .mode(mvnCmds)
+                    .buildTimeMs(buildResult.getBuildTimeMs())
+                    .timeToFirstOKRequestMs(runInfo.getTimeToFirstOKRequest())
+                    .startedInMs(startedInMs)
+                    .stoppedInMs(stoppedInMs)
+                    .rssKb(rssKb)
+                    .rssKbFinal(rssKbFinal)
+                    .openedFiles(openedFiles)
+                    .build();
+
+            Logs.logMeasurements(log, measurementsLog);
+
+            LogBuilder.Log summaryLog = new LogBuilder()
+                    .app(app)
+                    .mode(mvnCmds)
+                    .rssKbFinal(rssKbFinal)
+                    .build();
+            Logs.logMeasurementsSummary(summaryLog, measurementsSummaryLog);
+            appendln(whatIDidReport, "Measurements:");
+            appendln(whatIDidReport, log.headerMarkdown + "\n" + log.lineMarkdown);
+
+            //checkThreshold(app, mvnCmds, rssKbAvgWithoutMinMax, timeToFirstOKRequestAvgWithoutMinMax, SKIP);
+        } finally {
+            // Make sure processes are down even if there was an exception / failure
+            if (pA != null) {
+                processStopper(pA, true);
+            }
+            // Archive logs no matter what
+            archiveLog(cn, mn, buildLogA);
+            archiveLog(cn, mn, runLogA);
+            writeReport(cn, mn, whatIDidReport.toString());
+            //cleanTarget(app);
+
+        }
+    }
+
+}
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusLargeTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusLargeTest.java
new file mode 100644
index 0000000..bce1104
--- /dev/null
+++ b/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusLargeTest.java
@@ -0,0 +1,69 @@
+package org.kie.kogito.benchmarks;
+
+import static org.kie.kogito.benchmarks.framework.Logs.getLogsDir;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+import org.kie.kogito.benchmarks.framework.App;
+import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
+import org.kie.kogito.benchmarks.framework.LogBuilder;
+import org.kie.kogito.benchmarks.framework.Logs;
+
+public class QuarkusLargeTest extends AbstractTemplateTest {
+
+    private static final App APP_TO_TEST = App.SAMPLE_KOGITO_APP_QUARKUS_JVM;
+
+    @Test
+    public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
+        startStop(testInfo, APP_TO_TEST);
+    }
+
+    @Test
+    public void loadTest(TestInfo testInfo) throws IOException, InterruptedException {
+        HTTPRequestInfo requestInfo = HTTPRequestInfo.builder()
+                .URI(LOCALHOST + "/LoanApplication")
+                .body("{\"amount\":\"2000\"}")
+                .method("POST")
+                .header("Accept", "*/*")
+                .header("Content-Type", "application/json")
+                .expectedResponseStatusCode(201)
+                .build(); // This may be directly replaced for example by Apache-specific class, but this keeps
+                          // it detached from any framework
+
+        loadTest(testInfo, APP_TO_TEST, requestInfo);
+
+//        Path measurementLogSummary = Paths.get(getLogsDir(testInfo.getTestClass().get().getCanonicalName()).toString(), "measurementsSummary.csv");
+//
+//        for (App app : new App[]{APP_TO_TEST, App.SAMPLE_KOGITO_APP_SPRING_BOOT}) {
+//            LogBuilder.Log log = new LogBuilder()
+//                    .app(app)
+//                    .mode(app.mavenCommands)
+//                    .buildTimeMs(100)
+//                    .timeToFirstOKRequestMs(200)
+//                    .startedInMs(300)
+//                    .stoppedInMs(400)
+//                    .rssKb(500)
+//                    .openedFiles(700)
+//                    .build();
+//
+//            LogBuilder.Log log2 = new LogBuilder()
+//                    .app(app)
+//                    .mode(app.mavenCommands)
+//                    .rssKbFinal(600)
+//                    .build();
+//
+//            Logs.logMeasurementsSummary(log, measurementLogSummary);
+//            Logs.logMeasurementsSummary(log2, measurementLogSummary);
+//
+//
+//            Logs.logMeasurementsSummary(log, measurementLogSummary);
+//            Logs.logMeasurementsSummary(log2, measurementLogSummary);
+//        }
+
+
+    }
+}
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusSmallTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusSmallTest.java
new file mode 100644
index 0000000..cbaf805
--- /dev/null
+++ b/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusSmallTest.java
@@ -0,0 +1,22 @@
+package org.kie.kogito.benchmarks;
+
+import java.io.IOException;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+import org.kie.kogito.benchmarks.framework.App;
+
+public class QuarkusSmallTest extends AbstractTemplateTest {
+
+    private static final App APP_TO_TEST = App.SAMPLE_KOGITO_APP_QUARKUS_JVM;
+
+    @Test
+    public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
+        startStop(testInfo, APP_TO_TEST);
+    }
+
+    @Test
+    public void loadTest(TestInfo testInfo) {
+        // TODO
+    }
+}
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusTest.java
new file mode 100644
index 0000000..0a598e3
--- /dev/null
+++ b/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusTest.java
@@ -0,0 +1,9 @@
+package org.kie.kogito.benchmarks;
+
+import org.kie.kogito.benchmarks.framework.MvnCmds;
+
+public abstract class QuarkusTest extends AbstractTemplateTest {
+
+    protected static final MvnCmds MavenCommands = MvnCmds.QUARKUS_JVM;
+
+}
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/StartStopTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/StartStopTest.java
new file mode 100644
index 0000000..04c50e9
--- /dev/null
+++ b/tests/src/test/java/org/kie/kogito/benchmarks/StartStopTest.java
@@ -0,0 +1,214 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.kie.kogito.benchmarks;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+import org.jboss.logging.Logger;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+import org.kie.kogito.benchmarks.framework.App;
+import org.kie.kogito.benchmarks.framework.Commands;
+import org.kie.kogito.benchmarks.framework.LogBuilder;
+import org.kie.kogito.benchmarks.framework.Logs;
+import org.kie.kogito.benchmarks.framework.MvnCmds;
+import org.kie.kogito.benchmarks.framework.WebpageTester;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.kie.kogito.benchmarks.framework.Commands.cleanTarget;
+import static org.kie.kogito.benchmarks.framework.Commands.getBaseDir;
+import static org.kie.kogito.benchmarks.framework.Commands.getBuildCommand;
+import static org.kie.kogito.benchmarks.framework.Commands.getOpenedFDs;
+import static org.kie.kogito.benchmarks.framework.Commands.getRSSkB;
+import static org.kie.kogito.benchmarks.framework.Commands.getRunCommand;
+import static org.kie.kogito.benchmarks.framework.Commands.parsePort;
+import static org.kie.kogito.benchmarks.framework.Commands.processStopper;
+import static org.kie.kogito.benchmarks.framework.Commands.runCommand;
+import static org.kie.kogito.benchmarks.framework.Commands.waitForTcpClosed;
+import static org.kie.kogito.benchmarks.framework.Logs.SKIP;
+import static org.kie.kogito.benchmarks.framework.Logs.appendln;
+import static org.kie.kogito.benchmarks.framework.Logs.appendlnSection;
+import static org.kie.kogito.benchmarks.framework.Logs.archiveLog;
+import static org.kie.kogito.benchmarks.framework.Logs.checkListeningHost;
+import static org.kie.kogito.benchmarks.framework.Logs.checkLog;
+import static org.kie.kogito.benchmarks.framework.Logs.checkThreshold;
+import static org.kie.kogito.benchmarks.framework.Logs.getLogsDir;
+import static org.kie.kogito.benchmarks.framework.Logs.parseStartStopTimestamps;
+import static org.kie.kogito.benchmarks.framework.Logs.writeReport;
+
+@Tag("startstop")
+public class StartStopTest {
+
+    private static final Logger LOGGER = Logger.getLogger(StartStopTest.class.getName());
+
+    public static final String BASE_DIR = getBaseDir();
+
+    public void testRuntime(TestInfo testInfo, App app, MvnCmds mvnCmds) throws IOException, InterruptedException {
+        LOGGER.info("Testing app: " + app.toString() + ", mode: " + mvnCmds.toString());
+
+        Process pA = null;
+        File buildLogA = null;
+        File runLogA = null;
+        StringBuilder whatIDidReport = new StringBuilder();
+        File appDir = new File(BASE_DIR + File.separator + app.dir);
+        String cn = testInfo.getTestClass().get().getCanonicalName();
+        String mn = testInfo.getTestMethod().get().getName();
+        try {
+            // Cleanup
+            cleanTarget(app);
+            Files.createDirectories(Paths.get(appDir.getAbsolutePath() + File.separator + "logs"));
+
+            // Build
+            buildLogA = new File(appDir.getAbsolutePath() + File.separator + "logs" + File.separator + mvnCmds.name().toLowerCase() + "-build.log");
+            ExecutorService buildService = Executors.newFixedThreadPool(1);
+
+            List<String> baseBuildCmd = new ArrayList<>();
+            baseBuildCmd.addAll(Arrays.asList(mvnCmds.mvnCmds[0]));
+            //baseBuildCmd.add("-Dquarkus.version=" + getQuarkusVersion());
+            List<String> cmd = getBuildCommand(baseBuildCmd.toArray(new String[0]));
+
+            buildService.submit(new Commands.ProcessRunner(appDir, buildLogA, cmd, 20)); // TODO exit code handling
+            appendln(whatIDidReport, "# " + cn + ", " + mn);
+            appendln(whatIDidReport, (new Date()).toString());
+            appendln(whatIDidReport, appDir.getAbsolutePath());
+            appendlnSection(whatIDidReport, String.join(" ", cmd));
+            long buildStarts = System.currentTimeMillis();
+            buildService.shutdown();
+            buildService.awaitTermination(30, TimeUnit.MINUTES);
+            long buildEnds = System.currentTimeMillis();
+
+            assertTrue(buildLogA.exists());
+            checkLog(cn, mn, app, mvnCmds, buildLogA);
+
+            List<Long> rssKbList = new ArrayList<>(10);
+            List<Long> timeToFirstOKRequestList = new ArrayList<>(10);
+            for (int i = 0; i < 1; i++) {
+                // Run
+                LOGGER.info("Running... round " + i);
+                runLogA = new File(appDir.getAbsolutePath() + File.separator + "logs" + File.separator + mvnCmds.name().toLowerCase() + "-run.log");
+                cmd = getRunCommand(mvnCmds.mvnCmds[1]);
+                appendln(whatIDidReport, appDir.getAbsolutePath());
+                appendlnSection(whatIDidReport, String.join(" ", cmd));
+                long runStarts = System.currentTimeMillis();
+                pA = runCommand(cmd, appDir, runLogA);
+                long runEnds = System.currentTimeMillis();
+                System.out.println("RunEnds (" + runEnds + ") - RunStarts (" + runStarts + ") : " + (runEnds - runStarts));
+                // Test web pages
+                long timeToFirstOKRequest = WebpageTester.testWeb(app.urlContent.urlContent[0][0], 10, app.urlContent.urlContent[0][1], true);
+                LOGGER.info("Testing web page content...");
+                for (String[] urlContent : app.urlContent.urlContent) {
+                    WebpageTester.testWeb(urlContent[0], 5, urlContent[1], false);
+                }
+
+                LOGGER.info("Terminate and scan logs...");
+                pA.getInputStream().available(); // TODO Ask Karm
+
+                long rssKb = getRSSkB(pA.pid());
+                long openedFiles = getOpenedFDs(pA.pid());
+
+                processStopper(pA, false);
+
+                LOGGER.info("Gonna wait for ports closed...");
+                // Release ports
+                assertTrue(waitForTcpClosed("localhost", parsePort(app.urlContent.urlContent[0][0]), 60),
+                        "Main port is still open");
+                checkLog(cn, mn, app, mvnCmds, runLogA);
+                checkListeningHost(cn, mn, mvnCmds, runLogA);
+
+                float[] startedStopped = parseStartStopTimestamps(runLogA);
+
+                Path measurementsLog = Paths.get(getLogsDir(cn, mn).toString(), "measurements.csv");
+                LogBuilder.Log log = new LogBuilder()
+                        .app(app)
+                        .mode(mvnCmds)
+                        .buildTimeMs(buildEnds - buildStarts)
+                        .timeToFirstOKRequestMs(timeToFirstOKRequest)
+                        .startedInMs((long) (startedStopped[0] * 1000))
+                        .stoppedInMs((long) (startedStopped[1] * 1000))
+                        .rssKb(rssKb)
+                        .openedFiles(openedFiles)
+                        .build();
+                Logs.logMeasurements(log, measurementsLog);
+                appendln(whatIDidReport, "Measurements:");
+                appendln(whatIDidReport, log.headerMarkdown + "\n" + log.lineMarkdown);
+
+                rssKbList.add(rssKb);
+                timeToFirstOKRequestList.add(timeToFirstOKRequest);
+            }
+
+            long rssKbAvgWithoutMinMax = getAvgWithoutMinMax(rssKbList);
+            long timeToFirstOKRequestAvgWithoutMinMax = getAvgWithoutMinMax(timeToFirstOKRequestList);
+            LOGGER.info("AVG timeToFirstOKRequest without min and max values: " + timeToFirstOKRequestAvgWithoutMinMax);
+            LOGGER.info("AVG rssKb without min and max values: " + rssKbAvgWithoutMinMax);
+            checkThreshold(app, mvnCmds, rssKbAvgWithoutMinMax, timeToFirstOKRequestAvgWithoutMinMax, SKIP);
+        } finally {
+            // Make sure processes are down even if there was an exception / failure
+            if (pA != null) {
+                processStopper(pA, true);
+            }
+            // Archive logs no matter what
+            archiveLog(cn, mn, buildLogA);
+            archiveLog(cn, mn, runLogA);
+            writeReport(cn, mn, whatIDidReport.toString());
+            //cleanTarget(app);
+        }
+    }
+
+    private long getAvgWithoutMinMax(List<Long> listOfValues) {
+        //        listOfValues.remove(Collections.min(listOfValues));
+        //        listOfValues.remove(Collections.max(listOfValues));
+        return (long) listOfValues.stream().mapToLong(val -> val).average().orElse(Long.MAX_VALUE);
+    }
+
+    @Test
+    public void kogito(TestInfo testInfo) throws IOException, InterruptedException {
+        testRuntime(testInfo, App.SAMPLE_KOGITO_APP_QUARKUS_JVM, MvnCmds.QUARKUS_JVM);
+    }
+
+    //    @Test
+    //    public void jaxRsMinimalJVM(TestInfo testInfo) throws IOException, InterruptedException {
+    //        testRuntime(testInfo, App.JAX_RS_MINIMAL, MvnCmds.JVM);
+    //    }
+    //
+    //    @Test
+    //    @Tag("native")
+    //    public void jaxRsMinimalNative(TestInfo testInfo) throws IOException, InterruptedException {
+    //        testRuntime(testInfo, App.JAX_RS_MINIMAL, MvnCmds.NATIVE);
+    //    }
+    //
+    //    @Test
+    //    public void fullMicroProfileJVM(TestInfo testInfo) throws IOException, InterruptedException {
+    //        testRuntime(testInfo, App.FULL_MICROPROFILE, MvnCmds.JVM);
+    //    }
+    //
+    //    @Test
+    //    @Tag("native")
+    //    public void fullMicroProfileNative(TestInfo testInfo) throws IOException, InterruptedException {
+    //        testRuntime(testInfo, App.FULL_MICROPROFILE, MvnCmds.NATIVE);
+    //    }
+}
diff --git a/tests/src/test/resources/log4j2.xml b/tests/src/test/resources/log4j2.xml
new file mode 100644
index 0000000..1faad0e
--- /dev/null
+++ b/tests/src/test/resources/log4j2.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="WARN">
+    <Appenders>
+        <Console name="Console" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{%-5p}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=green, DEBUG=green bold, TRACE=blue} [%style{%C{1.}}{cyan}] (%style{%M}{magenta}) %m%n"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+        <Root level="info">
+            <AppenderRef ref="Console"/>
+        </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 22/38: BAQE-1912 - Parameterize CPU affinity

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 73d8aeb33319cf0d94d4c62963c41991c4746b89
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Wed Jul 7 21:12:50 2021 +0200

    BAQE-1912 - Parameterize CPU affinity
---
 kogito-benchmarks-tests/pom.xml                                      | 5 +++++
 .../test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java    | 5 ++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/kogito-benchmarks-tests/pom.xml b/kogito-benchmarks-tests/pom.xml
index be0a998..e1d993e 100644
--- a/kogito-benchmarks-tests/pom.xml
+++ b/kogito-benchmarks-tests/pom.xml
@@ -16,9 +16,13 @@
   <description>Benchmarks of sample Kogito apps themselves</description>
 
   <properties>
+    <!-- Framework -->
     <appsDir>apps-dir-needs-to-be-specified</appsDir>
     <archivedLogsDir>${project.basedir}/archived-logs</archivedLogsDir>
 
+    <!-- Test Suite -->
+    <cpuAffinity>4</cpuAffinity> <!-- Positive number sets the CPU affinity explicitly -->
+
     <version.org.apache.httpcomponents>4.5.13</version.org.apache.httpcomponents>
   </properties>
 
@@ -57,6 +61,7 @@
           <systemPropertyVariables>
             <appsDir>${appsDir}</appsDir>
             <archivedLogsDir>${archivedLogsDir}</archivedLogsDir>
+            <cpuAffinity>${cpuAffinity}</cpuAffinity>
           </systemPropertyVariables>
         </configuration>
       </plugin>
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
index 3763365..d144781 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
@@ -68,6 +68,7 @@ public abstract class AbstractTemplateTest {
     private static final Logger logger = LoggerFactory.getLogger(AbstractTemplateTest.class);
 
     public static final int START_STOP_ITERATIONS = 3;
+    public static final int CPU_AFFINITY = Integer.parseInt(System.getProperty("cpuAffinity"));
     public static final String LOCALHOST = "http://localhost:8080";
 
     public void startStop(TestInfo testInfo, App app) throws IOException, InterruptedException {
@@ -223,7 +224,9 @@ public abstract class AbstractTemplateTest {
 
             // Start the App
             RunInfo runInfo = startApp(app, whatIDidReport);
-            setCPUAffinity(runInfo, 4);
+            if (CPU_AFFINITY > 0) {
+                setCPUAffinity(runInfo, CPU_AFFINITY);
+            }
             pA = runInfo.getProcess();
             runLogA = runInfo.getRunLog();
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 32/38: Increase time to first ok for PMML forest benchmark

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 1dd72f9ba861711f55b739a93e1f3428604a6bd9
Author: Jiri Petrlik <ji...@gmail.com>
AuthorDate: Wed Jan 26 13:43:22 2022 +0100

    Increase time to first ok for PMML forest benchmark
---
 .../pmml-kie-benchmarks-forest-quarkus-mvn/threshold.properties         | 2 +-
 .../pmml-kie-benchmarks-forest-springboot/threshold.properties          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-quarkus-mvn/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-quarkus-mvn/threshold.properties
index 35ec0ee..edcc331 100644
--- a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-quarkus-mvn/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-quarkus-mvn/threshold.properties
@@ -1,4 +1,4 @@
-linux.jvm.time.to.first.ok.request.threshold.ms=34000
+linux.jvm.time.to.first.ok.request.threshold.ms=70000
 linux.jvm.RSS.threshold.kB=3800000
 linux.native.time.to.first.ok.request.threshold.ms=35
 linux.native.RSS.threshold.kB=90000
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-springboot/threshold.properties
index 35ec0ee..edcc331 100644
--- a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-springboot/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-springboot/threshold.properties
@@ -1,4 +1,4 @@
-linux.jvm.time.to.first.ok.request.threshold.ms=34000
+linux.jvm.time.to.first.ok.request.threshold.ms=70000
 linux.jvm.RSS.threshold.kB=3800000
 linux.native.time.to.first.ok.request.threshold.ms=35
 linux.native.RSS.threshold.kB=90000


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 01/38: Initial commit

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit a7007be3f60d20e83ab1e4839ae30be9488f9bc7
Author: Marián Macik <ma...@gmail.com>
AuthorDate: Fri Apr 30 13:13:02 2021 +0200

    Initial commit
---
 LICENSE   | 201 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 README.md |   1 +
 2 files changed, 202 insertions(+)

diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..261eeb9
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..20fb0e9
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# kogito-benchmarks-poc
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 31/38: BAQE-2214 - Prepare kogito benchmarks for running with Quarkus Platform

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 9dde0e7821fa47ceb2fc8345f7d600dc4a6ca161
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Thu Jan 6 17:30:18 2022 +0100

    BAQE-2214 - Prepare kogito benchmarks for running with Quarkus Platform
---
 .../kie/kogito/benchmarks/framework/Commands.java  | 36 +++++++++++++++++-----
 .../smarthouse-02-springboot/threshold.properties  |  2 +-
 .../smarthouse-03-springboot/threshold.properties  |  2 +-
 .../threshold.properties                           |  2 +-
 kogito-benchmarks-tests/pom.xml                    |  4 +++
 5 files changed, 35 insertions(+), 11 deletions(-)

diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
index a9c3cd1..41e6e6d 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
@@ -57,6 +57,8 @@ public class Commands {
     public static final String BASE_DIR = getBaseDir();
     public static final String APPS_DIR = getAppsDir();
     public static final String ARCHIVED_LOGS_DIR = getArchivedLogsDir();
+    public static final boolean USE_CUSTOM_MAVEN_REPO = getUseCustomMavenRepo();
+    public static final boolean USE_MAIN_BUILD_SETTINGS = getUseMainBuildSettings();
     public static final String MVNW = Commands.isThisWindows ? "mvnw.cmd" : "./mvnw";
     public static final boolean isThisWindows = System.getProperty("os.name").matches(".*[Ww]indows.*");
     private static final Pattern numPattern = Pattern.compile("[ \t]*[0-9]+[ \t]*");
@@ -150,18 +152,32 @@ public class Commands {
         return getSystemPropertyOrEnvVarValue("archivedLogsDir");
     }
 
-    private static String getSystemPropertyOrEnvVarValue(String name) {
+    public static boolean getUseCustomMavenRepo() {
+        String value = getSystemPropertyOrEnvVarValueSilent("useCustomMavenRepo");
+        return !"false".equalsIgnoreCase(value);
+    }
+
+    public static boolean getUseMainBuildSettings() {
+        String value = getSystemPropertyOrEnvVarValueSilent("useMainBuildSettings");
+        return !"false".equalsIgnoreCase(value);
+    }
+
+    private static String getSystemPropertyOrEnvVarValueSilent(String name) {
         String systemPropertyValue = System.getProperty(name);
         if (StringUtils.isNotBlank(systemPropertyValue)) {
             return systemPropertyValue;
         }
 
-        String envPropertyValue = System.getenv(name);
+        return System.getenv(name);
+    }
 
-        if (StringUtils.isBlank(envPropertyValue)) {
+    private static String getSystemPropertyOrEnvVarValue(String name) {
+        String value = getSystemPropertyOrEnvVarValueSilent(name);
+        if (StringUtils.isBlank(value)) {
             throw new IllegalArgumentException("Unable to determine the value of the property " + name);
         }
-        return envPropertyValue;
+
+        return value;
     }
 
     public static void cleanTarget(App app) {
@@ -270,10 +286,14 @@ public class Commands {
             buildCmd.add("/C");
         }
         buildCmd.addAll(Arrays.asList(baseCommand));
-        buildCmd.add("-Dmaven.repo.local=" + getLocalMavenRepoDir());
-        // use the same settings.xml as the main build
-        buildCmd.add("-s");
-        buildCmd.add(System.getProperty("maven.settings"));
+
+        if (USE_CUSTOM_MAVEN_REPO) {
+            buildCmd.add("-Dmaven.repo.local=" + getLocalMavenRepoDir());
+        }
+        if (USE_MAIN_BUILD_SETTINGS) {
+            buildCmd.add("-s");
+            buildCmd.add(System.getProperty("maven.settings"));
+        }
 
         return Collections.unmodifiableList(buildCmd);
     }
diff --git a/kogito-benchmarks-framework/src/main/resources/smarthouse-02-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/smarthouse-02-springboot/threshold.properties
index c541e43..91cd28f 100644
--- a/kogito-benchmarks-framework/src/main/resources/smarthouse-02-springboot/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/smarthouse-02-springboot/threshold.properties
@@ -1,5 +1,5 @@
 linux.jvm.time.to.first.ok.request.threshold.ms=6000
-linux.jvm.RSS.threshold.kB=750000
+linux.jvm.RSS.threshold.kB=800000
 linux.native.time.to.first.ok.request.threshold.ms=35
 linux.native.RSS.threshold.kB=90000
 windows.jvm.time.to.first.ok.request.threshold.ms=2000
diff --git a/kogito-benchmarks-framework/src/main/resources/smarthouse-03-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/smarthouse-03-springboot/threshold.properties
index c541e43..91cd28f 100644
--- a/kogito-benchmarks-framework/src/main/resources/smarthouse-03-springboot/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/smarthouse-03-springboot/threshold.properties
@@ -1,5 +1,5 @@
 linux.jvm.time.to.first.ok.request.threshold.ms=6000
-linux.jvm.RSS.threshold.kB=750000
+linux.jvm.RSS.threshold.kB=800000
 linux.native.time.to.first.ok.request.threshold.ms=35
 linux.native.RSS.threshold.kB=90000
 windows.jvm.time.to.first.ok.request.threshold.ms=2000
diff --git a/kogito-benchmarks-framework/src/main/resources/stp-smarthouse-03-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/stp-smarthouse-03-springboot/threshold.properties
index 91cd28f..47f90f9 100644
--- a/kogito-benchmarks-framework/src/main/resources/stp-smarthouse-03-springboot/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/stp-smarthouse-03-springboot/threshold.properties
@@ -1,5 +1,5 @@
 linux.jvm.time.to.first.ok.request.threshold.ms=6000
-linux.jvm.RSS.threshold.kB=800000
+linux.jvm.RSS.threshold.kB=820000
 linux.native.time.to.first.ok.request.threshold.ms=35
 linux.native.RSS.threshold.kB=90000
 windows.jvm.time.to.first.ok.request.threshold.ms=2000
diff --git a/kogito-benchmarks-tests/pom.xml b/kogito-benchmarks-tests/pom.xml
index e1d993e..44852cf 100644
--- a/kogito-benchmarks-tests/pom.xml
+++ b/kogito-benchmarks-tests/pom.xml
@@ -19,6 +19,8 @@
     <!-- Framework -->
     <appsDir>apps-dir-needs-to-be-specified</appsDir>
     <archivedLogsDir>${project.basedir}/archived-logs</archivedLogsDir>
+    <useCustomMavenRepo>false</useCustomMavenRepo> <!-- Generated apps use their own .mvn/maven.config -->
+    <useMainBuildSettings>false</useMainBuildSettings>
 
     <!-- Test Suite -->
     <cpuAffinity>4</cpuAffinity> <!-- Positive number sets the CPU affinity explicitly -->
@@ -62,6 +64,8 @@
             <appsDir>${appsDir}</appsDir>
             <archivedLogsDir>${archivedLogsDir}</archivedLogsDir>
             <cpuAffinity>${cpuAffinity}</cpuAffinity>
+            <useCustomMavenRepo>${useCustomMavenRepo}</useCustomMavenRepo>
+            <useMainBuildSettings>${useMainBuildSettings}</useMainBuildSettings>
           </systemPropertyVariables>
         </configuration>
       </plugin>


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 28/38: BAQE-2176 - Archive all logs in case of an error

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit bc44f3800cbc19266424383be4244c9c0041480a
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Wed Dec 1 19:48:49 2021 +0100

    BAQE-2176 - Archive all logs in case of an error
---
 .../java/org/kie/kogito/benchmarks/framework/Logs.java | 18 +++++++++++++-----
 .../kie/kogito/benchmarks/framework/WebpageTester.java |  2 +-
 .../kie/kogito/benchmarks/AbstractTemplateTest.java    |  8 +++-----
 3 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
index ed894b9..e28cb39 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
@@ -28,6 +28,7 @@ import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -159,9 +160,9 @@ public class Logs {
         }
     }
 
-    public static void archiveLog(String testClass, String testMethod, File log) throws IOException {
-        if (log == null || !log.exists()) {
-            logger.warn("log must be a valid, existing file. Skipping operation.");
+    public static void archiveLogs(String testClass, String testMethod, Path appLogsDir) throws IOException {
+        if (appLogsDir == null || !appLogsDir.toFile().exists()) {
+            logger.warn("appLogsDir must be a valid, existing directory. Skipping operation.");
             return;
         }
         if (StringUtils.isBlank(testClass)) {
@@ -172,8 +173,15 @@ public class Logs {
         }
         Path destDir = getLogsDir(testClass, testMethod);
         Files.createDirectories(destDir);
-        String filename = log.getName();
-        Files.copy(log.toPath(), destDir.resolve(filename), REPLACE_EXISTING);
+        try (Stream<Path> walk = Files.walk(appLogsDir)) {
+            walk.skip(1).forEach(path -> { // skip root directory
+                try {
+                    Files.copy(path, destDir.resolve(appLogsDir.relativize(path)), REPLACE_EXISTING);
+                } catch (IOException e) {
+                    logger.warn("Unable to archive file: {}", path, e);
+                }
+            });
+        }
     }
 
     public static void writeReport(String testClass, String testMethod, String text) throws IOException {
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java
index b192a27..9aa4c1b 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/WebpageTester.java
@@ -82,7 +82,7 @@ public class WebpageTester {
                 (StringUtils.isNotBlank(webPage) ? webPage + " must contain string: " : "Empty webpage does not contain string: ") +
                 "`" + stringToLookFor + "'";
         if (!found) {
-            logger.info(failureMessage);
+            logger.warn(failureMessage);
         }
         assertTrue(found, failureMessage);
         return foundTimestamp - startTime;
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
index d1ecaf7..1df13b6 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
@@ -55,7 +55,7 @@ import static org.kie.kogito.benchmarks.framework.Commands.startApp;
 import static org.kie.kogito.benchmarks.framework.Commands.waitForTcpClosed;
 import static org.kie.kogito.benchmarks.framework.Logs.SKIP;
 import static org.kie.kogito.benchmarks.framework.Logs.appendln;
-import static org.kie.kogito.benchmarks.framework.Logs.archiveLog;
+import static org.kie.kogito.benchmarks.framework.Logs.archiveLogs;
 import static org.kie.kogito.benchmarks.framework.Logs.checkListeningHost;
 import static org.kie.kogito.benchmarks.framework.Logs.checkLog;
 import static org.kie.kogito.benchmarks.framework.Logs.checkThreshold;
@@ -190,8 +190,7 @@ public abstract class AbstractTemplateTest {
                 processStopper(pA, true);
             }
             // Archive logs no matter what
-            archiveLog(cn, mn, buildLogA);
-            archiveLog(cn, mn, runLogA);
+            archiveLogs(cn, mn, appDir.toPath().resolve("logs"));
             writeReport(cn, mn, whatIDidReport.toString());
         }
     }
@@ -375,8 +374,7 @@ public abstract class AbstractTemplateTest {
                 processStopper(pA, true);
             }
             // Archive logs no matter what
-            archiveLog(cn, mn, buildLogA);
-            archiveLog(cn, mn, runLogA);
+            archiveLogs(cn, mn, appDir.toPath().resolve("logs"));
             writeReport(cn, mn, whatIDidReport.toString());
         }
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 04/38: Enhancements #2

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 7b07faef699fd9b7bd25599423e307809a779a32
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Thu May 6 19:06:38 2021 +0200

    Enhancements #2
---
 .../org/kie/kogito/benchmarks/framework/App.java   | 22 ++++---
 .../benchmarks/framework/HTTPRequestInfo.java      | 65 ++++++++++++++++++++
 .../kie/kogito/benchmarks/framework/MvnCmds.java   | 12 ++--
 .../kogito/benchmarks/framework/URLContent.java    | 25 +-------
 .../benchmarks/framework/WhitelistLogLines.java    |  2 +-
 .../smarthouse-02-quarkus/threshold.properties     |  6 ++
 .../smarthouse-02-springboot/threshold.properties  |  6 ++
 .../smarthouse-03-quarkus/threshold.properties     |  6 ++
 .../smarthouse-03-springboot/threshold.properties  |  6 ++
 .../kogito/benchmarks/AbstractTemplateTest.java    | 54 +++++++++++------
 .../kie/kogito/benchmarks/QuarkusLargeTest.java    | 69 ----------------------
 .../kie/kogito/benchmarks/QuarkusSmallTest.java    |  2 +-
 .../kogito/benchmarks/SmartHouse02QuarkusTest.java | 35 +++++++++++
 .../benchmarks/SmartHouse02SpringBootTest.java     | 33 +++++++++++
 .../kogito/benchmarks/SmartHouse03QuarkusTest.java | 33 +++++++++++
 .../benchmarks/SmartHouse03SpringBootTest.java     | 33 +++++++++++
 .../org/kie/kogito/benchmarks/StartStopTest.java   |  2 +-
 17 files changed, 284 insertions(+), 127 deletions(-)

diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
index 34468a1..e6fe0b8 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
@@ -1,11 +1,12 @@
 package org.kie.kogito.benchmarks.framework;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Properties;
 
 import org.apache.commons.lang3.StringUtils;
@@ -13,11 +14,11 @@ import org.apache.commons.lang3.StringUtils;
 import static org.kie.kogito.benchmarks.framework.Commands.APPS_DIR;
 
 public enum App {
-    SAMPLE_KOGITO_APP_QUARKUS_JVM("sample-kogito-app", MvnCmds.QUARKUS_JVM, URLContent.SAMPLE_KOGITO_APP, WhitelistLogLines.SAMPLE_KOGITO_APP),
-    SAMPLE_KOGITO_APP_SPRING_BOOT("sample-kogito-app", MvnCmds.SPRING_BOOT_JVM, URLContent.SAMPLE_KOGITO_APP, WhitelistLogLines.SAMPLE_KOGITO_APP);
-    //    JAX_RS_MINIMAL("app-jax-rs-minimal", URLContent.JAX_RS_MINIMAL, WhitelistLogLines.JAX_RS_MINIMAL),
-    //    FULL_MICROPROFILE("app-full-microprofile", URLContent.FULL_MICROPROFILE, WhitelistLogLines.FULL_MICROPROFILE),
-    //    GENERATED_SKELETON("app-generated-skeleton", URLContent.GENERATED_SKELETON, WhitelistLogLines.GENERATED_SKELETON);
+    SMARTHOUSE_02_QUARKUS_JVM("smarthouse-02-quarkus", MvnCmds.QUARKUS_JVM, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
+    SMARTHOUSE_03_QUARKUS_JVM("smarthouse-03-quarkus", MvnCmds.QUARKUS_JVM, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING),
+
+    SMARTHOUSE_02_SPRING_BOOT("smarthouse-02-springboot", MvnCmds.SPRING_BOOT_02_JVM, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
+    SMARTHOUSE_03_SPRING_BOOT("smarthouse-03-springboot", MvnCmds.SPRING_BOOT_03_JVM, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING);
 
     public final String dir;
     public final MvnCmds mavenCommands;
@@ -30,9 +31,12 @@ public enum App {
         this.mavenCommands = mavenCommands;
         this.urlContent = urlContent;
         this.whitelistLogLines = whitelistLogLines;
-        File tpFile = new File(APPS_DIR + File.separator + dir + File.separator + "threshold.properties");
+
+        String tpFilePath = "/" + dir + "/threshold.properties";
+        URL tpFile = Optional.ofNullable(App.class.getResource(tpFilePath))
+                .orElseThrow(() -> new RuntimeException("Couldn't find " + tpFilePath));
         String appDirNormalized = dir.toUpperCase().replace('-', '_') + "_";
-        try (InputStream input = new FileInputStream(tpFile)) {
+        try (InputStream input = tpFile.openStream()) {
             Properties props = new Properties();
             props.load(input);
             for (String pn : props.stringPropertyNames()) {
@@ -51,7 +55,7 @@ public enum App {
             throw new IllegalArgumentException("Check threshold.properties and Sys and Env variables (upper case, underscores instead of dots). " +
                     "All values are expected to be of type long.");
         } catch (IOException e) {
-            throw new RuntimeException("Couldn't find " + tpFile.getAbsolutePath());
+            throw new RuntimeException("Couldn't read " + tpFilePath);
         }
     }
 
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
index 74d0ecc..98ac827 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
@@ -90,4 +90,69 @@ public class HTTPRequestInfo {
 
     }
 
+    public static class Body {
+        public static final String HEATING_02 = "{\n" +
+                "  \"Sensors Temperature\": [\n" +
+                "    {\n" +
+                "      \"placement\": \"OUTSIDE\",\n" +
+                "      \"current\": 25,\n" +
+                "      \"previous\": [\n" +
+                "        24,\n" +
+                "        23,\n" +
+                "        19,\n" +
+                "        16,\n" +
+                "        15,\n" +
+                "        11\n" +
+                "      ]\n" +
+                "    },\n" +
+                "    {\n" +
+                "      \"placement\": \"INSIDE\",\n" +
+                "      \"current\": 24.9,\n" +
+                "      \"previous\": [\n" +
+                "        25,\n" +
+                "        28,\n" +
+                "        28,\n" +
+                "        28,\n" +
+                "        28,\n" +
+                "        28\n" +
+                "      ]\n" +
+                "    }\n" +
+                "  ],\n" +
+                "  \"Settings Temperature\": {\n" +
+                "    \"threshold_low\": 21,\n" +
+                "    \"threshold_high\": 24\n" +
+                "  },\n" +
+                "  \"Settings Humidity\": {\n" +
+                "    \"threshold_low\": 0,\n" +
+                "    \"threshold_high\": 0\n" +
+                "  },\n" +
+                "  \"Sensors Humidity\": [\n" +
+                "    {\n" +
+                "      \"placement\": \"OUTSIDE\",\n" +
+                "      \"current\": 0,\n" +
+                "      \"previous\": [\n" +
+                "        0,\n" +
+                "        0,\n" +
+                "        0,\n" +
+                "        0,\n" +
+                "        0,\n" +
+                "        0\n" +
+                "      ]\n" +
+                "    },\n" +
+                "    {\n" +
+                "      \"placement\": \"INSIDE\",\n" +
+                "      \"current\": 0,\n" +
+                "      \"previous\": [\n" +
+                "        0,\n" +
+                "        0,\n" +
+                "        0,\n" +
+                "        0,\n" +
+                "        0,\n" +
+                "        0\n" +
+                "      ]\n" +
+                "    }\n" +
+                "  ]\n" +
+                "}";
+    }
+
 }
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
index e4bbeb4..ca11c75 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
@@ -7,12 +7,16 @@ import static org.kie.kogito.benchmarks.framework.Commands.getQuarkusNativePrope
 
 public enum MvnCmds {
     QUARKUS_JVM(new String[][] {
-            new String[] { "mvn", "clean", "package", /* "quarkus:build", */"-Dquarkus.package.output-name=quarkus" },
+            new String[] { "mvn", "clean", "package", "-Dquarkus.package.output-name=quarkus" },
             new String[] { "java", "-jar", "target/quarkus-runner.jar" }
     }),
-    SPRING_BOOT_JVM(new String[][] {
-            new String[] { "mvn", "clean", "package", /* "quarkus:build", */"-Dquarkus.package.output-name=quarkus" },
-            new String[] { "java", "-jar", "target/quarkus-runner.jar" }
+    SPRING_BOOT_02_JVM(new String[][] {
+            new String[] { "mvn", "clean", "package" }, // There is no possibility of changing the final name of the artifact
+            new String[] { "java", "-jar", "target/smarthouse-02-springboot-1.0-SNAPSHOT.jar" }
+    }),
+    SPRING_BOOT_03_JVM(new String[][] {
+            new String[] { "mvn", "clean", "package" },
+            new String[] { "java", "-jar", "target/smarthouse-03-springboot-1.0-SNAPSHOT.jar" }
     }),
     DEV(new String[][] {
             new String[] { "mvn", "clean", "quarkus:dev", "-Dmaven.repo.local=" + getLocalMavenRepoDir() }
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java
index d44dc8e..d81bea4 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java
@@ -1,29 +1,8 @@
 package org.kie.kogito.benchmarks.framework;
 
 public enum URLContent {
-    SAMPLE_KOGITO_APP(new String[][] { new String[] { "http://localhost:8080/LoanApplication", "[]" },
-            new String[] { "http://localhost:8080/greeting", "1" } }),
-    JAX_RS_MINIMAL(new String[][] {
-            new String[] { "http://localhost:8080", "Hello from a simple JAX-RS app." },
-            new String[] { "http://localhost:8080/data/hello", "Hello World" }
-    }),
-    FULL_MICROPROFILE(new String[][] {
-            new String[] { "http://localhost:8080", "Hello from a full MicroProfile suite" },
-            new String[] { "http://localhost:8080/data/hello", "Hello World" },
-            new String[] { "http://localhost:8080/data/config/injected", "Config value as Injected by CDI Injected value" },
-            new String[] { "http://localhost:8080/data/config/lookup", "Config value from ConfigProvider lookup value" },
-            new String[] { "http://localhost:8080/data/resilience", "Fallback answer due to timeout" },
-            new String[] { "http://localhost:8080/health", "\"UP\"" },
-            new String[] { "http://localhost:8080/data/metric/timed", "Request is used in statistics, check with the Metrics call." },
-            new String[] { "http://localhost:8080/metrics", "ontroller_timed_request_seconds_count" },
-            new String[] { "http://localhost:8080/data/secured/test", "Jessie specific value" },
-            new String[] { "http://localhost:8080/openapi", "/resilience" },
-            new String[] { "http://localhost:8080/data/client/test/parameterValue=xxx", "Processed parameter value 'parameterValue=xxx'" }
-    }),
-    GENERATED_SKELETON(new String[][] {
-            new String[] { "http://localhost:8080", "Congratulations" },
-            new String[] { "http://localhost:8080/hello-spring", "Bye Spring" }
-    });
+    SMARTHOUSE_02(new String[][] { new String[] { "http://localhost:8080/heating", "name=\"heating\"" } }),
+    SMARTHOUSE_03(new String[][] { new String[] { "http://localhost:8080/heating", "name=\"heating\"" } });
 
     public final String[][] urlContent;
 
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java
index 41aa220..d70315c 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/WhitelistLogLines.java
@@ -8,7 +8,7 @@ import java.util.regex.Pattern;
  * @author Michal Karm Babacek <ka...@redhat.com>
  */
 public enum WhitelistLogLines {
-    SAMPLE_KOGITO_APP(new Pattern[] { Pattern.compile(".*") }),
+    EVERYTHING(new Pattern[] { Pattern.compile(".*") }),
     JAX_RS_MINIMAL(new Pattern[] {
             // Some artifacts names...
             Pattern.compile(".*maven-error-diagnostics.*"),
diff --git a/framework/src/main/resources/smarthouse-02-quarkus/threshold.properties b/framework/src/main/resources/smarthouse-02-quarkus/threshold.properties
new file mode 100644
index 0000000..36c0c1c
--- /dev/null
+++ b/framework/src/main/resources/smarthouse-02-quarkus/threshold.properties
@@ -0,0 +1,6 @@
+linux.jvm.time.to.first.ok.request.threshold.ms=3400
+linux.jvm.RSS.threshold.kB=380000
+linux.native.time.to.first.ok.request.threshold.ms=35
+linux.native.RSS.threshold.kB=90000
+windows.jvm.time.to.first.ok.request.threshold.ms=2000
+windows.jvm.RSS.threshold.kB=4000
diff --git a/framework/src/main/resources/smarthouse-02-springboot/threshold.properties b/framework/src/main/resources/smarthouse-02-springboot/threshold.properties
new file mode 100644
index 0000000..36c0c1c
--- /dev/null
+++ b/framework/src/main/resources/smarthouse-02-springboot/threshold.properties
@@ -0,0 +1,6 @@
+linux.jvm.time.to.first.ok.request.threshold.ms=3400
+linux.jvm.RSS.threshold.kB=380000
+linux.native.time.to.first.ok.request.threshold.ms=35
+linux.native.RSS.threshold.kB=90000
+windows.jvm.time.to.first.ok.request.threshold.ms=2000
+windows.jvm.RSS.threshold.kB=4000
diff --git a/framework/src/main/resources/smarthouse-03-quarkus/threshold.properties b/framework/src/main/resources/smarthouse-03-quarkus/threshold.properties
new file mode 100644
index 0000000..36c0c1c
--- /dev/null
+++ b/framework/src/main/resources/smarthouse-03-quarkus/threshold.properties
@@ -0,0 +1,6 @@
+linux.jvm.time.to.first.ok.request.threshold.ms=3400
+linux.jvm.RSS.threshold.kB=380000
+linux.native.time.to.first.ok.request.threshold.ms=35
+linux.native.RSS.threshold.kB=90000
+windows.jvm.time.to.first.ok.request.threshold.ms=2000
+windows.jvm.RSS.threshold.kB=4000
diff --git a/framework/src/main/resources/smarthouse-03-springboot/threshold.properties b/framework/src/main/resources/smarthouse-03-springboot/threshold.properties
new file mode 100644
index 0000000..36c0c1c
--- /dev/null
+++ b/framework/src/main/resources/smarthouse-03-springboot/threshold.properties
@@ -0,0 +1,6 @@
+linux.jvm.time.to.first.ok.request.threshold.ms=3400
+linux.jvm.RSS.threshold.kB=380000
+linux.native.time.to.first.ok.request.threshold.ms=35
+linux.native.RSS.threshold.kB=90000
+windows.jvm.time.to.first.ok.request.threshold.ms=2000
+windows.jvm.RSS.threshold.kB=4000
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
index 27260ed..ee1f7c7 100644
--- a/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
+++ b/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
@@ -11,13 +11,16 @@ import java.util.List;
 
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.methods.HttpUriRequest;
 import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.util.EntityUtils;
 import org.assertj.core.api.Assertions;
 import org.jboss.logging.Logger;
+import org.junit.jupiter.api.MethodOrderer;
 import org.junit.jupiter.api.TestInfo;
+import org.junit.jupiter.api.TestMethodOrder;
 import org.kie.kogito.benchmarks.framework.App;
 import org.kie.kogito.benchmarks.framework.BuildResult;
 import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
@@ -173,7 +176,7 @@ public abstract class AbstractTemplateTest {
     }
 
     public void loadTest(TestInfo testInfo, App app, HTTPRequestInfo requestInfo) throws IOException, InterruptedException {
-        LOGGER.info("Testing app startStop: " + app.toString() + ", mode: " + app.mavenCommands.toString());
+        LOGGER.info("Testing app loadTest: " + app.toString() + ", mode: " + app.mavenCommands.toString());
 
         Process pA = null;
         File buildLogA = null;
@@ -265,31 +268,29 @@ public abstract class AbstractTemplateTest {
 
 
             // Apache HTTP Client 4
-            long startTime;
+            long totalDuration;
+            long firstResponseTime;
             try (CloseableHttpClient client = HttpClients.createDefault()){
                 HttpPost postRequest = new HttpPost(requestInfo.getURI());
                 postRequest.setEntity(new StringEntity(requestInfo.getBody()));
                 requestInfo.getHeaders().forEach(postRequest::setHeader);
 
-                startTime = System.currentTimeMillis();
-                for (int i = 0; i < 20000; i++) {
-                    long requestStartTime = System.nanoTime();
-                    try (CloseableHttpResponse response = client.execute(postRequest)) {
-                        Assertions.assertThat(response.getStatusLine().getStatusCode()).isEqualTo(requestInfo.getExpectedResponseStatusCode());
-//                        System.out.println("Response code: " + response.getStatusLine().getStatusCode());
-//                        System.out.println("Page is: " + EntityUtils.toString(response.getEntity()));
-                        EntityUtils.consume(response.getEntity());
-                    }
-                    long requestEndTime = System.nanoTime();
-                    long duration = requestEndTime - requestStartTime;
-                    values.add(duration);
-                }
+                // Warm up run
+                runRequests(client, postRequest, 1000, requestInfo.getExpectedResponseStatusCode(), values);
+
+                firstResponseTime = values.get(0);
+                values.clear();
+
+                // Measurements run
+                long startTime = System.currentTimeMillis();
+                runRequests(client, postRequest, 20000, requestInfo.getExpectedResponseStatusCode(), values);
+                long endTime = System.currentTimeMillis();
+                totalDuration = endTime - startTime;
             }
-            long endTime = System.currentTimeMillis();
 
-            System.out.println("First response time: " + values.get(0));
-            System.out.println("Average response time: " + values.stream().mapToLong(Long::longValue).skip(1).average());
-            System.out.println("Total duration: " + (endTime - startTime));
+            System.out.println("First response time: " + firstResponseTime);
+            System.out.println("Average response time: " + values.stream().mapToLong(Long::longValue).average());
+            System.out.println("Total duration: " + totalDuration);
 
             long rssKbFinal = getRSSkB(pA.pid());
             long openedFiles = getOpenedFDs(pA.pid()); // TODO also do before the "test" itself?
@@ -348,4 +349,19 @@ public abstract class AbstractTemplateTest {
         }
     }
 
+    private void runRequests(CloseableHttpClient client, HttpUriRequest request, int count, int expectedResponseStatusCode, List<Long> values) throws IOException {
+        for (int i = 0; i < count; i++) {
+            long requestStartTime = System.nanoTime();
+            try (CloseableHttpResponse response = client.execute(request)) {
+                Assertions.assertThat(response.getStatusLine().getStatusCode()).isEqualTo(expectedResponseStatusCode);
+//                        System.out.println("Response code: " + response.getStatusLine().getStatusCode());
+//                        System.out.println("Page is: " + EntityUtils.toString(response.getEntity()));
+                EntityUtils.consume(response.getEntity());
+            }
+            long requestEndTime = System.nanoTime();
+            long duration = requestEndTime - requestStartTime;
+            values.add(duration);
+        }
+    }
+
 }
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusLargeTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusLargeTest.java
deleted file mode 100644
index bce1104..0000000
--- a/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusLargeTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.kie.kogito.benchmarks;
-
-import static org.kie.kogito.benchmarks.framework.Logs.getLogsDir;
-
-import java.io.IOException;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.TestInfo;
-import org.kie.kogito.benchmarks.framework.App;
-import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
-import org.kie.kogito.benchmarks.framework.LogBuilder;
-import org.kie.kogito.benchmarks.framework.Logs;
-
-public class QuarkusLargeTest extends AbstractTemplateTest {
-
-    private static final App APP_TO_TEST = App.SAMPLE_KOGITO_APP_QUARKUS_JVM;
-
-    @Test
-    public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
-        startStop(testInfo, APP_TO_TEST);
-    }
-
-    @Test
-    public void loadTest(TestInfo testInfo) throws IOException, InterruptedException {
-        HTTPRequestInfo requestInfo = HTTPRequestInfo.builder()
-                .URI(LOCALHOST + "/LoanApplication")
-                .body("{\"amount\":\"2000\"}")
-                .method("POST")
-                .header("Accept", "*/*")
-                .header("Content-Type", "application/json")
-                .expectedResponseStatusCode(201)
-                .build(); // This may be directly replaced for example by Apache-specific class, but this keeps
-                          // it detached from any framework
-
-        loadTest(testInfo, APP_TO_TEST, requestInfo);
-
-//        Path measurementLogSummary = Paths.get(getLogsDir(testInfo.getTestClass().get().getCanonicalName()).toString(), "measurementsSummary.csv");
-//
-//        for (App app : new App[]{APP_TO_TEST, App.SAMPLE_KOGITO_APP_SPRING_BOOT}) {
-//            LogBuilder.Log log = new LogBuilder()
-//                    .app(app)
-//                    .mode(app.mavenCommands)
-//                    .buildTimeMs(100)
-//                    .timeToFirstOKRequestMs(200)
-//                    .startedInMs(300)
-//                    .stoppedInMs(400)
-//                    .rssKb(500)
-//                    .openedFiles(700)
-//                    .build();
-//
-//            LogBuilder.Log log2 = new LogBuilder()
-//                    .app(app)
-//                    .mode(app.mavenCommands)
-//                    .rssKbFinal(600)
-//                    .build();
-//
-//            Logs.logMeasurementsSummary(log, measurementLogSummary);
-//            Logs.logMeasurementsSummary(log2, measurementLogSummary);
-//
-//
-//            Logs.logMeasurementsSummary(log, measurementLogSummary);
-//            Logs.logMeasurementsSummary(log2, measurementLogSummary);
-//        }
-
-
-    }
-}
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusSmallTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusSmallTest.java
index cbaf805..ea1eafd 100644
--- a/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusSmallTest.java
+++ b/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusSmallTest.java
@@ -8,7 +8,7 @@ import org.kie.kogito.benchmarks.framework.App;
 
 public class QuarkusSmallTest extends AbstractTemplateTest {
 
-    private static final App APP_TO_TEST = App.SAMPLE_KOGITO_APP_QUARKUS_JVM;
+    private static final App APP_TO_TEST = App.SMARTHOUSE_02_QUARKUS_JVM;
 
     @Test
     public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02QuarkusTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02QuarkusTest.java
new file mode 100644
index 0000000..0e3661d
--- /dev/null
+++ b/tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02QuarkusTest.java
@@ -0,0 +1,35 @@
+package org.kie.kogito.benchmarks;
+
+import static org.kie.kogito.benchmarks.framework.Logs.getLogsDir;
+
+import java.io.IOException;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+import org.kie.kogito.benchmarks.framework.App;
+import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
+
+public class SmartHouse02QuarkusTest extends AbstractTemplateTest {
+
+    private static final App APP_TO_TEST = App.SMARTHOUSE_02_QUARKUS_JVM;
+
+    @Test
+    public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
+        startStop(testInfo, APP_TO_TEST);
+    }
+
+    @Test
+    public void loadTest(TestInfo testInfo) throws IOException, InterruptedException {
+        HTTPRequestInfo requestInfo = HTTPRequestInfo.builder()
+                .URI(LOCALHOST + "/heating")
+                .body(HTTPRequestInfo.Body.HEATING_02)
+                .method("POST")
+                .header("Accept", "application/json")
+                .header("Content-Type", "application/json")
+                .expectedResponseStatusCode(200)
+                .build(); // This may be directly replaced for example by Apache-specific class, but this keeps
+                          // it detached from any framework
+
+        loadTest(testInfo, APP_TO_TEST, requestInfo);
+    }
+}
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02SpringBootTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02SpringBootTest.java
new file mode 100644
index 0000000..dc6d7e9
--- /dev/null
+++ b/tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse02SpringBootTest.java
@@ -0,0 +1,33 @@
+package org.kie.kogito.benchmarks;
+
+import java.io.IOException;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+import org.kie.kogito.benchmarks.framework.App;
+import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
+
+public class SmartHouse02SpringBootTest extends AbstractTemplateTest {
+
+    private static final App APP_TO_TEST = App.SMARTHOUSE_02_SPRING_BOOT;
+
+    @Test
+    public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
+        startStop(testInfo, APP_TO_TEST);
+    }
+
+    @Test
+    public void loadTest(TestInfo testInfo) throws IOException, InterruptedException {
+        HTTPRequestInfo requestInfo = HTTPRequestInfo.builder()
+                .URI(LOCALHOST + "/heating")
+                .body(HTTPRequestInfo.Body.HEATING_02)
+                .method("POST")
+                .header("Accept", "application/json")
+                .header("Content-Type", "application/json")
+                .expectedResponseStatusCode(200)
+                .build(); // This may be directly replaced for example by Apache-specific class, but this keeps
+                          // it detached from any framework
+
+        loadTest(testInfo, APP_TO_TEST, requestInfo);
+    }
+}
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03QuarkusTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03QuarkusTest.java
new file mode 100644
index 0000000..eaafc48
--- /dev/null
+++ b/tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03QuarkusTest.java
@@ -0,0 +1,33 @@
+package org.kie.kogito.benchmarks;
+
+import java.io.IOException;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+import org.kie.kogito.benchmarks.framework.App;
+import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
+
+public class SmartHouse03QuarkusTest extends AbstractTemplateTest {
+
+    private static final App APP_TO_TEST = App.SMARTHOUSE_03_QUARKUS_JVM;
+
+    @Test
+    public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
+        startStop(testInfo, APP_TO_TEST);
+    }
+
+    @Test
+    public void loadTest(TestInfo testInfo) throws IOException, InterruptedException {
+        HTTPRequestInfo requestInfo = HTTPRequestInfo.builder()
+                .URI(LOCALHOST + "/heating")
+                .body(HTTPRequestInfo.Body.HEATING_02)
+                .method("POST")
+                .header("Accept", "application/json")
+                .header("Content-Type", "application/json")
+                .expectedResponseStatusCode(200)
+                .build(); // This may be directly replaced for example by Apache-specific class, but this keeps
+                          // it detached from any framework
+
+        loadTest(testInfo, APP_TO_TEST, requestInfo);
+    }
+}
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03SpringBootTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03SpringBootTest.java
new file mode 100644
index 0000000..1a79de9
--- /dev/null
+++ b/tests/src/test/java/org/kie/kogito/benchmarks/SmartHouse03SpringBootTest.java
@@ -0,0 +1,33 @@
+package org.kie.kogito.benchmarks;
+
+import java.io.IOException;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+import org.kie.kogito.benchmarks.framework.App;
+import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
+
+public class SmartHouse03SpringBootTest extends AbstractTemplateTest {
+
+    private static final App APP_TO_TEST = App.SMARTHOUSE_03_SPRING_BOOT;
+
+    @Test
+    public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
+        startStop(testInfo, APP_TO_TEST);
+    }
+
+    @Test
+    public void loadTest(TestInfo testInfo) throws IOException, InterruptedException {
+        HTTPRequestInfo requestInfo = HTTPRequestInfo.builder()
+                .URI(LOCALHOST + "/heating")
+                .body(HTTPRequestInfo.Body.HEATING_02)
+                .method("POST")
+                .header("Accept", "application/json")
+                .header("Content-Type", "application/json")
+                .expectedResponseStatusCode(200)
+                .build(); // This may be directly replaced for example by Apache-specific class, but this keeps
+                          // it detached from any framework
+
+        loadTest(testInfo, APP_TO_TEST, requestInfo);
+    }
+}
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/StartStopTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/StartStopTest.java
index 04c50e9..b3b94dc 100644
--- a/tests/src/test/java/org/kie/kogito/benchmarks/StartStopTest.java
+++ b/tests/src/test/java/org/kie/kogito/benchmarks/StartStopTest.java
@@ -187,7 +187,7 @@ public class StartStopTest {
 
     @Test
     public void kogito(TestInfo testInfo) throws IOException, InterruptedException {
-        testRuntime(testInfo, App.SAMPLE_KOGITO_APP_QUARKUS_JVM, MvnCmds.QUARKUS_JVM);
+        testRuntime(testInfo, App.SMARTHOUSE_02_QUARKUS_JVM, MvnCmds.QUARKUS_JVM);
     }
 
     //    @Test


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 06/38: Enhancements #4

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 1c4b05b3ea77df22813d2788169856da253431a1
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Thu May 6 21:06:47 2021 +0200

    Enhancements #4
---
 .../src/main/java/org/kie/kogito/benchmarks/framework/App.java    | 8 ++++----
 .../threshold.properties                                          | 0
 .../threshold.properties                                          | 0
 .../threshold.properties                                          | 0
 .../threshold.properties                                          | 0
 5 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
index e6fe0b8..805b4fa 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
@@ -14,11 +14,11 @@ import org.apache.commons.lang3.StringUtils;
 import static org.kie.kogito.benchmarks.framework.Commands.APPS_DIR;
 
 public enum App {
-    SMARTHOUSE_02_QUARKUS_JVM("smarthouse-02-quarkus", MvnCmds.QUARKUS_JVM, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
-    SMARTHOUSE_03_QUARKUS_JVM("smarthouse-03-quarkus", MvnCmds.QUARKUS_JVM, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING),
+    SMARTHOUSE_02_QUARKUS_JVM("smarthouse-02-dm-quarkus", MvnCmds.QUARKUS_JVM, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
+    SMARTHOUSE_03_QUARKUS_JVM("smarthouse-03-dm-quarkus", MvnCmds.QUARKUS_JVM, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING),
 
-    SMARTHOUSE_02_SPRING_BOOT("smarthouse-02-springboot", MvnCmds.SPRING_BOOT_02_JVM, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
-    SMARTHOUSE_03_SPRING_BOOT("smarthouse-03-springboot", MvnCmds.SPRING_BOOT_03_JVM, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING);
+    SMARTHOUSE_02_SPRING_BOOT("smarthouse-02-dm-springboot", MvnCmds.SPRING_BOOT_02_JVM, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
+    SMARTHOUSE_03_SPRING_BOOT("smarthouse-03-dm-springboot", MvnCmds.SPRING_BOOT_03_JVM, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING);
 
     public final String dir;
     public final MvnCmds mavenCommands;
diff --git a/framework/src/main/resources/smarthouse-02-quarkus/threshold.properties b/framework/src/main/resources/smarthouse-02-dm-quarkus/threshold.properties
similarity index 100%
rename from framework/src/main/resources/smarthouse-02-quarkus/threshold.properties
rename to framework/src/main/resources/smarthouse-02-dm-quarkus/threshold.properties
diff --git a/framework/src/main/resources/smarthouse-02-springboot/threshold.properties b/framework/src/main/resources/smarthouse-02-dm-springboot/threshold.properties
similarity index 100%
rename from framework/src/main/resources/smarthouse-02-springboot/threshold.properties
rename to framework/src/main/resources/smarthouse-02-dm-springboot/threshold.properties
diff --git a/framework/src/main/resources/smarthouse-03-quarkus/threshold.properties b/framework/src/main/resources/smarthouse-03-dm-quarkus/threshold.properties
similarity index 100%
rename from framework/src/main/resources/smarthouse-03-quarkus/threshold.properties
rename to framework/src/main/resources/smarthouse-03-dm-quarkus/threshold.properties
diff --git a/framework/src/main/resources/smarthouse-03-springboot/threshold.properties b/framework/src/main/resources/smarthouse-03-dm-springboot/threshold.properties
similarity index 100%
rename from framework/src/main/resources/smarthouse-03-springboot/threshold.properties
rename to framework/src/main/resources/smarthouse-03-dm-springboot/threshold.properties


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 10/38: Set CPU Affinity to 4 cores

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit f7b2db59972de78e3e4d7bacba613e62e7d4c757
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Mon May 24 23:13:13 2021 +0200

    Set CPU Affinity to 4 cores
---
 .../kie/kogito/benchmarks/framework/Commands.java    | 20 ++++++++++++++++++++
 .../kie/kogito/benchmarks/AbstractTemplateTest.java  |  4 +++-
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
index 6b9ca73..004af2e 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
@@ -35,6 +35,7 @@ import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.apache.commons.lang3.StringUtils;
+import org.assertj.core.api.Assertions;
 import org.jboss.logging.Logger;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
@@ -244,6 +245,25 @@ public class Commands {
         return new RunInfo(pA, runLogA, timeToFirstOKRequest);
     }
 
+    public static void setCPUAffinity(RunInfo runInfo, int numOfCores) throws IOException, InterruptedException {
+        LOGGER.info("Setting CPU affinity of app to " + numOfCores + " core(s)");
+        String listOfCores = "0-" + (numOfCores - 1);
+        String processId = String.valueOf(runInfo.getProcess().pid());
+        ProcessBuilder pBuilder = new ProcessBuilder("taskset", "-cpa", listOfCores, processId);
+        pBuilder.redirectErrorStream(true);
+        Process p = pBuilder.start();
+        try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(p.getInputStream()))) {
+            String newCPUAffinity = bufferedReader.lines()
+                    .filter(s -> s.contains("new affinity list"))
+                    .findFirst()
+                    .orElseThrow(() -> new RuntimeException("New CPU Affinity not set!"));
+            String expectedAffinityList = numOfCores == 1 ? "0" : numOfCores == 2 ? "0,1" : listOfCores;
+            Assertions.assertThat(newCPUAffinity).contains(expectedAffinityList);
+            p.waitFor();
+        }
+        Assertions.assertThat(p.exitValue()).isEqualTo(0);
+    }
+
     public static void cleanDirOrFile(String... path) {
         for (String s : path) {
             try {
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
index 36afca6..a8b9b11 100644
--- a/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
+++ b/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
@@ -37,6 +37,7 @@ import static org.kie.kogito.benchmarks.framework.Commands.getOpenedFDs;
 import static org.kie.kogito.benchmarks.framework.Commands.getRSSkB;
 import static org.kie.kogito.benchmarks.framework.Commands.parsePort;
 import static org.kie.kogito.benchmarks.framework.Commands.processStopper;
+import static org.kie.kogito.benchmarks.framework.Commands.setCPUAffinity;
 import static org.kie.kogito.benchmarks.framework.Commands.startApp;
 import static org.kie.kogito.benchmarks.framework.Commands.waitForTcpClosed;
 import static org.kie.kogito.benchmarks.framework.Logs.SKIP;
@@ -51,7 +52,7 @@ import static org.kie.kogito.benchmarks.framework.Logs.writeReport;
 
 public abstract class AbstractTemplateTest {
 
-    private static final Logger LOGGER = Logger.getLogger(StartStopTest.class.getName());
+    private static final Logger LOGGER = Logger.getLogger(AbstractTemplateTest.class.getName());
 
     public static final int START_STOP_ITERATIONS = 3;
     public static final String LOCALHOST = "http://localhost:8080";
@@ -211,6 +212,7 @@ public abstract class AbstractTemplateTest {
 
             // Start the App
             RunInfo runInfo = startApp(app, whatIDidReport);
+            setCPUAffinity(runInfo, 4);
             pA = runInfo.getProcess();
             runLogA = runInfo.getRunLog();
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 16/38: Replace Paths.get() with Paths.of() and remove path-related code smell

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 2df2a7416583a45070e02eece0dcf632de528bcd
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Wed Jun 9 13:02:37 2021 +0200

    Replace Paths.get() with Paths.of() and remove path-related code smell
---
 .../kie/kogito/benchmarks/framework/Commands.java   | 13 ++++++++-----
 .../org/kie/kogito/benchmarks/framework/Logs.java   | 21 +++++++++------------
 .../threshold.properties                            |  0
 .../threshold.properties                            |  0
 .../threshold.properties                            |  0
 .../threshold.properties                            |  0
 kogito-benchmarks-tests/pom.xml                     |  4 +++-
 .../kie/kogito/benchmarks/AbstractTemplateTest.java | 10 +++++-----
 8 files changed, 25 insertions(+), 23 deletions(-)

diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
index fc6c5dd..333f039 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
@@ -11,7 +11,6 @@ import java.net.UnknownHostException;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -41,6 +40,7 @@ public class Commands {
 
     public static final String BASE_DIR = getBaseDir();
     public static final String APPS_DIR = getAppsDir();
+    public static final String ARCHIVED_LOGS_DIR = getArchivedLogsDir();
     public static final String MVNW = Commands.isThisWindows ? "mvnw.cmd" : "./mvnw";
     public static final boolean isThisWindows = System.getProperty("os.name").matches(".*[Ww]indows.*");
     private static final Pattern numPattern = Pattern.compile("[ \t]*[0-9]+[ \t]*");
@@ -130,6 +130,10 @@ public class Commands {
         return getSystemPropertyOrEnvVarValue("appsDir");
     }
 
+    public static String getArchivedLogsDir() {
+        return getSystemPropertyOrEnvVarValue("archivedLogsDir");
+    }
+
     private static String getSystemPropertyOrEnvVarValue(String name) {
         String systemPropertyValue = System.getProperty(name);
         if (StringUtils.isNotBlank(systemPropertyValue)) {
@@ -152,7 +156,7 @@ public class Commands {
 
     public static BuildResult buildApp(App app, String methodName, String className, StringBuilder whatIDidReport) throws InterruptedException {
         File appDir = app.getAppDir();
-        File buildLogA = new File(appDir.getAbsolutePath() + File.separator + "logs" + File.separator + app.mavenCommands.name().toLowerCase() + "-build.log");
+        File buildLogA = Path.of(appDir.getAbsolutePath(), "logs", app.mavenCommands.name().toLowerCase() + "-build.log").toFile();
         ExecutorService buildService = Executors.newFixedThreadPool(1);
 
         List<String> baseBuildCmd = new ArrayList<>(Arrays.asList(app.mavenCommands.mvnCmds[0]));
@@ -174,7 +178,7 @@ public class Commands {
 
     public static RunInfo startApp(App app, StringBuilder whatIDidReport) throws IOException, InterruptedException {
         File appDir = app.getAppDir();
-        File runLogA = new File(appDir.getAbsolutePath() + File.separator + "logs" + File.separator + app.mavenCommands.name().toLowerCase() + "-run.log");
+        File runLogA = Path.of(appDir.getAbsolutePath(), "logs", app.mavenCommands.name().toLowerCase() + "-run.log").toFile();
         List<String> cmd = getRunCommand(app.mavenCommands.mvnCmds[1]);
         appendln(whatIDidReport, appDir.getAbsolutePath());
         appendlnSection(whatIDidReport, String.join(" ", cmd));
@@ -313,8 +317,7 @@ public class Commands {
             if (isThisWindows) {
                 if (!force) {
                     Process p = Runtime.getRuntime().exec(new String[] {
-                            BASE_DIR + File.separator + "framework" + File.separator + "src" + File.separator + "main" + File.separator + "resources" + File.separator +
-                                    "CtrlC.exe ",
+                            Path.of(BASE_DIR, "kogito-benchmarks-framework", "src", "main", "resources", "CtrlC.exe ").toString(),
                             Long.toString(pid) });
                     p.waitFor(1, TimeUnit.MINUTES);
                 }
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
index a78c143..22fd7f0 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
@@ -4,7 +4,6 @@ import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.nio.file.StandardOpenOption;
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -23,7 +22,7 @@ import static java.nio.charset.StandardCharsets.UTF_8;
 import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.kie.kogito.benchmarks.framework.Commands.BASE_DIR;
+import static org.kie.kogito.benchmarks.framework.Commands.ARCHIVED_LOGS_DIR;
 import static org.kie.kogito.benchmarks.framework.Commands.isThisWindows;
 
 public class Logs {
@@ -73,8 +72,7 @@ public class Logs {
             }
             assertTrue(offendingLines.isEmpty(),
                     cmd.name() + " log should not contain error or warning lines that are not whitelisted. " +
-                            "See testsuite" + File.separator + "target" + File.separator + "archived-logs" +
-                            File.separator + testClass + File.separator + testMethod + File.separator + log.getName() +
+                            "See " + Path.of(ARCHIVED_LOGS_DIR, testClass, testMethod, log.getName()) +
                             " and check these offending lines: \n" + String.join("\n", offendingLines));
         }
     }
@@ -100,8 +98,7 @@ public class Logs {
 
         assertFalse(isOffending,
                 cmd.name() + " log should contain expected listening host. " +
-                        "See testsuite" + File.separator + "target" + File.separator + "archived-logs" +
-                        File.separator + testClass + File.separator + testMethod + File.separator + log.getName() +
+                        "See " + Path.of(ARCHIVED_LOGS_DIR, testClass, testMethod, log.getName()) +
                         " and check the listening host.");
     }
 
@@ -161,14 +158,14 @@ public class Logs {
         Path destDir = getLogsDir(testClass, testMethod);
         Files.createDirectories(destDir);
         String filename = log.getName();
-        Files.copy(log.toPath(), Paths.get(destDir.toString(), filename), REPLACE_EXISTING);
+        Files.copy(log.toPath(), destDir.resolve(filename), REPLACE_EXISTING);
     }
 
     public static void writeReport(String testClass, String testMethod, String text) throws IOException {
         Path destDir = getLogsDir(testClass, testMethod);
         Files.createDirectories(destDir);
-        Files.write(Paths.get(destDir.toString(), "report.md"), text.getBytes(UTF_8), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
-        Path agregateReport = Paths.get(getLogsDir().toString(), "aggregated-report.md");
+        Files.write(destDir.resolve("report.md"), text.getBytes(UTF_8), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
+        Path agregateReport = getLogsDir().resolve("aggregated-report.md");
         if (Files.notExists(agregateReport)) {
             Files.write(agregateReport, ("# Aggregated Report\n\n").getBytes(UTF_8), StandardOpenOption.CREATE);
         }
@@ -189,19 +186,19 @@ public class Logs {
     }
 
     public static Path getLogsDir(String testClass, String testMethod) throws IOException {
-        Path destDir = new File(getLogsDir(testClass).toString() + File.separator + testMethod).toPath();
+        Path destDir = getLogsDir(testClass).resolve(testMethod);
         Files.createDirectories(destDir);
         return destDir;
     }
 
     public static Path getLogsDir(String testClass) throws IOException {
-        Path destDir = new File(getLogsDir().toString() + File.separator + testClass).toPath();
+        Path destDir = getLogsDir().resolve(testClass);
         Files.createDirectories(destDir);
         return destDir;
     }
 
     public static Path getLogsDir() throws IOException {
-        Path destDir = new File(BASE_DIR + File.separator + "tests" + File.separator + "archived-logs").toPath();
+        Path destDir = Path.of(ARCHIVED_LOGS_DIR);
         Files.createDirectories(destDir);
         return destDir;
     }
diff --git a/kogito-benchmarks-framework/src/main/resources/smarthouse-02-dm-quarkus/threshold.properties b/kogito-benchmarks-framework/src/main/resources/smarthouse-02-quarkus/threshold.properties
similarity index 100%
rename from kogito-benchmarks-framework/src/main/resources/smarthouse-02-dm-quarkus/threshold.properties
rename to kogito-benchmarks-framework/src/main/resources/smarthouse-02-quarkus/threshold.properties
diff --git a/kogito-benchmarks-framework/src/main/resources/smarthouse-02-dm-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/smarthouse-02-springboot/threshold.properties
similarity index 100%
rename from kogito-benchmarks-framework/src/main/resources/smarthouse-02-dm-springboot/threshold.properties
rename to kogito-benchmarks-framework/src/main/resources/smarthouse-02-springboot/threshold.properties
diff --git a/kogito-benchmarks-framework/src/main/resources/smarthouse-03-dm-quarkus/threshold.properties b/kogito-benchmarks-framework/src/main/resources/smarthouse-03-quarkus/threshold.properties
similarity index 100%
rename from kogito-benchmarks-framework/src/main/resources/smarthouse-03-dm-quarkus/threshold.properties
rename to kogito-benchmarks-framework/src/main/resources/smarthouse-03-quarkus/threshold.properties
diff --git a/kogito-benchmarks-framework/src/main/resources/smarthouse-03-dm-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/smarthouse-03-springboot/threshold.properties
similarity index 100%
rename from kogito-benchmarks-framework/src/main/resources/smarthouse-03-dm-springboot/threshold.properties
rename to kogito-benchmarks-framework/src/main/resources/smarthouse-03-springboot/threshold.properties
diff --git a/kogito-benchmarks-tests/pom.xml b/kogito-benchmarks-tests/pom.xml
index 0b19972..be0a998 100644
--- a/kogito-benchmarks-tests/pom.xml
+++ b/kogito-benchmarks-tests/pom.xml
@@ -16,7 +16,8 @@
   <description>Benchmarks of sample Kogito apps themselves</description>
 
   <properties>
-    <appsDir>${project.parent.basedir}/</appsDir>
+    <appsDir>apps-dir-needs-to-be-specified</appsDir>
+    <archivedLogsDir>${project.basedir}/archived-logs</archivedLogsDir>
 
     <version.org.apache.httpcomponents>4.5.13</version.org.apache.httpcomponents>
   </properties>
@@ -55,6 +56,7 @@
         <configuration>
           <systemPropertyVariables>
             <appsDir>${appsDir}</appsDir>
+            <archivedLogsDir>${archivedLogsDir}</archivedLogsDir>
           </systemPropertyVariables>
         </configuration>
       </plugin>
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
index 2b88f7f..0d47e70 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
@@ -120,7 +120,7 @@ public abstract class AbstractTemplateTest {
                 long startedInMs = (long) (startedStopped[0] * 1000);
                 long stoppedInMs = (long) (startedStopped[1] * 1000);
 
-                Path measurementsLog = Paths.get(getLogsDir(cn, mn).toString(), "measurements.csv");
+                Path measurementsLog = getLogsDir(cn, mn).resolve("measurements.csv");
                 LogBuilder.Log log = new LogBuilder()
                         .app(app)
                         .mode(mvnCmds)
@@ -150,7 +150,7 @@ public abstract class AbstractTemplateTest {
             long startedInMsAvgWithoutMinMax = getAvgWithoutMinMax(startedInMsValues);
             long stoppedInMsAvgWithoutMinMax = getAvgWithoutMinMax(stoppedInMsValues);
 
-            Path measurementsSummary = Paths.get(getLogsDir(cn).toString(), "measurementsSummary.csv");
+            Path measurementsSummary = getLogsDir(cn).resolve("measurementsSummary.csv");
 
             LogBuilder.Log log = new LogBuilder()
                     .app(app)
@@ -199,7 +199,7 @@ public abstract class AbstractTemplateTest {
         try {
             // Cleanup
             cleanTarget(app);
-            Files.createDirectories(Paths.get(appDir.getAbsolutePath() + File.separator + "logs"));
+            Files.createDirectories(Path.of(appDir.getAbsolutePath(), "logs"));
 
             // Build
             BuildResult buildResult = buildApp(app, mn, cn, whatIDidReport);
@@ -320,8 +320,8 @@ public abstract class AbstractTemplateTest {
             long startedInMs = (long) (startedStopped[0] * 1000);
             long stoppedInMs = (long) (startedStopped[1] * 1000);
 
-            Path measurementsLog = Paths.get(getLogsDir(cn, mn).toString(), "measurements.csv");
-            Path measurementsSummaryLog = Paths.get(getLogsDir(cn).toString(), "measurementsSummary.csv");
+            Path measurementsLog = getLogsDir(cn, mn).resolve("measurements.csv");
+            Path measurementsSummaryLog = getLogsDir(cn).resolve("measurementsSummary.csv");
             LogBuilder.Log log = new LogBuilder()
                     .app(app)
                     .mode(mvnCmds)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 19/38: Add JBoss Public Repository to locate the kogito-build-parent

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 58330d9a3d869a763382b8ec55491055c402c31e
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Tue Jun 22 17:06:43 2021 +0200

    Add JBoss Public Repository to locate the kogito-build-parent
---
 pom.xml | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/pom.xml b/pom.xml
index 0a7d55d..852c82f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,6 +20,24 @@
     <maven.compiler.release>11</maven.compiler.release> <!-- Mainly because of the additions to the Process API introduced in Java 9 -->
   </properties>
 
+  <repositories>
+    <!-- Bootstrap repository to locate the parent pom when the parent pom has not been build locally. -->
+    <repository>
+      <id>jboss-public-repository-group</id>
+      <name>JBoss Public Repository Group</name>
+      <url>https://repository.jboss.org/nexus/content/groups/public/</url>
+      <layout>default</layout>
+      <releases>
+        <enabled>true</enabled>
+        <updatePolicy>never</updatePolicy>
+      </releases>
+      <snapshots>
+        <enabled>true</enabled>
+        <updatePolicy>daily</updatePolicy>
+      </snapshots>
+    </repository>
+  </repositories>
+
   <modules>
     <module>kogito-benchmarks-framework</module>
     <module>kogito-benchmarks-tests</module>


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 23/38: BAQE-1910 - Report all metrics to a single file

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit a741542d1f52b6d0e84f9ed1b916c95416e7feb4
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Thu Jul 29 17:46:39 2021 +0200

    BAQE-1910 - Report all metrics to a single file
---
 .../src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
index d144781..0f99132 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
@@ -164,7 +164,7 @@ public abstract class AbstractTemplateTest {
             long startedInMsAvgWithoutMinMax = getAvgWithoutMinMax(startedInMsValues);
             long stoppedInMsAvgWithoutMinMax = getAvgWithoutMinMax(stoppedInMsValues);
 
-            Path measurementsSummary = getLogsDir(cn).resolve("measurementsSummary.csv");
+            Path measurementsSummary = getLogsDir().resolve("measurementsSummary.csv");
 
             LogBuilder.Log log = new LogBuilder()
                     .app(app)
@@ -337,7 +337,7 @@ public abstract class AbstractTemplateTest {
             long stoppedInMs = (long) (startedStopped[1] * 1000);
 
             Path measurementsLog = getLogsDir(cn, mn).resolve("measurements.csv");
-            Path measurementsSummaryLog = getLogsDir(cn).resolve("measurementsSummary.csv");
+            Path measurementsSummaryLog = getLogsDir().resolve("measurementsSummary.csv");
             LogBuilder.Log log = new LogBuilder()
                     .app(app)
                     .mode(mvnCmds)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 24/38: BAQE-1911 - Explicitly set heap size for tested apps

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit bd4ac3f59de2af6af27165a0b9f730dab2bbac0c
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Fri Jul 30 20:09:59 2021 +0200

    BAQE-1911 - Explicitly set heap size for tested apps
---
 .../java/org/kie/kogito/benchmarks/framework/App.java    | 12 +++++++-----
 .../org/kie/kogito/benchmarks/framework/Commands.java    | 16 +++++++++++++---
 .../org/kie/kogito/benchmarks/framework/MvnCmds.java     |  8 ++++++--
 .../src/test/resources/logback-test.xml                  |  2 ++
 4 files changed, 28 insertions(+), 10 deletions(-)

diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
index f9996b9..5984347 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
@@ -29,21 +29,23 @@ import org.apache.commons.lang3.StringUtils;
 import static org.kie.kogito.benchmarks.framework.Commands.APPS_DIR;
 
 public enum App {
-    SMARTHOUSE_02_QUARKUS_JVM("smarthouse-02-quarkus", MvnCmds.QUARKUS_JVM, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
-    SMARTHOUSE_03_QUARKUS_JVM("smarthouse-03-quarkus", MvnCmds.QUARKUS_JVM, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING),
+    SMARTHOUSE_02_QUARKUS_JVM("smarthouse-02-quarkus", MvnCmds.QUARKUS_JVM, new String[] { "-Xms1G", "-Xmx2G" }, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
+    SMARTHOUSE_03_QUARKUS_JVM("smarthouse-03-quarkus", MvnCmds.QUARKUS_JVM, new String[] { "-Xms1G", "-Xmx3G" }, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING),
 
-    SMARTHOUSE_02_SPRING_BOOT("smarthouse-02-springboot", MvnCmds.SPRING_BOOT_JVM, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
-    SMARTHOUSE_03_SPRING_BOOT("smarthouse-03-springboot", MvnCmds.SPRING_BOOT_JVM, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING);
+    SMARTHOUSE_02_SPRING_BOOT("smarthouse-02-springboot", MvnCmds.SPRING_BOOT_JVM, new String[] { "-Xms1G", "-Xmx2G" }, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
+    SMARTHOUSE_03_SPRING_BOOT("smarthouse-03-springboot", MvnCmds.SPRING_BOOT_JVM, new String[] { "-Xms1G", "-Xmx3G" }, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING);
 
     public final String dir;
     public final MvnCmds mavenCommands;
+    public final String[] jvmArgs;
     public final URLContent urlContent;
     public final WhitelistLogLines whitelistLogLines;
     public final Map<String, Long> thresholdProperties = new HashMap<>();
 
-    App(String dir, MvnCmds mavenCommands, URLContent urlContent, WhitelistLogLines whitelistLogLines) {
+    App(String dir, MvnCmds mavenCommands, String[] jvmArgs, URLContent urlContent, WhitelistLogLines whitelistLogLines) {
         this.dir = dir;
         this.mavenCommands = mavenCommands;
+        this.jvmArgs = jvmArgs;
         this.urlContent = urlContent;
         this.whitelistLogLines = whitelistLogLines;
 
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
index 8a788a6..da65087 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
@@ -195,7 +195,7 @@ public class Commands {
     public static RunInfo startApp(App app, StringBuilder whatIDidReport) throws IOException, InterruptedException {
         File appDir = app.getAppDir();
         File runLogA = Path.of(appDir.getAbsolutePath(), "logs", app.mavenCommands.name().toLowerCase() + "-run.log").toFile();
-        List<String> cmd = getRunCommand(app.mavenCommands.mvnCmds[1]);
+        List<String> cmd = getRunCommand(app.mavenCommands.mvnCmds[1], app.jvmArgs);
         appendln(whatIDidReport, appDir.getAbsolutePath());
         appendlnSection(whatIDidReport, String.join(" ", cmd));
         Process pA = runCommand(cmd, appDir, runLogA);
@@ -243,13 +243,22 @@ public class Commands {
         }
     }
 
-    public static List<String> getRunCommand(String[] baseCommand) {
+    public static List<String> getRunCommand(String[] baseCommand, String[] jvmArgs) {
         List<String> runCmd = new ArrayList<>();
         if (isThisWindows) {
             runCmd.add("cmd");
             runCmd.add("/C");
         }
-        runCmd.addAll(Arrays.asList(baseCommand));
+
+        logger.debug("Filtering command: {}", Arrays.asList(baseCommand));
+        for (String cmdPart : baseCommand) {
+            if (cmdPart.equals(MvnCmds.Placeholders.JVM_ARGS)) {
+                runCmd.addAll(Arrays.asList(jvmArgs));
+            } else {
+                runCmd.add(cmdPart);
+            }
+        }
+        logger.debug("Command filtered: {}", runCmd);
 
         return Collections.unmodifiableList(runCmd);
     }
@@ -315,6 +324,7 @@ public class Commands {
     }
 
     public static Process runCommand(List<String> command, File directory, File logFile) {
+        logger.info("Running command: {}", String.join(" ", command));
         ProcessBuilder pa = new ProcessBuilder(command);
         Map<String, String> envA = pa.environment();
         envA.put("PATH", System.getenv("PATH"));
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
index c24143c..8b40b3b 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
@@ -23,11 +23,11 @@ import static org.kie.kogito.benchmarks.framework.Commands.getQuarkusNativePrope
 public enum MvnCmds {
     QUARKUS_JVM(new String[][] {
             new String[] { "mvn", "clean", "package", "-Dquarkus.package.output-name=quarkus" },
-            new String[] { "java", "-jar", "target/quarkus-runner.jar" }
+            new String[] { "java", Placeholders.JVM_ARGS, "-jar", "target/quarkus-runner.jar" }
     }),
     SPRING_BOOT_JVM(new String[][] {
             new String[] { "mvn", "clean", "package" }, // The JAR name is unified by setting finalName in the kie-assets-library repo
-            new String[] { "java", "-jar", "target/smarthouse.jar" }
+            new String[] { "java", Placeholders.JVM_ARGS, "-jar", "target/smarthouse.jar" }
     }),
 
     // These are not used now but may be useful in the future
@@ -61,4 +61,8 @@ public enum MvnCmds {
     public boolean isJVM() {
         return this.name().contains("JVM");
     }
+
+    public static class Placeholders {
+        public static final String JVM_ARGS = "$JVM_ARGS";
+    }
 }
diff --git a/kogito-benchmarks-tests/src/test/resources/logback-test.xml b/kogito-benchmarks-tests/src/test/resources/logback-test.xml
index af25563..4f8d522 100644
--- a/kogito-benchmarks-tests/src/test/resources/logback-test.xml
+++ b/kogito-benchmarks-tests/src/test/resources/logback-test.xml
@@ -13,4 +13,6 @@
     <appender-ref ref="consoleAppender" />
   </root>
 
+<!--  <logger name="org.kie.kogito.benchmarks.framework.Commands" level="debug"/>-->
+
 </configuration>
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 09/38: Remove StartStopTest as it's no longer needed.

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 85ebaac3b211067eb00672f355c1313cf50746a1
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Tue May 11 10:04:54 2021 +0200

    Remove StartStopTest as it's no longer needed.
---
 .../org/kie/kogito/benchmarks/StartStopTest.java   | 214 ---------------------
 1 file changed, 214 deletions(-)

diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/StartStopTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/StartStopTest.java
deleted file mode 100644
index edf04e7..0000000
--- a/tests/src/test/java/org/kie/kogito/benchmarks/StartStopTest.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Copyright 2021 Red Hat, Inc. and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.kie.kogito.benchmarks;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
-
-import org.jboss.logging.Logger;
-import org.junit.jupiter.api.Tag;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.TestInfo;
-import org.kie.kogito.benchmarks.framework.App;
-import org.kie.kogito.benchmarks.framework.Commands;
-import org.kie.kogito.benchmarks.framework.LogBuilder;
-import org.kie.kogito.benchmarks.framework.Logs;
-import org.kie.kogito.benchmarks.framework.MvnCmds;
-import org.kie.kogito.benchmarks.framework.WebpageTester;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.kie.kogito.benchmarks.framework.Commands.cleanTarget;
-import static org.kie.kogito.benchmarks.framework.Commands.getBaseDir;
-import static org.kie.kogito.benchmarks.framework.Commands.getBuildCommand;
-import static org.kie.kogito.benchmarks.framework.Commands.getOpenedFDs;
-import static org.kie.kogito.benchmarks.framework.Commands.getRSSkB;
-import static org.kie.kogito.benchmarks.framework.Commands.getRunCommand;
-import static org.kie.kogito.benchmarks.framework.Commands.parsePort;
-import static org.kie.kogito.benchmarks.framework.Commands.processStopper;
-import static org.kie.kogito.benchmarks.framework.Commands.runCommand;
-import static org.kie.kogito.benchmarks.framework.Commands.waitForTcpClosed;
-import static org.kie.kogito.benchmarks.framework.Logs.SKIP;
-import static org.kie.kogito.benchmarks.framework.Logs.appendln;
-import static org.kie.kogito.benchmarks.framework.Logs.appendlnSection;
-import static org.kie.kogito.benchmarks.framework.Logs.archiveLog;
-import static org.kie.kogito.benchmarks.framework.Logs.checkListeningHost;
-import static org.kie.kogito.benchmarks.framework.Logs.checkLog;
-import static org.kie.kogito.benchmarks.framework.Logs.checkThreshold;
-import static org.kie.kogito.benchmarks.framework.Logs.getLogsDir;
-import static org.kie.kogito.benchmarks.framework.Logs.parseStartStopTimestamps;
-import static org.kie.kogito.benchmarks.framework.Logs.writeReport;
-
-@Tag("startstop")
-public class StartStopTest {
-
-    private static final Logger LOGGER = Logger.getLogger(StartStopTest.class.getName());
-
-    public static final String BASE_DIR = getBaseDir();
-
-    public void testRuntime(TestInfo testInfo, App app, MvnCmds mvnCmds) throws IOException, InterruptedException {
-        LOGGER.info("Testing app: " + app.toString() + ", mode: " + mvnCmds.toString());
-
-        Process pA = null;
-        File buildLogA = null;
-        File runLogA = null;
-        StringBuilder whatIDidReport = new StringBuilder();
-        File appDir = new File(BASE_DIR + File.separator + app.dir);
-        String cn = testInfo.getTestClass().get().getCanonicalName();
-        String mn = testInfo.getTestMethod().get().getName();
-        try {
-            // Cleanup
-            cleanTarget(app);
-            Files.createDirectories(Paths.get(appDir.getAbsolutePath() + File.separator + "logs"));
-
-            // Build
-            buildLogA = new File(appDir.getAbsolutePath() + File.separator + "logs" + File.separator + mvnCmds.name().toLowerCase() + "-build.log");
-            ExecutorService buildService = Executors.newFixedThreadPool(1);
-
-            List<String> baseBuildCmd = new ArrayList<>();
-            baseBuildCmd.addAll(Arrays.asList(mvnCmds.mvnCmds[0]));
-            //baseBuildCmd.add("-Dquarkus.version=" + getQuarkusVersion());
-            List<String> cmd = getBuildCommand(baseBuildCmd.toArray(new String[0]));
-
-            buildService.submit(new Commands.ProcessRunner(appDir, buildLogA, cmd, 20)); // TODO exit code handling
-            appendln(whatIDidReport, "# " + cn + ", " + mn);
-            appendln(whatIDidReport, (new Date()).toString());
-            appendln(whatIDidReport, appDir.getAbsolutePath());
-            appendlnSection(whatIDidReport, String.join(" ", cmd));
-            long buildStarts = System.currentTimeMillis();
-            buildService.shutdown();
-            buildService.awaitTermination(30, TimeUnit.MINUTES);
-            long buildEnds = System.currentTimeMillis();
-
-            assertTrue(buildLogA.exists());
-            checkLog(cn, mn, app, mvnCmds, buildLogA);
-
-            List<Long> rssKbList = new ArrayList<>(10);
-            List<Long> timeToFirstOKRequestList = new ArrayList<>(10);
-            for (int i = 0; i < 1; i++) {
-                // Run
-                LOGGER.info("Running... round " + i);
-                runLogA = new File(appDir.getAbsolutePath() + File.separator + "logs" + File.separator + mvnCmds.name().toLowerCase() + "-run.log");
-                cmd = getRunCommand(mvnCmds.mvnCmds[1]);
-                appendln(whatIDidReport, appDir.getAbsolutePath());
-                appendlnSection(whatIDidReport, String.join(" ", cmd));
-                long runStarts = System.currentTimeMillis();
-                pA = runCommand(cmd, appDir, runLogA);
-                long runEnds = System.currentTimeMillis();
-                System.out.println("RunEnds (" + runEnds + ") - RunStarts (" + runStarts + ") : " + (runEnds - runStarts));
-                // Test web pages
-                long timeToFirstOKRequest = WebpageTester.testWeb(app.urlContent.urlContent[0][0], 10, app.urlContent.urlContent[0][1], true);
-                LOGGER.info("Testing web page content...");
-                for (String[] urlContent : app.urlContent.urlContent) {
-                    WebpageTester.testWeb(urlContent[0], 5, urlContent[1], false);
-                }
-
-                LOGGER.info("Terminate and scan logs...");
-                pA.getInputStream().available(); // TODO Ask Karm
-
-                long rssKb = getRSSkB(pA.pid());
-                long openedFiles = getOpenedFDs(pA.pid());
-
-                processStopper(pA, false);
-
-                LOGGER.info("Gonna wait for ports closed...");
-                // Release ports
-                assertTrue(waitForTcpClosed("localhost", parsePort(app.urlContent.urlContent[0][0]), 60),
-                        "Main port is still open");
-                checkLog(cn, mn, app, mvnCmds, runLogA);
-                checkListeningHost(cn, mn, mvnCmds, runLogA);
-
-                float[] startedStopped = parseStartStopTimestamps(runLogA, app);
-
-                Path measurementsLog = Paths.get(getLogsDir(cn, mn).toString(), "measurements.csv");
-                LogBuilder.Log log = new LogBuilder()
-                        .app(app)
-                        .mode(mvnCmds)
-                        .buildTimeMs(buildEnds - buildStarts)
-                        .timeToFirstOKRequestMs(timeToFirstOKRequest)
-                        .startedInMs((long) (startedStopped[0] * 1000))
-                        .stoppedInMs((long) (startedStopped[1] * 1000))
-                        .rssKb(rssKb)
-                        .openedFiles(openedFiles)
-                        .build();
-                Logs.logMeasurements(log, measurementsLog);
-                appendln(whatIDidReport, "Measurements:");
-                appendln(whatIDidReport, log.headerMarkdown + "\n" + log.lineMarkdown);
-
-                rssKbList.add(rssKb);
-                timeToFirstOKRequestList.add(timeToFirstOKRequest);
-            }
-
-            long rssKbAvgWithoutMinMax = getAvgWithoutMinMax(rssKbList);
-            long timeToFirstOKRequestAvgWithoutMinMax = getAvgWithoutMinMax(timeToFirstOKRequestList);
-            LOGGER.info("AVG timeToFirstOKRequest without min and max values: " + timeToFirstOKRequestAvgWithoutMinMax);
-            LOGGER.info("AVG rssKb without min and max values: " + rssKbAvgWithoutMinMax);
-            checkThreshold(app, mvnCmds, rssKbAvgWithoutMinMax, timeToFirstOKRequestAvgWithoutMinMax, SKIP);
-        } finally {
-            // Make sure processes are down even if there was an exception / failure
-            if (pA != null) {
-                processStopper(pA, true);
-            }
-            // Archive logs no matter what
-            archiveLog(cn, mn, buildLogA);
-            archiveLog(cn, mn, runLogA);
-            writeReport(cn, mn, whatIDidReport.toString());
-            //cleanTarget(app);
-        }
-    }
-
-    private long getAvgWithoutMinMax(List<Long> listOfValues) {
-        //        listOfValues.remove(Collections.min(listOfValues));
-        //        listOfValues.remove(Collections.max(listOfValues));
-        return (long) listOfValues.stream().mapToLong(val -> val).average().orElse(Long.MAX_VALUE);
-    }
-
-//    @Test
-//    public void kogito(TestInfo testInfo) throws IOException, InterruptedException {
-//        testRuntime(testInfo, App.SMARTHOUSE_02_QUARKUS_JVM, MvnCmds.QUARKUS_JVM);
-//    }
-
-    //    @Test
-    //    public void jaxRsMinimalJVM(TestInfo testInfo) throws IOException, InterruptedException {
-    //        testRuntime(testInfo, App.JAX_RS_MINIMAL, MvnCmds.JVM);
-    //    }
-    //
-    //    @Test
-    //    @Tag("native")
-    //    public void jaxRsMinimalNative(TestInfo testInfo) throws IOException, InterruptedException {
-    //        testRuntime(testInfo, App.JAX_RS_MINIMAL, MvnCmds.NATIVE);
-    //    }
-    //
-    //    @Test
-    //    public void fullMicroProfileJVM(TestInfo testInfo) throws IOException, InterruptedException {
-    //        testRuntime(testInfo, App.FULL_MICROPROFILE, MvnCmds.JVM);
-    //    }
-    //
-    //    @Test
-    //    @Tag("native")
-    //    public void fullMicroProfileNative(TestInfo testInfo) throws IOException, InterruptedException {
-    //        testRuntime(testInfo, App.FULL_MICROPROFILE, MvnCmds.NATIVE);
-    //    }
-}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 21/38: BAQE-1915 - Go over TODOs and ask Karm about some parts of the code

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit a19f0f4ac17c85bec52044a69884686b57b7ee8f
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Fri Jul 2 17:05:16 2021 +0200

    BAQE-1915 - Go over TODOs and ask Karm about some parts of the code
---
 .../src/main/java/org/kie/kogito/benchmarks/framework/Commands.java    | 3 +--
 .../src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java  | 1 -
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
index b2966d5..8a788a6 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
@@ -438,8 +438,7 @@ public class Commands {
      * 3.473028811 seconds time elapsed
      */
 
-    // TODO Ask Karm about this
-    public static void processStopper(Process p, boolean force) throws InterruptedException, IOException {
+    public static void processStopper(Process p, boolean force) throws InterruptedException {
         p.children().forEach(child -> {
             if (child.supportsNormalTermination()) {
                 child.destroy();
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
index 329dad8..3763365 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
@@ -116,7 +116,6 @@ public abstract class AbstractTemplateTest {
                 runLogA = runInfo.getRunLog();
 
                 logger.info("Terminate and scan logs...");
-                pA.getInputStream().available(); // TODO Ask Karm
 
                 long rssKb = getRSSkB(pA.pid());
                 long openedFiles = getOpenedFDs(pA.pid());


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 27/38: KOGITO-6234 - Performance regression testing of BPMN Kogito straight-through processes (2nd level)

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 6c4ecd13fc3392d6e80932855f6992caa1c12417
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Tue Nov 2 17:38:56 2021 +0100

    KOGITO-6234 - Performance regression testing of BPMN Kogito straight-through processes (2nd level)
---
 .../org/kie/kogito/benchmarks/framework/App.java   |  8 +--
 .../benchmarks/framework/HTTPRequestInfo.java      | 63 ++++++++++++++++++++++
 .../kie/kogito/benchmarks/framework/MvnCmds.java   |  2 +-
 .../kogito/benchmarks/framework/URLContent.java    |  4 +-
 .../threshold.properties                           |  0
 .../threshold.properties                           |  0
 .../threshold.properties                           |  0
 .../threshold.properties                           |  4 +-
 .../benchmarks/SmartHouseSTPQuarkusTest.java       | 48 +++++++++++++++++
 .../benchmarks/SmartHouseSTPSpringBootTest.java    | 48 +++++++++++++++++
 10 files changed, 170 insertions(+), 7 deletions(-)

diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
index 5984347..b762e6c 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
@@ -29,11 +29,13 @@ import org.apache.commons.lang3.StringUtils;
 import static org.kie.kogito.benchmarks.framework.Commands.APPS_DIR;
 
 public enum App {
-    SMARTHOUSE_02_QUARKUS_JVM("smarthouse-02-quarkus", MvnCmds.QUARKUS_JVM, new String[] { "-Xms1G", "-Xmx2G" }, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
-    SMARTHOUSE_03_QUARKUS_JVM("smarthouse-03-quarkus", MvnCmds.QUARKUS_JVM, new String[] { "-Xms1G", "-Xmx3G" }, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING),
+    SMARTHOUSE_02_QUARKUS_JVM("smarthouse-02-quarkus-mvn", MvnCmds.QUARKUS_JVM, new String[] { "-Xms1G", "-Xmx2G" }, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
+    SMARTHOUSE_03_QUARKUS_JVM("smarthouse-03-quarkus-mvn", MvnCmds.QUARKUS_JVM, new String[] { "-Xms1G", "-Xmx3G" }, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING),
+    SMARTHOUSE_STP_QUARKUS_JVM("stp-smarthouse-03-quarkus-mvn", MvnCmds.QUARKUS_JVM, new String[] { "-Xms1G", "-Xmx3G" }, URLContent.SMARTHOUSE_STP, WhitelistLogLines.EVERYTHING),
 
     SMARTHOUSE_02_SPRING_BOOT("smarthouse-02-springboot", MvnCmds.SPRING_BOOT_JVM, new String[] { "-Xms1G", "-Xmx2G" }, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
-    SMARTHOUSE_03_SPRING_BOOT("smarthouse-03-springboot", MvnCmds.SPRING_BOOT_JVM, new String[] { "-Xms1G", "-Xmx3G" }, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING);
+    SMARTHOUSE_03_SPRING_BOOT("smarthouse-03-springboot", MvnCmds.SPRING_BOOT_JVM, new String[] { "-Xms1G", "-Xmx3G" }, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING),
+    SMARTHOUSE_STP_SPRING_BOOT_JVM("stp-smarthouse-03-springboot", MvnCmds.SPRING_BOOT_JVM, new String[] { "-Xms1G", "-Xmx3G" }, URLContent.SMARTHOUSE_STP, WhitelistLogLines.EVERYTHING);
 
     public final String dir;
     public final MvnCmds mavenCommands;
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
index c5a236c..aa85a56 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
@@ -158,6 +158,69 @@ public class HTTPRequestInfo {
                 "    }\n" +
                 "  ]\n" +
                 "}";
+
+        public static final String SMARTHOUSE_BPMN_DMN = "{\n" +
+                "  \"sensorsTemperature\": [\n" +
+                "    {\n" +
+                "      \"placement\": \"OUTSIDE\",\n" +
+                "      \"current\": 25,\n" +
+                "      \"previous\": [\n" +
+                "        24,\n" +
+                "        23,\n" +
+                "        19,\n" +
+                "        16,\n" +
+                "        15,\n" +
+                "        11\n" +
+                "      ]\n" +
+                "    },\n" +
+                "    {\n" +
+                "      \"placement\": \"INSIDE\",\n" +
+                "      \"current\": 24.9,\n" +
+                "      \"previous\": [\n" +
+                "        25,\n" +
+                "        28,\n" +
+                "        28,\n" +
+                "        28,\n" +
+                "        28,\n" +
+                "        28\n" +
+                "      ]\n" +
+                "    }\n" +
+                "  ],\n" +
+                "  \"sensorsHumidity\": [\n" +
+                "    {\n" +
+                "      \"placement\": \"OUTSIDE\",\n" +
+                "      \"current\": 0,\n" +
+                "      \"previous\": [\n" +
+                "        0,\n" +
+                "        0,\n" +
+                "        0,\n" +
+                "        0,\n" +
+                "        0,\n" +
+                "        0\n" +
+                "      ]\n" +
+                "    },\n" +
+                "    {\n" +
+                "      \"placement\": \"INSIDE\",\n" +
+                "      \"current\": 0,\n" +
+                "      \"previous\": [\n" +
+                "        0,\n" +
+                "        0,\n" +
+                "        0,\n" +
+                "        0,\n" +
+                "        0,\n" +
+                "        0\n" +
+                "      ]\n" +
+                "    }\n" +
+                "  ],\n" +
+                "  \"settingsTemperature\": {\n" +
+                "    \"threshold_low\": 21,\n" +
+                "    \"threshold_high\": 24\n" +
+                "  },\n" +
+                "  \"settingsHumidity\": {\n" +
+                "    \"threshold_low\": 0,\n" +
+                "    \"threshold_high\": 0\n" +
+                "  }\n" +
+                "}";
     }
 
 }
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
index 8b40b3b..a6800a4 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
@@ -23,7 +23,7 @@ import static org.kie.kogito.benchmarks.framework.Commands.getQuarkusNativePrope
 public enum MvnCmds {
     QUARKUS_JVM(new String[][] {
             new String[] { "mvn", "clean", "package", "-Dquarkus.package.output-name=quarkus" },
-            new String[] { "java", Placeholders.JVM_ARGS, "-jar", "target/quarkus-runner.jar" }
+            new String[] { "java", Placeholders.JVM_ARGS, "-jar", "target/quarkus-app/quarkus-run.jar" }
     }),
     SPRING_BOOT_JVM(new String[][] {
             new String[] { "mvn", "clean", "package" }, // The JAR name is unified by setting finalName in the kie-assets-library repo
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java
index 5de9107..0f42412 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java
@@ -17,7 +17,9 @@ package org.kie.kogito.benchmarks.framework;
 
 public enum URLContent {
     SMARTHOUSE_02(new String[][] { new String[] { "http://localhost:8080/heating", "name=\"heating\"" } }),
-    SMARTHOUSE_03(new String[][] { new String[] { "http://localhost:8080/heating", "name=\"heating\"" } });
+    SMARTHOUSE_03(new String[][] { new String[] { "http://localhost:8080/heating", "name=\"heating\"" } }),
+    SMARTHOUSE_STP(new String[][] { new String[] { "http://localhost:8080/heating", "name=\"heating\"" },
+            new String[] { "http://localhost:8080/smartHouse", "[]" } });
 
     public final String[][] urlContent;
 
diff --git a/kogito-benchmarks-framework/src/main/resources/smarthouse-02-quarkus/threshold.properties b/kogito-benchmarks-framework/src/main/resources/smarthouse-02-quarkus-mvn/threshold.properties
similarity index 100%
copy from kogito-benchmarks-framework/src/main/resources/smarthouse-02-quarkus/threshold.properties
copy to kogito-benchmarks-framework/src/main/resources/smarthouse-02-quarkus-mvn/threshold.properties
diff --git a/kogito-benchmarks-framework/src/main/resources/smarthouse-03-quarkus/threshold.properties b/kogito-benchmarks-framework/src/main/resources/smarthouse-03-quarkus-mvn/threshold.properties
similarity index 100%
copy from kogito-benchmarks-framework/src/main/resources/smarthouse-03-quarkus/threshold.properties
copy to kogito-benchmarks-framework/src/main/resources/smarthouse-03-quarkus-mvn/threshold.properties
diff --git a/kogito-benchmarks-framework/src/main/resources/smarthouse-03-quarkus/threshold.properties b/kogito-benchmarks-framework/src/main/resources/stp-smarthouse-03-quarkus-mvn/threshold.properties
similarity index 100%
rename from kogito-benchmarks-framework/src/main/resources/smarthouse-03-quarkus/threshold.properties
rename to kogito-benchmarks-framework/src/main/resources/stp-smarthouse-03-quarkus-mvn/threshold.properties
diff --git a/kogito-benchmarks-framework/src/main/resources/smarthouse-02-quarkus/threshold.properties b/kogito-benchmarks-framework/src/main/resources/stp-smarthouse-03-springboot/threshold.properties
similarity index 67%
rename from kogito-benchmarks-framework/src/main/resources/smarthouse-02-quarkus/threshold.properties
rename to kogito-benchmarks-framework/src/main/resources/stp-smarthouse-03-springboot/threshold.properties
index 36c0c1c..91cd28f 100644
--- a/kogito-benchmarks-framework/src/main/resources/smarthouse-02-quarkus/threshold.properties
+++ b/kogito-benchmarks-framework/src/main/resources/stp-smarthouse-03-springboot/threshold.properties
@@ -1,5 +1,5 @@
-linux.jvm.time.to.first.ok.request.threshold.ms=3400
-linux.jvm.RSS.threshold.kB=380000
+linux.jvm.time.to.first.ok.request.threshold.ms=6000
+linux.jvm.RSS.threshold.kB=800000
 linux.native.time.to.first.ok.request.threshold.ms=35
 linux.native.RSS.threshold.kB=90000
 windows.jvm.time.to.first.ok.request.threshold.ms=2000
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouseSTPQuarkusTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouseSTPQuarkusTest.java
new file mode 100644
index 0000000..87fdf55
--- /dev/null
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouseSTPQuarkusTest.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.kie.kogito.benchmarks;
+
+import java.io.IOException;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+import org.kie.kogito.benchmarks.framework.App;
+import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
+
+public class SmartHouseSTPQuarkusTest extends AbstractTemplateTest {
+
+    private static final App APP_TO_TEST = App.SMARTHOUSE_STP_QUARKUS_JVM;
+
+    @Test
+    public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
+        startStop(testInfo, APP_TO_TEST);
+    }
+
+    @Test
+    public void loadTest(TestInfo testInfo) throws IOException, InterruptedException {
+        HTTPRequestInfo requestInfo = HTTPRequestInfo.builder()
+                .URI(LOCALHOST + "/smartHouse")
+                .body(HTTPRequestInfo.Body.SMARTHOUSE_BPMN_DMN)
+                .method("POST")
+                .header("Accept", "application/json")
+                .header("Content-Type", "application/json")
+                .expectedResponseStatusCode(201)
+                .build(); // This may be directly replaced for example by Apache-specific class, but this keeps
+                                                                                                                                                                                                                                                                                              // it detached from any framework
+
+        loadTest(testInfo, APP_TO_TEST, requestInfo);
+    }
+}
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouseSTPSpringBootTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouseSTPSpringBootTest.java
new file mode 100644
index 0000000..f7b1616
--- /dev/null
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/SmartHouseSTPSpringBootTest.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.kie.kogito.benchmarks;
+
+import java.io.IOException;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+import org.kie.kogito.benchmarks.framework.App;
+import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
+
+public class SmartHouseSTPSpringBootTest extends AbstractTemplateTest {
+
+    private static final App APP_TO_TEST = App.SMARTHOUSE_STP_SPRING_BOOT_JVM;
+
+    @Test
+    public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
+        startStop(testInfo, APP_TO_TEST);
+    }
+
+    @Test
+    public void loadTest(TestInfo testInfo) throws IOException, InterruptedException {
+        HTTPRequestInfo requestInfo = HTTPRequestInfo.builder()
+                .URI(LOCALHOST + "/smartHouse")
+                .body(HTTPRequestInfo.Body.SMARTHOUSE_BPMN_DMN)
+                .method("POST")
+                .header("Accept", "application/json")
+                .header("Content-Type", "application/json")
+                .expectedResponseStatusCode(201)
+                .build(); // This may be directly replaced for example by Apache-specific class, but this keeps
+                                                                                                                                                                                                                                                                                              // it detached from any framework
+
+        loadTest(testInfo, APP_TO_TEST, requestInfo);
+    }
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 15/38: Incorporate PR review suggestions

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 2a1a9f3485d604fdafc1d25d67ee0c841b321611
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Tue Jun 8 20:06:08 2021 +0200

    Incorporate PR review suggestions
---
 .../org/kie/kogito/benchmarks/framework/App.java   | 18 +++++------
 .../kie/kogito/benchmarks/framework/Commands.java  | 36 +++++++---------------
 .../kogito/benchmarks/AbstractTemplateTest.java    |  2 +-
 3 files changed, 21 insertions(+), 35 deletions(-)

diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
index ce16304..70c83c7 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
@@ -14,11 +14,11 @@ import org.apache.commons.lang3.StringUtils;
 import static org.kie.kogito.benchmarks.framework.Commands.APPS_DIR;
 
 public enum App {
-    SMARTHOUSE_02_QUARKUS_JVM("smarthouse-02-dm-quarkus", MvnCmds.QUARKUS_JVM, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
-    SMARTHOUSE_03_QUARKUS_JVM("smarthouse-03-dm-quarkus", MvnCmds.QUARKUS_JVM, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING),
+    SMARTHOUSE_02_QUARKUS_JVM("smarthouse-02-quarkus", MvnCmds.QUARKUS_JVM, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
+    SMARTHOUSE_03_QUARKUS_JVM("smarthouse-03-quarkus", MvnCmds.QUARKUS_JVM, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING),
 
-    SMARTHOUSE_02_SPRING_BOOT("smarthouse-02-dm-springboot", MvnCmds.SPRING_BOOT_JVM, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
-    SMARTHOUSE_03_SPRING_BOOT("smarthouse-03-dm-springboot", MvnCmds.SPRING_BOOT_JVM, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING);
+    SMARTHOUSE_02_SPRING_BOOT("smarthouse-02-springboot", MvnCmds.SPRING_BOOT_JVM, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
+    SMARTHOUSE_03_SPRING_BOOT("smarthouse-03-springboot", MvnCmds.SPRING_BOOT_JVM, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING);
 
     public final String dir;
     public final MvnCmds mavenCommands;
@@ -32,11 +32,11 @@ public enum App {
         this.urlContent = urlContent;
         this.whitelistLogLines = whitelistLogLines;
 
-        String tpFilePath = "/" + dir + "/threshold.properties";
-        URL tpFile = Optional.ofNullable(App.class.getResource(tpFilePath))
-                .orElseThrow(() -> new RuntimeException("Couldn't find " + tpFilePath));
+        String propertiesFilePath = "/" + dir + "/threshold.properties";
+        URL propertiesFile = Optional.ofNullable(App.class.getResource(propertiesFilePath))
+                .orElseThrow(() -> new RuntimeException("Couldn't find " + propertiesFilePath));
         String appDirNormalized = dir.toUpperCase().replace('-', '_') + "_";
-        try (InputStream input = tpFile.openStream()) {
+        try (InputStream input = propertiesFile.openStream()) {
             Properties props = new Properties();
             props.load(input);
             for (String pn : props.stringPropertyNames()) {
@@ -55,7 +55,7 @@ public enum App {
             throw new IllegalArgumentException("Check threshold.properties and Sys and Env variables (upper case, underscores instead of dots). " +
                     "All values are expected to be of type long.");
         } catch (IOException e) {
-            throw new RuntimeException("Couldn't read " + tpFilePath);
+            throw new RuntimeException("Couldn't read " + propertiesFilePath);
         }
     }
 
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
index e57f32c..fc6c5dd 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
@@ -47,20 +47,6 @@ public class Commands {
     private static final Pattern quarkusVersionPattern = Pattern.compile("[ \t]*<quarkus.version>([^<]*)</quarkus.version>.*");
     private static final Pattern trailingSlash = Pattern.compile("/+$");
 
-    public static String getArtifactGeneBaseDir() {
-        for (String p : new String[] { "ARTIFACT_GENERATOR_WORKSPACE", "artifact.generator.workspace" }) {
-            String env = System.getenv().get(p);
-            if (StringUtils.isNotBlank(env)) {
-                return env;
-            }
-            String sys = System.getProperty(p);
-            if (StringUtils.isNotBlank(sys)) {
-                return sys;
-            }
-        }
-        return System.getProperty("java.io.tmpdir");
-    }
-
     public static String getLocalMavenRepoDir() {
         for (String p : new String[] { "TESTS_MAVEN_REPO_LOCAL", "tests.maven.repo.local" }) {
             String env = System.getenv().get(p);
@@ -78,7 +64,7 @@ public class Commands {
             return mainBuildRepo;
         }
 
-        return System.getProperty("user.home") + File.separator + ".m2" + File.separator + "repository";
+        return Path.of(System.getProperty("user.home"), ".m2", "repository").toString();
     }
 
     /**
@@ -120,8 +106,8 @@ public class Commands {
                 return sys;
             }
         }
-        String failure = "Failed to determine quarkus.version. Check pom.xm, check env and sys vars QUARKUS_VERSION";
-        try (Scanner sc = new Scanner(new File(getBaseDir() + File.separator + "pom.xml"), StandardCharsets.UTF_8)) {
+        String failure = "Failed to determine quarkus.version. Check pom.xml, check env and sys vars QUARKUS_VERSION";
+        try (Scanner sc = new Scanner(Path.of(getBaseDir(), "pom.xml"), StandardCharsets.UTF_8)) {
             while (sc.hasNextLine()) {
                 String line = sc.nextLine();
                 Matcher m = quarkusVersionPattern.matcher(line);
@@ -159,8 +145,8 @@ public class Commands {
     }
 
     public static void cleanTarget(App app) {
-        String target = APPS_DIR + File.separator + app.dir + File.separator + "target";
-        String logs = APPS_DIR + File.separator + app.dir + File.separator + "logs";
+        Path target = Path.of(APPS_DIR, app.dir, "target");
+        Path logs = Path.of(APPS_DIR, app.dir, "logs");
         cleanDirOrFile(target, logs);
     }
 
@@ -222,15 +208,15 @@ public class Commands {
         Assertions.assertThat(p.exitValue()).isEqualTo(0);
     }
 
-    public static void cleanDirOrFile(String... path) {
-        for (String s : path) {
+    public static void cleanDirOrFile(Path... paths) {
+        for (Path path : paths) {
             try {
-                Files.walk(Paths.get(s))
+                Files.walk(path)
                         .sorted(Comparator.reverseOrder())
                         .map(Path::toFile)
                         .forEach(File::delete);
             } catch (IOException e) {
-                logger.warn("Unable to delete directories or files", e);
+                throw new RuntimeException("Unable to delete directories or files", e);
             }
         }
     }
@@ -287,8 +273,8 @@ public class Commands {
 
     // TODO this may be useful in the future
     public static void adjustPrettyPrintForJsonLogging(String appDir) throws IOException {
-        Path appProps = Paths.get(appDir + File.separator + "src" + File.separator + "main" + File.separator + "resources" + File.separator + "application.properties");
-        Path appYaml = Paths.get(appDir + File.separator + "src" + File.separator + "main" + File.separator + "resources" + File.separator + "application.yml");
+        Path appProps = Path.of(appDir, "src", "main", "resources", "application.properties");
+        Path appYaml = Path.of(appDir, "src", "main", "resources", "application.yml");
 
         adjustFileContent(appProps, "quarkus.log.console.json.pretty-print=true", "quarkus.log.console.json.pretty-print=false");
         adjustFileContent(appYaml, "pretty-print: true", "pretty-print: fase");
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
index e5b299d..2b88f7f 100644
--- a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
@@ -70,7 +70,7 @@ public abstract class AbstractTemplateTest {
         try {
             // Cleanup
             cleanTarget(app);
-            Files.createDirectories(Paths.get(appDir.getAbsolutePath() + File.separator + "logs"));
+            Files.createDirectories(Path.of(appDir.getAbsolutePath(), "logs"));
 
             // Build first time to download dependencies
             BuildResult buildResult = buildApp(app, mn, cn, whatIDidReport);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 38/38: Merge pull request #16 from kbowers-ibm/kie-issues#570

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit f1518aa9cdec3861cbfb949268674a709a4ed608
Merge: 9d58c62 622ee2d
Author: Kbowers <92...@users.noreply.github.com>
AuthorDate: Mon Nov 13 09:32:22 2023 +0100

    Merge pull request #16 from kbowers-ibm/kie-issues#570
    
    kie-issues#570: replace copyrights headers/comments in kogito-benchmarks

 NOTICE                                             |  9 ++++++++
 kogito-benchmarks-framework/pom.xml                | 16 ++++++++++++++
 .../org/kie/kogito/benchmarks/framework/App.java   | 25 ++++++++++++----------
 .../kogito/benchmarks/framework/BuildResult.java   | 25 ++++++++++++----------
 .../kie/kogito/benchmarks/framework/Commands.java  | 25 ++++++++++++----------
 .../benchmarks/framework/HTTPRequestInfo.java      | 25 ++++++++++++----------
 .../kogito/benchmarks/framework/LogBuilder.java    | 25 ++++++++++++----------
 .../org/kie/kogito/benchmarks/framework/Logs.java  | 25 ++++++++++++----------
 .../kie/kogito/benchmarks/framework/MvnCmds.java   | 25 ++++++++++++----------
 .../kie/kogito/benchmarks/framework/RunInfo.java   | 25 ++++++++++++----------
 .../kogito/benchmarks/framework/URLContent.java    | 25 ++++++++++++----------
 .../kogito/benchmarks/framework/WebpageTester.java | 25 ++++++++++++----------
 .../benchmarks/framework/WhitelistLogLines.java    | 25 ++++++++++++----------
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../smarthouse-02-quarkus-mvn/threshold.properties | 16 ++++++++++++++
 .../smarthouse-02-springboot/threshold.properties  | 16 ++++++++++++++
 .../smarthouse-03-quarkus-mvn/threshold.properties | 16 ++++++++++++++
 .../smarthouse-03-springboot/threshold.properties  | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 .../threshold.properties                           | 16 ++++++++++++++
 kogito-benchmarks-tests/pom.xml                    | 16 ++++++++++++++
 .../kogito/benchmarks/AbstractTemplateTest.java    | 25 ++++++++++++----------
 .../benchmarks/PMMLClusteringQuarkusTest.java      | 25 ++++++++++++----------
 .../benchmarks/PMMLClusteringSpringBootTest.java   | 25 ++++++++++++----------
 .../kogito/benchmarks/PMMLForestQuarkusTest.java   | 25 ++++++++++++----------
 .../benchmarks/PMMLForestSpringBootTest.java       | 25 ++++++++++++----------
 .../kie/kogito/benchmarks/PMMLMineQuarkusTest.java | 25 ++++++++++++----------
 .../kogito/benchmarks/PMMLMineSpringBootTest.java  | 25 ++++++++++++----------
 .../benchmarks/PMMLRegressionQuarkusTest.java      | 25 ++++++++++++----------
 .../benchmarks/PMMLRegressionSpringBootTest.java   | 25 ++++++++++++----------
 .../benchmarks/PMMLScorecardQuarkusTest.java       | 25 ++++++++++++----------
 .../benchmarks/PMMLScorecardSpringBootTest.java    | 25 ++++++++++++----------
 .../kogito/benchmarks/SmartHouse02QuarkusTest.java | 25 ++++++++++++----------
 .../benchmarks/SmartHouse02SpringBootTest.java     | 25 ++++++++++++----------
 .../kogito/benchmarks/SmartHouse03QuarkusTest.java | 25 ++++++++++++----------
 .../benchmarks/SmartHouse03SpringBootTest.java     | 25 ++++++++++++----------
 .../benchmarks/SmartHouseSTPQuarkusTest.java       | 25 ++++++++++++----------
 .../benchmarks/SmartHouseSTPSpringBootTest.java    | 25 ++++++++++++----------
 .../src/test/resources/logback-test.xml            | 16 ++++++++++++++
 pom.xml                                            | 16 ++++++++++++++
 49 files changed, 721 insertions(+), 308 deletions(-)



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 11/38: Quick fix for Spring Boot JAR name

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 224b1515c4730853d87259753c2d7c06cc1802c0
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Wed May 26 19:49:26 2021 +0200

    Quick fix for Spring Boot JAR name
---
 .../src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java    | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
index d6e8135..9a2db59 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
@@ -12,11 +12,11 @@ public enum MvnCmds {
     }),
     SPRING_BOOT_02_JVM(new String[][] {
             new String[] { "mvn", "clean", "package" }, // There is no possibility of changing the final name of the artifact
-            new String[] { "java", "-jar", "target/smarthouse-02-dm-springboot-1.0-SNAPSHOT.jar" }
+            new String[] { "java", "-jar", "target/smarthouse.jar" }
     }),
     SPRING_BOOT_03_JVM(new String[][] {
             new String[] { "mvn", "clean", "package" },
-            new String[] { "java", "-jar", "target/smarthouse-03-dm-springboot-1.0-SNAPSHOT.jar" }
+            new String[] { "java", "-jar", "target/smarthouse.jar" }
     }),
     DEV(new String[][] {
             new String[] { "mvn", "clean", "quarkus:dev", "-Dmaven.repo.local=" + getLocalMavenRepoDir() }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 29/38: BAPL-2028 - Performance regression testing of PMML Kogito

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 165e4317a19f651520211fdfb409ca77c4ac0a65
Author: Jiri Petrlik <ji...@gmail.com>
AuthorDate: Wed Dec 1 09:44:37 2021 +0100

    BAPL-2028 - Performance regression testing of PMML Kogito
---
 .../org/kie/kogito/benchmarks/framework/App.java   | 12 +++++-
 .../kie/kogito/benchmarks/framework/Commands.java  |  2 +-
 .../benchmarks/framework/HTTPRequestInfo.java      | 32 ++++++++++++++-
 .../kie/kogito/benchmarks/framework/MvnCmds.java   |  2 +-
 .../kogito/benchmarks/framework/URLContent.java    |  4 +-
 .../threshold.properties                           |  6 +++
 .../threshold.properties                           |  6 +++
 .../threshold.properties                           |  6 +++
 .../threshold.properties                           |  6 +++
 .../threshold.properties                           |  6 +++
 .../threshold.properties                           |  6 +++
 .../threshold.properties                           |  6 +++
 .../threshold.properties                           |  6 +++
 .../threshold.properties                           |  6 +++
 .../threshold.properties                           |  6 +++
 .../benchmarks/PMMLClusteringQuarkusTest.java      | 47 ++++++++++++++++++++++
 .../benchmarks/PMMLClusteringSpringBootTest.java   | 47 ++++++++++++++++++++++
 .../kogito/benchmarks/PMMLForestQuarkusTest.java   | 47 ++++++++++++++++++++++
 .../benchmarks/PMMLForestSpringBootTest.java       | 47 ++++++++++++++++++++++
 .../kie/kogito/benchmarks/PMMLMineQuarkusTest.java | 47 ++++++++++++++++++++++
 .../kogito/benchmarks/PMMLMineSpringBootTest.java  | 47 ++++++++++++++++++++++
 .../benchmarks/PMMLRegressionQuarkusTest.java      | 47 ++++++++++++++++++++++
 .../benchmarks/PMMLRegressionSpringBootTest.java   | 47 ++++++++++++++++++++++
 .../benchmarks/PMMLScorecardQuarkusTest.java       | 47 ++++++++++++++++++++++
 .../benchmarks/PMMLScorecardSpringBootTest.java    | 47 ++++++++++++++++++++++
 25 files changed, 577 insertions(+), 5 deletions(-)

diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
index b762e6c..9776d9b 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
@@ -32,10 +32,20 @@ public enum App {
     SMARTHOUSE_02_QUARKUS_JVM("smarthouse-02-quarkus-mvn", MvnCmds.QUARKUS_JVM, new String[] { "-Xms1G", "-Xmx2G" }, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
     SMARTHOUSE_03_QUARKUS_JVM("smarthouse-03-quarkus-mvn", MvnCmds.QUARKUS_JVM, new String[] { "-Xms1G", "-Xmx3G" }, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING),
     SMARTHOUSE_STP_QUARKUS_JVM("stp-smarthouse-03-quarkus-mvn", MvnCmds.QUARKUS_JVM, new String[] { "-Xms1G", "-Xmx3G" }, URLContent.SMARTHOUSE_STP, WhitelistLogLines.EVERYTHING),
+    PMML_CLUSTERING_QUARKUS_JVM("pmml-kie-benchmarks-clustering-quarkus-mvn", MvnCmds.QUARKUS_JVM, new String[] { "-Xms1G", "-Xmx3G" }, URLContent.PMML_QUARKUS, WhitelistLogLines.EVERYTHING),
+    PMML_FOREST_QUARKUS_JVM("pmml-kie-benchmarks-forest-quarkus-mvn", MvnCmds.QUARKUS_JVM, new String[] { "-Xms1G", "-Xmx3G" }, URLContent.PMML_QUARKUS, WhitelistLogLines.EVERYTHING),
+    PMML_MINE_QUARKUS_JVM("pmml-kie-benchmarks-mine-quarkus-mvn", MvnCmds.QUARKUS_JVM, new String[] { "-Xms1G", "-Xmx3G" }, URLContent.PMML_QUARKUS, WhitelistLogLines.EVERYTHING),
+    PMML_REGRESSION_QUARKUS_JVM("pmml-kie-benchmarks-regression-quarkus-mvn", MvnCmds.QUARKUS_JVM, new String[] { "-Xms1G", "-Xmx3G" }, URLContent.PMML_QUARKUS, WhitelistLogLines.EVERYTHING),
+    PMML_SCORECARD_QUARKUS_JVM("pmml-kie-benchmarks-scorecard-quarkus-mvn", MvnCmds.QUARKUS_JVM, new String[] { "-Xms1G", "-Xmx3G" }, URLContent.PMML_QUARKUS, WhitelistLogLines.EVERYTHING),
 
     SMARTHOUSE_02_SPRING_BOOT("smarthouse-02-springboot", MvnCmds.SPRING_BOOT_JVM, new String[] { "-Xms1G", "-Xmx2G" }, URLContent.SMARTHOUSE_02, WhitelistLogLines.EVERYTHING),
     SMARTHOUSE_03_SPRING_BOOT("smarthouse-03-springboot", MvnCmds.SPRING_BOOT_JVM, new String[] { "-Xms1G", "-Xmx3G" }, URLContent.SMARTHOUSE_03, WhitelistLogLines.EVERYTHING),
-    SMARTHOUSE_STP_SPRING_BOOT_JVM("stp-smarthouse-03-springboot", MvnCmds.SPRING_BOOT_JVM, new String[] { "-Xms1G", "-Xmx3G" }, URLContent.SMARTHOUSE_STP, WhitelistLogLines.EVERYTHING);
+    SMARTHOUSE_STP_SPRING_BOOT_JVM("stp-smarthouse-03-springboot", MvnCmds.SPRING_BOOT_JVM, new String[] { "-Xms1G", "-Xmx3G" }, URLContent.SMARTHOUSE_STP, WhitelistLogLines.EVERYTHING),
+    PMML_CLUSTERING_SPRING_BOOT("pmml-kie-benchmarks-clustering-springboot", MvnCmds.SPRING_BOOT_JVM, new String[] { "-Xms1G", "-Xmx2G" }, URLContent.PMML_SPRINGBOOT, WhitelistLogLines.EVERYTHING),
+    PMML_FOREST_SPRING_BOOT("pmml-kie-benchmarks-forest-springboot", MvnCmds.SPRING_BOOT_JVM, new String[] { "-Xms1G", "-Xmx2G" }, URLContent.PMML_SPRINGBOOT, WhitelistLogLines.EVERYTHING),
+    PMML_MINE_SPRING_BOOT("pmml-kie-benchmarks-mine-springboot", MvnCmds.SPRING_BOOT_JVM, new String[] { "-Xms1G", "-Xmx2G" }, URLContent.PMML_SPRINGBOOT, WhitelistLogLines.EVERYTHING),
+    PMML_REGRESSION_SPRING_BOOT("pmml-kie-benchmarks-regression-springboot", MvnCmds.SPRING_BOOT_JVM, new String[] { "-Xms1G", "-Xmx2G" }, URLContent.PMML_SPRINGBOOT, WhitelistLogLines.EVERYTHING),
+    PMML_SCORECARD_SPRING_BOOT("pmml-kie-benchmarks-scorecard-springboot", MvnCmds.SPRING_BOOT_JVM, new String[] { "-Xms1G", "-Xmx2G" }, URLContent.PMML_SPRINGBOOT, WhitelistLogLines.EVERYTHING),;
 
     public final String dir;
     public final MvnCmds mavenCommands;
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
index 8ed9c8c..a9c3cd1 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
@@ -200,7 +200,7 @@ public class Commands {
         appendlnSection(whatIDidReport, String.join(" ", cmd));
         Process pA = runCommand(cmd, appDir, runLogA);
         // Test web pages
-        long timeToFirstOKRequest = WebpageTester.testWeb(app.urlContent.urlContent[0][0], 10, app.urlContent.urlContent[0][1], true);
+        long timeToFirstOKRequest = WebpageTester.testWeb(app.urlContent.urlContent[0][0], 180, app.urlContent.urlContent[0][1], true);
         logger.info("Testing web page content...");
         for (String[] urlContent : app.urlContent.urlContent) {
             WebpageTester.testWeb(urlContent[0], 5, urlContent[1], false);
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
index aa85a56..118eaaf 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/HTTPRequestInfo.java
@@ -221,6 +221,36 @@ public class HTTPRequestInfo {
                 "    \"threshold_high\": 0\n" +
                 "  }\n" +
                 "}";
-    }
 
+        public static final String PMML_CLUSTERING = "{\n" +
+                "  \"sepal_length\": 7.9,\n" +
+                "  \"sepal_width\": 4.4,\n" +
+                "  \"petal_length\": 6.9,\n" +
+                "  \"petal_width\": 2.5\n" +
+                "}";
+
+        public static final String PMML_FOREST = "{\n" +
+                "  \"Age\": 21.0,\n" +
+                "  \"MonthlySalary\": 10000.0,\n" +
+                "  \"TotalAsset\": 10000.0,\n" +
+                "  \"TotalRequired\": 15000.0,\n" +
+                "  \"NumberInstallments\": 1.0\n" +
+                "}";
+
+        public static final String PMML_MINE = "{\n" +
+                "  \"temperature\": 30.0,\n" +
+                "  \"humidity\": 20.0\n" +
+                "}";
+
+        public static final String PMML_REGRESSION = "{\n" +
+                "  \"age\": 0,\n" +
+                "  \"salary\": 0,\n" +
+                "  \"car_location\": \"carpark\"\n" +
+                "}";
+
+        public static final String PMML_SCORECARD = "{\n" +
+                "  \"input1\": 0.0,\n" +
+                "  \"input2\": 0.0\n" +
+                "}";
+    }
 }
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
index a6800a4..a89c77f 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
@@ -27,7 +27,7 @@ public enum MvnCmds {
     }),
     SPRING_BOOT_JVM(new String[][] {
             new String[] { "mvn", "clean", "package" }, // The JAR name is unified by setting finalName in the kie-assets-library repo
-            new String[] { "java", Placeholders.JVM_ARGS, "-jar", "target/smarthouse.jar" }
+            new String[] { "java", Placeholders.JVM_ARGS, "-jar", "target/runner.jar" }
     }),
 
     // These are not used now but may be useful in the future
diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java
index 0f42412..cc0cb48 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/URLContent.java
@@ -19,7 +19,9 @@ public enum URLContent {
     SMARTHOUSE_02(new String[][] { new String[] { "http://localhost:8080/heating", "name=\"heating\"" } }),
     SMARTHOUSE_03(new String[][] { new String[] { "http://localhost:8080/heating", "name=\"heating\"" } }),
     SMARTHOUSE_STP(new String[][] { new String[] { "http://localhost:8080/heating", "name=\"heating\"" },
-            new String[] { "http://localhost:8080/smartHouse", "[]" } });
+            new String[] { "http://localhost:8080/smartHouse", "[]" } }),
+    PMML_QUARKUS(new String[][] { new String[] { "http://localhost:8080/q/health/ready", "UP" } }),
+    PMML_SPRINGBOOT(new String[][] { new String[] { "http://localhost:8080/actuator/health", "UP" } });
 
     public final String[][] urlContent;
 
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-clustering-quarkus-mvn/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-clustering-quarkus-mvn/threshold.properties
new file mode 100644
index 0000000..35ec0ee
--- /dev/null
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-clustering-quarkus-mvn/threshold.properties
@@ -0,0 +1,6 @@
+linux.jvm.time.to.first.ok.request.threshold.ms=34000
+linux.jvm.RSS.threshold.kB=3800000
+linux.native.time.to.first.ok.request.threshold.ms=35
+linux.native.RSS.threshold.kB=90000
+windows.jvm.time.to.first.ok.request.threshold.ms=2000
+windows.jvm.RSS.threshold.kB=4000
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-clustering-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-clustering-springboot/threshold.properties
new file mode 100644
index 0000000..35ec0ee
--- /dev/null
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-clustering-springboot/threshold.properties
@@ -0,0 +1,6 @@
+linux.jvm.time.to.first.ok.request.threshold.ms=34000
+linux.jvm.RSS.threshold.kB=3800000
+linux.native.time.to.first.ok.request.threshold.ms=35
+linux.native.RSS.threshold.kB=90000
+windows.jvm.time.to.first.ok.request.threshold.ms=2000
+windows.jvm.RSS.threshold.kB=4000
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-quarkus-mvn/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-quarkus-mvn/threshold.properties
new file mode 100644
index 0000000..35ec0ee
--- /dev/null
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-quarkus-mvn/threshold.properties
@@ -0,0 +1,6 @@
+linux.jvm.time.to.first.ok.request.threshold.ms=34000
+linux.jvm.RSS.threshold.kB=3800000
+linux.native.time.to.first.ok.request.threshold.ms=35
+linux.native.RSS.threshold.kB=90000
+windows.jvm.time.to.first.ok.request.threshold.ms=2000
+windows.jvm.RSS.threshold.kB=4000
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-springboot/threshold.properties
new file mode 100644
index 0000000..35ec0ee
--- /dev/null
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-forest-springboot/threshold.properties
@@ -0,0 +1,6 @@
+linux.jvm.time.to.first.ok.request.threshold.ms=34000
+linux.jvm.RSS.threshold.kB=3800000
+linux.native.time.to.first.ok.request.threshold.ms=35
+linux.native.RSS.threshold.kB=90000
+windows.jvm.time.to.first.ok.request.threshold.ms=2000
+windows.jvm.RSS.threshold.kB=4000
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-mine-quarkus-mvn/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-mine-quarkus-mvn/threshold.properties
new file mode 100644
index 0000000..35ec0ee
--- /dev/null
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-mine-quarkus-mvn/threshold.properties
@@ -0,0 +1,6 @@
+linux.jvm.time.to.first.ok.request.threshold.ms=34000
+linux.jvm.RSS.threshold.kB=3800000
+linux.native.time.to.first.ok.request.threshold.ms=35
+linux.native.RSS.threshold.kB=90000
+windows.jvm.time.to.first.ok.request.threshold.ms=2000
+windows.jvm.RSS.threshold.kB=4000
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-mine-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-mine-springboot/threshold.properties
new file mode 100644
index 0000000..35ec0ee
--- /dev/null
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-mine-springboot/threshold.properties
@@ -0,0 +1,6 @@
+linux.jvm.time.to.first.ok.request.threshold.ms=34000
+linux.jvm.RSS.threshold.kB=3800000
+linux.native.time.to.first.ok.request.threshold.ms=35
+linux.native.RSS.threshold.kB=90000
+windows.jvm.time.to.first.ok.request.threshold.ms=2000
+windows.jvm.RSS.threshold.kB=4000
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-regression-quarkus-mvn/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-regression-quarkus-mvn/threshold.properties
new file mode 100644
index 0000000..35ec0ee
--- /dev/null
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-regression-quarkus-mvn/threshold.properties
@@ -0,0 +1,6 @@
+linux.jvm.time.to.first.ok.request.threshold.ms=34000
+linux.jvm.RSS.threshold.kB=3800000
+linux.native.time.to.first.ok.request.threshold.ms=35
+linux.native.RSS.threshold.kB=90000
+windows.jvm.time.to.first.ok.request.threshold.ms=2000
+windows.jvm.RSS.threshold.kB=4000
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-regression-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-regression-springboot/threshold.properties
new file mode 100644
index 0000000..35ec0ee
--- /dev/null
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-regression-springboot/threshold.properties
@@ -0,0 +1,6 @@
+linux.jvm.time.to.first.ok.request.threshold.ms=34000
+linux.jvm.RSS.threshold.kB=3800000
+linux.native.time.to.first.ok.request.threshold.ms=35
+linux.native.RSS.threshold.kB=90000
+windows.jvm.time.to.first.ok.request.threshold.ms=2000
+windows.jvm.RSS.threshold.kB=4000
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-scorecard-quarkus-mvn/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-scorecard-quarkus-mvn/threshold.properties
new file mode 100644
index 0000000..35ec0ee
--- /dev/null
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-scorecard-quarkus-mvn/threshold.properties
@@ -0,0 +1,6 @@
+linux.jvm.time.to.first.ok.request.threshold.ms=34000
+linux.jvm.RSS.threshold.kB=3800000
+linux.native.time.to.first.ok.request.threshold.ms=35
+linux.native.RSS.threshold.kB=90000
+windows.jvm.time.to.first.ok.request.threshold.ms=2000
+windows.jvm.RSS.threshold.kB=4000
diff --git a/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-scorecard-springboot/threshold.properties b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-scorecard-springboot/threshold.properties
new file mode 100644
index 0000000..35ec0ee
--- /dev/null
+++ b/kogito-benchmarks-framework/src/main/resources/pmml-kie-benchmarks-scorecard-springboot/threshold.properties
@@ -0,0 +1,6 @@
+linux.jvm.time.to.first.ok.request.threshold.ms=34000
+linux.jvm.RSS.threshold.kB=3800000
+linux.native.time.to.first.ok.request.threshold.ms=35
+linux.native.RSS.threshold.kB=90000
+windows.jvm.time.to.first.ok.request.threshold.ms=2000
+windows.jvm.RSS.threshold.kB=4000
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLClusteringQuarkusTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLClusteringQuarkusTest.java
new file mode 100644
index 0000000..5d2bee4
--- /dev/null
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLClusteringQuarkusTest.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.kie.kogito.benchmarks;
+
+import java.io.IOException;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+import org.kie.kogito.benchmarks.framework.App;
+import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
+
+public class PMMLClusteringQuarkusTest extends AbstractTemplateTest {
+
+    private static final App APP_TO_TEST = App.PMML_CLUSTERING_QUARKUS_JVM;
+
+    @Test
+    public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
+        startStop(testInfo, APP_TO_TEST);
+    }
+
+    @Test
+    public void loadTest(TestInfo testInfo) throws IOException, InterruptedException {
+        HTTPRequestInfo requestInfo = HTTPRequestInfo.builder()
+                .URI(LOCALHOST + "/SingleIrisKMeansClustering")
+                .body(HTTPRequestInfo.Body.PMML_CLUSTERING)
+                .method("POST")
+                .header("Accept", "application/json")
+                .header("Content-Type", "application/json")
+                .expectedResponseStatusCode(200)
+                .build();
+
+        loadTest(testInfo, APP_TO_TEST, requestInfo);
+    }
+}
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLClusteringSpringBootTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLClusteringSpringBootTest.java
new file mode 100644
index 0000000..635dfc0
--- /dev/null
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLClusteringSpringBootTest.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.kie.kogito.benchmarks;
+
+import java.io.IOException;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+import org.kie.kogito.benchmarks.framework.App;
+import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
+
+public class PMMLClusteringSpringBootTest extends AbstractTemplateTest {
+
+    private static final App APP_TO_TEST = App.PMML_CLUSTERING_SPRING_BOOT;
+
+    @Test
+    public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
+        startStop(testInfo, APP_TO_TEST);
+    }
+
+    @Test
+    public void loadTest(TestInfo testInfo) throws IOException, InterruptedException {
+        HTTPRequestInfo requestInfo = HTTPRequestInfo.builder()
+                .URI(LOCALHOST + "/SingleIrisKMeansClustering")
+                .body(HTTPRequestInfo.Body.PMML_CLUSTERING)
+                .method("POST")
+                .header("Accept", "application/json")
+                .header("Content-Type", "application/json")
+                .expectedResponseStatusCode(200)
+                .build();
+
+        loadTest(testInfo, APP_TO_TEST, requestInfo);
+    }
+}
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLForestQuarkusTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLForestQuarkusTest.java
new file mode 100644
index 0000000..4e28693
--- /dev/null
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLForestQuarkusTest.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.kie.kogito.benchmarks;
+
+import java.io.IOException;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+import org.kie.kogito.benchmarks.framework.App;
+import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
+
+public class PMMLForestQuarkusTest extends AbstractTemplateTest {
+
+    private static final App APP_TO_TEST = App.PMML_FOREST_QUARKUS_JVM;
+
+    @Test
+    public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
+        startStop(testInfo, APP_TO_TEST);
+    }
+
+    @Test
+    public void loadTest(TestInfo testInfo) throws IOException, InterruptedException {
+        HTTPRequestInfo requestInfo = HTTPRequestInfo.builder()
+                .URI(LOCALHOST + "/RandomForest")
+                .body(HTTPRequestInfo.Body.PMML_FOREST)
+                .method("POST")
+                .header("Accept", "application/json")
+                .header("Content-Type", "application/json")
+                .expectedResponseStatusCode(200)
+                .build();
+
+        loadTest(testInfo, APP_TO_TEST, requestInfo);
+    }
+}
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLForestSpringBootTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLForestSpringBootTest.java
new file mode 100644
index 0000000..309327e
--- /dev/null
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLForestSpringBootTest.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.kie.kogito.benchmarks;
+
+import java.io.IOException;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+import org.kie.kogito.benchmarks.framework.App;
+import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
+
+public class PMMLForestSpringBootTest extends AbstractTemplateTest {
+
+    private static final App APP_TO_TEST = App.PMML_FOREST_SPRING_BOOT;
+
+    @Test
+    public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
+        startStop(testInfo, APP_TO_TEST);
+    }
+
+    @Test
+    public void loadTest(TestInfo testInfo) throws IOException, InterruptedException {
+        HTTPRequestInfo requestInfo = HTTPRequestInfo.builder()
+                .URI(LOCALHOST + "/RandomForest")
+                .body(HTTPRequestInfo.Body.PMML_FOREST)
+                .method("POST")
+                .header("Accept", "application/json")
+                .header("Content-Type", "application/json")
+                .expectedResponseStatusCode(200)
+                .build();
+
+        loadTest(testInfo, APP_TO_TEST, requestInfo);
+    }
+}
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLMineQuarkusTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLMineQuarkusTest.java
new file mode 100644
index 0000000..126eb16
--- /dev/null
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLMineQuarkusTest.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.kie.kogito.benchmarks;
+
+import java.io.IOException;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+import org.kie.kogito.benchmarks.framework.App;
+import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
+
+public class PMMLMineQuarkusTest extends AbstractTemplateTest {
+
+    private static final App APP_TO_TEST = App.PMML_MINE_QUARKUS_JVM;
+
+    @Test
+    public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
+        startStop(testInfo, APP_TO_TEST);
+    }
+
+    @Test
+    public void loadTest(TestInfo testInfo) throws IOException, InterruptedException {
+        HTTPRequestInfo requestInfo = HTTPRequestInfo.builder()
+                .URI(LOCALHOST + "/SampleMineTreeModelWithTransformations")
+                .body(HTTPRequestInfo.Body.PMML_MINE)
+                .method("POST")
+                .header("Accept", "application/json")
+                .header("Content-Type", "application/json")
+                .expectedResponseStatusCode(200)
+                .build();
+
+        loadTest(testInfo, APP_TO_TEST, requestInfo);
+    }
+}
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLMineSpringBootTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLMineSpringBootTest.java
new file mode 100644
index 0000000..aeb50d2
--- /dev/null
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLMineSpringBootTest.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.kie.kogito.benchmarks;
+
+import java.io.IOException;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+import org.kie.kogito.benchmarks.framework.App;
+import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
+
+public class PMMLMineSpringBootTest extends AbstractTemplateTest {
+
+    private static final App APP_TO_TEST = App.PMML_MINE_SPRING_BOOT;
+
+    @Test
+    public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
+        startStop(testInfo, APP_TO_TEST);
+    }
+
+    @Test
+    public void loadTest(TestInfo testInfo) throws IOException, InterruptedException {
+        HTTPRequestInfo requestInfo = HTTPRequestInfo.builder()
+                .URI(LOCALHOST + "/SampleMineTreeModelWithTransformations")
+                .body(HTTPRequestInfo.Body.PMML_MINE)
+                .method("POST")
+                .header("Accept", "application/json")
+                .header("Content-Type", "application/json")
+                .expectedResponseStatusCode(200)
+                .build();
+
+        loadTest(testInfo, APP_TO_TEST, requestInfo);
+    }
+}
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLRegressionQuarkusTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLRegressionQuarkusTest.java
new file mode 100644
index 0000000..a9cc640
--- /dev/null
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLRegressionQuarkusTest.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.kie.kogito.benchmarks;
+
+import java.io.IOException;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+import org.kie.kogito.benchmarks.framework.App;
+import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
+
+public class PMMLRegressionQuarkusTest extends AbstractTemplateTest {
+
+    private static final App APP_TO_TEST = App.PMML_REGRESSION_QUARKUS_JVM;
+
+    @Test
+    public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
+        startStop(testInfo, APP_TO_TEST);
+    }
+
+    @Test
+    public void loadTest(TestInfo testInfo) throws IOException, InterruptedException {
+        HTTPRequestInfo requestInfo = HTTPRequestInfo.builder()
+                .URI(LOCALHOST + "/LinearRegressionSampleWithTransformations")
+                .body(HTTPRequestInfo.Body.PMML_REGRESSION)
+                .method("POST")
+                .header("Accept", "application/json")
+                .header("Content-Type", "application/json")
+                .expectedResponseStatusCode(200)
+                .build();
+
+        loadTest(testInfo, APP_TO_TEST, requestInfo);
+    }
+}
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLRegressionSpringBootTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLRegressionSpringBootTest.java
new file mode 100644
index 0000000..4e7d190
--- /dev/null
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLRegressionSpringBootTest.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.kie.kogito.benchmarks;
+
+import java.io.IOException;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+import org.kie.kogito.benchmarks.framework.App;
+import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
+
+public class PMMLRegressionSpringBootTest extends AbstractTemplateTest {
+
+    private static final App APP_TO_TEST = App.PMML_REGRESSION_SPRING_BOOT;
+
+    @Test
+    public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
+        startStop(testInfo, APP_TO_TEST);
+    }
+
+    @Test
+    public void loadTest(TestInfo testInfo) throws IOException, InterruptedException {
+        HTTPRequestInfo requestInfo = HTTPRequestInfo.builder()
+                .URI(LOCALHOST + "/LinearRegressionSampleWithTransformations")
+                .body(HTTPRequestInfo.Body.PMML_REGRESSION)
+                .method("POST")
+                .header("Accept", "application/json")
+                .header("Content-Type", "application/json")
+                .expectedResponseStatusCode(200)
+                .build();
+
+        loadTest(testInfo, APP_TO_TEST, requestInfo);
+    }
+}
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLScorecardQuarkusTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLScorecardQuarkusTest.java
new file mode 100644
index 0000000..2ef47b8
--- /dev/null
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLScorecardQuarkusTest.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.kie.kogito.benchmarks;
+
+import java.io.IOException;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+import org.kie.kogito.benchmarks.framework.App;
+import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
+
+public class PMMLScorecardQuarkusTest extends AbstractTemplateTest {
+
+    private static final App APP_TO_TEST = App.PMML_SCORECARD_QUARKUS_JVM;
+
+    @Test
+    public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
+        startStop(testInfo, APP_TO_TEST);
+    }
+
+    @Test
+    public void loadTest(TestInfo testInfo) throws IOException, InterruptedException {
+        HTTPRequestInfo requestInfo = HTTPRequestInfo.builder()
+                .URI(LOCALHOST + "/SimpleScorecardWithTransformations")
+                .body(HTTPRequestInfo.Body.PMML_SCORECARD)
+                .method("POST")
+                .header("Accept", "application/json")
+                .header("Content-Type", "application/json")
+                .expectedResponseStatusCode(200)
+                .build();
+
+        loadTest(testInfo, APP_TO_TEST, requestInfo);
+    }
+}
diff --git a/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLScorecardSpringBootTest.java b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLScorecardSpringBootTest.java
new file mode 100644
index 0000000..e12c157
--- /dev/null
+++ b/kogito-benchmarks-tests/src/test/java/org/kie/kogito/benchmarks/PMMLScorecardSpringBootTest.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2021 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.kie.kogito.benchmarks;
+
+import java.io.IOException;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+import org.kie.kogito.benchmarks.framework.App;
+import org.kie.kogito.benchmarks.framework.HTTPRequestInfo;
+
+public class PMMLScorecardSpringBootTest extends AbstractTemplateTest {
+
+    private static final App APP_TO_TEST = App.PMML_SCORECARD_SPRING_BOOT;
+
+    @Test
+    public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
+        startStop(testInfo, APP_TO_TEST);
+    }
+
+    @Test
+    public void loadTest(TestInfo testInfo) throws IOException, InterruptedException {
+        HTTPRequestInfo requestInfo = HTTPRequestInfo.builder()
+                .URI(LOCALHOST + "/SimpleScorecardWithTransformations")
+                .body(HTTPRequestInfo.Body.PMML_SCORECARD)
+                .method("POST")
+                .header("Accept", "application/json")
+                .header("Content-Type", "application/json")
+                .expectedResponseStatusCode(200)
+                .build();
+
+        loadTest(testInfo, APP_TO_TEST, requestInfo);
+    }
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 07/38: Add Spring Boot support

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit bb6dcc9d2341fb8b49070cdf05cefa25e0d35ec9
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Fri May 7 17:40:41 2021 +0200

    Add Spring Boot support
---
 .../org/kie/kogito/benchmarks/framework/App.java   |  8 ++++++++
 .../kogito/benchmarks/framework/LogBuilder.java    |  2 +-
 .../org/kie/kogito/benchmarks/framework/Logs.java  | 17 ++++++++++-------
 .../kie/kogito/benchmarks/framework/MvnCmds.java   |  8 ++++++--
 .../threshold.properties                           |  4 ++--
 .../smarthouse-03-dm-quarkus/threshold.properties  |  2 +-
 .../threshold.properties                           |  4 ++--
 .../kogito/benchmarks/AbstractTemplateTest.java    | 22 ++++++++++++++++------
 .../kie/kogito/benchmarks/QuarkusSmallTest.java    |  2 --
 .../org/kie/kogito/benchmarks/StartStopTest.java   | 10 +++++-----
 10 files changed, 51 insertions(+), 28 deletions(-)

diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
index 805b4fa..e363ba9 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
@@ -62,4 +62,12 @@ public enum App {
     public File getAppDir() {
         return new File(APPS_DIR, dir);
     }
+
+    public boolean isQuarkus() {
+        return this.name().contains("QUARKUS");
+    }
+
+    public boolean isSpringBoot() {
+        return this.name().contains("SPRING");
+    }
 }
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java
index 2294df5..2caeb80 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/LogBuilder.java
@@ -72,7 +72,7 @@ public class LogBuilder {
     }
 
     public LogBuilder stoppedInMs(long stoppedInMs) {
-        if (stoppedInMs <= 0) {
+        if (stoppedInMs <= 0 && !app.isSpringBoot()) { // Spring Boot doesn't provide stop time
             throw new IllegalArgumentException("stoppedInMs must be a positive long, was: " + stoppedInMs);
         }
         this.stoppedInMs = stoppedInMs;
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
index fb781fc..2e2d031 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
@@ -31,7 +31,7 @@ public class Logs {
     public static final String jarSuffix = "redhat";
     private static final Pattern jarNamePattern = Pattern.compile("^((?!" + jarSuffix + ").)*jar$");
 
-    private static final Pattern startedPattern = Pattern.compile(".* started in ([0-9\\.]+)s.*", Pattern.DOTALL);
+    private static final Pattern startedPattern = Pattern.compile(".* [Ss]tarted.* in ([0-9\\.]+)(?:s| seconds).*", Pattern.DOTALL);
     private static final Pattern stoppedPattern = Pattern.compile(".* stopped in ([0-9\\.]+)s.*", Pattern.DOTALL);
     /*
      * Due to console colouring, Windows has control characters in the sequence.
@@ -44,7 +44,7 @@ public class Logs {
      * depending on whether you checked AllowInteractingWithDesktop.
      * // TODO to make it smoother?
      */
-    private static final Pattern startedPatternControlSymbols = Pattern.compile(".* started in .*188m([0-9\\.]+).*", Pattern.DOTALL);
+    private static final Pattern startedPatternControlSymbols = Pattern.compile(".* [Ss]tarted.* in .*188m([0-9\\.]+)(?:s| seconds).*", Pattern.DOTALL);
     private static final Pattern stoppedPatternControlSymbols = Pattern.compile(".* stopped in .*188m([0-9\\.]+).*", Pattern.DOTALL);
 
     private static final Pattern warnErrorDetectionPattern = Pattern.compile("(?i:.*(ERROR|WARN|SLF4J:).*)");
@@ -79,6 +79,9 @@ public class Logs {
     }
 
     public static void checkListeningHost(String testClass, String testMethod, MvnCmds cmd, File log) throws IOException {
+        if (cmd.name().startsWith("SPRING")) {
+            return; // Spring Boot doesn't provide the host information by default (only at debug level)
+        }
         boolean isOffending = true;
         try (Scanner sc = new Scanner(log, UTF_8)) {
             while (sc.hasNextLine()) {
@@ -142,7 +145,7 @@ public class Logs {
 
     public static void checkThreshold(App app, MvnCmds cmd, long rssKb, long timeToFirstOKRequest, long timeToReloadedOKRequest) {
         String propPrefix = isThisWindows ? "windows" : "linux";
-        if (cmd == MvnCmds.QUARKUS_JVM) {
+        if (cmd.isJVM()) {
             propPrefix += ".jvm";
         } else if (cmd == MvnCmds.NATIVE) {
             propPrefix += ".native";
@@ -294,7 +297,7 @@ public class Logs {
                 .collect(Collectors.toList());
     }
 
-    public static float[] parseStartStopTimestamps(File log) throws IOException {
+    public static float[] parseStartStopTimestamps(File log, App app) throws IOException {
         float[] startedStopped = new float[] { -1f, -1f };
         try (Scanner sc = new Scanner(log, UTF_8)) {
             while (sc.hasNextLine()) {
@@ -326,12 +329,12 @@ public class Logs {
         }
         if (startedStopped[0] == -1f) {
             LOGGER.error("Parsing start time from log failed. " +
-                    "Might not be the right time to call this method. The process might have ben killed before it wrote to log." +
+                    "Might not be the right time to call this method. The process might have ben killed before it wrote to log. " +
                     "Find " + log.getName() + " in your target dir.");
         }
-        if (startedStopped[1] == -1f) {
+        if (startedStopped[1] == -1f && !app.isSpringBoot()) { // Spring Boot doesn't provide stop time
             LOGGER.error("Parsing stop time from log failed. " +
-                    "Might not be the right time to call this method. The process might have been killed before it wrote to log." +
+                    "Might not be the right time to call this method. The process might have been killed before it wrote to log. " +
                     "Find " + log.getName() + " in your target dir.");
         }
         return startedStopped;
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
index ca11c75..d6e8135 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/MvnCmds.java
@@ -12,11 +12,11 @@ public enum MvnCmds {
     }),
     SPRING_BOOT_02_JVM(new String[][] {
             new String[] { "mvn", "clean", "package" }, // There is no possibility of changing the final name of the artifact
-            new String[] { "java", "-jar", "target/smarthouse-02-springboot-1.0-SNAPSHOT.jar" }
+            new String[] { "java", "-jar", "target/smarthouse-02-dm-springboot-1.0-SNAPSHOT.jar" }
     }),
     SPRING_BOOT_03_JVM(new String[][] {
             new String[] { "mvn", "clean", "package" },
-            new String[] { "java", "-jar", "target/smarthouse-03-springboot-1.0-SNAPSHOT.jar" }
+            new String[] { "java", "-jar", "target/smarthouse-03-dm-springboot-1.0-SNAPSHOT.jar" }
     }),
     DEV(new String[][] {
             new String[] { "mvn", "clean", "quarkus:dev", "-Dmaven.repo.local=" + getLocalMavenRepoDir() }
@@ -54,4 +54,8 @@ public enum MvnCmds {
     MvnCmds(String[][] mvnCmds) {
         this.mvnCmds = mvnCmds;
     }
+
+    public boolean isJVM() {
+        return this.name().contains("JVM");
+    }
 }
diff --git a/framework/src/main/resources/smarthouse-02-dm-springboot/threshold.properties b/framework/src/main/resources/smarthouse-02-dm-springboot/threshold.properties
index 36c0c1c..c541e43 100644
--- a/framework/src/main/resources/smarthouse-02-dm-springboot/threshold.properties
+++ b/framework/src/main/resources/smarthouse-02-dm-springboot/threshold.properties
@@ -1,5 +1,5 @@
-linux.jvm.time.to.first.ok.request.threshold.ms=3400
-linux.jvm.RSS.threshold.kB=380000
+linux.jvm.time.to.first.ok.request.threshold.ms=6000
+linux.jvm.RSS.threshold.kB=750000
 linux.native.time.to.first.ok.request.threshold.ms=35
 linux.native.RSS.threshold.kB=90000
 windows.jvm.time.to.first.ok.request.threshold.ms=2000
diff --git a/framework/src/main/resources/smarthouse-03-dm-quarkus/threshold.properties b/framework/src/main/resources/smarthouse-03-dm-quarkus/threshold.properties
index 36c0c1c..427e226 100644
--- a/framework/src/main/resources/smarthouse-03-dm-quarkus/threshold.properties
+++ b/framework/src/main/resources/smarthouse-03-dm-quarkus/threshold.properties
@@ -1,5 +1,5 @@
 linux.jvm.time.to.first.ok.request.threshold.ms=3400
-linux.jvm.RSS.threshold.kB=380000
+linux.jvm.RSS.threshold.kB=400000
 linux.native.time.to.first.ok.request.threshold.ms=35
 linux.native.RSS.threshold.kB=90000
 windows.jvm.time.to.first.ok.request.threshold.ms=2000
diff --git a/framework/src/main/resources/smarthouse-03-dm-springboot/threshold.properties b/framework/src/main/resources/smarthouse-03-dm-springboot/threshold.properties
index 36c0c1c..c541e43 100644
--- a/framework/src/main/resources/smarthouse-03-dm-springboot/threshold.properties
+++ b/framework/src/main/resources/smarthouse-03-dm-springboot/threshold.properties
@@ -1,5 +1,5 @@
-linux.jvm.time.to.first.ok.request.threshold.ms=3400
-linux.jvm.RSS.threshold.kB=380000
+linux.jvm.time.to.first.ok.request.threshold.ms=6000
+linux.jvm.RSS.threshold.kB=750000
 linux.native.time.to.first.ok.request.threshold.ms=35
 linux.native.RSS.threshold.kB=90000
 windows.jvm.time.to.first.ok.request.threshold.ms=2000
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
index ee1f7c7..2fbac17 100644
--- a/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
+++ b/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
@@ -71,14 +71,15 @@ public abstract class AbstractTemplateTest {
             cleanTarget(app);
             Files.createDirectories(Paths.get(appDir.getAbsolutePath() + File.separator + "logs"));
 
-            // Build
+            // Build first time to download dependencies
             BuildResult buildResult = buildApp(app, mn, cn, whatIDidReport);
             buildLogA = buildResult.getBuildLog();
 
             assertTrue(buildLogA.exists());
             checkLog(cn, mn, app, mvnCmds, buildLogA);
 
-            // Prepare for run
+            // Prepare for measurements
+            List<Long> buildTimeValues = new ArrayList<>(START_STOP_ITERATIONS);
             List<Long> rssKbValues = new ArrayList<>(START_STOP_ITERATIONS);
             List<Long> timeToFirstOKRequestValues = new ArrayList<>(START_STOP_ITERATIONS);
             List<Long> startedInMsValues = new ArrayList<>(START_STOP_ITERATIONS);
@@ -86,8 +87,15 @@ public abstract class AbstractTemplateTest {
             List<Long> openedFilesValues = new ArrayList<>(START_STOP_ITERATIONS);
 
             for (int i = 0; i < START_STOP_ITERATIONS; i++) {
-                // Run
                 LOGGER.info("Running... round " + i);
+                // Build
+                buildResult = buildApp(app, mn, cn, whatIDidReport);
+                buildLogA = buildResult.getBuildLog();
+
+                assertTrue(buildLogA.exists());
+                checkLog(cn, mn, app, mvnCmds, buildLogA);
+
+                // Run
                 RunInfo runInfo = startApp(app, whatIDidReport);
                 pA = runInfo.getProcess();
                 runLogA = runInfo.getRunLog();
@@ -107,7 +115,7 @@ public abstract class AbstractTemplateTest {
                 checkLog(cn, mn, app, mvnCmds, runLogA);
                 checkListeningHost(cn, mn, mvnCmds, runLogA);
 
-                float[] startedStopped = parseStartStopTimestamps(runLogA);
+                float[] startedStopped = parseStartStopTimestamps(runLogA, app);
                 long startedInMs = (long) (startedStopped[0] * 1000);
                 long stoppedInMs = (long) (startedStopped[1] * 1000);
 
@@ -126,6 +134,7 @@ public abstract class AbstractTemplateTest {
                 appendln(whatIDidReport, "Measurements:");
                 appendln(whatIDidReport, log.headerMarkdown + "\n" + log.lineMarkdown);
 
+                buildTimeValues.add(buildResult.getBuildTimeMs());
                 rssKbValues.add(rssKb);
                 openedFilesValues.add(openedFiles);
                 timeToFirstOKRequestValues.add(runInfo.getTimeToFirstOKRequest());
@@ -133,6 +142,7 @@ public abstract class AbstractTemplateTest {
                 stoppedInMsValues.add(stoppedInMs);
             }
 
+            long buildTimeAvgWithoutMinMax = getAvgWithoutMinMax(buildTimeValues);
             long rssKbAvgWithoutMinMax = getAvgWithoutMinMax(rssKbValues);
             long openedFilesAvgWithoutMinMax = getAvgWithoutMinMax(openedFilesValues);
             long timeToFirstOKRequestAvgWithoutMinMax = getAvgWithoutMinMax(timeToFirstOKRequestValues);
@@ -144,7 +154,7 @@ public abstract class AbstractTemplateTest {
             LogBuilder.Log log = new LogBuilder()
                     .app(app)
                     .mode(mvnCmds)
-                    .buildTimeMs(buildResult.getBuildTimeMs())
+                    .buildTimeMs(buildTimeAvgWithoutMinMax)
                     .timeToFirstOKRequestMs(timeToFirstOKRequestAvgWithoutMinMax)
                     .startedInMs(startedInMsAvgWithoutMinMax)
                     .stoppedInMs(stoppedInMsAvgWithoutMinMax)
@@ -305,7 +315,7 @@ public abstract class AbstractTemplateTest {
             checkLog(cn, mn, app, mvnCmds, runLogA);
             checkListeningHost(cn, mn, mvnCmds, runLogA);
 
-            float[] startedStopped = parseStartStopTimestamps(runLogA);// Don't need this in the load test?
+            float[] startedStopped = parseStartStopTimestamps(runLogA, app);// Don't need this in the load test?
             long startedInMs = (long) (startedStopped[0] * 1000);
             long stoppedInMs = (long) (startedStopped[1] * 1000);
 
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusSmallTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusSmallTest.java
index ea1eafd..e012a7e 100644
--- a/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusSmallTest.java
+++ b/tests/src/test/java/org/kie/kogito/benchmarks/QuarkusSmallTest.java
@@ -10,12 +10,10 @@ public class QuarkusSmallTest extends AbstractTemplateTest {
 
     private static final App APP_TO_TEST = App.SMARTHOUSE_02_QUARKUS_JVM;
 
-    @Test
     public void startStop(TestInfo testInfo) throws IOException, InterruptedException {
         startStop(testInfo, APP_TO_TEST);
     }
 
-    @Test
     public void loadTest(TestInfo testInfo) {
         // TODO
     }
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/StartStopTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/StartStopTest.java
index b3b94dc..edf04e7 100644
--- a/tests/src/test/java/org/kie/kogito/benchmarks/StartStopTest.java
+++ b/tests/src/test/java/org/kie/kogito/benchmarks/StartStopTest.java
@@ -140,7 +140,7 @@ public class StartStopTest {
                 checkLog(cn, mn, app, mvnCmds, runLogA);
                 checkListeningHost(cn, mn, mvnCmds, runLogA);
 
-                float[] startedStopped = parseStartStopTimestamps(runLogA);
+                float[] startedStopped = parseStartStopTimestamps(runLogA, app);
 
                 Path measurementsLog = Paths.get(getLogsDir(cn, mn).toString(), "measurements.csv");
                 LogBuilder.Log log = new LogBuilder()
@@ -185,10 +185,10 @@ public class StartStopTest {
         return (long) listOfValues.stream().mapToLong(val -> val).average().orElse(Long.MAX_VALUE);
     }
 
-    @Test
-    public void kogito(TestInfo testInfo) throws IOException, InterruptedException {
-        testRuntime(testInfo, App.SMARTHOUSE_02_QUARKUS_JVM, MvnCmds.QUARKUS_JVM);
-    }
+//    @Test
+//    public void kogito(TestInfo testInfo) throws IOException, InterruptedException {
+//        testRuntime(testInfo, App.SMARTHOUSE_02_QUARKUS_JVM, MvnCmds.QUARKUS_JVM);
+//    }
 
     //    @Test
     //    public void jaxRsMinimalJVM(TestInfo testInfo) throws IOException, InterruptedException {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 03/38: Enhancements

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 95425f40e71ba7983cf864ac225ca2818d7cf56b
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Tue May 4 21:18:50 2021 +0200

    Enhancements
---
 .../org/kie/kogito/benchmarks/framework/App.java   |   8 ++---
 .../kie/kogito/benchmarks/framework/Commands.java  |  36 ++++++++++++-------
 .../org/kie/kogito/benchmarks/framework/Logs.java  |  13 ++++---
 framework/src/main/resources/CtrlC.exe             | Bin 0 -> 120832 bytes
 framework/src/main/resources/README.md             |  39 +++++++++++++++++++++
 tests/pom.xml                                      |  17 +++++++++
 .../kogito/benchmarks/AbstractTemplateTest.java    |  20 ++---------
 7 files changed, 94 insertions(+), 39 deletions(-)

diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
index ab39a3a..34468a1 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/App.java
@@ -10,7 +10,7 @@ import java.util.Properties;
 
 import org.apache.commons.lang3.StringUtils;
 
-import static org.kie.kogito.benchmarks.framework.Commands.BASE_DIR;
+import static org.kie.kogito.benchmarks.framework.Commands.APPS_DIR;
 
 public enum App {
     SAMPLE_KOGITO_APP_QUARKUS_JVM("sample-kogito-app", MvnCmds.QUARKUS_JVM, URLContent.SAMPLE_KOGITO_APP, WhitelistLogLines.SAMPLE_KOGITO_APP),
@@ -30,7 +30,7 @@ public enum App {
         this.mavenCommands = mavenCommands;
         this.urlContent = urlContent;
         this.whitelistLogLines = whitelistLogLines;
-        File tpFile = new File(BASE_DIR + File.separator + dir + File.separator + "threshold.properties");
+        File tpFile = new File(APPS_DIR + File.separator + dir + File.separator + "threshold.properties");
         String appDirNormalized = dir.toUpperCase().replace('-', '_') + "_";
         try (InputStream input = new FileInputStream(tpFile)) {
             Properties props = new Properties();
@@ -55,7 +55,7 @@ public enum App {
         }
     }
 
-    public File getAppDir(String parent) {
-        return new File(parent + File.separator + dir);
+    public File getAppDir() {
+        return new File(APPS_DIR, dir);
     }
 }
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
index de70e59..231c1fa 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
@@ -47,6 +47,7 @@ public class Commands {
     private static final Logger LOGGER = Logger.getLogger(Commands.class.getName());
 
     public static final String BASE_DIR = getBaseDir();
+    public static final String APPS_DIR = getAppsDir();
     public static final String MVNW = Commands.isThisWindows ? "mvnw.cmd" : "./mvnw";
     public static final boolean isThisWindows = System.getProperty("os.name").matches(".*[Ww]indows.*");
     private static final Pattern numPattern = Pattern.compile("[ \t]*[0-9]+[ \t]*");
@@ -136,15 +137,26 @@ public class Commands {
     }
 
     public static String getBaseDir() {
-        String env = System.getenv().get("basedir");
-        String sys = System.getProperty("basedir");
-        if (StringUtils.isNotBlank(env)) {
-            return new File(env).getParent();
+        String baseDirValue = getSystemPropertyOrEnvVarValue("basedir");
+        return new File(baseDirValue).getParent();
+    }
+
+    public static String getAppsDir() {
+        return getSystemPropertyOrEnvVarValue("appsDir");
+    }
+
+    private static String getSystemPropertyOrEnvVarValue(String name) {
+        String systemPropertyValue = System.getProperty(name);
+        if (StringUtils.isNotBlank(systemPropertyValue)) {
+            return systemPropertyValue;
         }
-        if (StringUtils.isBlank(sys)) {
-            throw new IllegalArgumentException("Unable to determine project.basedir.");
+
+        String envPropertyValue = System.getenv(name);
+
+        if (StringUtils.isBlank(envPropertyValue)) {
+            throw new IllegalArgumentException("Unable to determine the value of the property " + name);
         }
-        return new File(sys).getParent();
+        return envPropertyValue;
     }
 
     public static String getCodeQuarkusURL() {
@@ -178,13 +190,13 @@ public class Commands {
     }
 
     public static void cleanTarget(App app) {
-        String target = BASE_DIR + File.separator + app.dir + File.separator + "target";
-        String logs = BASE_DIR + File.separator + app.dir + File.separator + "logs";
+        String target = APPS_DIR + File.separator + app.dir + File.separator + "target";
+        String logs = APPS_DIR + File.separator + app.dir + File.separator + "logs";
         cleanDirOrFile(target, logs);
     }
 
     public static BuildResult buildApp(App app, String methodName, String className, StringBuilder whatIDidReport) throws InterruptedException {
-        File appDir = app.getAppDir(BASE_DIR);
+        File appDir = app.getAppDir();
         File buildLogA = new File(appDir.getAbsolutePath() + File.separator + "logs" + File.separator + app.mavenCommands.name().toLowerCase() + "-build.log");
         ExecutorService buildService = Executors.newFixedThreadPool(1);
 
@@ -207,7 +219,7 @@ public class Commands {
     }
 
     public static RunInfo startApp(App app, StringBuilder whatIDidReport) throws IOException, InterruptedException {
-        File appDir = app.getAppDir(BASE_DIR);
+        File appDir = app.getAppDir();
         File runLogA = new File(appDir.getAbsolutePath() + File.separator + "logs" + File.separator + app.mavenCommands.name().toLowerCase() + "-run.log");
         List<String> cmd = getRunCommand(app.mavenCommands.mvnCmds[1]);
         appendln(whatIDidReport, appDir.getAbsolutePath());
@@ -448,7 +460,7 @@ public class Commands {
             if (isThisWindows) {
                 if (!force) {
                     Process p = Runtime.getRuntime().exec(new String[] {
-                            BASE_DIR + File.separator + "testsuite" + File.separator + "src" + File.separator + "it" + File.separator + "resources" + File.separator +
+                            BASE_DIR + File.separator + "framework" + File.separator + "src" + File.separator + "main" + File.separator + "resources" + File.separator +
                                     "CtrlC.exe ",
                             Long.toString(pid) });
                     p.waitFor(1, TimeUnit.MINUTES);
diff --git a/framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java b/framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
index dba7874..fb781fc 100644
--- a/framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
+++ b/framework/src/main/java/org/kie/kogito/benchmarks/framework/Logs.java
@@ -7,7 +7,6 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.nio.file.StandardOpenOption;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Scanner;
@@ -230,8 +229,7 @@ public class Logs {
     }
 
     public static Path getLogsDir() throws IOException {
-        Path destDir = new File(BASE_DIR + File.separator + "testsuite" + File.separator + "target" +
-                File.separator + "archived-logs").toPath();
+        Path destDir = new File(BASE_DIR + File.separator + "tests" + File.separator + "archived-logs").toPath();
         Files.createDirectories(destDir);
         return destDir;
     }
@@ -253,7 +251,7 @@ public class Logs {
 
         List<String> lines = Files.lines(path).collect(Collectors.toCollection(ArrayList::new));
         String currentHeader = lines.get(0);
-        String headerWithoutAppAndMode = Arrays.stream(log.headerCSV.split(",")).skip(2).collect(Collectors.joining(","));
+        String headerWithoutAppAndMode = stripAppAndModeColumns(log.headerCSV);
         if (!currentHeader.contains(headerWithoutAppAndMode)) {
             lines.set(0, currentHeader + "," + headerWithoutAppAndMode);
             currentHeader = lines.get(0);
@@ -264,7 +262,7 @@ public class Logs {
         long headerLength = currentHeader.chars().filter(value -> value == ',').count();
         long lastLineLength = lastLine.chars().filter(value -> value == ',').count();
         if (lastLineLength < headerLength) {
-            String newDataWithoutAppAndMode = Arrays.stream(log.lineCSV.split(",")).skip(2).collect(Collectors.joining(","));
+            String newDataWithoutAppAndMode = stripAppAndModeColumns(log.lineCSV);
             lines.set(lines.size() - 1, lastLine + "," + newDataWithoutAppAndMode);
         } else {
             lines.add(log.lineCSV);
@@ -275,6 +273,11 @@ public class Logs {
         LOGGER.info("\n" + log.headerCSV + "\n" + log.lineCSV);
     }
 
+    private static String stripAppAndModeColumns(String line) {
+        int secondOccurrence = line.indexOf(",", line.indexOf(",") + 1);
+        return line.substring(secondOccurrence + 1);
+    }
+
     /**
      * List Jar file names failing regexp pattern check
      *
diff --git a/framework/src/main/resources/CtrlC.exe b/framework/src/main/resources/CtrlC.exe
new file mode 100644
index 0000000..8b03861
Binary files /dev/null and b/framework/src/main/resources/CtrlC.exe differ
diff --git a/framework/src/main/resources/README.md b/framework/src/main/resources/README.md
new file mode 100644
index 0000000..c135692
--- /dev/null
+++ b/framework/src/main/resources/README.md
@@ -0,0 +1,39 @@
+# CtrlC.exe
+
+When you start Quarkus on Windows as a process without
+a console window, you cannot stop it gently with TASKKILL, 
+you have to use TASKKILL /F. That terminates the process immediately
+and it does not let it write "stopped in" to the process output.
+
+To mitigate this, you have to use a native Windows API with
+a small tool that detaches itself from its own console,
+attaches to the non-existing console of the PID you want
+to stop and sends it Ctrl+C.
+
+```$c
+
+#include <windows.h>
+#include <stdio.h>
+
+void ctrlC(int pid) {
+    FreeConsole();
+    if (AttachConsole(pid)) {
+        SetConsoleCtrlHandler(NULL, true);
+        GenerateConsoleCtrlEvent(CTRL_C_EVENT, 0);
+    }
+    exit(1);
+}
+
+int main(int argc, const char* argv[]) {
+    if (argc != 2) {
+        printf("provide a pid number");
+        return 1;
+    }
+    int pid = atoi(argv[1]);
+    printf("stopping pid %d", pid);
+    ctrlC(pid);
+    return 0;
+}
+
+``` 
+
diff --git a/tests/pom.xml b/tests/pom.xml
index 38a9d04..5274a7b 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -15,6 +15,10 @@
   <name></name>
   <description></description>
 
+  <properties>
+    <appsDir>${project.parent.basedir}/</appsDir>
+  </properties>
+
   <dependencyManagement>
     <dependencies>
       <dependency>
@@ -38,4 +42,17 @@
     </dependency>
   </dependencies>
 
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <systemPropertyVariables>
+            <appsDir>${appsDir}</appsDir>
+          </systemPropertyVariables>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
 </project>
\ No newline at end of file
diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
index e9d93dd..27260ed 100644
--- a/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
+++ b/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
@@ -2,30 +2,17 @@ package org.kie.kogito.benchmarks;
 
 import java.io.File;
 import java.io.IOException;
-import java.io.OutputStream;
-import java.net.HttpURLConnection;
-import java.net.URI;
-import java.net.URL;
-import java.net.http.HttpClient;
-import java.net.http.HttpRequest;
-import java.net.http.HttpResponse;
-import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.time.Duration;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
-import java.util.Scanner;
-import java.util.stream.Collectors;
 
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.util.EntityUtils;
 import org.assertj.core.api.Assertions;
@@ -40,7 +27,6 @@ import org.kie.kogito.benchmarks.framework.MvnCmds;
 import org.kie.kogito.benchmarks.framework.RunInfo;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.kie.kogito.benchmarks.framework.Commands.BASE_DIR;
 import static org.kie.kogito.benchmarks.framework.Commands.buildApp;
 import static org.kie.kogito.benchmarks.framework.Commands.cleanTarget;
 import static org.kie.kogito.benchmarks.framework.Commands.getOpenedFDs;
@@ -73,7 +59,7 @@ public abstract class AbstractTemplateTest {
         File buildLogA = null;
         File runLogA = null;
         StringBuilder whatIDidReport = new StringBuilder();
-        File appDir = app.getAppDir(BASE_DIR);
+        File appDir = app.getAppDir();
         MvnCmds mvnCmds = app.mavenCommands;
         String cn = testInfo.getTestClass().get().getCanonicalName();
         String mn = testInfo.getTestMethod().get().getName();
@@ -193,7 +179,7 @@ public abstract class AbstractTemplateTest {
         File buildLogA = null;
         File runLogA = null;
         StringBuilder whatIDidReport = new StringBuilder();
-        File appDir = app.getAppDir(BASE_DIR);
+        File appDir = app.getAppDir();
         MvnCmds mvnCmds = app.mavenCommands;
         String cn = testInfo.getTestClass().get().getCanonicalName();
         String mn = testInfo.getTestMethod().get().getName();
@@ -302,8 +288,6 @@ public abstract class AbstractTemplateTest {
             long endTime = System.currentTimeMillis();
 
             System.out.println("First response time: " + values.get(0));
-            System.out.println("Second response time: " + values.get(1));
-            System.out.println("Third response time: " + values.get(2));
             System.out.println("Average response time: " + values.stream().mapToLong(Long::longValue).skip(1).average());
             System.out.println("Total duration: " + (endTime - startTime));
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 37/38: [kie-issues#628] Change JBoss Nexus to Apache Nexus. (#17)

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 9d58c62357126b97090ebe80b00508f3a0faf3d8
Author: Tibor Zimányi <ti...@ibm.com>
AuthorDate: Wed Oct 25 09:33:38 2023 +0200

    [kie-issues#628] Change JBoss Nexus to Apache Nexus. (#17)
---
 pom.xml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/pom.xml b/pom.xml
index 852c82f..5e47a44 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,9 +23,9 @@
   <repositories>
     <!-- Bootstrap repository to locate the parent pom when the parent pom has not been build locally. -->
     <repository>
-      <id>jboss-public-repository-group</id>
-      <name>JBoss Public Repository Group</name>
-      <url>https://repository.jboss.org/nexus/content/groups/public/</url>
+      <id>apache-public-repository-group</id>
+      <name>Apache Public Repository Group</name>
+      <url>https://repository.apache.org/content/groups/public/</url>
       <layout>default</layout>
       <releases>
         <enabled>true</enabled>


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 33/38: Merge pull request #14 from jiripetrlik/jenkins-timeout-optimization

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit 4d7c60f71146489dc013db24f9af3b691001f54d
Merge: 9dde0e7 1dd72f9
Author: Jiri Petrlik <ji...@gmail.com>
AuthorDate: Mon Jan 31 09:03:13 2022 +0100

    Merge pull request #14 from jiripetrlik/jenkins-timeout-optimization
    
    Increase time to first ok for PMML forest benchmark

 .../pmml-kie-benchmarks-forest-quarkus-mvn/threshold.properties         | 2 +-
 .../pmml-kie-benchmarks-forest-springboot/threshold.properties          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 25/38: Log command parameters explicitly

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit e1fdafe669a6cc89a05aeef78adc8f2849d8a1f9
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Fri Jul 30 20:17:42 2021 +0200

    Log command parameters explicitly
---
 .../src/main/java/org/kie/kogito/benchmarks/framework/Commands.java   | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
index da65087..8ed9c8c 100644
--- a/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
+++ b/kogito-benchmarks-framework/src/main/java/org/kie/kogito/benchmarks/framework/Commands.java
@@ -324,7 +324,7 @@ public class Commands {
     }
 
     public static Process runCommand(List<String> command, File directory, File logFile) {
-        logger.info("Running command: {}", String.join(" ", command));
+        logger.info("Running command: {}", command);
         ProcessBuilder pa = new ProcessBuilder(command);
         Map<String, String> envA = pa.environment();
         envA.put("PATH", System.getenv("PATH"));
@@ -485,7 +485,7 @@ public class Commands {
             pb.redirectOutput(ProcessBuilder.Redirect.to(log));
             Process p = null;
             try {
-                logger.info("Running command: " + String.join(" ", command));
+                logger.info("Running command: {}", command);
                 p = pb.start();
             } catch (IOException e) {
                 e.printStackTrace();


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org


(incubator-kie-kogito-benchmarks) 08/38: Debug

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbowers pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-benchmarks.git

commit dda901969c18828c9c4beee8971ca734d001803d
Author: Marián Macik <mm...@redhat.com>
AuthorDate: Fri May 7 18:54:41 2021 +0200

    Debug
---
 .../src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java  | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java b/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
index 2fbac17..36afca6 100644
--- a/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
+++ b/tests/src/test/java/org/kie/kogito/benchmarks/AbstractTemplateTest.java
@@ -8,6 +8,7 @@ import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpPost;
@@ -299,6 +300,8 @@ public abstract class AbstractTemplateTest {
             }
 
             System.out.println("First response time: " + firstResponseTime);
+            System.out.println("First response times: " + values.stream().limit(100).collect(Collectors.toList()));
+            System.out.println("Last response times: " + values.stream().skip(values.size() - 100).collect(Collectors.toList()));
             System.out.println("Average response time: " + values.stream().mapToLong(Long::longValue).average());
             System.out.println("Total duration: " + totalDuration);
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org