Skip to content

Commit 0adee32

Browse files
committed
embedded controller
1 parent 807e590 commit 0adee32

File tree

6 files changed

+328
-1
lines changed

6 files changed

+328
-1
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
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-embedded-grpc</artifactId>
9+
<version>1.6.2-SNAPSHOT</version>
10+
</parent>
11+
12+
<artifactId>evomaster-benchmark-em-embedded-grpc-ncs</artifactId>
13+
<packaging>jar</packaging>
14+
15+
16+
<dependencies>
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+
</project>
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
package em.embedded.org.grpcncs;
2+
3+
import io.grpc.*;
4+
import org.evomaster.client.java.controller.EmbeddedSutController;
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.NcsServiceImplBaseImpl;
13+
import org.grpc.ncs.generated.NcsServiceGrpc;
14+
15+
import java.io.IOException;
16+
import java.util.List;
17+
import java.util.concurrent.TimeUnit;
18+
19+
public class EmbeddedEvoMasterController extends EmbeddedSutController {
20+
21+
public static void main(String[] args) {
22+
23+
int port = 40100;
24+
if (args.length > 0) {
25+
port = Integer.parseInt(args[0]);
26+
}
27+
28+
EmbeddedEvoMasterController controller = new EmbeddedEvoMasterController(port);
29+
InstrumentedSutStarter starter = new InstrumentedSutStarter(controller);
30+
31+
starter.start();
32+
}
33+
34+
public EmbeddedEvoMasterController() {
35+
this(40100);
36+
}
37+
38+
public EmbeddedEvoMasterController(int port) {
39+
registeredService = new NcsServiceImplBaseImpl();
40+
setControllerPort(port);
41+
}
42+
43+
44+
45+
protected ManagedChannel channel;
46+
private Server server;
47+
48+
private NcsServiceGrpc.NcsServiceBlockingStub stub;
49+
50+
private final BindableService registeredService;
51+
52+
@Override
53+
public boolean isSutRunning() {
54+
return server != null && !server.isShutdown() && !server.isTerminated();
55+
}
56+
57+
@Override
58+
public String getPackagePrefixesToCover() {
59+
return "org.grpc.ncs.";
60+
}
61+
62+
@Override
63+
public List<AuthenticationDto> getInfoForAuthentication() {
64+
return null;
65+
}
66+
67+
@Override
68+
public ProblemInfo getProblemInfo() {
69+
return new RPCProblem(NcsServiceGrpc.NcsServiceBlockingStub.class, stub, RPCType.gRPC);
70+
}
71+
72+
@Override
73+
public SutInfoDto.OutputFormat getPreferredOutputFormat() {
74+
return SutInfoDto.OutputFormat.JAVA_JUNIT_4;
75+
}
76+
77+
@Override
78+
public String startSut() {
79+
80+
try {
81+
server = ServerBuilder.forPort(0).addService(registeredService).build();
82+
server.start();
83+
84+
startClient();
85+
return "http://localhost:"+server.getPort();
86+
87+
} catch (IOException e) {
88+
throw new RuntimeException(e);
89+
}
90+
}
91+
92+
private String startClient() {
93+
channel = ManagedChannelBuilder.forAddress("localhost", getSutPort()).usePlaintext().build();
94+
stub = NcsServiceGrpc.newBlockingStub(channel);
95+
96+
97+
return "started:"+!(channel.isShutdown() || channel.isTerminated());
98+
}
99+
100+
protected int getSutPort() {
101+
return server.getPort();
102+
}
103+
104+
@Override
105+
public void stopSut() {
106+
107+
try {
108+
if (channel != null)
109+
channel.shutdown().awaitTermination(2, TimeUnit.SECONDS);
110+
if (server != null)
111+
server.shutdown().awaitTermination(2, TimeUnit.SECONDS);
112+
113+
server = null;
114+
} catch (InterruptedException e) {
115+
throw new RuntimeException(e);
116+
}
117+
118+
}
119+
120+
@Override
121+
public void resetStateOfSUT() {
122+
123+
}
124+
125+
@Override
126+
public List<DbSpecification> getDbSpecifications() {
127+
return null;
128+
}
129+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
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-embedded</artifactId>
9+
<version>1.6.2-SNAPSHOT</version>
10+
</parent>
11+
12+
<artifactId>evomaster-benchmark-em-embedded-grpc</artifactId>
13+
<packaging>pom</packaging>
14+
<modules>
15+
<module>ncs</module>
16+
<module>scs</module>
17+
</modules>
18+
19+
</project>
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
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-embedded-grpc</artifactId>
9+
<version>1.6.2-SNAPSHOT</version>
10+
</parent>
11+
12+
<artifactId>evomaster-benchmark-em-embedded-grpc-scs</artifactId>
13+
<packaging>jar</packaging>
14+
15+
16+
<dependencies>
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+
</project>
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
package em.embedded.org.grpcscs;
2+
3+
import io.grpc.*;
4+
import org.evomaster.client.java.controller.EmbeddedSutController;
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.scs.ScsServiceImplBaseImpl;
13+
import org.grpc.scs.generated.ScsServiceGrpc;
14+
15+
16+
import java.io.IOException;
17+
import java.util.List;
18+
import java.util.concurrent.TimeUnit;
19+
20+
public class EmbeddedEvoMasterController extends EmbeddedSutController {
21+
22+
public static void main(String[] args) {
23+
24+
int port = 40100;
25+
if (args.length > 0) {
26+
port = Integer.parseInt(args[0]);
27+
}
28+
29+
EmbeddedEvoMasterController controller = new EmbeddedEvoMasterController(port);
30+
InstrumentedSutStarter starter = new InstrumentedSutStarter(controller);
31+
32+
starter.start();
33+
}
34+
35+
public EmbeddedEvoMasterController() {
36+
this(40100);
37+
}
38+
39+
public EmbeddedEvoMasterController(int port) {
40+
registeredService = new ScsServiceImplBaseImpl();
41+
setControllerPort(port);
42+
}
43+
44+
45+
46+
protected ManagedChannel channel;
47+
private Server server;
48+
49+
private ScsServiceGrpc.ScsServiceBlockingStub stub;
50+
51+
private final BindableService registeredService;
52+
53+
@Override
54+
public boolean isSutRunning() {
55+
return server != null && !server.isShutdown() && !server.isTerminated();
56+
}
57+
58+
@Override
59+
public String getPackagePrefixesToCover() {
60+
return "org.grpc.scs.";
61+
}
62+
63+
@Override
64+
public List<AuthenticationDto> getInfoForAuthentication() {
65+
return null;
66+
}
67+
68+
@Override
69+
public ProblemInfo getProblemInfo() {
70+
return new RPCProblem(ScsServiceGrpc.ScsServiceBlockingStub.class, stub, RPCType.gRPC);
71+
}
72+
73+
@Override
74+
public SutInfoDto.OutputFormat getPreferredOutputFormat() {
75+
return SutInfoDto.OutputFormat.JAVA_JUNIT_4;
76+
}
77+
78+
@Override
79+
public String startSut() {
80+
81+
try {
82+
server = ServerBuilder.forPort(0).addService(registeredService).build();
83+
server.start();
84+
85+
startClient();
86+
return "http://localhost:"+server.getPort();
87+
88+
} catch (IOException e) {
89+
throw new RuntimeException(e);
90+
}
91+
}
92+
93+
private String startClient() {
94+
channel = ManagedChannelBuilder.forAddress("localhost", getSutPort()).usePlaintext().build();
95+
stub = ScsServiceGrpc.newBlockingStub(channel);
96+
97+
98+
return "started:"+!(channel.isShutdown() || channel.isTerminated());
99+
}
100+
101+
protected int getSutPort() {
102+
return server.getPort();
103+
}
104+
105+
@Override
106+
public void stopSut() {
107+
108+
try {
109+
if (channel != null)
110+
channel.shutdown().awaitTermination(2, TimeUnit.SECONDS);
111+
if (server != null)
112+
server.shutdown().awaitTermination(2, TimeUnit.SECONDS);
113+
114+
server = null;
115+
} catch (InterruptedException e) {
116+
throw new RuntimeException(e);
117+
}
118+
119+
}
120+
121+
@Override
122+
public void resetStateOfSUT() {
123+
124+
}
125+
126+
@Override
127+
public List<DbSpecification> getDbSpecifications() {
128+
return null;
129+
}
130+
}

jdk_8_maven/em/embedded/pom.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
<module>rest</module>
1616
<module>graphql</module>
1717
<module>thrift</module>
18+
<module>grpc</module>
1819
</modules>
1920

20-
</project>
21+
</project>

0 commit comments

Comments
 (0)