From 0adee32668a9b0ffbf6ba8df71ea383e2becb234 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Mon, 3 Jul 2023 23:16:13 +0200 Subject: [PATCH 1/3] embedded controller --- jdk_8_maven/em/embedded/grpc/ncs/pom.xml | 24 ++++ .../grpcncs/EmbeddedEvoMasterController.java | 129 +++++++++++++++++ jdk_8_maven/em/embedded/grpc/pom.xml | 19 +++ jdk_8_maven/em/embedded/grpc/scs/pom.xml | 24 ++++ .../grpcscs/EmbeddedEvoMasterController.java | 130 ++++++++++++++++++ jdk_8_maven/em/embedded/pom.xml | 3 +- 6 files changed, 328 insertions(+), 1 deletion(-) create mode 100644 jdk_8_maven/em/embedded/grpc/ncs/pom.xml create mode 100644 jdk_8_maven/em/embedded/grpc/ncs/src/main/java/em/embedded/org/grpcncs/EmbeddedEvoMasterController.java create mode 100644 jdk_8_maven/em/embedded/grpc/pom.xml create mode 100644 jdk_8_maven/em/embedded/grpc/scs/pom.xml create mode 100644 jdk_8_maven/em/embedded/grpc/scs/src/main/java/em/embedded/org/grpcscs/EmbeddedEvoMasterController.java diff --git a/jdk_8_maven/em/embedded/grpc/ncs/pom.xml b/jdk_8_maven/em/embedded/grpc/ncs/pom.xml new file mode 100644 index 000000000..7faaebfe1 --- /dev/null +++ b/jdk_8_maven/em/embedded/grpc/ncs/pom.xml @@ -0,0 +1,24 @@ + + + 4.0.0 + + org.evomaster + evomaster-benchmark-em-embedded-grpc + 1.6.2-SNAPSHOT + + + evomaster-benchmark-em-embedded-grpc-ncs + jar + + + + + org.evomaster + evomaster-benchmark-cs-rpc-grpc-artificial-ncs + ${project.version} + + + + diff --git a/jdk_8_maven/em/embedded/grpc/ncs/src/main/java/em/embedded/org/grpcncs/EmbeddedEvoMasterController.java b/jdk_8_maven/em/embedded/grpc/ncs/src/main/java/em/embedded/org/grpcncs/EmbeddedEvoMasterController.java new file mode 100644 index 000000000..d081e8576 --- /dev/null +++ b/jdk_8_maven/em/embedded/grpc/ncs/src/main/java/em/embedded/org/grpcncs/EmbeddedEvoMasterController.java @@ -0,0 +1,129 @@ +package em.embedded.org.grpcncs; + +import io.grpc.*; +import org.evomaster.client.java.controller.EmbeddedSutController; +import org.evomaster.client.java.controller.InstrumentedSutStarter; +import org.evomaster.client.java.controller.api.dto.AuthenticationDto; +import org.evomaster.client.java.controller.api.dto.SutInfoDto; +import org.evomaster.client.java.controller.api.dto.problem.rpc.RPCType; +import org.evomaster.client.java.controller.internal.db.DbSpecification; +import org.evomaster.client.java.controller.problem.ProblemInfo; +import org.evomaster.client.java.controller.problem.RPCProblem; +import org.grpc.ncs.NcsServiceImplBaseImpl; +import org.grpc.ncs.generated.NcsServiceGrpc; + +import java.io.IOException; +import java.util.List; +import java.util.concurrent.TimeUnit; + +public class EmbeddedEvoMasterController extends EmbeddedSutController { + + public static void main(String[] args) { + + int port = 40100; + if (args.length > 0) { + port = Integer.parseInt(args[0]); + } + + EmbeddedEvoMasterController controller = new EmbeddedEvoMasterController(port); + InstrumentedSutStarter starter = new InstrumentedSutStarter(controller); + + starter.start(); + } + + public EmbeddedEvoMasterController() { + this(40100); + } + + public EmbeddedEvoMasterController(int port) { + registeredService = new NcsServiceImplBaseImpl(); + setControllerPort(port); + } + + + + protected ManagedChannel channel; + private Server server; + + private NcsServiceGrpc.NcsServiceBlockingStub stub; + + private final BindableService registeredService; + + @Override + public boolean isSutRunning() { + return server != null && !server.isShutdown() && !server.isTerminated(); + } + + @Override + public String getPackagePrefixesToCover() { + return "org.grpc.ncs."; + } + + @Override + public List getInfoForAuthentication() { + return null; + } + + @Override + public ProblemInfo getProblemInfo() { + return new RPCProblem(NcsServiceGrpc.NcsServiceBlockingStub.class, stub, RPCType.gRPC); + } + + @Override + public SutInfoDto.OutputFormat getPreferredOutputFormat() { + return SutInfoDto.OutputFormat.JAVA_JUNIT_4; + } + + @Override + public String startSut() { + + try { + server = ServerBuilder.forPort(0).addService(registeredService).build(); + server.start(); + + startClient(); + return "http://localhost:"+server.getPort(); + + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + private String startClient() { + channel = ManagedChannelBuilder.forAddress("localhost", getSutPort()).usePlaintext().build(); + stub = NcsServiceGrpc.newBlockingStub(channel); + + + return "started:"+!(channel.isShutdown() || channel.isTerminated()); + } + + protected int getSutPort() { + return server.getPort(); + } + + @Override + public void stopSut() { + + try { + if (channel != null) + channel.shutdown().awaitTermination(2, TimeUnit.SECONDS); + if (server != null) + server.shutdown().awaitTermination(2, TimeUnit.SECONDS); + + server = null; + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + } + + @Override + public void resetStateOfSUT() { + + } + + @Override + public List getDbSpecifications() { + return null; + } +} diff --git a/jdk_8_maven/em/embedded/grpc/pom.xml b/jdk_8_maven/em/embedded/grpc/pom.xml new file mode 100644 index 000000000..bb6124b5b --- /dev/null +++ b/jdk_8_maven/em/embedded/grpc/pom.xml @@ -0,0 +1,19 @@ + + + 4.0.0 + + org.evomaster + evomaster-benchmark-em-embedded + 1.6.2-SNAPSHOT + + + evomaster-benchmark-em-embedded-grpc + pom + + ncs + scs + + + diff --git a/jdk_8_maven/em/embedded/grpc/scs/pom.xml b/jdk_8_maven/em/embedded/grpc/scs/pom.xml new file mode 100644 index 000000000..8f9ec78ad --- /dev/null +++ b/jdk_8_maven/em/embedded/grpc/scs/pom.xml @@ -0,0 +1,24 @@ + + + 4.0.0 + + org.evomaster + evomaster-benchmark-em-embedded-grpc + 1.6.2-SNAPSHOT + + + evomaster-benchmark-em-embedded-grpc-scs + jar + + + + + org.evomaster + evomaster-benchmark-cs-rpc-grpc-artificial-scs + ${project.version} + + + + diff --git a/jdk_8_maven/em/embedded/grpc/scs/src/main/java/em/embedded/org/grpcscs/EmbeddedEvoMasterController.java b/jdk_8_maven/em/embedded/grpc/scs/src/main/java/em/embedded/org/grpcscs/EmbeddedEvoMasterController.java new file mode 100644 index 000000000..45d2ef719 --- /dev/null +++ b/jdk_8_maven/em/embedded/grpc/scs/src/main/java/em/embedded/org/grpcscs/EmbeddedEvoMasterController.java @@ -0,0 +1,130 @@ +package em.embedded.org.grpcscs; + +import io.grpc.*; +import org.evomaster.client.java.controller.EmbeddedSutController; +import org.evomaster.client.java.controller.InstrumentedSutStarter; +import org.evomaster.client.java.controller.api.dto.AuthenticationDto; +import org.evomaster.client.java.controller.api.dto.SutInfoDto; +import org.evomaster.client.java.controller.api.dto.problem.rpc.RPCType; +import org.evomaster.client.java.controller.internal.db.DbSpecification; +import org.evomaster.client.java.controller.problem.ProblemInfo; +import org.evomaster.client.java.controller.problem.RPCProblem; +import org.grpc.scs.ScsServiceImplBaseImpl; +import org.grpc.scs.generated.ScsServiceGrpc; + + +import java.io.IOException; +import java.util.List; +import java.util.concurrent.TimeUnit; + +public class EmbeddedEvoMasterController extends EmbeddedSutController { + + public static void main(String[] args) { + + int port = 40100; + if (args.length > 0) { + port = Integer.parseInt(args[0]); + } + + EmbeddedEvoMasterController controller = new EmbeddedEvoMasterController(port); + InstrumentedSutStarter starter = new InstrumentedSutStarter(controller); + + starter.start(); + } + + public EmbeddedEvoMasterController() { + this(40100); + } + + public EmbeddedEvoMasterController(int port) { + registeredService = new ScsServiceImplBaseImpl(); + setControllerPort(port); + } + + + + protected ManagedChannel channel; + private Server server; + + private ScsServiceGrpc.ScsServiceBlockingStub stub; + + private final BindableService registeredService; + + @Override + public boolean isSutRunning() { + return server != null && !server.isShutdown() && !server.isTerminated(); + } + + @Override + public String getPackagePrefixesToCover() { + return "org.grpc.scs."; + } + + @Override + public List getInfoForAuthentication() { + return null; + } + + @Override + public ProblemInfo getProblemInfo() { + return new RPCProblem(ScsServiceGrpc.ScsServiceBlockingStub.class, stub, RPCType.gRPC); + } + + @Override + public SutInfoDto.OutputFormat getPreferredOutputFormat() { + return SutInfoDto.OutputFormat.JAVA_JUNIT_4; + } + + @Override + public String startSut() { + + try { + server = ServerBuilder.forPort(0).addService(registeredService).build(); + server.start(); + + startClient(); + return "http://localhost:"+server.getPort(); + + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + private String startClient() { + channel = ManagedChannelBuilder.forAddress("localhost", getSutPort()).usePlaintext().build(); + stub = ScsServiceGrpc.newBlockingStub(channel); + + + return "started:"+!(channel.isShutdown() || channel.isTerminated()); + } + + protected int getSutPort() { + return server.getPort(); + } + + @Override + public void stopSut() { + + try { + if (channel != null) + channel.shutdown().awaitTermination(2, TimeUnit.SECONDS); + if (server != null) + server.shutdown().awaitTermination(2, TimeUnit.SECONDS); + + server = null; + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + } + + @Override + public void resetStateOfSUT() { + + } + + @Override + public List getDbSpecifications() { + return null; + } +} diff --git a/jdk_8_maven/em/embedded/pom.xml b/jdk_8_maven/em/embedded/pom.xml index 88a76e400..fd5746d4c 100644 --- a/jdk_8_maven/em/embedded/pom.xml +++ b/jdk_8_maven/em/embedded/pom.xml @@ -15,6 +15,7 @@ rest graphql thrift + grpc - \ No newline at end of file + From b3785298915624d3b4f3ab839fac08cfa1452643 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Mon, 3 Jul 2023 23:53:11 +0200 Subject: [PATCH 2/3] update grpc cs --- .../cs/rpc/grpc/artificial/grpc-ncs/pom.xml | 19 ++++++++++++++++++- .../src/main/java/org/grpc/ncs/NcsServer.java | 18 ++++++++++-------- .../cs/rpc/grpc/artificial/grpc-scs/pom.xml | 19 ++++++++++++++++++- .../src/main/java/org/grpc/scs/ScsServer.java | 19 +++++++++++-------- 4 files changed, 57 insertions(+), 18 deletions(-) diff --git a/jdk_8_maven/cs/rpc/grpc/artificial/grpc-ncs/pom.xml b/jdk_8_maven/cs/rpc/grpc/artificial/grpc-ncs/pom.xml index a8549b4a5..44099b7b7 100644 --- a/jdk_8_maven/cs/rpc/grpc/artificial/grpc-ncs/pom.xml +++ b/jdk_8_maven/cs/rpc/grpc/artificial/grpc-ncs/pom.xml @@ -67,7 +67,24 @@ + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + rpc-grpc-ncs + sut + + + + + - \ No newline at end of file + diff --git a/jdk_8_maven/cs/rpc/grpc/artificial/grpc-ncs/src/main/java/org/grpc/ncs/NcsServer.java b/jdk_8_maven/cs/rpc/grpc/artificial/grpc-ncs/src/main/java/org/grpc/ncs/NcsServer.java index 660d42b45..4d89f065b 100644 --- a/jdk_8_maven/cs/rpc/grpc/artificial/grpc-ncs/src/main/java/org/grpc/ncs/NcsServer.java +++ b/jdk_8_maven/cs/rpc/grpc/artificial/grpc-ncs/src/main/java/org/grpc/ncs/NcsServer.java @@ -15,12 +15,6 @@ */ public class NcsServer { -// public static void main(String[] args) throws IOException, InterruptedException { -// Server server = ServerBuilder.forPort(8080).addService(new NcsServiceImplBaseImpl()).build(); -// server.start(); -// server.awaitTermination(); -// } - private static final Logger logger = Logger.getLogger(NcsServer.class.getName()); private final int port; @@ -38,7 +32,7 @@ public NcsServer(ServerBuilder serverBuilder, int port) { public void start() throws IOException { server.start(); - logger.info("Server started, listening on " + port); + logger.info("NcsServer started, listening on " + port); Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { @@ -66,7 +60,15 @@ void blockUntilShutdown() throws InterruptedException { } public static void main(String[] args) throws Exception { - NcsServer server = new NcsServer(8980); + int sutPort = 8980; + if (args.length == 1){ + try{ + sutPort = Integer.parseInt(args[0]); + }catch (Exception NumberFormatException){ + + } + } + NcsServer server = new NcsServer(sutPort); server.start(); server.blockUntilShutdown(); } diff --git a/jdk_8_maven/cs/rpc/grpc/artificial/grpc-scs/pom.xml b/jdk_8_maven/cs/rpc/grpc/artificial/grpc-scs/pom.xml index 9f4c6baab..54a99c57c 100644 --- a/jdk_8_maven/cs/rpc/grpc/artificial/grpc-scs/pom.xml +++ b/jdk_8_maven/cs/rpc/grpc/artificial/grpc-scs/pom.xml @@ -66,6 +66,23 @@ + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + rpc-grpc-scs + sut + + + + - \ No newline at end of file + diff --git a/jdk_8_maven/cs/rpc/grpc/artificial/grpc-scs/src/main/java/org/grpc/scs/ScsServer.java b/jdk_8_maven/cs/rpc/grpc/artificial/grpc-scs/src/main/java/org/grpc/scs/ScsServer.java index 81ec84fbb..ea2311edd 100644 --- a/jdk_8_maven/cs/rpc/grpc/artificial/grpc-scs/src/main/java/org/grpc/scs/ScsServer.java +++ b/jdk_8_maven/cs/rpc/grpc/artificial/grpc-scs/src/main/java/org/grpc/scs/ScsServer.java @@ -15,12 +15,6 @@ */ public class ScsServer { -// public static void main(String[] args) throws IOException, InterruptedException { -// Server server = ServerBuilder.forPort(8080).addService(new NcsServiceImplBaseImpl()).build(); -// server.start(); -// server.awaitTermination(); -// } - private static final Logger logger = Logger.getLogger(ScsServer.class.getName()); private final int port; @@ -38,7 +32,7 @@ public ScsServer(ServerBuilder serverBuilder, int port) { public void start() throws IOException { server.start(); - logger.info("Server started, listening on " + port); + logger.info("ScsServer started, listening on " + port); Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { @@ -66,7 +60,16 @@ void blockUntilShutdown() throws InterruptedException { } public static void main(String[] args) throws Exception { - ScsServer server = new ScsServer(8980); + int sutPort = 8980; + if (args.length == 1){ + try{ + sutPort = Integer.parseInt(args[0]); + }catch (Exception NumberFormatException){ + + } + } + + ScsServer server = new ScsServer(sutPort); server.start(); server.blockUntilShutdown(); } From cdf063d1b15283721e50ec5f7c809663e9ffeb9d Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Mon, 3 Jul 2023 23:53:28 +0200 Subject: [PATCH 3/3] add external --- jdk_8_maven/em/external/grpc/ncs/pom.xml | 58 ++++++ .../grpcncs/ExternalEvoMasterController.java | 175 +++++++++++++++++ jdk_8_maven/em/external/grpc/pom.xml | 20 ++ jdk_8_maven/em/external/grpc/scs/pom.xml | 58 ++++++ .../grpcscs/ExternalEvoMasterController.java | 176 ++++++++++++++++++ jdk_8_maven/em/external/pom.xml | 3 +- 6 files changed, 489 insertions(+), 1 deletion(-) create mode 100644 jdk_8_maven/em/external/grpc/ncs/pom.xml create mode 100644 jdk_8_maven/em/external/grpc/ncs/src/main/java/em/external/org/rpc/grpcncs/ExternalEvoMasterController.java create mode 100644 jdk_8_maven/em/external/grpc/pom.xml create mode 100644 jdk_8_maven/em/external/grpc/scs/pom.xml create mode 100644 jdk_8_maven/em/external/grpc/scs/src/main/java/em/external/org/rpc/grpcscs/ExternalEvoMasterController.java diff --git a/jdk_8_maven/em/external/grpc/ncs/pom.xml b/jdk_8_maven/em/external/grpc/ncs/pom.xml new file mode 100644 index 000000000..15709f3a1 --- /dev/null +++ b/jdk_8_maven/em/external/grpc/ncs/pom.xml @@ -0,0 +1,58 @@ + + + 4.0.0 + + org.evomaster + evomaster-benchmark-em-external-grpc + 1.6.2-SNAPSHOT + + + evomaster-benchmark-em-external-grpc-ncs + jar + + + + + org.evomaster + evomaster-benchmark-cs-rpc-grpc-artificial-ncs + ${project.version} + + + + + + + org.apache.maven.plugins + maven-shade-plugin + + + package + + shade + + + rpc-grpc-ncs-evomaster-runner + + + + em.external.org.rpc.grpcncs.ExternalEvoMasterController + + org.evomaster.client.java.instrumentation.InstrumentingAgent + + org.evomaster.client.java.instrumentation.InstrumentingAgent + + true + true + + + + + + + + + + diff --git a/jdk_8_maven/em/external/grpc/ncs/src/main/java/em/external/org/rpc/grpcncs/ExternalEvoMasterController.java b/jdk_8_maven/em/external/grpc/ncs/src/main/java/em/external/org/rpc/grpcncs/ExternalEvoMasterController.java new file mode 100644 index 000000000..c0fa48b3c --- /dev/null +++ b/jdk_8_maven/em/external/grpc/ncs/src/main/java/em/external/org/rpc/grpcncs/ExternalEvoMasterController.java @@ -0,0 +1,175 @@ +package em.external.org.rpc.grpcncs; + +import io.grpc.*; +import org.evomaster.client.java.controller.ExternalSutController; +import org.evomaster.client.java.controller.InstrumentedSutStarter; +import org.evomaster.client.java.controller.api.dto.AuthenticationDto; +import org.evomaster.client.java.controller.api.dto.SutInfoDto; +import org.evomaster.client.java.controller.api.dto.problem.rpc.RPCType; +import org.evomaster.client.java.controller.internal.db.DbSpecification; +import org.evomaster.client.java.controller.problem.ProblemInfo; +import org.evomaster.client.java.controller.problem.RPCProblem; +import org.grpc.ncs.generated.NcsServiceGrpc; + +import java.util.List; +import java.util.concurrent.TimeUnit; + +public class ExternalEvoMasterController extends ExternalSutController { + + + protected ManagedChannel channel; + private NcsServiceGrpc.NcsServiceBlockingStub stub; + + + public static void main(String[] args) { + + int controllerPort = 40100; + if (args.length > 0) { + controllerPort = Integer.parseInt(args[0]); + } + int sutPort = 12345; + if (args.length > 1) { + sutPort = Integer.parseInt(args[1]); + } + String jarLocation = "cs/rpc/grpc/artificial/grpc-ncs/target"; + if (args.length > 2) { + jarLocation = args[2]; + } + if(! jarLocation.endsWith(".jar")) { + jarLocation += "/rpc-grpc-ncs-sut.jar"; + } + int timeoutSeconds = 120; + if(args.length > 3){ + timeoutSeconds = Integer.parseInt(args[3]); + } + String command = "java"; + if(args.length > 4){ + command = args[4]; + } + + + ExternalEvoMasterController controller = + new ExternalEvoMasterController(controllerPort, jarLocation, sutPort, timeoutSeconds, command); + InstrumentedSutStarter starter = new InstrumentedSutStarter(controller); + + starter.start(); + } + + private final int timeoutSeconds; + private final int sutPort; + private final String jarLocation; + + public ExternalEvoMasterController() { + this(40100, "cs/rpc/grpc/artificial/grpc-ncs/target/rpc-grpc-ncs-sut.jar", 12345, 120, "java"); + } + + @Override + public String getPackagePrefixesToCover() { + return "org.grpc.ncs."; + } + + public ExternalEvoMasterController(int controllerPort, String jarLocation, int sutPort, int timeoutSeconds, String command) { + this.sutPort = sutPort; + this.jarLocation = jarLocation; + this.timeoutSeconds = timeoutSeconds; + setControllerPort(controllerPort); + setJavaCommand(command); + } + + @Override + public String[] getInputParameters() { + return new String[]{String.valueOf(sutPort)}; + } + + public ExternalEvoMasterController(String jarLocation){ + this(40100, jarLocation, 12345, 120, "java"); + } + + @Override + public String[] getJVMParameters() { + return new String[0]; + } + + + @Override + public String getBaseURL() { + return "http://localhost:" + sutPort; + } + + @Override + public String getPathToExecutableJar() { + return jarLocation; + } + + @Override + public String getLogMessageOfInitializedServer() { + return "NcsServer started"; + } + + @Override + public long getMaxAwaitForInitializationInSeconds() { + return timeoutSeconds; + } + + @Override + public void preStart() { + } + + @Override + public ProblemInfo getProblemInfo() { + return new RPCProblem(NcsServiceGrpc.NcsServiceBlockingStub.class, stub, RPCType.gRPC); + } + + @Override + public SutInfoDto.OutputFormat getPreferredOutputFormat() { + return SutInfoDto.OutputFormat.JAVA_JUNIT_4; + } + + @Override + public void postStart() { + + startClient(); + } + + private String startClient() { + channel = ManagedChannelBuilder.forAddress("localhost", sutPort).usePlaintext().build(); + stub = NcsServiceGrpc.newBlockingStub(channel); + + + return "started:"+!(channel.isShutdown() || channel.isTerminated()); + } + + + @Override + public void preStop() { + + try { + if (channel != null) + channel.shutdown().awaitTermination(2, TimeUnit.SECONDS); + + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + } + + @Override + public void postStop() { + + } + + @Override + public void resetStateOfSUT() { + + } + + @Override + public List getDbSpecifications() { + return null; + } + + @Override + public List getInfoForAuthentication() { + return null; + } +} diff --git a/jdk_8_maven/em/external/grpc/pom.xml b/jdk_8_maven/em/external/grpc/pom.xml new file mode 100644 index 000000000..37bf8515c --- /dev/null +++ b/jdk_8_maven/em/external/grpc/pom.xml @@ -0,0 +1,20 @@ + + + 4.0.0 + + org.evomaster + evomaster-benchmark-em-external + 1.6.2-SNAPSHOT + + + evomaster-benchmark-em-external-grpc + pom + + ncs + scs + + + + diff --git a/jdk_8_maven/em/external/grpc/scs/pom.xml b/jdk_8_maven/em/external/grpc/scs/pom.xml new file mode 100644 index 000000000..b91b09deb --- /dev/null +++ b/jdk_8_maven/em/external/grpc/scs/pom.xml @@ -0,0 +1,58 @@ + + + 4.0.0 + + org.evomaster + evomaster-benchmark-em-external-grpc + 1.6.2-SNAPSHOT + + + evomaster-benchmark-em-external-grpc-scs + jar + + + + + org.evomaster + evomaster-benchmark-cs-rpc-grpc-artificial-scs + ${project.version} + + + + + + + org.apache.maven.plugins + maven-shade-plugin + + + package + + shade + + + rpc-grpc-scs-evomaster-runner + + + + em.external.org.rpc.grpcscs.ExternalEvoMasterController + + org.evomaster.client.java.instrumentation.InstrumentingAgent + + org.evomaster.client.java.instrumentation.InstrumentingAgent + + true + true + + + + + + + + + + diff --git a/jdk_8_maven/em/external/grpc/scs/src/main/java/em/external/org/rpc/grpcscs/ExternalEvoMasterController.java b/jdk_8_maven/em/external/grpc/scs/src/main/java/em/external/org/rpc/grpcscs/ExternalEvoMasterController.java new file mode 100644 index 000000000..b428bed95 --- /dev/null +++ b/jdk_8_maven/em/external/grpc/scs/src/main/java/em/external/org/rpc/grpcscs/ExternalEvoMasterController.java @@ -0,0 +1,176 @@ +package em.external.org.rpc.grpcscs; + +import io.grpc.ManagedChannel; +import io.grpc.ManagedChannelBuilder; +import org.evomaster.client.java.controller.ExternalSutController; +import org.evomaster.client.java.controller.InstrumentedSutStarter; +import org.evomaster.client.java.controller.api.dto.AuthenticationDto; +import org.evomaster.client.java.controller.api.dto.SutInfoDto; +import org.evomaster.client.java.controller.api.dto.problem.rpc.RPCType; +import org.evomaster.client.java.controller.internal.db.DbSpecification; +import org.evomaster.client.java.controller.problem.ProblemInfo; +import org.evomaster.client.java.controller.problem.RPCProblem; +import org.grpc.scs.generated.ScsServiceGrpc; + +import java.util.List; +import java.util.concurrent.TimeUnit; + +public class ExternalEvoMasterController extends ExternalSutController { + + + protected ManagedChannel channel; + private ScsServiceGrpc.ScsServiceBlockingStub stub; + + + public static void main(String[] args) { + + int controllerPort = 40100; + if (args.length > 0) { + controllerPort = Integer.parseInt(args[0]); + } + int sutPort = 12345; + if (args.length > 1) { + sutPort = Integer.parseInt(args[1]); + } + String jarLocation = "cs/rpc/grpc/artificial/grpc-scs/target"; + if (args.length > 2) { + jarLocation = args[2]; + } + if(! jarLocation.endsWith(".jar")) { + jarLocation += "/rpc-grpc-scs-sut.jar"; + } + int timeoutSeconds = 120; + if(args.length > 3){ + timeoutSeconds = Integer.parseInt(args[3]); + } + String command = "java"; + if(args.length > 4){ + command = args[4]; + } + + + ExternalEvoMasterController controller = + new ExternalEvoMasterController(controllerPort, jarLocation, sutPort, timeoutSeconds, command); + InstrumentedSutStarter starter = new InstrumentedSutStarter(controller); + + starter.start(); + } + + private final int timeoutSeconds; + private final int sutPort; + private final String jarLocation; + + public ExternalEvoMasterController() { + this(40100, "cs/rpc/grpc/artificial/grpc-scs/target/rpc-grpc-scs-sut.jar", 12345, 120, "java"); + } + + @Override + public String getPackagePrefixesToCover() { + return "org.grpc.scs."; + } + + public ExternalEvoMasterController(int controllerPort, String jarLocation, int sutPort, int timeoutSeconds, String command) { + this.sutPort = sutPort; + this.jarLocation = jarLocation; + this.timeoutSeconds = timeoutSeconds; + setControllerPort(controllerPort); + setJavaCommand(command); + } + + @Override + public String[] getInputParameters() { + return new String[]{String.valueOf(sutPort)}; + } + + public ExternalEvoMasterController(String jarLocation){ + this(40100, jarLocation, 12345, 120, "java"); + } + + @Override + public String[] getJVMParameters() { + return new String[0]; + } + + + @Override + public String getBaseURL() { + return "http://localhost:" + sutPort; + } + + @Override + public String getPathToExecutableJar() { + return jarLocation; + } + + @Override + public String getLogMessageOfInitializedServer() { + return "ScsServer started"; + } + + @Override + public long getMaxAwaitForInitializationInSeconds() { + return timeoutSeconds; + } + + @Override + public void preStart() { + } + + @Override + public ProblemInfo getProblemInfo() { + return new RPCProblem(ScsServiceGrpc.ScsServiceBlockingStub.class, stub, RPCType.gRPC); + } + + @Override + public SutInfoDto.OutputFormat getPreferredOutputFormat() { + return SutInfoDto.OutputFormat.JAVA_JUNIT_4; + } + + @Override + public void postStart() { + + startClient(); + } + + private String startClient() { + channel = ManagedChannelBuilder.forAddress("localhost", sutPort).usePlaintext().build(); + stub = ScsServiceGrpc.newBlockingStub(channel); + + + return "started:"+!(channel.isShutdown() || channel.isTerminated()); + } + + + @Override + public void preStop() { + + try { + if (channel != null) + channel.shutdown().awaitTermination(2, TimeUnit.SECONDS); + + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + } + + @Override + public void postStop() { + + } + + @Override + public void resetStateOfSUT() { + + } + + @Override + public List getDbSpecifications() { + return null; + } + + @Override + public List getInfoForAuthentication() { + return null; + } +} diff --git a/jdk_8_maven/em/external/pom.xml b/jdk_8_maven/em/external/pom.xml index e358189c7..76d045362 100644 --- a/jdk_8_maven/em/external/pom.xml +++ b/jdk_8_maven/em/external/pom.xml @@ -15,6 +15,7 @@ rest graphql thrift + grpc @@ -40,4 +41,4 @@ - \ No newline at end of file +