Skip to content

Commit 724f620

Browse files
Merge branch 'master' of https://github.com/RWTH-i5-IDSG/steve
2 parents 3d28372 + c06d73f commit 724f620

8 files changed

+159
-14
lines changed

src/test/java/de/rwth/idsg/steve/ApplicationJsonTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package de.rwth.idsg.steve;
22

33
import de.rwth.idsg.steve.ocpp.OcppVersion;
4+
import de.rwth.idsg.steve.utils.OcppJsonChargePoint;
5+
import de.rwth.idsg.steve.utils.__DatabasePreparer__;
46
import lombok.extern.slf4j.Slf4j;
57
import ocpp.cs._2015._10.AuthorizationStatus;
68
import ocpp.cs._2015._10.AuthorizeRequest;
@@ -13,7 +15,7 @@
1315
import org.junit.BeforeClass;
1416
import org.junit.Test;
1517

16-
import static de.rwth.idsg.steve.Utils.getRandomString;
18+
import static de.rwth.idsg.steve.utils.Helpers.getRandomString;
1719

1820
/**
1921
* @author Sevket Goekay <goekay@dbis.rwth-aachen.de>

src/test/java/de/rwth/idsg/steve/ApplicationTest.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package de.rwth.idsg.steve;
22

3+
import de.rwth.idsg.steve.utils.__DatabasePreparer__;
34
import lombok.extern.slf4j.Slf4j;
45
import ocpp.cs._2010._08.AuthorizationStatus;
56
import ocpp.cs._2010._08.AuthorizeRequest;
@@ -13,11 +14,11 @@
1314
import org.junit.BeforeClass;
1415
import org.junit.Test;
1516

16-
import static de.rwth.idsg.steve.Utils.getForOcpp12;
17-
import static de.rwth.idsg.steve.Utils.getForOcpp15;
18-
import static de.rwth.idsg.steve.Utils.getForOcpp16;
19-
import static de.rwth.idsg.steve.Utils.getPath;
20-
import static de.rwth.idsg.steve.Utils.getRandomString;
17+
import static de.rwth.idsg.steve.utils.Helpers.getForOcpp12;
18+
import static de.rwth.idsg.steve.utils.Helpers.getForOcpp15;
19+
import static de.rwth.idsg.steve.utils.Helpers.getForOcpp16;
20+
import static de.rwth.idsg.steve.utils.Helpers.getPath;
21+
import static de.rwth.idsg.steve.utils.Helpers.getRandomString;
2122

2223
/**
2324
* @author Sevket Goekay <goekay@dbis.rwth-aachen.de>

src/test/java/de/rwth/idsg/steve/OperationalTestSoapOCPP16.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import de.rwth.idsg.steve.repository.dto.Reservation;
77
import de.rwth.idsg.steve.repository.dto.Transaction;
88
import de.rwth.idsg.steve.repository.dto.TransactionDetails;
9+
import de.rwth.idsg.steve.utils.__DatabasePreparer__;
910
import jooq.steve.db.tables.records.TransactionRecord;
1011
import lombok.extern.slf4j.Slf4j;
1112
import ocpp.cs._2015._10.AuthorizationStatus;
@@ -40,9 +41,9 @@
4041
import java.util.Arrays;
4142
import java.util.List;
4243

43-
import static de.rwth.idsg.steve.Utils.getForOcpp16;
44-
import static de.rwth.idsg.steve.Utils.getPath;
45-
import static de.rwth.idsg.steve.Utils.getRandomString;
44+
import static de.rwth.idsg.steve.utils.Helpers.getForOcpp16;
45+
import static de.rwth.idsg.steve.utils.Helpers.getPath;
46+
import static de.rwth.idsg.steve.utils.Helpers.getRandomString;
4647

4748
/**
4849
* @author Andreas Heuvels <andreas.heuvels@rwth-aachen.de>
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
package de.rwth.idsg.steve;
2+
3+
import de.rwth.idsg.steve.utils.StressTester;
4+
import de.rwth.idsg.steve.utils.__DatabasePreparer__;
5+
import lombok.extern.slf4j.Slf4j;
6+
import ocpp.cs._2015._10.AuthorizationStatus;
7+
import ocpp.cs._2015._10.AuthorizeRequest;
8+
import ocpp.cs._2015._10.AuthorizeResponse;
9+
import ocpp.cs._2015._10.BootNotificationRequest;
10+
import ocpp.cs._2015._10.BootNotificationResponse;
11+
import ocpp.cs._2015._10.CentralSystemService;
12+
import ocpp.cs._2015._10.RegistrationStatus;
13+
import org.junit.After;
14+
import org.junit.AfterClass;
15+
import org.junit.Assert;
16+
import org.junit.Before;
17+
import org.junit.BeforeClass;
18+
import org.junit.Test;
19+
20+
import static de.rwth.idsg.steve.utils.Helpers.getForOcpp16;
21+
import static de.rwth.idsg.steve.utils.Helpers.getPath;
22+
import static de.rwth.idsg.steve.utils.Helpers.getRandomString;
23+
24+
/**
25+
* @author Sevket Goekay <goekay@dbis.rwth-aachen.de>
26+
* @since 18.04.2018
27+
*/
28+
@Slf4j
29+
public class StressTestSoapOCPP16 {
30+
31+
private static final String REGISTERED_CHARGE_BOX_ID = __DatabasePreparer__.getRegisteredChargeBoxId();
32+
33+
private static final String path = getPath();
34+
private static Application app;
35+
36+
@BeforeClass
37+
public static void initClass() throws Exception {
38+
Assert.assertEquals(ApplicationProfile.TEST, SteveConfiguration.CONFIG.getProfile());
39+
Assert.assertTrue(SteveConfiguration.CONFIG.getOcpp().isAutoRegisterUnknownStations());
40+
41+
app = new Application();
42+
app.start();
43+
}
44+
45+
@AfterClass
46+
public static void destroyClass() throws Exception {
47+
if (app != null) {
48+
app.stop();
49+
}
50+
}
51+
52+
@Before
53+
public void init() {
54+
__DatabasePreparer__.prepare();
55+
}
56+
57+
@After
58+
public void destroy() {
59+
__DatabasePreparer__.cleanUp();
60+
}
61+
62+
@Test
63+
public void testBootNotification() throws Exception {
64+
StressTester tester = new StressTester(50, 5);
65+
66+
CentralSystemService client = getForOcpp16(path);
67+
68+
tester.test(() -> {
69+
BootNotificationResponse boot = client.bootNotification(
70+
new BootNotificationRequest()
71+
.withChargePointVendor(getRandomString())
72+
.withChargePointModel(getRandomString()),
73+
getRandomString());
74+
Assert.assertEquals(RegistrationStatus.ACCEPTED, boot.getStatus());
75+
});
76+
77+
tester.shutDown();
78+
}
79+
80+
@Test
81+
public void testAuthorize() throws Exception {
82+
StressTester tester = new StressTester(100, 10);
83+
84+
CentralSystemService client = getForOcpp16(path);
85+
86+
tester.test(() -> {
87+
AuthorizeResponse auth = client.authorize(
88+
new AuthorizeRequest().withIdTag(getRandomString()),
89+
REGISTERED_CHARGE_BOX_ID);
90+
Assert.assertEquals(AuthorizationStatus.INVALID, auth.getIdTagInfo().getStatus());
91+
});
92+
93+
tester.shutDown();
94+
}
95+
96+
}

