Skip to content

Commit 3a14752

Browse files
committed
add external thrift scs and ncs
1 parent 71c054f commit 3a14752

11 files changed

Lines changed: 555 additions & 4 deletions

File tree

jdk_8_maven/cs/rpc/thrift/artificial/thrift-ncs/pom.xml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,5 +50,23 @@
5050
</dependency>
5151
</dependencies>
5252

53-
53+
<build>
54+
<plugins>
55+
<plugin>
56+
<groupId>org.springframework.boot</groupId>
57+
<artifactId>spring-boot-maven-plugin</artifactId>
58+
<executions>
59+
<execution>
60+
<goals>
61+
<goal>repackage</goal>
62+
</goals>
63+
<configuration>
64+
<finalName>rpc-thrift-ncs</finalName>
65+
<classifier>sut</classifier>
66+
</configuration>
67+
</execution>
68+
</executions>
69+
</plugin>
70+
</plugins>
71+
</build>
5472
</project>

jdk_8_maven/cs/rpc/thrift/artificial/thrift-scs/pom.xml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,24 @@
4949
</dependency>
5050
</dependencies>
5151

52+
<build>
53+
<plugins>
54+
<plugin>
55+
<groupId>org.springframework.boot</groupId>
56+
<artifactId>spring-boot-maven-plugin</artifactId>
57+
<executions>
58+
<execution>
59+
<goals>
60+
<goal>repackage</goal>
61+
</goals>
62+
<configuration>
63+
<finalName>rpc-thrift-scs</finalName>
64+
<classifier>sut</classifier>
65+
</configuration>
66+
</execution>
67+
</executions>
68+
</plugin>
69+
</plugins>
70+
</build>
71+
5272
</project>

jdk_8_maven/cs/rpc/thrift/artificial/thrift-scs/src/main/java/org/thrift/scs/ScsApplication.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public TProtocolFactory tProtocolFactory() {
2929
}
3030

