@ -125,7 +126,7 @@ class NashornJsInvokeServiceTest extends AbstractControllerTest {
@Test
voidgivenTooBigScriptForEval_thenReturnError(){
StringhugeScript="var a = 'qwertyqwertywertyqwabababer'; return {a: a};";
StringhugeScript="var a = '"+"a".repeat(10000)+"'; return {a: a};";
assertThatThrownBy(()->{
evalScript(hugeScript);
@ -159,6 +160,46 @@ class NashornJsInvokeServiceTest extends AbstractControllerTest {
assertThatScriptIsBlocked(scriptId);
}
@Test
voidgivenComplexScript_testCompile(){
Stringscript="""
function(data){
if(data.get("propertyA")=="a special value 1"||data.get("propertyA")=="a special value 2"){
return"a special value 1";
}elseif(data.get("propertyB")=="a special value 3"&&(data.get("propertyC")=="a special value 1"||data.get("propertyJ")=="a special value 1"||data.get("propertyV")=="a special value 1")){
return"a special value 1";
}elseif(data.get("propertyB")=="4"&&(data.get("propertyD")=="a special value 1"||data.get("propertyV")=="a special value 1"||data.get("propertyW")=="a special value 1")){
return"a special value 1";
}elseif(data.get("propertyB")=="a special value 2"&&(data.get("propertyE")=="a special value 1"||data.get("propertyF")=="a special value 1"||data.get("propertyL")=="a special value 1")){
return"a special value 1";
}elseif(data.get("propertyB")=="a special value 3"&&(data.get("propertyE")=="a special value 1"||data.get("propertyF")=="a special value 1"||data.get("propertyL")=="a special value 1")){
return"a special value 1";
}elseif(data.get("propertyB")=="a special value 3"&&(data.get("propertyM")=="a special value 1"||data.get("propertyY")=="a special value 1"||data.get("propertyH")=="a special value 1")){
return"a special value 1";
}elseif(data.get("propertyB")=="a special value 3"&&(data.get("propertyM")=="a special value 1"||data.get("propertyY")=="a special value 1"||data.get("propertyH")=="a special value 1")){
return"a special value 1";
}elseif(data.get("propertyB")=="a special value 3"&&(data.get("propertyM")=="a special value 1"||data.get("propertyY")=="a special value 1"||data.get("propertyH")=="a special value 1")){
return"a special value 1";
}elseif(data.get("propertyB")=="a special value 3"&&(data.get("propertyM")=="a special value 1"||data.get("propertyY")=="a special value 1"||data.get("propertyH")=="a special value 1")){
return"a special value 1";
}elseif(data.get("propertyB")=="a special value 3"&&(data.get("propertyM")=="a special value 1"||data.get("propertyY")=="a special value 1"||data.get("propertyH")=="a special value 1")){
return"a special value 1";
}elseif(data.get("propertyB")=="a special value 3"&&(data.get("propertyM")=="a special value 1"||data.get("propertyY")=="a special value 1"||data.get("propertyH")=="a special value 1")){
return"a special value 1";
}elseif(data.get("propertyB")=="a special value 3"&&(data.get("propertyM")=="a special value 1"||data.get("propertyY")=="a special value 1"||data.get("propertyH")=="a special value 1")){
return"a special value 1";
}else{
return"0"
};
}
""";
// with delight-nashorn-sandbox 0.4.2, this would throw delight.nashornsandbox.exceptions.ScriptCPUAbuseException: Regular expression running for too many iterations. The operation could NOT be gracefully interrupted.
<!-- IMPORTANT: If you change the version of the kafka client, make sure to synchronize our overwritten implementation of the
org.apache.kafka.common.network.NetworkReceive class in the application module. It addresses the issue https://issues.apache.org/jira/browse/KAFKA-4090.