src/test/java/de/rwth/idsg/steve/Utils.java renamed to src/test/java/de/rwth/idsg/steve/utils/Helpers.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package de.rwth.idsg.steve;
1+
package de.rwth.idsg.steve.utils;
22

33
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
44
import org.apache.cxf.ws.addressing.WSAddressingFeature;
@@ -12,7 +12,7 @@
1212
* @author Andreas Heuvels <andreas.heuvels@rwth-aachen.de>
1313
* @since 06.04.18
1414
*/
15-
public class Utils {
15+
public class Helpers {
1616

1717
public static String getRandomString() {
1818
return UUID.randomUUID().toString();

src/test/java/de/rwth/idsg/steve/OcppJsonChargePoint.java renamed to src/test/java/de/rwth/idsg/steve/utils/OcppJsonChargePoint.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
package de.rwth.idsg.steve;
1+
package de.rwth.idsg.steve.utils;
22

33
import com.fasterxml.jackson.core.JsonParser;
44
import com.fasterxml.jackson.core.TreeNode;
55
import com.fasterxml.jackson.databind.JsonNode;
66
import com.fasterxml.jackson.databind.ObjectMapper;
7+
import de.rwth.idsg.steve.SteveException;
78
import de.rwth.idsg.steve.ocpp.OcppVersion;
89
import de.rwth.idsg.steve.ocpp.RequestType;
910
import de.rwth.idsg.steve.ocpp.ResponseType;
@@ -54,7 +55,7 @@ public class OcppJsonChargePoint {
5455
private CountDownLatch receivedResponsesSignal;
5556
private Session session;
5657

57-
OcppJsonChargePoint(OcppVersion version, String chargeBoxId, String pathPrefix) {
58+
public OcppJsonChargePoint(OcppVersion version, String chargeBoxId, String pathPrefix) {
5859
this.version = version;
5960
this.chargeBoxId = chargeBoxId;
6061
this.connectionPath = pathPrefix + chargeBoxId;
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package de.rwth.idsg.steve.utils;
2+
3+
import java.util.concurrent.CountDownLatch;
4+
import java.util.concurrent.ExecutorService;
5+
import java.util.concurrent.Executors;
6+
7+
/**
8+
* @author Sevket Goekay <goekay@dbis.rwth-aachen.de>
9+
* @since 18.04.2018
10+
*/
11+
public class StressTester {
12+
13+
private final int threadCount;
14+
private final int perThreadRepeatCount;
15+
private final ExecutorService executorService;
16+
17+
public StressTester(int threadCount, int perThreadRepeatCount) {
18+
this.threadCount = threadCount;
19+
this.perThreadRepeatCount = perThreadRepeatCount;
20+
this.executorService = Executors.newCachedThreadPool();
21+
}
22+
23+
public void test(Runnable action) throws InterruptedException {
24+
final CountDownLatch doneSignal = new CountDownLatch(threadCount);
25+
26+
for (int i = 0; i < threadCount; i++) {
27+
executorService.execute(() -> {
28+
try {
29+
for (int j = 0; j < perThreadRepeatCount; j++) {
30+
action.run();
31+
}
32+
} finally {
33+
doneSignal.countDown();
34+
}
35+
});
36+
}
37+
38+
doneSignal.await();
39+
}
40+
41+
public void shutDown() {
42+
executorService.shutdown();
43+
}
44+
}

src/test/java/de/rwth/idsg/steve/__DatabasePreparer__.java renamed to src/test/java/de/rwth/idsg/steve/utils/__DatabasePreparer__.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package de.rwth.idsg.steve;
1+
package de.rwth.idsg.steve.utils;
22

33
import com.google.common.collect.Sets;
44
import de.rwth.idsg.steve.config.BeanConfiguration;

0 commit comments

Comments
 (0)