3131
@Bean
32-
public ServletRegistrationBean ncsServlet(TProtocolFactory protocolFactory, ScsServiceImpl service) {
32+
public ServletRegistrationBean scsServlet(TProtocolFactory protocolFactory, ScsServiceImpl service) {
3333
TServlet tServlet = new TServlet(new ScsService.Processor<>(service), protocolFactory);
3434
return new ServletRegistrationBean(tServlet, "/scs");
3535
}

jdk_8_maven/em/embedded/thrift/ncs/src/main/java/em/embedded/org/thriftncs/EmbeddedEvoMasterController.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ public EmbeddedEvoMasterController(int port) {
4949

5050
private ConfigurableApplicationContext ctx;
5151
private NcsService.Client client;
52+
private TTransport transport;
53+
private TProtocol protocol;
5254

5355
@Override
5456
public boolean isSutRunning() {
@@ -95,8 +97,8 @@ public String startSut() {
9597

9698
try {
9799
// init client
98-
TTransport transport = new THttpClient(url);
99-
TProtocol protocol = new TBinaryProtocol(transport);
100+
transport = new THttpClient(url);
101+
protocol = new TBinaryProtocol(transport);
100102
client = new NcsService.Client(protocol);
101103
} catch (TTransportException e) {
102104
e.printStackTrace();
@@ -114,6 +116,7 @@ protected int getSutPort() {
114116

115117
@Override
116118
public void stopSut() {
119+
transport.close();
117120
ctx.stop();
118121
}
119122

jdk_8_maven/em/external/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
<modules>
1515
<module>rest</module>
1616
<module>graphql</module>
17+
<module>thrift</module>
1718
</modules>
1819

1920
<dependencies>
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
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+
<parent>
6+
<artifactId>evomaster-benchmark-em-external-thrift</artifactId>
7+
<groupId>org.evomaster</groupId>
8+
<version>1.3.1-SNAPSHOT</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
12+
<artifactId>evomaster-benchmark-em-external-rpc-thrift-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-thrift-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-thrift-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.thriftncs.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+
59+
</project>
Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
package em.external.org.rpc.thriftncs;
2+
3+
import org.apache.thrift.protocol.TBinaryProtocol;
4+
import org.apache.thrift.protocol.TProtocol;
5+
import org.apache.thrift.transport.THttpClient;
6+
import org.apache.thrift.transport.TTransport;
7+
import org.apache.thrift.transport.TTransportException;
8+
import org.evomaster.client.java.controller.ExternalSutController;
9+
import org.evomaster.client.java.controller.InstrumentedSutStarter;
10+
import org.evomaster.client.java.controller.api.dto.AuthenticationDto;
11+
import org.evomaster.client.java.controller.api.dto.SutInfoDto;
12+
import org.evomaster.client.java.controller.problem.ProblemInfo;
13+
import org.evomaster.client.java.controller.problem.RPCProblem;
14+
import org.thrift.ncs.client.NcsService;
15+
16+
import java.sql.Connection;
17+
import java.util.HashMap;
18+
import java.util.List;
19+
20+
public class ExternalEvoMasterController extends ExternalSutController {
21+
22+
private NcsService.Client client;
23+
private TTransport transport;
24+
private TProtocol protocol;
25+
26+
public static void main(String[] args) {
27+
28+
int controllerPort = 40100;
29+
if (args.length > 0) {
30+
controllerPort = Integer.parseInt(args[0]);
31+
}
32+
int sutPort = 12345;
33+
if (args.length > 1) {
34+
sutPort = Integer.parseInt(args[1]);
35+
}
36+
String jarLocation = "cs/rpc/thrift/artificial/thrift-ncs/target";
37+
if (args.length > 2) {
38+
jarLocation = args[2];
39+
}
40+
if(! jarLocation.endsWith(".jar")) {
41+
jarLocation += "/rpc-thrift-ncs-sut.jar";
42+
}
43+
int timeoutSeconds = 120;
44+
if(args.length > 3){
45+
timeoutSeconds = Integer.parseInt(args[3]);
46+
}
47+
String command = "java";
48+
if(args.length > 4){
49+
command = args[4];
50+
}
51+
52+
53+
ExternalEvoMasterController controller =
54+
new ExternalEvoMasterController(controllerPort, jarLocation, sutPort, timeoutSeconds, command);
55+
InstrumentedSutStarter starter = new InstrumentedSutStarter(controller);
56+
57+
starter.start();
58+
}
59+
60+
private final int timeoutSeconds;
61+
private final int sutPort;
62+
private final String jarLocation;
63+
64+
public ExternalEvoMasterController() {
65+
this(40100, "cs/rpc/thrift/artificial/thrift-ncs/target/rpc-thrift-ncs-sut.jar", 12345, 120, "java");
66+
}
67+
68+
public ExternalEvoMasterController(int controllerPort, String jarLocation, int sutPort, int timeoutSeconds, String command) {
69+
this.sutPort = sutPort;
70+
this.jarLocation = jarLocation;
71+
this.timeoutSeconds = timeoutSeconds;
72+
setControllerPort(controllerPort);
73+
setJavaCommand(command);
74+
}
75+
76+
77+
@Override
78+
public String[] getInputParameters() {
79+
return new String[]{"--server.port=" + sutPort};
80+
}
81+
82+
@Override
83+
public String[] getJVMParameters() {
84+
return new String[0];
85+
}
86+
87+
88+
@Override
89+
public String getBaseURL() {
90+
return "http://localhost:" + sutPort;
91+
}
92+
93+
@Override
94+
public String getPathToExecutableJar() {
95+
return jarLocation;
96+
}
97+
98+
@Override
99+
public String getLogMessageOfInitializedServer() {
100+
return "Started NcsApplication in ";
101+
}
102+
103+
@Override
104+
public long getMaxAwaitForInitializationInSeconds() {
105+
return timeoutSeconds;
106+
}
107+
108+
@Override
109+
public void preStart() {
110+
}
111+
112+
@Override
113+
public void postStart() {
114+
String url = "http://localhost:"+sutPort+"/ncs";
115+
try {
116+
// init client
117+
transport = new THttpClient(url);
118+
protocol = new TBinaryProtocol(transport);
119+
client = new NcsService.Client(protocol);
120+
} catch (TTransportException e) {
121+
e.printStackTrace();
122+
}
123+
124+
}
125+
126+
@Override
127+
public void resetStateOfSUT() {
128+
}
129+
130+
@Override
131+
public void preStop() {
132+
transport.close();
133+
}
134+
135+
@Override
136+
public void postStop() {
137+
}
138+
139+
@Override
140+
public String getPackagePrefixesToCover() {
141+
return "org.thrift.ncs.service.";
142+
}
143+
144+
@Override
145+
public List<AuthenticationDto> getInfoForAuthentication() {
146+
return null;
147+
}
148+
149+
@Override
150+
public Connection getConnection() {
151+
return null;
152+
}
153+
154+
@Override
155+
public ProblemInfo getProblemInfo() {
156+
157+
return new RPCProblem(new HashMap<String, Object>() {{
158+
put(NcsService.Iface.class.getName(), client);
159+
}});
160+
}
161+
162+
@Override
163+
public SutInfoDto.OutputFormat getPreferredOutputFormat() {
164+
return SutInfoDto.OutputFormat.JAVA_JUNIT_4;
165+
}
166+
167+
}
168+
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package em.external.org.rpc.thriftncs;
2+
3+
import org.apache.thrift.TException;
4+
import org.apache.thrift.protocol.TBinaryProtocol;
5+
import org.apache.thrift.protocol.TProtocol;
6+
import org.apache.thrift.transport.THttpClient;
7+
import org.apache.thrift.transport.TSocket;
8+
import org.apache.thrift.transport.TTransport;
9+
import org.apache.thrift.transport.TTransportException;
10+
import org.thrift.ncs.client.NcsService;
11+
12+
public class Main {
13+
14+
public static void main(String[] args) {
15+
// init client
16+
TTransport transport = null;
17+
THttpClient tHttpClient = null;
18+
try {
19+
// transport = new TSocket("localhost", 9898);
20+
// transport.open();
21+
tHttpClient = new THttpClient("http://localhost:8080/ncs");
22+
tHttpClient.open();
23+
} catch (TTransportException e) {
24+
e.printStackTrace();
25+
}
26+
TProtocol protocol = new TBinaryProtocol(tHttpClient);
27+
NcsService.Client client = new NcsService.Client(protocol);
28+
try {
29+
Object res = client.checkTriangle(3,4,5);
30+
System.out.println(res);
31+
} catch (TException e) {
32+
e.printStackTrace();
33+
}
34+
}
35+
}
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+
<parent>
6+
<artifactId>evomaster-benchmark-em-external</artifactId>
7+
<groupId>org.evomaster</groupId>
8+
<version>1.3.1-SNAPSHOT</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
12+
<artifactId>evomaster-benchmark-em-external-thrift</artifactId>
13+
<packaging>pom</packaging>
14+
15+
<modules>
16+
<module>ncs</module>
17+
<module>scs</module>
18+
</modules>
19+
20+
</project>

0 commit comments

Comments
 (0)