Skip to content

Commit cdf063d

Browse files
committed
add external
1 parent b378529 commit cdf063d

File tree

6 files changed

+489
-1
lines changed

6 files changed

+489
-1
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
<parent>
7+
<groupId>org.evomaster</groupId>
8+
<artifactId>evomaster-benchmark-em-external-grpc</artifactId>
9+
<version>1.6.2-SNAPSHOT</version>
10+
</parent>
11+
12+
<artifactId>evomaster-benchmark-em-external-grpc-ncs</artifactId>
13+
<packaging>jar</packaging>
14+
15+
<dependencies>
16+
<!-- here, we need to add the dependency of sut in order to instance client -->
17+
<dependency>
18+
<groupId>org.evomaster</groupId>
19+
<artifactId>evomaster-benchmark-cs-rpc-grpc-artificial-ncs</artifactId>
20+
<version>${project.version}</version>
21+
</dependency>
22+
</dependencies>
23+
24+
<build>
25+
<plugins>
26+
<plugin>
27+
<groupId>org.apache.maven.plugins</groupId>
28+
<artifactId>maven-shade-plugin</artifactId>
29+
<executions>
30+
<execution>
31+
<phase>package</phase>
32+
<goals>
33+
<goal>shade</goal>
34+
</goals>
35+
<configuration>
36+
<finalName>rpc-grpc-ncs-evomaster-runner</finalName>
37+
<transformers>
38+
<transformer
39+
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
40+
<manifestEntries>
41+
<Main-Class>em.external.org.rpc.grpcncs.ExternalEvoMasterController
42+
</Main-Class>
43+
<Premain-Class>org.evomaster.client.java.instrumentation.InstrumentingAgent
44+
</Premain-Class>
45+
<Agent-Class>org.evomaster.client.java.instrumentation.InstrumentingAgent
46+
</Agent-Class>
47+
<Can-Redefine-Classes>true</Can-Redefine-Classes>
48+
<Can-Retransform-Classes>true</Can-Retransform-Classes>
49+
</manifestEntries>
50+
</transformer>
51+
</transformers>
52+
</configuration>
53+
</execution>
54+
</executions>
55+
</plugin>
56+
</plugins>
57+
</build>
58+
</project>
Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
package em.external.org.rpc.grpcncs;
2+
3+
import io.grpc.*;
4+
import org.evomaster.client.java.controller.ExternalSutController;
5+
import org.evomaster.client.java.controller.InstrumentedSutStarter;
6+
import org.evomaster.client.java.controller.api.dto.AuthenticationDto;
7+
import org.evomaster.client.java.controller.api.dto.SutInfoDto;
8+
import org.evomaster.client.java.controller.api.dto.problem.rpc.RPCType;
9+
import org.evomaster.client.java.controller.internal.db.DbSpecification;
10+
import org.evomaster.client.java.controller.problem.ProblemInfo;
11+
import org.evomaster.client.java.controller.problem.RPCProblem;
12+
import org.grpc.ncs.generated.NcsServiceGrpc;
13+
14+
import java.util.List;
15+
import java.util.concurrent.TimeUnit;
16+
17+
public class ExternalEvoMasterController extends ExternalSutController {
18+
19+
20+
protected ManagedChannel channel;
21+
private NcsServiceGrpc.NcsServiceBlockingStub stub;
22+
23+
24+
public static void main(String[] args) {
25+
26+
int controllerPort = 40100;
27+
if (args.length > 0) {
28+
controllerPort = Integer.parseInt(args[0]);
29+
}
30+
int sutPort = 12345;
31+
if (args.length > 1) {
32+
sutPort = Integer.parseInt(args[1]);
33+
}
34+
String jarLocation = "cs/rpc/grpc/artificial/grpc-ncs/target";
35+
if (args.length > 2) {
36+
jarLocation = args[2];
37+
}
38+
if(! jarLocation.endsWith(".jar")) {
39+
jarLocation += "/rpc-grpc-ncs-sut.jar";
40+
}
41+
int timeoutSeconds = 120;
42+
if(args.length > 3){
43+
timeoutSeconds = Integer.parseInt(args[3]);
44+
}
45+
String command = "java";
46+
if(args.length > 4){
47+
command = args[4];
48+
}
49+
50+
51+
ExternalEvoMasterController controller =
52+
new ExternalEvoMasterController(controllerPort, jarLocation, sutPort, timeoutSeconds, command);
53+
InstrumentedSutStarter starter = new InstrumentedSutStarter(controller);
54+
55+
starter.start();
56+
}
57+
58+
private final int timeoutSeconds;
59+
private final int sutPort;
60+
private final String jarLocation;
61+
62+
public ExternalEvoMasterController() {
63+
this(40100, "cs/rpc/grpc/artificial/grpc-ncs/target/rpc-grpc-ncs-sut.jar", 12345, 120, "java");
64+
}
65+
66+
@Override
67+
public String getPackagePrefixesToCover() {
68+
return "org.grpc.ncs.";
69+
}
70+
71+
public ExternalEvoMasterController(int controllerPort, String jarLocation, int sutPort, int timeoutSeconds, String command) {
72+
this.sutPort = sutPort;
73+
this.jarLocation = jarLocation;
74+
this.timeoutSeconds = timeoutSeconds;
75+
setControllerPort(controllerPort);
76+
setJavaCommand(command);
77+
}
78+
79+
@Override
80+
public String[] getInputParameters() {
81+
return new String[]{String.valueOf(sutPort)};
82+
}
83+
84+
public ExternalEvoMasterController(String jarLocation){
85+
this(40100, jarLocation, 12345, 120, "java");
86+
}
87+
88+
@Override
89+
public String[] getJVMParameters() {
90+
return new String[0];
91+
}
92+
93+
94+
@Override
95+
public String getBaseURL() {
96+
return "http://localhost:" + sutPort;
97+
}
98+
99+
@Override
100+
public String getPathToExecutableJar() {
101+
return jarLocation;
102+
}
103+
104+
@Override
105+
public String getLogMessageOfInitializedServer() {
106+
return "NcsServer started";
107+
}
108+
109+
@Override
110+
public long getMaxAwaitForInitializationInSeconds() {
111+
return timeoutSeconds;
112+
}
113+
114+
@Override
115+
public void preStart() {
116+
}
117+
118+
@Override
119+
public ProblemInfo getProblemInfo() {
120+
return new RPCProblem(NcsServiceGrpc.NcsServiceBlockingStub.class, stub, RPCType.gRPC);
121+
}
122+
123+
@Override
124+
public SutInfoDto.OutputFormat getPreferredOutputFormat() {
125+
return SutInfoDto.OutputFormat.JAVA_JUNIT_4;
126+
}
127+
128+
@Override
129+
public void postStart() {
130+
131+
startClient();
132+
}
133+
134+
private String startClient() {
135+
channel = ManagedChannelBuilder.forAddress("localhost", sutPort).usePlaintext().build();
136+
stub = NcsServiceGrpc.newBlockingStub(channel);
137+
138+
139+
return "started:"+!(channel.isShutdown() || channel.isTerminated());
140+
}
141+
142+
143+
@Override
144+
public void preStop() {
145+
146+
try {
147+
if (channel != null)
148+
channel.shutdown().awaitTermination(2, TimeUnit.SECONDS);
149+
150+
} catch (InterruptedException e) {
151+
throw new RuntimeException(e);
152+
}
153+
154+
}
155+
156+
@Override
157+
public void postStop() {
158+
159+
}
160+
161+
@Override
162+
public void resetStateOfSUT() {
163+
164+
}
165+
166+
@Override
167+
public List<DbSpecification> getDbSpecifications() {
168+
return null;
169+
}
170+
171+
@Override
172+
public List<AuthenticationDto> getInfoForAuthentication() {
173+
return null;
174+
}
175+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
<parent>
7+
<groupId>org.evomaster</groupId>
8+
<artifactId>evomaster-benchmark-em-external</artifactId>
9+
<version>1.6.2-SNAPSHOT</version>
10+
</parent>
11+
12+
<artifactId>evomaster-benchmark-em-external-grpc</artifactId>
13+
<packaging>pom</packaging>
14+
<modules>
15+
<module>ncs</module>
16+
<module>scs</module>
17+
</modules>
18+
19+
20+
</project>
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
<parent>
7+
<groupId>org.evomaster</groupId>
8+
<artifactId>evomaster-benchmark-em-external-grpc</artifactId>
9+
<version>1.6.2-SNAPSHOT</version>
10+
</parent>
11+
12+
<artifactId>evomaster-benchmark-em-external-grpc-scs</artifactId>
13+
<packaging>jar</packaging>
14+
15+
<dependencies>
16+
<!-- here, we need to add the dependency of sut in order to instance client -->
17+
<dependency>
18+
<groupId>org.evomaster</groupId>
19+
<artifactId>evomaster-benchmark-cs-rpc-grpc-artificial-scs</artifactId>
20+
<version>${project.version}</version>
21+
</dependency>
22+
</dependencies>
23+
24+
<build>
25+
<plugins>
26+
<plugin>
27+
<groupId>org.apache.maven.plugins</groupId>
28+
<artifactId>maven-shade-plugin</artifactId>
29+
<executions>
30+
<execution>
31+
<phase>package</phase>
32+
<goals>
33+
<goal>shade</goal>
34+
</goals>
35+
<configuration>
36+
<finalName>rpc-grpc-scs-evomaster-runner</finalName>
37+
<transformers>
38+
<transformer
39+
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
40+
<manifestEntries>
41+
<Main-Class>em.external.org.rpc.grpcscs.ExternalEvoMasterController
42+
</Main-Class>
43+
<Premain-Class>org.evomaster.client.java.instrumentation.InstrumentingAgent
44+
</Premain-Class>
45+
<Agent-Class>org.evomaster.client.java.instrumentation.InstrumentingAgent
46+
</Agent-Class>
47+
<Can-Redefine-Classes>true</Can-Redefine-Classes>
48+
<Can-Retransform-Classes>true</Can-Retransform-Classes>
49+
</manifestEntries>
50+
</transformer>
51+
</transformers>
52+
</configuration>
53+
</execution>
54+
</executions>
55+
</plugin>
56+
</plugins>
57+
</build>
58+
</project>

0 commit comments

Comments
 (0)