Skip to content

Commit 2c5f3c2

Browse files
committed
Merge remote-tracking branch 'origin/develop' into develop
2 parents b35139d + 37eab30 commit 2c5f3c2

5 files changed

Lines changed: 359 additions & 0 deletions

File tree

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<project xmlns="http://maven.apache.org/POM/4.0.0" 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+
7+
<artifactId>evomaster-benchmark-jdk11-em-external-rest-ind1</artifactId>
8+
<packaging>jar</packaging>
9+
10+
<parent>
11+
<groupId>org.evomaster</groupId>
12+
<artifactId>evomaster-benchmark-jdk11-em-external</artifactId>
13+
<version>1.6.2-SNAPSHOT</version>
14+
</parent>
15+
16+
<dependencies>
17+
<dependency>
18+
<groupId>org.testcontainers</groupId>
19+
<artifactId>testcontainers</artifactId>
20+
<scope>compile</scope>
21+
</dependency>
22+
<dependency>
23+
<groupId>org.postgresql</groupId>
24+
<artifactId>postgresql</artifactId>
25+
</dependency>
26+
<dependency>
27+
<groupId>junit</groupId>
28+
<artifactId>junit</artifactId>
29+
<scope>compile</scope>
30+
<version>4.11</version>
31+
</dependency>
32+
</dependencies>
33+
34+
35+
<build>
36+
<plugins>
37+
<plugin>
38+
<groupId>org.apache.maven.plugins</groupId>
39+
<artifactId>maven-shade-plugin</artifactId>
40+
<executions>
41+
<execution>
42+
<phase>package</phase>
43+
<goals>
44+
<goal>shade</goal>
45+
</goals>
46+
<configuration>
47+
<finalName>ind1-evomaster-runner</finalName>
48+
<transformers>
49+
<transformer
50+
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
51+
<manifestEntries>
52+
<Main-Class>em.external.org.ind1.ExternalEvoMasterController
53+
</Main-Class>
54+
<Premain-Class>org.evomaster.client.java.instrumentation.InstrumentingAgent
55+
</Premain-Class>
56+
<Agent-Class>org.evomaster.client.java.instrumentation.InstrumentingAgent
57+
</Agent-Class>
58+
<Can-Redefine-Classes>true</Can-Redefine-Classes>
59+
<Can-Retransform-Classes>true</Can-Retransform-Classes>
60+
</manifestEntries>
61+
</transformer>
62+
</transformers>
63+
</configuration>
64+
</execution>
65+
</executions>
66+
</plugin>
67+
</plugins>
68+
</build>
69+
</project>
Lines changed: 241 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,241 @@
1+
package em.external.org.ind1;
2+
3+
import org.evomaster.client.java.controller.ExternalSutController;
4+
import org.evomaster.client.java.controller.InstrumentedSutStarter;
5+
import org.evomaster.client.java.controller.api.dto.AuthenticationDto;
6+
import org.evomaster.client.java.controller.api.dto.SutInfoDto;
7+
import org.evomaster.client.java.controller.api.dto.database.schema.DatabaseType;
8+
import org.evomaster.client.java.controller.db.DbCleaner;
9+
import org.evomaster.client.java.controller.db.SqlScriptRunnerCached;
10+
import org.evomaster.client.java.controller.internal.db.DbSpecification;
11+
import org.evomaster.client.java.controller.problem.ProblemInfo;
12+
import org.evomaster.client.java.controller.problem.RestProblem;
13+
import org.testcontainers.containers.GenericContainer;
14+
15+
import java.sql.Connection;
16+
import java.sql.DriverManager;
17+
import java.sql.SQLException;
18+
import java.util.Arrays;
19+
import java.util.Collections;
20+
import java.util.List;
21+
22+
public class ExternalEvoMasterController extends ExternalSutController {
23+
24+
/*
25+
All info that could possibly identify the case study is removed, and
26+
must be passed as either parameter input or environment variable
27+
*/
28+
private static final String SUT_LOCATION_IND1 = System.getenv("SUT_LOCATION_IND1");
29+
private static final String SUT_PACKAGE_IND1 = System.getenv("SUT_PACKAGE_IND1");
30+
31+
public static void main(String[] args) {
32+
33+
int controllerPort = 40100;
34+
if (args.length > 0) {
35+
controllerPort = Integer.parseInt(args[0]);
36+
}
37+
int sutPort = 12345;
38+
if (args.length > 1) {
39+
sutPort = Integer.parseInt(args[1]);
40+
}
41+
String jarLocation = SUT_LOCATION_IND1;
42+
if (args.length > 2) {
43+
jarLocation = args[2];
44+
}
45+
46+
int timeoutSeconds = 120;
47+
if(args.length > 3){
48+
timeoutSeconds = Integer.parseInt(args[3]);
49+
}
50+
51+
String packagesToInstrument = SUT_PACKAGE_IND1;
52+
if(args.length > 5){
53+
packagesToInstrument = args[5];
54+
}
55+
56+
String command = "java";
57+
if(args.length > 4){
58+
command = args[4];
59+
}
60+
61+
62+
ExternalEvoMasterController controller =
63+
new ExternalEvoMasterController(controllerPort, jarLocation,
64+
sutPort, timeoutSeconds, command, packagesToInstrument);
65+
InstrumentedSutStarter starter = new InstrumentedSutStarter(controller);
66+
67+
starter.start();
68+
}
69+
70+
private final int timeoutSeconds;
71+
private final int sutPort;
72+
private String jarLocation;
73+
private final String packagesToInstrument;
74+
private Connection sqlConnection;
75+
private List<DbSpecification> dbSpecification;
76+
77+
private static final GenericContainer postgres = new GenericContainer("postgres:9")
78+
.withExposedPorts(5432)
79+
.withEnv("POSTGRES_HOST_AUTH_METHOD","trust")
80+
.withTmpFs(Collections.singletonMap("/var/lib/postgresql/data", "rw"));
81+
82+
public ExternalEvoMasterController(){
83+
this(40100, SUT_LOCATION_IND1, 12345, 120, "java", SUT_PACKAGE_IND1);
84+
}
85+
86+
public ExternalEvoMasterController(String jarLocation) {
87+
this();
88+
this.jarLocation = jarLocation;
89+
}
90+
91+
public ExternalEvoMasterController(
92+
int controllerPort, String jarLocation, int sutPort, int timeoutSeconds, String command,
93+
String packagesToInstrument) {
94+
95+
if(jarLocation==null || jarLocation.isEmpty()){
96+
throw new IllegalArgumentException("Missing jar location");
97+
}
98+
if(packagesToInstrument==null || packagesToInstrument.isEmpty()){
99+
throw new IllegalArgumentException("Missing packages to instrument");
100+
}
101+
102+
this.sutPort = sutPort;
103+
this.jarLocation = jarLocation;
104+
this.timeoutSeconds = timeoutSeconds;
105+
this.packagesToInstrument = packagesToInstrument;
106+
setControllerPort(controllerPort);
107+
setJavaCommand(command);
108+
}
109+
110+
111+
@Override
112+
public String[] getInputParameters() {
113+
return new String[]{
114+
"--server.port=" + sutPort,
115+
"--spring.datasource.url="+dbUrl(),
116+
"--spring.datasource.username=postgres",
117+
"--spring.datasource.password",
118+
"--spring.cache.type=none",
119+
"--spring.jmx.enabled=false",
120+
"--spring.profiles.active=test",
121+
"--subscriptions.slack.notification_url=https://hooks.slack.com/services/fake/fake/fake",
122+
"--auth0.authorization.api_url=http://fakeaddressdoesnotexist.no/adf6e2f2b84784b57522e3b19dfc9201/api",
123+
"--auth0.subscriptions.client_id=fooSubscriptionsId",
124+
"--auth0.domain=foo-test.eu.auth0.com"
125+
};
126+
}
127+
128+
public String[] getJVMParameters() {
129+
130+
return new String[]{
131+
"-Xmx4G"
132+
};
133+
}
134+
135+
private String dbUrl( ) {
136+
137+
String host = postgres.getContainerIpAddress();
138+
int port = postgres.getMappedPort(5432);
139+
140+
String url = "jdbc";
141+
url += ":postgresql://"+host+":"+port+"/postgres?currentSchema=subscriptions";
142+
143+
return url;
144+
}
145+
146+
@Override
147+
public String getBaseURL() {
148+
return "http://localhost:" + sutPort;
149+
}
150+
151+
@Override
152+
public String getPathToExecutableJar() {
153+
return jarLocation;
154+
}
155+
156+
@Override
157+
public String getLogMessageOfInitializedServer() {
158+
return "Tomcat started on port";
159+
}
160+
161+
@Override
162+
public long getMaxAwaitForInitializationInSeconds() {
163+
return timeoutSeconds;
164+
}
165+
166+
@Override
167+
public void preStart() {
168+
postgres.start();
169+
}
170+
171+
@Override
172+
public void postStart() {
173+
closeDataBaseConnection();
174+
175+
try {
176+
sqlConnection = DriverManager.getConnection(dbUrl(), "postgres", "");
177+
dbSpecification = Arrays.asList(new DbSpecification(DatabaseType.POSTGRES,sqlConnection)
178+
.withSchemas("subscriptions").withDisabledSmartClean());
179+
} catch (Exception e) {
180+
throw new RuntimeException(e);
181+
}
182+
}
183+
184+
@Override
185+
public void resetStateOfSUT() {
186+
DbCleaner.clearDatabase_Postgres(sqlConnection,
187+
"subscriptions",
188+
Arrays.asList("flyway_schema_history"));
189+
SqlScriptRunnerCached.runScriptFromResourceFile(sqlConnection,"/init_db.sql");
190+
}
191+
192+
@Override
193+
public void preStop() {
194+
closeDataBaseConnection();
195+
}
196+
197+
@Override
198+
public void postStop() {
199+
postgres.stop();
200+
}
201+
202+
private void closeDataBaseConnection() {
203+
if (sqlConnection != null) {
204+
try {
205+
sqlConnection.close();
206+
} catch (SQLException e) {
207+
e.printStackTrace();
208+
}
209+
sqlConnection = null;
210+
}
211+
}
212+
213+
@Override
214+
public String getPackagePrefixesToCover() {
215+
return packagesToInstrument;
216+
}
217+
218+
@Override
219+
public ProblemInfo getProblemInfo() {
220+
return new RestProblem(
221+
getBaseURL() + "/v3/api-docs",
222+
null
223+
);
224+
}
225+
226+
@Override
227+
public SutInfoDto.OutputFormat getPreferredOutputFormat() {
228+
return SutInfoDto.OutputFormat.JAVA_JUNIT_4;
229+
}
230+
231+
232+
@Override
233+
public List<AuthenticationDto> getInfoForAuthentication() {
234+
return null;
235+
}
236+
237+
@Override
238+
public List<DbSpecification> getDbSpecifications() {
239+
return dbSpecification;
240+
}
241+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
2+
/* Values below is also represented in the object SeededEntriesController */
3+
INSERT INTO contact (id, email, name, phone) VALUES ('32c42ef9-cc97-40bf-9590-66ff7a84ae04', 'test@eksempel.no', 'Test Testersen', '99887766');
4+
INSERT INTO account_manager (id, name) VALUES ('01234567-9ABC-DEF0-1234-56789ABCDEF0', 'SelgerBritt');
5+
INSERT INTO account_manager (id, name) VALUES ('01234567-9ABC-DEF0-1234-000000000012', 'SelgerBorgar');
6+
7+
INSERT INTO subscription_status (id, name) values ('CUSTOMER', 'Kunde');
8+
INSERT INTO subscription_status (id, name) values ('TRIAL', 'Prøveabonnement');
9+
10+
INSERT INTO subscription_package VALUES ('19fa3abc-8dae-11e9-bc42-526af7764f64', 'foo-premium', 'foo premium');
11+
INSERT INTO subscription_package VALUES ('fb0f2e57-cd1c-483f-ad3e-762e96ac9468', 'foo-basis', 'foo basis');
12+
13+
INSERT INTO market_category VALUES ('a88e1b4e-6b75-44fa-bcfa-643082160780', 'advokatfirma', 'Advokatfirma');
14+
INSERT INTO market_category VALUES ('678527f7-d6b2-43d7-a0f0-f0c3703c08be', 'utdanning', 'Utdanning');
15+
16+
INSERT INTO customer (id, customer_number, name, signup, contact_id, ip_e_username, ip_e_password, subscription_status, account_manager, potential_users, subscription_package_id, market_category_id)
17+
VALUES ('8374627f-a31f-43eb-ad6c-022f367e3c18', 'test-1000', 'foo Test Kunde AS', 'AA3AB', '32c42ef9-cc97-40bf-9590-66ff7a84ae04',
18+
'db9dcc1804ec6d91c73323c70a2841b1245322c35434ba03d4796fef0b7e1927', '966c879cec492058da3b711cce00702bced015f5a4df16c8d13d6c0ceceea772',
19+
'CUSTOMER', '01234567-9ABC-DEF0-1234-56789ABCDEF0', '100', '19fa3abc-8dae-11e9-bc42-526af7764f64', 'a88e1b4e-6b75-44fa-bcfa-643082160780');
20+
21+
INSERT INTO product (id, product_number, name, enabled, role_id, type) VALUES ('0d97d518-be2e-4da0-83a1-a0b895269097', '3002', 'Lovkommentar', true, 'd2cb8350-ca87-4756-957d-a1cc1e57d523', 'Hovedprodukt');
22+
INSERT INTO product (id, product_number, name, enabled, role_id, type) VALUES ('0d97d518-be2e-4da0-83a1-a0b895269098', '3000', 'Backlist', true, 'd2cb8350-ca87-4756-957d-a1cc1e57d524', 'Hovedprodukt');
23+
INSERT INTO product (id, product_number, name, enabled, role_id, type) VALUES ('0d97d518-be2e-4da0-83a1-a0b895269099', '3001', 'Frontlist', true, 'd2cb8350-ca87-4756-957d-a1cc1e57d525', 'Hovedprodukt');
24+
25+
INSERT INTO ip (id, ipv4address, description, customer_id) VALUES ('aa74627f-a31f-43eb-ad6c-022f367e3caa', '192.168.150.234', 'Test address for test-1000', '8374627f-a31f-43eb-ad6c-022f367e3c18');
26+
27+
INSERT INTO signup_token VALUES (CAST('360a6590-176d-4060-bb40-b0cff5f3e426' as UUID),
28+
'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlF6a3dNRUkxUWtSR09UWTNRak5DTlVRNE9EVkRNRVUxUTBGRlFUZERNREJHTmtRd09EZ3dPQSJ9.eyJodHRwOi8vanVyaWRpa2EvY2xhaW1zL3Blcm1pc3Npb25zIjpbXSwiaHR0cDovL2p1cmlkaWthL2NsYWltcy9jdXN0b21lcklkIjoidGVzdC0xMDAwIiwiaXNzIjoiaHR0cHM6Ly9qdXJpZGlrYS5ldS5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8NWE2NzY0NDNkZjUzMGY1ZjcyYWU0YmFmIiwiYXVkIjpbImp1cmlkaWthIiwiaHR0cHM6Ly9qdXJpZGlrYS5ldS5hdXRoMC5jb20vdXNlcmluZm8iXSwiaWF0IjoxNTE2NzI1MzIyLCJleHAiOjE1MTY4MTE3MjIsImF6cCI6ImEzaVBQM1N0OGV0MFBBbTFpWjV4eHpYUkw5VFhkUGdDIiwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBlbWFpbCBhZGRyZXNzIHBob25lIiwiZ3R5IjoicGFzc3dvcmQifQ.c-OvEcKEMOUSjQ3FlmnHvQIsbS_HaOASd8UOSfsyXw-OpVHOjeGlX7-l7VjuWYJrhA3JT6uCFCJLgICr8xayWVV_jAHAFL-Ct_RlwNX3vbYed2UG6gpVuZD4qiP5k7jtIMbOxPJDzpiP2AOd-ZoP0aUQV29VrCHMMCZwjqWpBaFDl8SvWKf-SNsVzTVGawgJ7O1WpnNAUI6RlPwvKtw14eD_kO09ZErY-mQn40vEY-523qFxtBYNSjc1VMVWCt2rDgg9KjcMNTo7QHk_LLHnLSloVIqIQ0xKa1k-omrZbJe2pZL4HL_6Bp697Li3V7Vw60dPGwHhh1lnMdjtY3I_wg',
29+
'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlF6a3dNRUkxUWtSR09UWTNRak5DTlVRNE9EVkRNRVUxUTBGRlFUZERNREJHTmtRd09EZ3dPQSJ9.eyJodHRwczovL2p1cmlkaWthL3Rlcm1zIjpmYWxzZSwiZ2l2ZW5fbmFtZSI6Ik9kZGdlaXIiLCJmYW1pbHlfbmFtZSI6IkdpdGxlc3RhZCIsIm5pY2tuYW1lIjoiT2RkZ2VpciIsIm5hbWUiOiJPZGRnZWlyIEdpdGxlc3RhZCIsInBpY3R1cmUiOiJodHRwczovL3MuZ3JhdmF0YXIuY29tL2F2YXRhci9mNzJjNGU5OTYzNDA3NjQwZWNhZjk3OTE4ODhiMGY3MT9zPTQ4MCZyPXBnJmQ9aHR0cHMlM0ElMkYlMkZjZG4uYXV0aDAuY29tJTJGYXZhdGFycyUyRm9nLnBuZyIsInVwZGF0ZWRfYXQiOiIyMDE4LTAxLTIzVDE2OjM1OjE5LjM3MloiLCJlbWFpbCI6Im9kZGdlaXIuZ2l0bGVzdGFkQGZkc2ZhaWJ0ZXcuY29tIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJpc3MiOiJodHRwczovL2p1cmlkaWthLmV1LmF1dGgwLmNvbS8iLCJzdWIiOiJhdXRoMHw1YTY3NjQ0M2RmNTMwZjVmNzJhZTRiYWYiLCJhdWQiOiJhM2lQUDNTdDhldDBQQW0xaVo1eHh6WFJMOVRYZFBnQyIsImlhdCI6MTUxNjcyNTMyMiwiZXhwIjoxNTE2NzYxMzIyfQ.XJ8E3giwTnKSoCC5QbL3jW3VTtiX12YBker5MNWe40apyDTtBpWKk0AmxCNYCC9zz8-Z1QilLuTsCUnjl7cqxNLNdsSBYUSYdzz0LFC5iymJgX-2YHP7msr3-K704egB2cfsz0XB-99Oq0HuHfDJNJxW6hELWJwLaqQaKOKHol_uEIKX5PX9MEwA0UQyLeFnxo0OtP37NYvOcJ8kT841xmWZ0lVOI5cTmm8RqyMVzr8R_ENS0xKJCTm5GQOLWX_cTrblLKseoAG77pH57Ueg4XertI41O9Nx3drf6bmUywXWcdpcHQKX0hiESzOB49EfNcyq08E7AbXlgKcPpJwJHw');
30+
31+
INSERT INTO customer (id, customer_number, name, signup, contact_id, ip_e_username, ip_e_password, subscription_status, account_manager, potential_users, subscription_package_id, market_category_id)
32+
VALUES ('08788418-f6e3-4ae3-95bc-f06ea4b81f17', 'test-2000', 'CustomerWithNulls', 'BBBBB', '32c42ef9-cc97-40bf-9590-66ff7a84ae04',
33+
null, null,
34+
'TRIAL', null, '100', null, null);
35+
36+
INSERT INTO customer_products (customer_id, product_id) VALUES ('8374627f-a31f-43eb-ad6c-022f367e3c18', '0d97d518-be2e-4da0-83a1-a0b895269097');
37+
38+
INSERT INTO subscription_plan (auth0_group_id, stripe_plan_id, name, pricing, version)
39+
VALUES ('533d5fa8-acd6-4efd-a069-18f097384747', 'plan_Bl85KcqjVUlvEk', 'basis', 'monthly', 1);
40+
INSERT INTO subscription_plan (auth0_group_id, stripe_plan_id, name, pricing, version)
41+
VALUES ('b12ed396-ec12-448d-942b-c7740d492d0a', 'plan_Fl85KcqjVUlvEj', 'basis', 'monthly', 2);

jdk_11_maven/em/external/rest/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
<modules>
1616
<module>cwa-verification</module>
1717
<module>market</module>
18+
<module>ind1</module>
1819
</modules>
1920

2021
</project>

scripts/dist.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,13 @@ def build_jdk_11_maven() :
151151
copy(folder +"/cs/rest-gui/market/market-rest/target/market-sut.jar", DIST)
152152
copy(folder +"/em/external/rest/market/target/market-evomaster-runner.jar", DIST)
153153

154+
ind1 = os.environ.get('SUT_LOCATION_IND1', '')
155+
if ind1 == '':
156+
print("\nWARN: SUT_LOCATION_IND1 env variable is not defined")
157+
else:
158+
copy(ind1, os.path.join(DIST, "ind1-sut.jar"))
159+
copy(folder +"/em/external/rest/ind1/target/ind1-evomaster-runner.jar", DIST)
160+
154161
####################
155162
def build_jdk_11_gradle() :
156163

0 commit comments

Comments
 (0)