diff --git a/docker/images/apache-php8/Dockerfile b/docker/images/apache-php8/Dockerfile
index 725f7b19d..5fd60d0d4 100644
--- a/docker/images/apache-php8/Dockerfile
+++ b/docker/images/apache-php8/Dockerfile
@@ -1,6 +1,6 @@
FROM ham.apache
-RUN echo ham.apache-php8 version-4.1.5
+RUN echo ham.apache-php8 version-4.1.6
# Setup apache and php
RUN apk add --no-cache \
diff --git a/docker/images/apache/Dockerfile b/docker/images/apache/Dockerfile
index 91e7dcd35..e4b728f6e 100644
--- a/docker/images/apache/Dockerfile
+++ b/docker/images/apache/Dockerfile
@@ -1,6 +1,6 @@
FROM ham.client
-RUN echo ham.apache version-4.1.5
+RUN echo ham.apache version-4.1.6
# Setup apache and php
RUN apk --no-cache add apache2 apache2-ssl curl \
diff --git a/docker/images/base/Dockerfile b/docker/images/base/Dockerfile
index 4df09a25c..8f8a79777 100644
--- a/docker/images/base/Dockerfile
+++ b/docker/images/base/Dockerfile
@@ -2,7 +2,7 @@ FROM alpine:latest
RUN apk update
RUN apk upgrade
-RUN echo ham.base version-4.1.5
+RUN echo ham.base version-4.1.6
ENV JAVA11_HOME /usr/lib/jvm/java-11-openjdk
diff --git a/docker/images/client/Dockerfile b/docker/images/client/Dockerfile
index d6a1e324b..5c2342b2a 100644
--- a/docker/images/client/Dockerfile
+++ b/docker/images/client/Dockerfile
@@ -1,6 +1,6 @@
FROM ham.base
-RUN echo ham.client version-4.1.5
+RUN echo ham.client version-4.1.6
# Setup localdns
RUN mkdir -p /etc/app/simpledns/
diff --git a/docker/images/externalvpn/forticlient/Dockerfile b/docker/images/externalvpn/forticlient/Dockerfile
index 99d01b870..51bc41b6c 100644
--- a/docker/images/externalvpn/forticlient/Dockerfile
+++ b/docker/images/externalvpn/forticlient/Dockerfile
@@ -31,7 +31,7 @@ RUN \
#docker run --privileged --cap-add SYS_ADMIN --cap-add DAC_READ_SEARCH --name myvpn myvpn
FROM ham.base:latest
-RUN echo ham.openforti version-4.1.5
+RUN echo ham.openforti version-4.1.6
COPY --from=builder /usr/bin/openfortivpn /usr/bin/
#/go/bin/glider
diff --git a/docker/images/externalvpn/openconnect/Dockerfile b/docker/images/externalvpn/openconnect/Dockerfile
index 61cf37c99..b20fdb863 100644
--- a/docker/images/externalvpn/openconnect/Dockerfile
+++ b/docker/images/externalvpn/openconnect/Dockerfile
@@ -4,7 +4,7 @@ FROM ubuntu:latest
RUN apt-get update
RUN apt-get upgrade -y
-RUN echo ham.openconnect version-4.1.5
+RUN echo ham.openconnect version-4.1.6
# Block timezone request prompt
ENV DEBIAN_FRONTEND="noninteractive" TZ="Europe/Rome"
diff --git a/docker/images/master/Dockerfile b/docker/images/master/Dockerfile
index 9fb63cc2b..d34f1be7a 100644
--- a/docker/images/master/Dockerfile
+++ b/docker/images/master/Dockerfile
@@ -1,6 +1,6 @@
FROM ham.base
-RUN echo ham.master version-4.1.5
+RUN echo ham.master version-4.1.6
COPY data/ham.sh /etc/app/ham/
COPY data/app /etc/app/ham/app/
diff --git a/docker/images/mysql/Dockerfile b/docker/images/mysql/Dockerfile
index 304586579..8883b5606 100644
--- a/docker/images/mysql/Dockerfile
+++ b/docker/images/mysql/Dockerfile
@@ -1,6 +1,6 @@
FROM ham.client
-RUN echo ham.mysql version-4.1.5
+RUN echo ham.mysql version-4.1.6
ENV TIMEZONE=Europe/Paris
ENV MYSQL_ROOT_PASSWORD=root
diff --git a/docker/images/openvpn/Dockerfile b/docker/images/openvpn/Dockerfile
index 504b2d44c..fb8bb8450 100644
--- a/docker/images/openvpn/Dockerfile
+++ b/docker/images/openvpn/Dockerfile
@@ -1,7 +1,7 @@
FROM ham.base
-RUN echo ham.openvpn version-4.1.5
+RUN echo ham.openvpn version-4.1.6
# Testing: pamtester
RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing/" >> /etc/apk/repositories && \
diff --git a/docker/images/singlemaster/Dockerfile b/docker/images/singlemaster/Dockerfile
index ccd851f53..c8e62d06d 100644
--- a/docker/images/singlemaster/Dockerfile
+++ b/docker/images/singlemaster/Dockerfile
@@ -1,6 +1,6 @@
FROM ham.master
-RUN echo ham.singlemaster version-4.1.5
+RUN echo ham.singlemaster version-4.1.6
COPY data/*.* /etc/app/dns/
RUN chmod +x /etc/app/dns/*.sh
diff --git a/docker/templates/master/Dockerfile b/docker/templates/master/Dockerfile
index ca623ecca..4b51ae601 100644
--- a/docker/templates/master/Dockerfile
+++ b/docker/templates/master/Dockerfile
@@ -1,5 +1,5 @@
FROM ham.singlemaster:latest
-RUN echo ham.template version-4.1.5
+RUN echo ham.template version-4.1.6
COPY ./config/*.json /etc/app/ham/app/
RUN mkdir -p /etc/app/app
diff --git a/globaltest/src/main/java/org/kendar/globaltest/Main.java b/globaltest/src/main/java/org/kendar/globaltest/Main.java
index 78230e602..4c27c901c 100644
--- a/globaltest/src/main/java/org/kendar/globaltest/Main.java
+++ b/globaltest/src/main/java/org/kendar/globaltest/Main.java
@@ -431,7 +431,8 @@ private static void startWait(String dir, String script,
private static void handleDockerErrors(String a, Process p) {
- if(a.toLowerCase(Locale.ROOT).startsWith("error")){
+ if(a.toLowerCase(Locale.ROOT).startsWith("error") ||
+ a.toLowerCase(Locale.ROOT).startsWith("couldn't connect")){
System.err.println("");
System.err.println("[ERROR] "+ a);
p.destroy();
@@ -612,21 +613,28 @@ public static void main(String[] args) throws Exception {
private static void testAndGenerateJacoco(String startingPath, String hamVersion, String buildDir, String releasePath) throws Exception {
System.out.println("[INFO] Unit test ham & report");
startWait(pathOf(startingPath, "scripts","globaltest"), "test.run",Main::handleRunErrors);
- sigtermAllHamProcesses();
+ if(SystemUtils.IS_OS_WINDOWS) {
+ checkForSite(60, "http://127.0.0.1/api/shutdown");
+ }else{
+ sigtermAllHamProcesses();
+ }
var path = Path.of(startingPath,"ham","api.test","target","test_run_starter.exec");
- System.out.print("[INFO] Waiting for coverage data");
var now =System.currentTimeMillis();
var end = now+5*60*1000;
- while(!Files.exists(path) && end>System.currentTimeMillis()){
+
+ System.out.print("[INFO] Waiting for coverage data");
+ while((!Files.exists(path)||Files.size(path)==0) && end>System.currentTimeMillis()){
System.out.print(".");
Thread.sleep(1000);
}
- if(!Files.exists(path)) {
+ if(!Files.exists(path)|| Files.size(path)==0) {
System.err.println("[ERROR] Error loading jacoco reports "+path);
doExit(1);
}else{
System.out.println("OK");
}
+
+ sigtermAllHamProcesses();
startWait(pathOf(startingPath, "scripts","globaltest"), "test.jacoco",Main::handleRunErrors);
}
diff --git a/ham/api.ham/pom.xml b/ham/api.ham/pom.xml
index c1cae6880..fa017e1b6 100644
--- a/ham/api.ham/pom.xml
+++ b/ham/api.ham/pom.xml
@@ -5,7 +5,7 @@
HttpAnsweringMachine
org.kendar
- 4.1.5
+ 4.1.6
../pom.xml
4.0.0
diff --git a/ham/api.js.builder/pom.xml b/ham/api.js.builder/pom.xml
index cb3126b6f..c4f86cd26 100644
--- a/ham/api.js.builder/pom.xml
+++ b/ham/api.js.builder/pom.xml
@@ -5,7 +5,7 @@
HttpAnsweringMachine
org.kendar
- 4.1.5
+ 4.1.6
../pom.xml
4.0.0
diff --git a/ham/api.replayer/pom.xml b/ham/api.replayer/pom.xml
index cb9ff4218..8dfe3fee6 100644
--- a/ham/api.replayer/pom.xml
+++ b/ham/api.replayer/pom.xml
@@ -5,7 +5,7 @@
HttpAnsweringMachine
org.kendar
- 4.1.5
+ 4.1.6
../pom.xml
4.0.0
diff --git a/ham/api.test/pom.xml b/ham/api.test/pom.xml
index ab52d3a9c..afb204489 100644
--- a/ham/api.test/pom.xml
+++ b/ham/api.test/pom.xml
@@ -5,7 +5,7 @@
HttpAnsweringMachine
org.kendar
- 4.1.5
+ 4.1.6
../pom.xml
4.0.0
diff --git a/ham/app.commons/pom.xml b/ham/app.commons/pom.xml
index b85c1e6ff..f02e1d309 100644
--- a/ham/app.commons/pom.xml
+++ b/ham/app.commons/pom.xml
@@ -5,7 +5,7 @@
HttpAnsweringMachine
org.kendar
- 4.1.5
+ 4.1.6
../pom.xml
4.0.0
diff --git a/ham/app.dns/pom.xml b/ham/app.dns/pom.xml
index 49b16ff84..1338d6ab6 100644
--- a/ham/app.dns/pom.xml
+++ b/ham/app.dns/pom.xml
@@ -5,7 +5,7 @@
HttpAnsweringMachine
org.kendar
- 4.1.5
+ 4.1.6
../pom.xml
4.0.0
diff --git a/ham/app.http.standardfilters/pom.xml b/ham/app.http.standardfilters/pom.xml
index f3ea7a04c..60e26f1e4 100644
--- a/ham/app.http.standardfilters/pom.xml
+++ b/ham/app.http.standardfilters/pom.xml
@@ -5,7 +5,7 @@
HttpAnsweringMachine
org.kendar
- 4.1.5
+ 4.1.6
../pom.xml
4.0.0
diff --git a/ham/app.http/pom.xml b/ham/app.http/pom.xml
index 5ac0303d0..5b0ee6406 100644
--- a/ham/app.http/pom.xml
+++ b/ham/app.http/pom.xml
@@ -5,7 +5,7 @@
HttpAnsweringMachine
org.kendar
- 4.1.5
+ 4.1.6
../pom.xml
4.0.0
diff --git a/ham/app/pom.xml b/ham/app/pom.xml
index 38b4542e3..c8334bb4e 100644
--- a/ham/app/pom.xml
+++ b/ham/app/pom.xml
@@ -23,7 +23,7 @@
HttpAnsweringMachine
org.kendar
- 4.1.5
+ 4.1.6
../pom.xml
jar
diff --git a/ham/app/src/main/java/org/kendar/Main.java b/ham/app/src/main/java/org/kendar/Main.java
index bedd64b10..8b5a028ae 100644
--- a/ham/app/src/main/java/org/kendar/Main.java
+++ b/ham/app/src/main/java/org/kendar/Main.java
@@ -8,10 +8,12 @@
import org.kendar.utils.Sleeper;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
+import org.springframework.context.ConfigurableApplicationContext;
import java.util.Arrays;
import java.util.HashMap;
@@ -20,6 +22,7 @@
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.Consumer;
import static java.lang.System.exit;
@@ -34,10 +37,19 @@ public static void main(String[] args) {
(hostname, sslSession) -> true);
SpringApplication app = new SpringApplication(Main.class);
app.setLazyInitialization(true);
- app.run(args);
+ var ctx = app.run(args);
+ int exitCode = SpringApplication.exit(ctx, () -> 0);
+ exit(exitCode);
}
+
+
public static AtomicBoolean doRun = new AtomicBoolean(true);
+ private static Runnable shutdownHook;
+
+ public static void shutdown(){
+ shutdownHook.run();
+ }
@Override
public void run(String... args) {
@@ -50,6 +62,11 @@ public void run(String... args) {
var answeringServers = applicationContext.getBeansOfType(AnsweringServer.class);
+ shutdownHook=()->{
+ doRun.set(false);
+ //SpringApplication.exit(applicationContext, () -> 0);
+ };
+
//Create fake futures (terminated futures)
Map> futures = setupFakeFutures(answeringServers);
@@ -60,7 +77,8 @@ public void run(String... args) {
runRunners(executor, futures);
Sleeper.sleep(1000);
}
- exit(0);
+ executor.shutdownNow();
+ //exit(0);
}
public void stop(){
diff --git a/ham/app/src/main/java/org/kendar/servers/dbproxy/DbProxyApi.java b/ham/app/src/main/java/org/kendar/servers/dbproxy/DbProxyApi.java
index 24b7a5dd4..b2c9e6056 100644
--- a/ham/app/src/main/java/org/kendar/servers/dbproxy/DbProxyApi.java
+++ b/ham/app/src/main/java/org/kendar/servers/dbproxy/DbProxyApi.java
@@ -85,7 +85,7 @@ private void initialize() {
result.setLocal(local);
if(result.isActive()) {
var serverEngine = new ServerEngine(remote.getConnectionString(), remote.getLogin(), remote.getPassword());
- serverEngine.setMaxRows(100);
+ serverEngine.setMaxRows(500);
result.setServerEngine(serverEngine);
}
logger.info("Db Proxy LOADED, from: " + local.getConnectionString()+" to "+remote.getConnectionString());
diff --git a/ham/app/src/main/java/org/kendar/servers/http/api/HealthController.java b/ham/app/src/main/java/org/kendar/servers/http/api/HealthController.java
index 32b31839a..2ca5f1446 100644
--- a/ham/app/src/main/java/org/kendar/servers/http/api/HealthController.java
+++ b/ham/app/src/main/java/org/kendar/servers/http/api/HealthController.java
@@ -38,4 +38,20 @@ public void getStatus(Request req, Response res) {
res.addHeader(ConstantsHeader.CONTENT_TYPE, ConstantsMime.TEXT);
res.setResponseText("OK");
}
+
+ @HttpMethodFilter(phase = HttpFilterType.API,
+ pathAddress = "/api/shutdown",
+ method = "GET")
+ @HamDoc(
+ tags = {"base/utils"},
+ description = "Shutdown the application",
+ responses = @HamResponse(
+ body = String.class,
+ examples = @Example(example = "OK")
+ ))
+ public void doShutdown(Request req, Response res) {
+ res.addHeader(ConstantsHeader.CONTENT_TYPE, ConstantsMime.TEXT);
+ res.setResponseText("OK");
+ Main.shutdown();
+ }
}
diff --git a/ham/app/src/main/resources/web/libs/utils.js b/ham/app/src/main/resources/web/libs/utils.js
index f4e022c74..88c271546 100644
--- a/ham/app/src/main/resources/web/libs/utils.js
+++ b/ham/app/src/main/resources/web/libs/utils.js
@@ -93,6 +93,28 @@ const isUndefined=function(variable){
return false;
}
+function getTag(value) {
+ if (value == null) {
+ return value === undefined ? '[object Undefined]' : '[object Null]'
+ }
+ return toString.call(value)
+}
+
+function isObjectLike(value) {
+ return typeof value === 'object' && value !== null
+}
+
+function isBoolean(value) {
+ return value === true || value === false ||
+ (isObjectLike(value) && getTag(value) == '[object Boolean]')
+}
+
+const isTrue=function(variable){
+ if (variable.constructor === String && variable.toUpperCase()=="TRUE")return true;
+ else if(isBoolean(variable))return variable;
+ return false;
+}
+
const waitForAvailableVariableTimes=function(variable,timeout,func,times){
times--;
if(times<0)return;
diff --git a/ham/app/src/main/resources/web/plugins/recording/currentdb.html b/ham/app/src/main/resources/web/plugins/recording/currentdb.html
index 567b3b8a1..1d8bb50e9 100644
--- a/ham/app/src/main/resources/web/plugins/recording/currentdb.html
+++ b/ham/app/src/main/resources/web/plugins/recording/currentdb.html
@@ -74,6 +74,7 @@ {{data.request.path}}
th.prev = parseInt(result.headers.get("X-PREV"));
th.$set(th,"data", result.data);
+
axios.get("/api/plugins/replayer/recording/" + th.recordingId + "/script/" + th.selectedRow)
.then(function (results) {
th.script = results.data;
diff --git a/ham/app/src/main/resources/web/plugins/recording/vcomponents/extdb.vue b/ham/app/src/main/resources/web/plugins/recording/vcomponents/extdb.vue
index 3abc4c0f0..f7e219a3c 100644
--- a/ham/app/src/main/resources/web/plugins/recording/vcomponents/extdb.vue
+++ b/ham/app/src/main/resources/web/plugins/recording/vcomponents/extdb.vue
@@ -44,15 +44,16 @@ module.exports = {
watch:{
$props: {
handler(val,oldVal) {
- if(val.value.recordDbCalls)this.recordDbCalls=val.value.recordDbCalls=="true";
- if(val.value.recordVoidDbCalls)this.recordVoidDbCalls=val.value.recordVoidDbCalls=="true";
- if(val.value.useSimEngine)this.useSimEngine=val.value.useSimEngine=="true";
- if(val.value.dbNames)this.dbNames=val.value.dbNames;
+ if(!isUndefined(val.value)) {
+ if (!isUndefined(val.value.recordDbCalls)) this.recordDbCalls = isTrue(val.value.recordDbCalls);
+ if (!isUndefined(val.value.recordVoidDbCalls)) this.recordVoidDbCalls = isTrue(val.value.recordVoidDbCalls);
+ if (!isUndefined(val.value.useSimEngine)) this.useSimEngine = isTrue(val.value.useSimEngine);
+ if (!isUndefined(val.value.dbNames)) this.dbNames = val.value.dbNames;
+ }
this.changeDbName();
this.changeUseSimEngine();
this.changeRecordVoidDbCalls();
this.changeRecordDbCalls();
- console.log("CHAAAAAAAAAAAAAAAAA");
},
deep: true,
immediate: true,
diff --git a/ham/app/src/main/resources/web/plugins/recording/vcomponents/line/jdbcresultset.vue b/ham/app/src/main/resources/web/plugins/recording/vcomponents/line/jdbcresultset.vue
index 5f26caf00..745d0b660 100644
--- a/ham/app/src/main/resources/web/plugins/recording/vcomponents/line/jdbcresultset.vue
+++ b/ham/app/src/main/resources/web/plugins/recording/vcomponents/line/jdbcresultset.vue
@@ -83,13 +83,11 @@ module.exports = {
computed:{
columndescriptorslength:{
get: function() {
- console.log("columndescriptorslength")
return findChildItemWithType(this.value,'columndescriptors').children.length;
}
},
shownRows:{
get:function (){
- console.log("retrieve 2")
var rows = findChildItemWithType(this.value,'columndescriptors').children;
if(this.rowsChanged){
this.rowsChanged=false;
@@ -105,7 +103,6 @@ module.exports = {
},
cols:{
get: function() {
- console.log("cols")
var rows = findChildItemWithType(this.value,'columndescriptors').children;
var realRows=[];
rows.forEach(function(row){
@@ -121,13 +118,18 @@ module.exports = {
var result=[];
var th = this;
var rows = findChildItemWithType(this.value,'rows').children;
+
rows.forEach(function(row){
var realRow =[];
row.children.forEach(function(col){
- var value = col.value;
- realRow.push(value);
- })
- result.push(realRow);
+ if(!isUndefined(col)) {
+ var value = col.value;
+ realRow.push(value);
+ }
+ });
+ if(realRow.length>0) {
+ result.push(realRow);
+ }
})
this.rows=result;
return result;
@@ -142,7 +144,6 @@ module.exports = {
// })
// },
reloadObject:function(originalResultset,setitem){
- console.log("reloadobject")
var data ={
jsonResultSet:originalResultset,
data:JSON.stringify(this.rows)
diff --git a/ham/jacoco/pom.xml b/ham/jacoco/pom.xml
index 16ac8b99f..74eb45493 100644
--- a/ham/jacoco/pom.xml
+++ b/ham/jacoco/pom.xml
@@ -5,7 +5,7 @@
HttpAnsweringMachine
org.kendar
- 4.1.5
+ 4.1.6
../pom.xml
4.0.0
diff --git a/ham/lib.schema.checker/pom.xml b/ham/lib.schema.checker/pom.xml
index 808a4ca81..75bc998d2 100644
--- a/ham/lib.schema.checker/pom.xml
+++ b/ham/lib.schema.checker/pom.xml
@@ -5,7 +5,7 @@
HttpAnsweringMachine
org.kendar
- 4.1.5
+ 4.1.6
../pom.xml
4.0.0
diff --git a/ham/plugin.js.filters/pom.xml b/ham/plugin.js.filters/pom.xml
index 7ad68bb4a..f57ceb1b0 100644
--- a/ham/plugin.js.filters/pom.xml
+++ b/ham/plugin.js.filters/pom.xml
@@ -5,7 +5,7 @@
HttpAnsweringMachine
org.kendar
- 4.1.5
+ 4.1.6
../pom.xml
4.0.0
diff --git a/ham/plugin.oidc.server/pom.xml b/ham/plugin.oidc.server/pom.xml
index 37e02f857..5be7c377a 100644
--- a/ham/plugin.oidc.server/pom.xml
+++ b/ham/plugin.oidc.server/pom.xml
@@ -5,7 +5,7 @@
HttpAnsweringMachine
org.kendar
- 4.1.5
+ 4.1.6
../pom.xml
4.0.0
diff --git a/ham/plugin.replayer.commons/pom.xml b/ham/plugin.replayer.commons/pom.xml
index 26699238c..0f1d52cf5 100644
--- a/ham/plugin.replayer.commons/pom.xml
+++ b/ham/plugin.replayer.commons/pom.xml
@@ -5,7 +5,7 @@
HttpAnsweringMachine
org.kendar
- 4.1.5
+ 4.1.6
4.0.0
diff --git a/ham/plugin.replayer.commons/src/main/java/org/kendar/replayer/engine/ReplayerEngine.java b/ham/plugin.replayer.commons/src/main/java/org/kendar/replayer/engine/ReplayerEngine.java
index 12dafeb73..f56cd08ba 100644
--- a/ham/plugin.replayer.commons/src/main/java/org/kendar/replayer/engine/ReplayerEngine.java
+++ b/ham/plugin.replayer.commons/src/main/java/org/kendar/replayer/engine/ReplayerEngine.java
@@ -1,6 +1,5 @@
package org.kendar.replayer.engine;
-import org.kendar.servers.JsonConfiguration;
import org.kendar.servers.http.Request;
import org.kendar.servers.http.Response;
import org.kendar.utils.LoggerBuilder;
@@ -10,7 +9,7 @@
public interface ReplayerEngine {
String getId();
void loadDb(Long recordingId) throws Exception;
- Response findRequestMatch(Request req, String contentHash) throws Exception;
+ Response findRequestMatch(Request req, String contentHash, Map params) throws Exception;
ReplayerEngine create(LoggerBuilder logger);
boolean isValidPath(Request path);
diff --git a/ham/plugin.replayer.commons/src/main/java/org/kendar/replayer/storage/ReplayerRow.java b/ham/plugin.replayer.commons/src/main/java/org/kendar/replayer/storage/ReplayerRow.java
index 62d523329..54fb68239 100644
--- a/ham/plugin.replayer.commons/src/main/java/org/kendar/replayer/storage/ReplayerRow.java
+++ b/ham/plugin.replayer.commons/src/main/java/org/kendar/replayer/storage/ReplayerRow.java
@@ -79,8 +79,7 @@ public void setRequestSerialized(String requestSerialized) {
this.requestSerialized = requestSerialized;
}
- @Column(name="requestSerialized")
- @Lob
+ @Column(name="requestSerialized",columnDefinition = "CLOB")
@JsonIgnore
private String requestSerialized;
@@ -92,7 +91,7 @@ public void setResponsSerialized(String responsSerialized) {
this.responsSerialized = responsSerialized;
}
- @Column(name="responsSerialized")
+ @Column(name="responsSerialized",columnDefinition = "CLOB")
@Lob
@JsonIgnore
private String responsSerialized;
diff --git a/ham/plugin.replayer.http/pom.xml b/ham/plugin.replayer.http/pom.xml
index 68b284eb9..bcf092233 100644
--- a/ham/plugin.replayer.http/pom.xml
+++ b/ham/plugin.replayer.http/pom.xml
@@ -5,7 +5,7 @@
HttpAnsweringMachine
org.kendar
- 4.1.5
+ 4.1.6
4.0.0
diff --git a/ham/plugin.replayer.http/src/main/java/org/kendar/replayer/engine/http/HttpReplayer.java b/ham/plugin.replayer.http/src/main/java/org/kendar/replayer/engine/http/HttpReplayer.java
index 00d50db7f..57c299a20 100644
--- a/ham/plugin.replayer.http/src/main/java/org/kendar/replayer/engine/http/HttpReplayer.java
+++ b/ham/plugin.replayer.http/src/main/java/org/kendar/replayer/engine/http/HttpReplayer.java
@@ -117,7 +117,7 @@ private boolean hasHttpRows(Long recordingId) throws Exception {
}
@Override
- public Response findRequestMatch(Request req,String contentHash) throws Exception {
+ public Response findRequestMatch(Request req, String contentHash, Map params) throws Exception {
if(!hasRows) return null;
Response founded = findRequestMatch(req, contentHash,true);
@@ -147,7 +147,11 @@ private Response findRequestMatch(Request sreq, String contentHash, boolean stat
query.setParameter("recordingId", name);
query.setParameter("path", sreq.getPath());
query.setParameter("host", sreq.getHost());
- staticRequests.addAll(query.getResultList());
+ var res = query.getResultList();
+ for(var rr:res){
+ em.detach(rr);
+ }
+ staticRequests.addAll(res);
});
var indexesIds = staticRequests.stream().map(r->r.getIndex().toString()).collect(Collectors.toList());
diff --git a/ham/plugin.replayer.jdbc/pom.xml b/ham/plugin.replayer.jdbc/pom.xml
index 63c6038cc..cc571c4ac 100644
--- a/ham/plugin.replayer.jdbc/pom.xml
+++ b/ham/plugin.replayer.jdbc/pom.xml
@@ -5,7 +5,7 @@
HttpAnsweringMachine
org.kendar
- 4.1.5
+ 4.1.6
4.0.0
diff --git a/ham/plugin.replayer.jdbc/src/main/java/org/kendar/replayer/engine/db/DbReplayer.java b/ham/plugin.replayer.jdbc/src/main/java/org/kendar/replayer/engine/db/DbReplayer.java
index 3baef6ad4..b36322e6d 100644
--- a/ham/plugin.replayer.jdbc/src/main/java/org/kendar/replayer/engine/db/DbReplayer.java
+++ b/ham/plugin.replayer.jdbc/src/main/java/org/kendar/replayer/engine/db/DbReplayer.java
@@ -56,8 +56,9 @@ public boolean isValidRoundTrip(Request req, Response res, Map s
var result = true;
if(!recordDbCalls)result= false;
if(!recordVoidDbCalls){
- if(res.getResponseText()==null)result= false;
- if(res.getResponseText().contains("VoidResult"))result= false;
+ if(res.getResponseText()==null || res.getResponseText().contains("VoidResult")){
+ result= false;
+ }
}
var dbNameAllowed = false;
for(var dbName:dbNames){
@@ -69,7 +70,9 @@ public boolean isValidRoundTrip(Request req, Response res, Map s
break;
}
}
- if(!dbNameAllowed)result = false;
+ if(!dbNameAllowed){
+ result = false;
+ }
if(doUseSimEngine && result){
var connectionId = req.getHeader("X-Connection-Id")==null?-1L:
Long.parseLong(req.getHeader("X-Connection-Id"));
@@ -194,11 +197,15 @@ protected void loadIndexes(Long recordingId, ArrayList indexes) throw
}
protected void addAllIndexes(Long recordingId, ArrayList indexes, EntityManager e) {
- indexes.addAll(e.createQuery("SELECT e FROM CallIndex e LEFT JOIN ReplayerRow f " +
+ var rs = e.createQuery("SELECT e FROM CallIndex e LEFT JOIN ReplayerRow f " +
" ON e.reference = f.id"+
" WHERE " +
" f.type='db' AND e.recordingId=" + recordingId +
- " AND e.stimulatorTest=false ORDER BY e.id ASC").getResultList());
+ " AND e.stimulatorTest=false ORDER BY e.id ASC").getResultList();
+ for(var rss:rs){
+ e.detach(rss);
+ }
+ indexes.addAll(rs);
}
private Map connectionShadow = new HashMap<>();
@@ -206,7 +213,7 @@ protected void addAllIndexes(Long recordingId, ArrayList indexes, Ent
private AtomicLong atomicLong = new AtomicLong(Long.MAX_VALUE);
@Override
- public Response findRequestMatch(Request req, String contentHash) throws Exception {
+ public Response findRequestMatch(Request req, String contentHash, Map specialParams) throws Exception {
if(!hasRows)return null;
var fullPath = req.getPath().substring(1).split("/");
if(req.getPath().startsWith("/api/db")){
@@ -225,6 +232,23 @@ public Response findRequestMatch(Request req, String contentHash) throws Excepti
}
if(req.getPathParameter("dbName")==null)return null;
if(!req.getPath().startsWith("/api/db/"))return null;
+
+ var dbNames = specialParams.get("dbNames")==null?new String[]{"*"}:
+ specialParams.get("dbNames").trim().split(",");
+
+ var dbNameAllowed = false;
+ for(var dbName:dbNames){
+ if(dbName.equalsIgnoreCase("*")){
+ dbNameAllowed=true;
+ break;
+ }else if(dbName.equalsIgnoreCase(req.getPathParameter("dbName"))){
+ dbNameAllowed=true;
+ break;
+ }
+ }
+ if(!dbNameAllowed){
+ return null;
+ }
var reqDeser = serializer.newInstance();
reqDeser.deserialize(req.getRequestText());
var command = (JdbcCommand) reqDeser.read("command");
@@ -268,6 +292,7 @@ private Response getStraightMatch(Request req, JdbcCommand command, String dbNam
}
return serialize(target.getResponse());
}
+
}
if(useSimEngine){
var simResponse = simulator.handle(command,connectionId);
@@ -275,71 +300,9 @@ private Response getStraightMatch(Request req, JdbcCommand command, String dbNam
return serialize(simResponse.getResponse());
}
}
- return serialize(new VoidResult());
- }
-
- private Response getTreeMatch(Request req, JdbcCommand command, String dbName) {
- var db = treeDatabase.get(dbName);
- if(command instanceof Close) {
- var ser = serializer.newInstance();
- var response= new Response();
- ser.write("result", new VoidResult());
- response.getHeaders().put("content-type", "application/json");
- response.setResponseText((String) ser.getSerialized());
- response.setStatusCode(200);
- return response;
- }else if(command instanceof ConnectionConnect){
- var newConnectionId = atomicLong.decrementAndGet();
- if(db.getTargets().stream().anyMatch(t->!t.isVisited())){
- var firstNotVisited = db.getTargets().stream().filter(t->!t.isVisited())
- .findFirst();
- if(firstNotVisited.isEmpty()) return null;
- firstNotVisited.get().setVisited(true);
- connectionRealPath.put(newConnectionId,new ArrayList<>());
- connectionRealPath.get(newConnectionId).add(db);
- var result = new ObjectResult();
- result.setResult(newConnectionId);
- return serialize(result);
- }else{
- return null;
- }
- }else{
- var connectionId = Long.parseLong(req.getHeader("x-connection-id"));
- var path = connectionRealPath.get(connectionId);
- var last = path.get(path.size()-1);
- for(var child:last.getChildren()){
- for(var target:child.getTargets()){
- if(matchesContentForReplaying(target, command)>0 && !target.isVisited()){
- var result = target.getResponse();
- if(child.getChildren().size()==0){
- if(target.getRow().isStaticRequest()){
- //Clean the path for static requests
- for(var i=0;i new ObjectResult());
addFakeExecs("rollback", (a,c) -> new ObjectResult());
addFakeExecs("setSavepoint", SqlSimulator::setSavepoint);
- addFakeExecs("setAutoCommit", (a,c) -> new ObjectResult());
- addFakeExecs("getAutoCommit", (a,c) -> new ObjectResult(true));
+ //addFakeExecs("setAutoCommit", (a,c) -> new ObjectResult());
+ //addFakeExecs("getAutoCommit", (a,c) -> new ObjectResult(true));
addFakeExecs("setReadOnly", (a,c) -> new ObjectResult());
fakes.put(ConnectionCreateStatement.class, (a,c) -> new StatementResult(indexes.incrementAndGet(), 100, 0));
fakes.put(RetrieveRemainingResultSet.class, (a,c) -> new RemainingResultSetResult(true, new ArrayList<>()));
diff --git a/ham/plugin.replayer.jdbc/src/test/java/org/kendar/replayer/DbReplayerTest.java b/ham/plugin.replayer.jdbc/src/test/java/org/kendar/replayer/DbReplayerTest.java
index 69f995e65..6110bfb16 100644
--- a/ham/plugin.replayer.jdbc/src/test/java/org/kendar/replayer/DbReplayerTest.java
+++ b/ham/plugin.replayer.jdbc/src/test/java/org/kendar/replayer/DbReplayerTest.java
@@ -24,6 +24,7 @@
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Comparator;
+import java.util.HashMap;
import java.util.stream.Collectors;
import static org.junit.jupiter.api.Assertions.*;
@@ -79,7 +80,7 @@ private T verifyStep(DbReplayer target, ReplayerResult result, int index, Cl
if(connectionId!=null) {
req.getHeaders().put("x-connection-id", connectionId);
}
- var res = target.findRequestMatch(req,"XXX");
+ var res = target.findRequestMatch(req,"XXX", new HashMap<>());
Object item = new ObjectResult();
if(res.getResponseText()!=null) {
var dser = serializer.newInstance();
diff --git a/ham/plugin.replayer.server/pom.xml b/ham/plugin.replayer.server/pom.xml
index 62feb7b2f..ac578d23c 100644
--- a/ham/plugin.replayer.server/pom.xml
+++ b/ham/plugin.replayer.server/pom.xml
@@ -5,7 +5,7 @@
HttpAnsweringMachine
org.kendar
- 4.1.5
+ 4.1.6
../pom.xml
4.0.0
diff --git a/ham/plugin.replayer.server/src/main/java/org/kendar/replayer/engine/RecordingDataset.java b/ham/plugin.replayer.server/src/main/java/org/kendar/replayer/engine/RecordingDataset.java
index 4c8c233cf..950e74583 100644
--- a/ham/plugin.replayer.server/src/main/java/org/kendar/replayer/engine/RecordingDataset.java
+++ b/ham/plugin.replayer.server/src/main/java/org/kendar/replayer/engine/RecordingDataset.java
@@ -78,7 +78,7 @@ public void save() throws IOException {
private static Map staticRequests = new HashMap<>();
private static DbRecording recording;
- public void add(Request req, Response res) throws Exception {
+ public boolean add(Request req, Response res) throws Exception {
if(name==null){
sessionFactory.transactional((em)->{
recording = new DbRecording();
@@ -115,7 +115,7 @@ public void add(Request req, Response res) throws Exception {
}
if(engine==null){
- return;
+ return false;
}
if (res.isBinaryResponse()) {
@@ -170,9 +170,11 @@ public void add(Request req, Response res) throws Exception {
}
em.persist(callIndex);
});
+ return true;
} catch (Exception e) {
e.printStackTrace();
logger.error("Error recording request " + path, e);
+ return false;
}
}
}
diff --git a/ham/plugin.replayer.server/src/main/java/org/kendar/replayer/engine/ReplayerDataset.java b/ham/plugin.replayer.server/src/main/java/org/kendar/replayer/engine/ReplayerDataset.java
index ad3c1a73c..681b4e071 100644
--- a/ham/plugin.replayer.server/src/main/java/org/kendar/replayer/engine/ReplayerDataset.java
+++ b/ham/plugin.replayer.server/src/main/java/org/kendar/replayer/engine/ReplayerDataset.java
@@ -238,7 +238,7 @@ public Response findResponse(Request req) {
contentHash = md5Tester.calculateMd5(req.getRequestText());
}
for(var engine:replayerEngines){
- var mayBeMatch= engine.findRequestMatch(req,contentHash);
+ var mayBeMatch= engine.findRequestMatch(req,contentHash,params);
if(mayBeMatch!=null){
return mayBeMatch;
}
diff --git a/ham/plugin.replayer.server/src/main/java/org/kendar/replayer/engine/ReplayerStatus.java b/ham/plugin.replayer.server/src/main/java/org/kendar/replayer/engine/ReplayerStatus.java
index be2286ca6..742a52d7a 100644
--- a/ham/plugin.replayer.server/src/main/java/org/kendar/replayer/engine/ReplayerStatus.java
+++ b/ham/plugin.replayer.server/src/main/java/org/kendar/replayer/engine/ReplayerStatus.java
@@ -87,9 +87,9 @@ public void startRecording(Long id, String description, Map quer
dataset.load(id, description);
}
- public void addRequest(Request req, Response res) throws Exception {
- if (state.get() != ReplayerState.RECORDING) return;
- ((RecordingDataset)dataset).add(req, res);
+ public boolean addRequest(Request req, Response res) throws Exception {
+ if (state.get() != ReplayerState.RECORDING) return false;
+ return ((RecordingDataset)dataset).add(req, res);
}
private final JsonTypedSerializer serializer = new JsonTypedSerializer();
diff --git a/ham/plugin.replayer.server/src/main/java/org/kendar/replayer/filters/RecordFilter.java b/ham/plugin.replayer.server/src/main/java/org/kendar/replayer/filters/RecordFilter.java
index e9cf61c78..a8b7e4d3f 100644
--- a/ham/plugin.replayer.server/src/main/java/org/kendar/replayer/filters/RecordFilter.java
+++ b/ham/plugin.replayer.server/src/main/java/org/kendar/replayer/filters/RecordFilter.java
@@ -49,11 +49,13 @@ public boolean record(Request reqArrived, Response res){
if(!validAddress)return false;
if(replayerStatus.getStatus()!= ReplayerState.RECORDING)return false;
try {
- logger.info("Recording: "+
- req.getProtocol()+"://"+
- req.getHost()+
- req.getPath());
- replayerStatus.addRequest(req,res);
+
+ if(replayerStatus.addRequest(req,res)){
+ logger.info("Recording: "+
+ req.getProtocol()+"://"+
+ req.getHost()+
+ req.getPath());
+ }
} catch (Exception e) {
logger.error("Error recording data",e);
}
diff --git a/ham/plugin.replayer.server/src/main/java/org/kendar/replayer/filters/ReplayFilter.java b/ham/plugin.replayer.server/src/main/java/org/kendar/replayer/filters/ReplayFilter.java
index d272723a0..bdf1c4ce3 100644
--- a/ham/plugin.replayer.server/src/main/java/org/kendar/replayer/filters/ReplayFilter.java
+++ b/ham/plugin.replayer.server/src/main/java/org/kendar/replayer/filters/ReplayFilter.java
@@ -50,10 +50,14 @@ public boolean replay(Request req, Response res) {
validAddress = replayerEngines.get(i).isValidPath(req)||validAddress;
}
if(!validAddress) return false;
- logger.info("Replaying "+
+ var toReplay ="Replaying "+
req.getProtocol()+"://"+
req.getHost()+
- req.getPath());
- return replayerStatus.replay(req, res);
+ req.getPath();
+ var result = replayerStatus.replay(req, res);
+ if(result){
+ logger.info(toReplay);
+ }
+ return result;
}
}
diff --git a/ham/plugin.replayer.server/src/main/resources/web/plugins/recording/script.html b/ham/plugin.replayer.server/src/main/resources/web/plugins/recording/script.html
index 418a510c7..f9c42933f 100644
--- a/ham/plugin.replayer.server/src/main/resources/web/plugins/recording/script.html
+++ b/ham/plugin.replayer.server/src/main/resources/web/plugins/recording/script.html
@@ -57,7 +57,7 @@
:path="'/plugins/recording/vcomponents'"
:template="key"
:default="'none'"
- :value="extensionData"
+ :value="extensionsData"
@componentevent="onExtensionChange"/>
@@ -359,7 +359,7 @@
axios.get("/api/plugins/replayer/recording/" + getUrlParameter("id"))
.then(function (result){
th.data=result.data;
- th.extensionData=th.data.filter;
+ th.extensionsData=th.data.filter;
th.$refs.recordingList.reload(th.data.lines);
//if(th.data.linse.length>0){
th.updateButtons();
diff --git a/ham/plugin.socks5.server/pom.xml b/ham/plugin.socks5.server/pom.xml
index 97cccc245..5091f8593 100644
--- a/ham/plugin.socks5.server/pom.xml
+++ b/ham/plugin.socks5.server/pom.xml
@@ -5,7 +5,7 @@
HttpAnsweringMachine
org.kendar
- 4.1.5
+ 4.1.6
../pom.xml
4.0.0
diff --git a/ham/pom.xml b/ham/pom.xml
index 9acd1c013..ac3a0801f 100644
--- a/ham/pom.xml
+++ b/ham/pom.xml
@@ -6,7 +6,7 @@
org.kendar
HttpAnsweringMachine
- 4.1.5
+ 4.1.6
pom
@@ -51,7 +51,7 @@
11
11
- 4.1.5
+ 4.1.6
1.1.11-SNAPSHOT
2.4.0
4.5.13
diff --git a/ham/simpledns/pom.xml b/ham/simpledns/pom.xml
index 7abdb435f..509f71b1a 100644
--- a/ham/simpledns/pom.xml
+++ b/ham/simpledns/pom.xml
@@ -5,7 +5,7 @@
HttpAnsweringMachine
org.kendar
- 4.1.5
+ 4.1.6
../pom.xml
4.0.0
diff --git a/ham/test.run.bat b/ham/test.run.bat
deleted file mode 100644
index aa389b174..000000000
--- a/ham/test.run.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-@ECHO OFF
-
-REM Initialize
-set SCRIPT_DIR=%~dp0
-cd %SCRIPT_DIR%
-set HAM_VERSION=4.1.5
-
-REM Retrieve the jar name
-REM dir /b %SCRIPT_DIR%\target\*.jar > .temp.txt
-REM set /p JAR_NAME=<.temp.txt
-REM del /s /f /q .temp.txt 2>&1 1>NUL
-set AGENT_PATH=%SCRIPT_DIR%/api.test/org.jacoco.agent-0.8.8-runtime.jar
-set EXEC_PATH=%SCRIPT_DIR%/api.test/target/jacoco_run_starter.exec
-
-
-REM https://www.jacoco.org/jacoco/trunk/doc/cli.html
-
-REM Start the application
-start /b java "-Dloader.path=%SCRIPT_DIR%/libs" -Dloader.main=org.kendar.Main ^
- "-Djsonconfig=%SCRIPT_DIR%\test.external.json" -Dham.tempdb=data\tmp^
- "-javaagent:%AGENT_PATH%=destfile=%EXEC_PATH%,includes=org.kendar.**" ^
- -jar "%SCRIPT_DIR%/app/target/app-%HAM_VERSION%.jar" org.springframework.boot.loader.PropertiesLauncher
-
-ping 127.0.0.1 -n 15 > nul
-
-mvn test
\ No newline at end of file
diff --git a/ham/test.run.sh b/ham/test.run.sh
deleted file mode 100755
index 18b2c3cad..000000000
--- a/ham/test.run.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-
-# Initialize
-SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
-cd $SCRIPT_DIR
-
-HAM_VERSION=4.1.5
-# Retrieve the jar name
-
-AGENT_PATH=$SCRIPT_DIR/api.test/org.jacoco.agent-0.8.8-runtime.jar
-EXEC_PATH=$SCRIPT_DIR/api.test/target/jacoco_run_starter.exec
-OTHER_PATH=$SCRIPT_DIR/api.test/target/jacoco_starter.exec
-
-# https://www.jacoco.org/jacoco/trunk/doc/cli.html
-
-# Start the application
-java "-Dloader.path=$SCRIPT_DIR/libs" -Dloader.main=org.kendar.Main \
- "-Djsonconfig=$SCRIPT_DIR/test.external.json" -Dham.tempdb=data/tmp \
- "-javaagent:$AGENT_PATH=destfile=$EXEC_PATH,includes=org.kendar.**" \
- -jar "$SCRIPT_DIR/app/target/app-$HAM_VERSION.jar" org.springframework.boot.loader.PropertiesLauncher &
-
-sleep 15
-
-mvn test
-
-#cd $SCRIPT_DIR/api.test/
-#https://groups.google.com/g/jacoco/c/vLiZkw8kq9c
-#java -jar jacococli.jar report $EXEC_PATH $OTHER_PATH \
-# --classfiles $SCRIPT_DIR/app/target --classfiles $SCRIPT_DIR/libs
-#--classfiles [--csv ] [--encoding ] [--help] [--html ] [--name ] [--quiet] [--sourcefiles ] [--tabwith ] [--xml ]
diff --git a/samples/calendar/be/pom.xml b/samples/calendar/be/pom.xml
index 42241b889..02f4a8eaf 100644
--- a/samples/calendar/be/pom.xml
+++ b/samples/calendar/be/pom.xml
@@ -5,7 +5,7 @@
ExampleApp
org.example
- 4.1.5
+ 4.1.6
4.0.0
diff --git a/samples/calendar/docker/multi/multimaster.Dockerfile b/samples/calendar/docker/multi/multimaster.Dockerfile
index c921cc0a9..828852c8a 100644
--- a/samples/calendar/docker/multi/multimaster.Dockerfile
+++ b/samples/calendar/docker/multi/multimaster.Dockerfile
@@ -1,5 +1,5 @@
FROM ham.master:latest
-RUN echo samples.calendar.multimaster version-4.1.5
+RUN echo samples.calendar.multimaster version-4.1.6
COPY ./docker/multi/calendar.multi.external.json /etc/app/ham/app/external.json
diff --git a/samples/calendar/docker/single/Dockerfile b/samples/calendar/docker/single/Dockerfile
index 79d6bebaf..444faee95 100644
--- a/samples/calendar/docker/single/Dockerfile
+++ b/samples/calendar/docker/single/Dockerfile
@@ -1,7 +1,7 @@
FROM ham.master:latest
-RUN echo ham.sample.calendar.single version-4.1.5
+RUN echo ham.sample.calendar.single version-4.1.6
COPY ./docker/single/calendar.single.external.json /etc/app/ham/app/external.json
diff --git a/samples/calendar/fe/pom.xml b/samples/calendar/fe/pom.xml
index 2940ac1ac..5e3dbddf3 100644
--- a/samples/calendar/fe/pom.xml
+++ b/samples/calendar/fe/pom.xml
@@ -5,7 +5,7 @@
ExampleApp
org.example
- 4.1.5
+ 4.1.6
4.0.0
diff --git a/samples/calendar/gateway/pom.xml b/samples/calendar/gateway/pom.xml
index c26ee7e6e..7dc9cafde 100644
--- a/samples/calendar/gateway/pom.xml
+++ b/samples/calendar/gateway/pom.xml
@@ -5,7 +5,7 @@
ExampleApp
org.example
- 4.1.5
+ 4.1.6
4.0.0
diff --git a/samples/calendar/pom.xml b/samples/calendar/pom.xml
index fd0a789f6..8cac11644 100644
--- a/samples/calendar/pom.xml
+++ b/samples/calendar/pom.xml
@@ -13,7 +13,7 @@
org.example
ExampleApp
- 4.1.5
+ 4.1.6
gateway
fe
diff --git a/samples/quotes/docker/multi/core.Dockerfile b/samples/quotes/docker/multi/core.Dockerfile
index ff58a4554..d61878413 100644
--- a/samples/quotes/docker/multi/core.Dockerfile
+++ b/samples/quotes/docker/multi/core.Dockerfile
@@ -1,5 +1,5 @@
FROM ham.apache.php8:latest
-RUN echo samples.core version-4.1.5
+RUN echo samples.core version-4.1.6
# Copy the source files
COPY core/ /htdocs/
\ No newline at end of file
diff --git a/samples/quotes/pom.xml b/samples/quotes/pom.xml
index 0699ef946..5c5bcca2f 100644
--- a/samples/quotes/pom.xml
+++ b/samples/quotes/pom.xml
@@ -6,7 +6,7 @@
org.example
financialapp
- 4.1.5
+ 4.1.6
core
diff --git a/scripts/globaltest/test.jacoco.bat b/scripts/globaltest/test.jacoco.bat
index e04a69cb3..4c4cecb21 100644
--- a/scripts/globaltest/test.jacoco.bat
+++ b/scripts/globaltest/test.jacoco.bat
@@ -1,6 +1,6 @@
@ECHO OFF
-set HAM_VERSION=4.1.5
+set HAM_VERSION=4.1.6
REM Initialize
set START_DIR=%~dp0
cd %START_DIR%
diff --git a/scripts/globaltest/test.jacoco.sh b/scripts/globaltest/test.jacoco.sh
index 3c0c58910..b9e2a2e83 100755
--- a/scripts/globaltest/test.jacoco.sh
+++ b/scripts/globaltest/test.jacoco.sh
@@ -9,7 +9,7 @@ cd ham
SCRIPT_DIR=$(pwd)
-HAM_VERSION=4.1.5
+HAM_VERSION=4.1.6
# Retrieve the jar name
cd jacoco
mvn test
\ No newline at end of file
diff --git a/scripts/globaltest/test.run.bat b/scripts/globaltest/test.run.bat
index e0f213e6d..867b540d0 100644
--- a/scripts/globaltest/test.run.bat
+++ b/scripts/globaltest/test.run.bat
@@ -1,6 +1,6 @@
@ECHO OFF
-set HAM_VERSION=4.1.5
+set HAM_VERSION=4.1.6
REM Initialize
set START_DIR=%~dp0
cd %START_DIR%
diff --git a/scripts/globaltest/test.run.sh b/scripts/globaltest/test.run.sh
index 2b637576f..88cbd636e 100755
--- a/scripts/globaltest/test.run.sh
+++ b/scripts/globaltest/test.run.sh
@@ -9,7 +9,7 @@ cd ham
SCRIPT_DIR=$(pwd)
-HAM_VERSION=4.1.5
+HAM_VERSION=4.1.6
# Retrieve the jar name
AGENT_PATH=$SCRIPT_DIR/api.test/org.jacoco.agent-0.8.8-runtime.jar
diff --git a/scripts/templates/releasebuild/samples/calendar/scripts/be.bat b/scripts/templates/releasebuild/samples/calendar/scripts/be.bat
index ba4529312..00396ce8f 100644
--- a/scripts/templates/releasebuild/samples/calendar/scripts/be.bat
+++ b/scripts/templates/releasebuild/samples/calendar/scripts/be.bat
@@ -1,5 +1,5 @@
@echo off
-set HAM_VERSION=4.1.5
+set HAM_VERSION=4.1.6
set JANUS_DRIVER_VERSION=1.1.11-SNAPSHOT
set START_LOCATION=%cd%
set SCRIPT_DIR=%~dp0
diff --git a/scripts/templates/releasebuild/samples/calendar/scripts/be.sh b/scripts/templates/releasebuild/samples/calendar/scripts/be.sh
index 11e39a299..5c83d2bd5 100755
--- a/scripts/templates/releasebuild/samples/calendar/scripts/be.sh
+++ b/scripts/templates/releasebuild/samples/calendar/scripts/be.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-HAM_VERSION=4.1.5
+HAM_VERSION=4.1.6
JANUS_DRIVER_VERSION=1.1.11-SNAPSHOT
START_LOCATION=$(pwd)
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
diff --git a/scripts/templates/releasebuild/samples/calendar/scripts/bedb.bat b/scripts/templates/releasebuild/samples/calendar/scripts/bedb.bat
index 2982aa596..c2a698ced 100644
--- a/scripts/templates/releasebuild/samples/calendar/scripts/bedb.bat
+++ b/scripts/templates/releasebuild/samples/calendar/scripts/bedb.bat
@@ -1,5 +1,5 @@
@echo off
-set HAM_VERSION=4.1.5
+set HAM_VERSION=4.1.6
set JANUS_DRIVER_VERSION=1.1.11-SNAPSHOT
set START_LOCATION=%cd%
set SCRIPT_DIR=%~dp0
diff --git a/scripts/templates/releasebuild/samples/calendar/scripts/bedb.sh b/scripts/templates/releasebuild/samples/calendar/scripts/bedb.sh
index d84957e6c..9fa5ebc53 100755
--- a/scripts/templates/releasebuild/samples/calendar/scripts/bedb.sh
+++ b/scripts/templates/releasebuild/samples/calendar/scripts/bedb.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-HAM_VERSION=4.1.5
+HAM_VERSION=4.1.6
JANUS_DRIVER_VERSION=1.1.11-SNAPSHOT
START_LOCATION=$(pwd)
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
diff --git a/scripts/templates/releasebuild/samples/calendar/scripts/bedbham.bat b/scripts/templates/releasebuild/samples/calendar/scripts/bedbham.bat
index 8b96186f6..c4ef30e06 100644
--- a/scripts/templates/releasebuild/samples/calendar/scripts/bedbham.bat
+++ b/scripts/templates/releasebuild/samples/calendar/scripts/bedbham.bat
@@ -1,6 +1,6 @@
@echo off
-set HAM_VERSION=4.1.5
+set HAM_VERSION=4.1.6
set JANUS_DRIVER_VERSION=1.1.11-SNAPSHOT
set START_LOCATION=%cd%
set SCRIPT_DIR=%~dp0
diff --git a/scripts/templates/releasebuild/samples/calendar/scripts/bedbham.sh b/scripts/templates/releasebuild/samples/calendar/scripts/bedbham.sh
index 04347339d..826a0f1ef 100755
--- a/scripts/templates/releasebuild/samples/calendar/scripts/bedbham.sh
+++ b/scripts/templates/releasebuild/samples/calendar/scripts/bedbham.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-HAM_VERSION=4.1.5
+HAM_VERSION=4.1.6
JANUS_DRIVER_VERSION=1.1.11-SNAPSHOT
START_LOCATION=$(pwd)
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
diff --git a/scripts/templates/releasebuild/samples/calendar/scripts/benogen.bat b/scripts/templates/releasebuild/samples/calendar/scripts/benogen.bat
index ba63b6369..2becc4937 100644
--- a/scripts/templates/releasebuild/samples/calendar/scripts/benogen.bat
+++ b/scripts/templates/releasebuild/samples/calendar/scripts/benogen.bat
@@ -1,5 +1,5 @@
@echo off
-set HAM_VERSION=4.1.5
+set HAM_VERSION=4.1.6
set JANUS_DRIVER_VERSION=1.1.11-SNAPSHOT
set START_LOCATION=%cd%
set SCRIPT_DIR=%~dp0
diff --git a/scripts/templates/releasebuild/samples/calendar/scripts/benogen.sh b/scripts/templates/releasebuild/samples/calendar/scripts/benogen.sh
index 2474fe29b..a537084d8 100755
--- a/scripts/templates/releasebuild/samples/calendar/scripts/benogen.sh
+++ b/scripts/templates/releasebuild/samples/calendar/scripts/benogen.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-HAM_VERSION=4.1.5
+HAM_VERSION=4.1.6
JANUS_DRIVER_VERSION=1.1.11-SNAPSHOT
START_LOCATION=$(pwd)
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
diff --git a/scripts/templates/releasebuild/samples/calendar/scripts/fe.bat b/scripts/templates/releasebuild/samples/calendar/scripts/fe.bat
index e38279fee..af51d1bbe 100644
--- a/scripts/templates/releasebuild/samples/calendar/scripts/fe.bat
+++ b/scripts/templates/releasebuild/samples/calendar/scripts/fe.bat
@@ -1,5 +1,5 @@
@echo off
-set HAM_VERSION=4.1.5
+set HAM_VERSION=4.1.6
set START_LOCATION=%cd%
set SCRIPT_DIR=%~dp0
cd %SCRIPT_DIR%
diff --git a/scripts/templates/releasebuild/samples/calendar/scripts/fe.sh b/scripts/templates/releasebuild/samples/calendar/scripts/fe.sh
index e01772a6c..eafc5f436 100755
--- a/scripts/templates/releasebuild/samples/calendar/scripts/fe.sh
+++ b/scripts/templates/releasebuild/samples/calendar/scripts/fe.sh
@@ -1,7 +1,7 @@
#!/bin/bash
-HAM_VERSION=4.1.5
+HAM_VERSION=4.1.6
START_LOCATION=$(pwd)
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
cd $SCRIPT_DIR
diff --git a/scripts/templates/releasebuild/samples/calendar/scripts/gateway.bat b/scripts/templates/releasebuild/samples/calendar/scripts/gateway.bat
index 86ed096a7..b555dc719 100644
--- a/scripts/templates/releasebuild/samples/calendar/scripts/gateway.bat
+++ b/scripts/templates/releasebuild/samples/calendar/scripts/gateway.bat
@@ -1,5 +1,5 @@
@echo off
-set HAM_VERSION=4.1.5
+set HAM_VERSION=4.1.6
set START_LOCATION=%cd%
set SCRIPT_DIR=%~dp0
cd %SCRIPT_DIR%
diff --git a/scripts/templates/releasebuild/samples/calendar/scripts/gateway.sh b/scripts/templates/releasebuild/samples/calendar/scripts/gateway.sh
index 1a4b5c88a..569f53033 100755
--- a/scripts/templates/releasebuild/samples/calendar/scripts/gateway.sh
+++ b/scripts/templates/releasebuild/samples/calendar/scripts/gateway.sh
@@ -1,7 +1,7 @@
#!/bin/bash
-HAM_VERSION=4.1.5
+HAM_VERSION=4.1.6
START_LOCATION=$(pwd)
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
cd $SCRIPT_DIR
diff --git a/scripts/templates/releasebuild/samples/calendar/scripts/ham.bat b/scripts/templates/releasebuild/samples/calendar/scripts/ham.bat
index 9c2f13674..0b2ac4558 100644
--- a/scripts/templates/releasebuild/samples/calendar/scripts/ham.bat
+++ b/scripts/templates/releasebuild/samples/calendar/scripts/ham.bat
@@ -1,5 +1,5 @@
@echo off
-set HAM_VERSION=4.1.5
+set HAM_VERSION=4.1.6
set START_LOCATION=%cd%
set SCRIPT_DIR=%~dp0
cd %SCRIPT_DIR%
diff --git a/scripts/templates/releasebuild/samples/calendar/scripts/ham.sh b/scripts/templates/releasebuild/samples/calendar/scripts/ham.sh
index c0a663226..1b6c44d26 100755
--- a/scripts/templates/releasebuild/samples/calendar/scripts/ham.sh
+++ b/scripts/templates/releasebuild/samples/calendar/scripts/ham.sh
@@ -1,7 +1,7 @@
#!/bin/bash
-HAM_VERSION=4.1.5
+HAM_VERSION=4.1.6
START_LOCATION=$(pwd)
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
cd $SCRIPT_DIR
diff --git a/scripts/version.txt b/scripts/version.txt
index b673f6ac1..00abb799c 100644
--- a/scripts/version.txt
+++ b/scripts/version.txt
@@ -1 +1 @@
-4.1.5
\ No newline at end of file
+4.1.6
\ No newline at end of file