graaljs 적용
This commit is contained in:
+5
-4
@@ -1,5 +1,5 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id 'org.springframework.boot' version '2.7.16'
|
id 'org.springframework.boot' version '2.7.17'
|
||||||
id 'io.spring.dependency-management' version '1.1.3'
|
id 'io.spring.dependency-management' version '1.1.3'
|
||||||
id 'java'
|
id 'java'
|
||||||
// id "org.sonarqube" version "4.2.1.3168"
|
// id "org.sonarqube" version "4.2.1.3168"
|
||||||
@@ -49,9 +49,10 @@ dependencies {
|
|||||||
// implementation 'io.springfox:springfox-boot-starter:3.0.0'
|
// implementation 'io.springfox:springfox-boot-starter:3.0.0'
|
||||||
implementation 'org.apache.httpcomponents:httpclient:4.5.14'
|
implementation 'org.apache.httpcomponents:httpclient:4.5.14'
|
||||||
|
|
||||||
// implementation group: 'org.graalvm.js', name: 'js-scriptengine', version: '23.1.2'
|
|
||||||
// implementation group: 'org.graalvm.polyglot', name: 'polyglot', version: '23.1.2'
|
implementation("org.graalvm.polyglot:polyglot:24.1.0")
|
||||||
// runtimeOnly group: 'org.graalvm.polyglot', name: 'js-community', version: '23.1.2', ext: 'pom'
|
implementation("org.graalvm.polyglot:js:24.1.0")
|
||||||
|
|
||||||
|
|
||||||
implementation 'org.apache.commons:commons-lang3:3.12.0'
|
implementation 'org.apache.commons:commons-lang3:3.12.0'
|
||||||
implementation 'org.apache.commons:commons-math3:3.6.1'
|
implementation 'org.apache.commons:commons-math3:3.6.1'
|
||||||
|
|||||||
@@ -17,10 +17,10 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import javax.script.ScriptEngine;
|
|
||||||
import javax.script.ScriptEngineManager;
|
|
||||||
import javax.script.ScriptException;
|
|
||||||
import org.apache.commons.lang3.SerializationUtils;
|
import org.apache.commons.lang3.SerializationUtils;
|
||||||
|
import org.graalvm.polyglot.Context;
|
||||||
|
import org.graalvm.polyglot.HostAccess;
|
||||||
|
import org.graalvm.polyglot.Value;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@@ -193,35 +193,44 @@ public class VirtualUser implements Runnable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void executePreRequestScript(ApiRequestDTO apiRequest) {
|
public void executePreRequestScript(ApiRequestDTO apiRequest) {
|
||||||
ScriptEngineManager manager = new ScriptEngineManager();
|
try (Context context = Context.newBuilder("js")
|
||||||
ScriptEngine engine = manager.getEngineByName("nashorn");
|
.allowHostAccess(HostAccess.ALL)
|
||||||
engine.put("console", new Console());
|
.allowHostClassLookup(className -> true)
|
||||||
engine.put("globals", globals);
|
.build()) {
|
||||||
engine.put("variables", variables);
|
|
||||||
engine.put("request", apiRequest);
|
Value bindings = context.getBindings("js");
|
||||||
try {
|
bindings.putMember("console", new Console());
|
||||||
if(apiRequest.getPreRequestScript() != null)
|
bindings.putMember("globals", globals);
|
||||||
engine.eval(apiRequest.getPreRequestScript());
|
bindings.putMember("variables", variables);
|
||||||
} catch (ScriptException e) {
|
bindings.putMember("request", apiRequest);
|
||||||
logger.error("Error executing pre-request script", e);
|
|
||||||
|
if(apiRequest.getPreRequestScript() != null) {
|
||||||
|
context.eval("js", apiRequest.getPreRequestScript());
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("Error executing post-request script", e);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void executePostRequestScript(ApiRequestDTO apiRequest, ApiResponse response) {
|
public void executePostRequestScript(ApiRequestDTO apiRequest, ApiResponse response) {
|
||||||
ScriptEngineManager manager = new ScriptEngineManager();
|
try (Context context = Context.newBuilder("js")
|
||||||
ScriptEngine engine = manager.getEngineByName("nashorn");
|
.allowHostAccess(HostAccess.ALL)
|
||||||
engine.put("console", new Console());
|
.allowHostClassLookup(className -> true)
|
||||||
engine.put("globals", globals);
|
.build()) {
|
||||||
engine.put("variables", variables);
|
|
||||||
engine.put("request", apiRequest);
|
Value bindings = context.getBindings("js");
|
||||||
engine.put("response", response);
|
bindings.putMember("console", new Console());
|
||||||
try {
|
bindings.putMember("globals", globals);
|
||||||
|
bindings.putMember("variables", variables);
|
||||||
|
bindings.putMember("request", apiRequest);
|
||||||
|
bindings.putMember("response", response);
|
||||||
|
|
||||||
if (apiRequest.getPostRequestScript() != null) {
|
if (apiRequest.getPostRequestScript() != null) {
|
||||||
engine.eval(apiRequest.getPostRequestScript());
|
context.eval("js", apiRequest.getPostRequestScript());
|
||||||
}
|
}
|
||||||
} catch (ScriptException e) {
|
} catch (Exception e) {
|
||||||
logger.error("Error executing post-request script", e);
|
logger.error("Error executing post-request script", e);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user