Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

0.5 cleanup spec added to json tests #55

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
ecc8a67
Implementation fixed accroding to comments from Thomas Volden:
Apr 17, 2018
1fd0d3d
Javadoc added for WSS related methods and classes
Apr 17, 2018
e1f0a48
@Overide annotations fixed
Apr 17, 2018
dbd7ad7
Merge branch '0.5_cleanup'
Apr 17, 2018
bc8437c
Merge remote-tracking branch 'upstream/master'
Apr 17, 2018
ef0dcf1
Merge branch '0.5_test_coverage_for_utilities'
eupakhomov Apr 17, 2018
26fe7b2
Cleanup spec added to JSON tests
eupakhomov Apr 17, 2018
60209c5
WebSocketListener: refactored to provide more reliable shutdown
Apr 18, 2018
971bff7
Merge remote-tracking branch 'upstream/master' into 0.5_cleanup_spec_…
Apr 18, 2018
74d16e5
Timeout for server shutdown increased (so far just to test if it will…
Apr 18, 2018
70a392a
Base test class made abstract
Apr 18, 2018
5edd89e
Port for test server changed to check travis server for hanging conne…
Apr 18, 2018
eb54edc
Ports for JSON integration tests changed for both server and client
Apr 18, 2018
d711dba
Ports are reverted back
Apr 18, 2018
05d3d38
To debug if server socket doesn't close at all or it's just slow
eupakhomov Apr 18, 2018
5e78a9e
Same but waiting before starting test
eupakhomov Apr 18, 2018
bd3e619
Thread pause placed correctly for debugging purposes
eupakhomov Apr 18, 2018
5f36176
Pause before connecting from client side
eupakhomov Apr 18, 2018
ea4e527
Try to revert usage of TIME_WAIT connections
eupakhomov Apr 18, 2018
864d3ad
JSONConfiguration added to API to be able to provide custom set of fe…
eupakhomov Apr 19, 2018
2553100
JSONConfiguration added to API to be able to provide custom set of fe…
eupakhomov Apr 19, 2018
bd1a018
SOAP integration tests are refactored
eupakhomov Apr 21, 2018
4ece94f
`reuseAddr` flag set by default to `true` for the server
eupakhomov Apr 21, 2018
6790105
Master merged
eupakhomov Apr 22, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,7 @@ of this software and associated documentation files (the "Software"), to deal
SOFTWARE.
*/

import eu.chargetime.ocpp.IServerAPI;
import eu.chargetime.ocpp.JSONServer;
import eu.chargetime.ocpp.PropertyConstraintException;
import eu.chargetime.ocpp.SOAPServer;
import eu.chargetime.ocpp.*;
import eu.chargetime.ocpp.feature.profile.*;
import eu.chargetime.ocpp.model.Request;
import eu.chargetime.ocpp.model.core.*;
Expand All @@ -44,10 +41,14 @@ of this software and associated documentation files (the "Software"), to deal
import eu.chargetime.ocpp.model.smartcharging.SetChargingProfileConfirmation;
import eu.chargetime.ocpp.model.smartcharging.SetChargingProfileRequest;
import eu.chargetime.ocpp.test.FakeCentral.serverType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Calendar;

public class FakeCentralSystem {
private static final Logger logger = LoggerFactory.getLogger(FakeCentralSystem.class);

private IServerAPI server;

private DummyHandlers dummyHandlers;
Expand All @@ -59,7 +60,10 @@ public class FakeCentralSystem {
ServerCoreProfile serverCoreProfile = new ServerCoreProfile(dummyHandlers.createServerCoreEventHandler());

if (type == serverType.JSON) {
server = new JSONServer(serverCoreProfile);
JSONConfiguration configuration =
JSONConfiguration.get()
.setParameter(JSONConfiguration.REUSE_ADDR_PARAMETER, true);
server = new JSONServer(serverCoreProfile, configuration);
} else {
server = new SOAPServer(serverCoreProfile);
}
Expand All @@ -85,6 +89,10 @@ private void initializeServer() {
server.addFeatureProfile(serverReservationProfile);
}

public boolean isClosed() {
return server.isClosed();
}

public boolean connected() {
return dummyHandlers.getCurrentIdentifier() != null;
}
Expand All @@ -94,19 +102,22 @@ public void clientLost() {
}

public void started() throws Exception {

if (!isStarted) {
int port = 8890;
if (server instanceof JSONServer)
if (server instanceof JSONServer) {
port = 8887;
}

server.open("127.0.0.1", port, dummyHandlers.generateServerEventsHandler());
logger.info("Server started on port: {}", port);
isStarted = true;
}
}

public void stopped() {
server.close();
logger.info("Server stopped");
isStarted = false;
}

public boolean hasHandledAuthorizeRequest() {
Expand Down Expand Up @@ -347,6 +358,10 @@ public void rigNextRequestToFail() {
dummyHandlers.setRiggedToFail(true);
}

public void clearRiggedToFailFlag() {
dummyHandlers.setRiggedToFail(false);
}

public void sendTriggerMessage(TriggerMessageRequestType type, Integer connectorId) throws Exception {
TriggerMessageRequest request = new TriggerMessageRequest(type);
try {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package eu.chargetime.ocpp.test.base.json

import eu.chargetime.ocpp.test.FakeCentral
import eu.chargetime.ocpp.test.FakeCentralSystem
import eu.chargetime.ocpp.test.FakeChargePoint
import spock.lang.Shared
import spock.lang.Specification
import spock.util.concurrent.PollingConditions

abstract class JSONBaseSpec extends Specification {
@Shared
FakeCentralSystem centralSystem = FakeCentral.getSystem(FakeCentral.serverType.JSON)
@Shared
FakeChargePoint chargePoint = new FakeChargePoint()

def setupSpec() {
def conditions = new PollingConditions(timeout: 10)

// When a Central System is running
centralSystem.started()

conditions.eventually {
assert !centralSystem.isClosed()
}
}

def setup() {
Thread.sleep(100);

chargePoint.connect()
}

def cleanup() {
chargePoint.disconnect()
centralSystem.clearRiggedToFailFlag()
}

def cleanupSpec() {
def conditions = new PollingConditions(timeout: 10)

centralSystem.stopped()

conditions.eventually {
assert centralSystem.isClosed()
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package eu.chargetime.ocpp.test.base.soap

import eu.chargetime.ocpp.test.FakeCentral
import eu.chargetime.ocpp.test.FakeCentralSystem
import eu.chargetime.ocpp.test.FakeChargePoint
import spock.lang.Shared
import spock.lang.Specification


abstract class SOAPBaseSpec extends Specification
{
@Shared
FakeCentralSystem centralSystem = new FakeCentralSystem(FakeCentral.serverType.SOAP)
@Shared
FakeChargePoint chargePoint = new FakeChargePoint(FakeChargePoint.clientType.SOAP)

def setupSpec() {
// When a Central System is running
centralSystem.started()
}

def setup() {
chargePoint.connect()
}

def cleanup() {
chargePoint.disconnect()
}

def cleanupSpec() {
centralSystem.stopped()
}
}
Original file line number Diff line number Diff line change
@@ -1,31 +1,10 @@
package eu.chargetime.ocpp.test.core.json

import eu.chargetime.ocpp.OccurenceConstraintException
import eu.chargetime.ocpp.test.FakeCentral
import eu.chargetime.ocpp.test.FakeCentralSystem
import eu.chargetime.ocpp.test.FakeChargePoint
import spock.lang.Shared
import spock.lang.Specification
import eu.chargetime.ocpp.test.base.json.JSONBaseSpec
import spock.util.concurrent.PollingConditions

class JSONAuthorizeSpec extends Specification {
@Shared
FakeCentralSystem centralSystem = FakeCentral.getSystem(FakeCentral.serverType.JSON)
@Shared
FakeChargePoint chargePoint = new FakeChargePoint()

def setupSpec() {
// When a Central System is running
centralSystem.started()
}

def setup() {
chargePoint.connect()
}

def cleanup() {
chargePoint.disconnect()
}
class JSONAuthorizeSpec extends JSONBaseSpec {

def "Charge point sends Authorize request and receives a response"() {
def conditions = new PollingConditions(timeout: 1)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,34 +1,14 @@
package eu.chargetime.ocpp.test.core.json

import eu.chargetime.ocpp.test.FakeCentral
import eu.chargetime.ocpp.test.FakeCentralSystem
import eu.chargetime.ocpp.test.FakeChargePoint
import spock.lang.Shared
import spock.lang.Specification
import eu.chargetime.ocpp.test.base.json.JSONBaseSpec
import spock.util.concurrent.PollingConditions

class JSONBootNotificationSpec extends Specification
class JSONBootNotificationSpec extends JSONBaseSpec
{
@Shared
FakeCentralSystem centralSystem = FakeCentral.getSystem(FakeCentral.serverType.JSON)
@Shared
FakeChargePoint chargePoint = new FakeChargePoint()

def setupSpec() {
// When a Central System is running
centralSystem.started()
}

def setup() {
chargePoint.connect()
}

def cleanup() {
chargePoint.disconnect()
}

def "Charge point sends Boot Notification and receives a response"() {
def conditions = new PollingConditions(timeout: 1)

when:
chargePoint.sendBootNotification("VendorX", "SingleSocketCharger")

Expand Down
Original file line number Diff line number Diff line change
@@ -1,32 +1,11 @@
package eu.chargetime.ocpp.test.core.json

import eu.chargetime.ocpp.model.core.AvailabilityType
import eu.chargetime.ocpp.test.FakeCentral
import eu.chargetime.ocpp.test.FakeCentralSystem
import eu.chargetime.ocpp.test.FakeChargePoint
import spock.lang.Shared
import spock.lang.Specification
import eu.chargetime.ocpp.test.base.json.JSONBaseSpec
import spock.util.concurrent.PollingConditions

class JSONChangeAvailabilitySpec extends Specification
class JSONChangeAvailabilitySpec extends JSONBaseSpec
{
@Shared
FakeCentralSystem centralSystem = FakeCentral.getSystem(FakeCentral.serverType.JSON)
@Shared
FakeChargePoint chargePoint = new FakeChargePoint()

def setupSpec() {
// When a Central System is running
centralSystem.started()
}

def setup() {
chargePoint.connect()
}

def cleanup() {
chargePoint.disconnect()
}

def "Central System sends a ChangeAvailability request and receives a response"() {
def conditions = new PollingConditions(timeout: 1)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,37 +1,16 @@
package eu.chargetime.ocpp.test.core.json

import eu.chargetime.ocpp.test.FakeCentral
import eu.chargetime.ocpp.test.FakeCentralSystem
import eu.chargetime.ocpp.test.FakeChargePoint
import spock.lang.Shared
import spock.lang.Specification
import eu.chargetime.ocpp.test.base.json.JSONBaseSpec
import spock.util.concurrent.PollingConditions

class JSONChangeConfigurationSpec extends Specification
class JSONChangeConfigurationSpec extends JSONBaseSpec
{
@Shared
FakeCentralSystem centralSystem = FakeCentral.getSystem(FakeCentral.serverType.JSON)
@Shared
FakeChargePoint chargePoint = new FakeChargePoint()

def setupSpec() {
// When a Central System is running
centralSystem.started()
}

def setup() {
chargePoint.connect()
}

def cleanup() {
chargePoint.disconnect()
}

def "Central System sends a ChangeConfiguration request and receives a response"() {
def conditions = new PollingConditions(timeout: 10)
def conditions = new PollingConditions(timeout: 1)

given:
conditions.eventually {
assert centralSystem.connected()
assert !centralSystem.isClosed()
}
when:
centralSystem.sendChangeConfigurationRequest("key", "value")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,32 +1,10 @@
package eu.chargetime.ocpp.test.core.json

import eu.chargetime.ocpp.test.FakeCentral
import eu.chargetime.ocpp.test.FakeCentralSystem
import eu.chargetime.ocpp.test.FakeChargePoint
import spock.lang.Shared
import spock.lang.Specification
import eu.chargetime.ocpp.test.base.json.JSONBaseSpec
import spock.util.concurrent.PollingConditions

class JSONClearCacheSpec extends Specification
class JSONClearCacheSpec extends JSONBaseSpec
{
@Shared
FakeCentralSystem centralSystem = FakeCentral.getSystem(FakeCentral.serverType.JSON)
@Shared
FakeChargePoint chargePoint = new FakeChargePoint()

def setupSpec() {
// When a Central System is running
centralSystem.started()
}

def setup() {
chargePoint.connect()
}

def cleanup() {
chargePoint.disconnect()
}

def "Central System sends a ClearCache request and receives a response"() {
def conditions = new PollingConditions(timeout: 1)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,32 +1,10 @@
package eu.chargetime.ocpp.test.core.json

import eu.chargetime.ocpp.test.FakeCentral
import eu.chargetime.ocpp.test.FakeCentralSystem
import eu.chargetime.ocpp.test.FakeChargePoint
import spock.lang.Shared
import spock.lang.Specification
import eu.chargetime.ocpp.test.base.json.JSONBaseSpec
import spock.util.concurrent.PollingConditions

class JSONDataTransferSpec extends Specification
class JSONDataTransferSpec extends JSONBaseSpec
{
@Shared
FakeCentralSystem centralSystem = FakeCentral.getSystem(FakeCentral.serverType.JSON)
@Shared
FakeChargePoint chargePoint = new FakeChargePoint()

def setupSpec() {
// When a Central System is running
centralSystem.started()
}

def setup() {
chargePoint.connect()
}

def cleanup() {
chargePoint.disconnect()
}

def "Central System sends a DataTransfer request and receives a response"() {
def conditions = new PollingConditions(timeout: 1)

Expand Down
Loading