Skip to content

Commit 5555363

Browse files
committed
For story TG-1: Implemented Server Status notification feature.
1 parent 36ccbc5 commit 5555363

File tree

5 files changed

+42
-8
lines changed

5 files changed

+42
-8
lines changed

ocpp-v1_6-test/src/main/java/eu/chargetime/ocpp/test/FakeCentralSystem.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,13 @@ public StartTransactionConfirmation handleStartTransactionRequest(int sessionInd
114114
confirmation.setIdTagInfo(tagInfo);
115115
return confirmation;
116116
}
117+
118+
@Override
119+
public StatusNotificationConfirmation handleStatusNotificationRequest(int sessionIndex, StatusNotificationRequest request) {
120+
receivedRequest = request;
121+
StatusNotificationConfirmation confirmation = new StatusNotificationConfirmation();
122+
return confirmation;
123+
}
117124
}));
118125
server.open("localhost", 8887, new ServerEvents() {
119126
@Override
@@ -260,4 +267,8 @@ public boolean hasReceivedResetConfirmation(String status) {
260267
public boolean hasHandledStartTransactionRequest() {
261268
return receivedRequest instanceof StartTransactionRequest;
262269
}
270+
271+
public boolean hasHandledStatusNotificationRequest() {
272+
return receivedRequest instanceof StatusNotificationRequest;
273+
}
263274
}

ocpp-v1_6-test/src/test/groovy/eu/chargetime/ocpp/test/core/StatusNotification.groovy renamed to ocpp-v1_6-test/src/test/groovy/eu/chargetime/ocpp/test/core/StatusNotificationSpec.groovy

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package eu.chargetime.ocpp.test.core
22

3+
import eu.chargetime.ocpp.test.FakeCentralSystem
34
import eu.chargetime.ocpp.test.FakeChargePoint
4-
import eu.chargetime.ocpp.test.OldFakeCentralSystem
55
import spock.lang.Shared
66
import spock.lang.Specification
77
import spock.util.concurrent.PollingConditions
88

9-
class StatusNotification extends Specification {
9+
class StatusNotificationSpec extends Specification {
1010
@Shared
11-
OldFakeCentralSystem centralSystem = OldFakeCentralSystem.getInstance();
11+
FakeCentralSystem centralSystem = FakeCentralSystem.getInstance();
1212
@Shared
1313
FakeChargePoint chargePoint = new FakeChargePoint();
1414

@@ -32,12 +32,9 @@ class StatusNotification extends Specification {
3232

3333
then:
3434
conditions.eventually {
35-
assert centralSystem.hasReceivedStatusNotificationRequest();
35+
assert centralSystem.hasHandledStatusNotificationRequest();
3636
}
3737

38-
when:
39-
centralSystem.sendStatusNotificationConfirmation();
40-
4138
then:
4239
conditions.eventually {
4340
assert chargePoint.hasReceivedStatusNotificationConfirmation();

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/feature/profile/ServerCoreEventHandler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public interface ServerCoreEventHandler {
3232
DataTransferConfirmation handleDataTransferRequest(int sessionIndex, DataTransferRequest request);
3333
HeartbeatConfirmation handleHeartbeatRequest(int sessionIndex, HeartbeatRequest request);
3434
MeterValuesConfirmation handleMeterValuesRequest(int sessionIndex, MeterValuesRequest request);
35-
3635
StartTransactionConfirmation handleStartTransactionRequest(int sessionIndex, StartTransactionRequest request);
36+
37+
StatusNotificationConfirmation handleStatusNotificationRequest(int sessionIndex, StatusNotificationRequest request);
3738
}

ocpp-v1_6/src/main/java/eu/chargetime/ocpp/feature/profile/ServerCoreProfile.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ public ServerCoreProfile(ServerCoreEventHandler handler) {
5353
features.add(new RemoteStopTransactionFeature(this));
5454
features.add(new ResetFeature(this));
5555
features.add(new StartTransactionFeature(this));
56+
features.add(new StatusNotificationFeature(this));
5657
}
5758

5859
@Override
@@ -76,6 +77,8 @@ public Confirmation handleRequest(int sessionIndex, Request request) {
7677
result = handler.handleMeterValuesRequest(sessionIndex, (MeterValuesRequest) request);
7778
} else if (request instanceof StartTransactionRequest) {
7879
result = handler.handleStartTransactionRequest(sessionIndex, (StartTransactionRequest) request);
80+
} else if (request instanceof StatusNotificationRequest) {
81+
result = handler.handleStatusNotificationRequest(sessionIndex, (StatusNotificationRequest) request);
7982
}
8083

8184
return result;

ocpp-v1_6/src/test/java/eu/chargetime/ocpp/feature/profile/test/ServerCoreProfileTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,28 @@ public void handleRequest_aStartTransactionRequest_callsHandleStartTransactionRe
246246
verify(handler, times(1)).handleStartTransactionRequest(eq(sessionId), eq(request));
247247
}
248248

249+
@Test
250+
public void getFeatureList_containsStatusNotificationFeature() {
251+
// When
252+
Feature[] features = core.getFeatureList();
253+
254+
// Then
255+
assertThat(findFeature(features, "StatusNotification"), is(instanceOf(StatusNotificationFeature.class)));
256+
}
257+
258+
@Test
259+
public void handleRequest_aStatusNotificationRequest_callsHandleStatusNotificationRequest() {
260+
// Given
261+
StatusNotificationRequest request = new StatusNotificationRequest();
262+
int sessionId = 42;
263+
264+
// When
265+
core.handleRequest(sessionId, request);
266+
267+
// Then
268+
verify(handler, times(1)).handleStatusNotificationRequest(eq(sessionId), eq(request));
269+
}
270+
249271
private Feature findFeature(Feature[] features, String action) {
250272
Feature output = null;
251273
for (Feature feature : features) {

0 commit comments

Comments
 (0)