Search in sources :

Example 1 with StopTransactionRequest

use of ocpp.cs._2015._10.StopTransactionRequest in project EVSUPERVISION by EnergyTIC.

the class OperationalTestSoapOCPP16 method testInTransactionStatusOfIdTag.

@Test
public void testInTransactionStatusOfIdTag() {
    CentralSystemService client = getForOcpp16(path);
    StartTransactionResponse start = client.startTransaction(new StartTransactionRequest().withConnectorId(2).withIdTag(REGISTERED_OCPP_TAG).withTimestamp(DateTime.now()).withMeterStart(0), REGISTERED_CHARGE_BOX_ID);
    Assertions.assertNotNull(start);
    Assertions.assertTrue(start.getTransactionId() > 0);
    Assertions.assertTrue(__DatabasePreparer__.getOcppTagRecord(REGISTERED_OCPP_TAG).getInTransaction());
    StopTransactionResponse stop = client.stopTransaction(new StopTransactionRequest().withTransactionId(start.getTransactionId()).withTimestamp(DateTime.now()).withIdTag(REGISTERED_OCPP_TAG).withMeterStop(30), REGISTERED_CHARGE_BOX_ID);
    Assertions.assertNotNull(stop);
    Assertions.assertFalse(__DatabasePreparer__.getOcppTagRecord(REGISTERED_OCPP_TAG).getInTransaction());
}
Also used : StopTransactionRequest(ocpp.cs._2015._10.StopTransactionRequest) StartTransactionRequest(ocpp.cs._2015._10.StartTransactionRequest) StopTransactionResponse(ocpp.cs._2015._10.StopTransactionResponse) CentralSystemService(ocpp.cs._2015._10.CentralSystemService) StartTransactionResponse(ocpp.cs._2015._10.StartTransactionResponse) Test(org.junit.jupiter.api.Test)

Example 2 with StopTransactionRequest

use of ocpp.cs._2015._10.StopTransactionRequest in project EVSUPERVISION by EnergyTIC.

the class OperationalTestSoapOCPP16 method testBody.

private void testBody(List<MeterValue> meterValues, List<MeterValue> transactionData) {
    final int usedConnectorID = 1;
    CentralSystemService client = getForOcpp16(path);
    initStationWithBootNotification(client);
    initConnectorsWithStatusNotification(client);
    // heartbeat
    HeartbeatResponse heartbeat = client.heartbeat(new HeartbeatRequest(), REGISTERED_CHARGE_BOX_ID);
    Assertions.assertNotNull(heartbeat);
    // Auth
    AuthorizeResponse auth = client.authorize(new AuthorizeRequest().withIdTag(REGISTERED_OCPP_TAG), REGISTERED_CHARGE_BOX_ID);
    // Simple request, not much done here
    Assertions.assertNotNull(auth);
    Assertions.assertEquals(AuthorizationStatus.ACCEPTED, auth.getIdTagInfo().getStatus());
    // startTransaction
    DateTime startTimeStamp = DateTime.now();
    StartTransactionResponse start = client.startTransaction(new StartTransactionRequest().withConnectorId(usedConnectorID).withIdTag(REGISTERED_OCPP_TAG).withTimestamp(startTimeStamp).withMeterStart(0), REGISTERED_CHARGE_BOX_ID);
    Assertions.assertNotNull(start);
    int transactionID = start.getTransactionId();
    List<TransactionRecord> allTransactions = __DatabasePreparer__.getTransactionRecords();
    Assertions.assertEquals(1, allTransactions.size());
    {
        TransactionRecord t = allTransactions.get(0);
        Assertions.assertEquals(startTimeStamp, t.getStartTimestamp());
        Assertions.assertEquals(0, Integer.parseInt(t.getStartValue()));
        Assertions.assertNull(t.getStopTimestamp());
        Assertions.assertNull(t.getStopReason());
        Assertions.assertNull(t.getStopValue());
    }
    // status
    StatusNotificationResponse statusStart = client.statusNotification(new StatusNotificationRequest().withStatus(ChargePointStatus.CHARGING).withErrorCode(ChargePointErrorCode.NO_ERROR).withConnectorId(0).withTimestamp(DateTime.now()), REGISTERED_CHARGE_BOX_ID);
    Assertions.assertNotNull(statusStart);
    // send meterValues
    if (meterValues != null) {
        MeterValuesResponse meter = client.meterValues(new MeterValuesRequest().withConnectorId(usedConnectorID).withTransactionId(transactionID).withMeterValue(meterValues), REGISTERED_CHARGE_BOX_ID);
        Assertions.assertNotNull(meter);
        checkMeterValues(meterValues, transactionID);
    }
    // stopTransaction
    DateTime stopTimeStamp = DateTime.now();
    int stopValue = 30;
    StopTransactionResponse stop = client.stopTransaction(new StopTransactionRequest().withTransactionId(transactionID).withTransactionData(transactionData).withTimestamp(stopTimeStamp).withIdTag(REGISTERED_OCPP_TAG).withMeterStop(stopValue), REGISTERED_CHARGE_BOX_ID);
    {
        Assertions.assertNotNull(stop);
        List<TransactionRecord> transactionsStop = __DatabasePreparer__.getTransactionRecords();
        Assertions.assertEquals(1, transactionsStop.size());
        TransactionRecord t = transactionsStop.get(0);
        Assertions.assertEquals(stopTimeStamp, t.getStopTimestamp());
        Assertions.assertEquals(stopValue, Integer.parseInt(t.getStopValue()));
        if (transactionData != null) {
            checkMeterValues(transactionData, transactionID);
        }
    }
    // status
    StatusNotificationResponse statusStop = client.statusNotification(new StatusNotificationRequest().withStatus(ChargePointStatus.AVAILABLE).withErrorCode(ChargePointErrorCode.NO_ERROR).withConnectorId(usedConnectorID).withTimestamp(DateTime.now()), REGISTERED_CHARGE_BOX_ID);
    Assertions.assertNotNull(statusStop);
}
Also used : HeartbeatResponse(ocpp.cs._2015._10.HeartbeatResponse) MeterValuesResponse(ocpp.cs._2015._10.MeterValuesResponse) StopTransactionResponse(ocpp.cs._2015._10.StopTransactionResponse) AuthorizeRequest(ocpp.cs._2015._10.AuthorizeRequest) MeterValuesRequest(ocpp.cs._2015._10.MeterValuesRequest) CentralSystemService(ocpp.cs._2015._10.CentralSystemService) StatusNotificationResponse(ocpp.cs._2015._10.StatusNotificationResponse) ChargePoint(de.rwth.idsg.steve.repository.dto.ChargePoint) DateTime(org.joda.time.DateTime) HeartbeatRequest(ocpp.cs._2015._10.HeartbeatRequest) AuthorizeResponse(ocpp.cs._2015._10.AuthorizeResponse) StopTransactionRequest(ocpp.cs._2015._10.StopTransactionRequest) StartTransactionRequest(ocpp.cs._2015._10.StartTransactionRequest) StartTransactionResponse(ocpp.cs._2015._10.StartTransactionResponse) StatusNotificationRequest(ocpp.cs._2015._10.StatusNotificationRequest) List(java.util.List) TransactionRecord(jooq.steve.db.tables.records.TransactionRecord)

Example 3 with StopTransactionRequest

use of ocpp.cs._2015._10.StopTransactionRequest in project EVSUPERVISION by EnergyTIC.

the class StressTestSoapOCPP16 method attackInternal.

protected void attackInternal() throws Exception {
    final List<String> idTags = getRandomStrings(ID_TAG_COUNT);
    final List<String> chargeBoxIds = getRandomStrings(CHARGE_BOX_COUNT);
    StressTester.Runnable runnable = new StressTester.Runnable() {

        private final ThreadLocal<String> threadLocalChargeBoxId = new ThreadLocal<>();

        @Override
        public void beforeRepeat() {
            CentralSystemService client = getForOcpp16(path);
            ThreadLocalRandom localRandom = ThreadLocalRandom.current();
            threadLocalChargeBoxId.set(chargeBoxIds.get(localRandom.nextInt(chargeBoxIds.size())));
            String chargeBoxId = threadLocalChargeBoxId.get();
            // to insert threadLocalChargeBoxId into db
            BootNotificationResponse boot = client.bootNotification(new BootNotificationRequest().withChargePointVendor(getRandomString()).withChargePointModel(getRandomString()), chargeBoxId);
            Assertions.assertEquals(RegistrationStatus.ACCEPTED, boot.getStatus());
        }

        @Override
        public void toRepeat() {
            CentralSystemService client = getForOcpp16(path);
            ThreadLocalRandom localRandom = ThreadLocalRandom.current();
            String chargeBoxId = threadLocalChargeBoxId.get();
            String idTag = idTags.get(localRandom.nextInt(idTags.size()));
            int connectorId = localRandom.nextInt(1, CONNECTOR_COUNT_PER_CHARGE_BOX + 1);
            int transactionStart = localRandom.nextInt(0, Integer.MAX_VALUE);
            int transactionStop = localRandom.nextInt(transactionStart + 1, Integer.MAX_VALUE);
            HeartbeatResponse heartbeat = client.heartbeat(new HeartbeatRequest(), chargeBoxId);
            Assertions.assertNotNull(heartbeat);
            for (int i = 0; i <= CONNECTOR_COUNT_PER_CHARGE_BOX; i++) {
                StatusNotificationResponse status = client.statusNotification(new StatusNotificationRequest().withErrorCode(ChargePointErrorCode.NO_ERROR).withStatus(ChargePointStatus.AVAILABLE).withConnectorId(i).withTimestamp(DateTime.now()), chargeBoxId);
                Assertions.assertNotNull(status);
            }
            AuthorizeResponse auth = client.authorize(new AuthorizeRequest().withIdTag(idTag), chargeBoxId);
            Assertions.assertNotEquals(AuthorizationStatus.ACCEPTED, auth.getIdTagInfo().getStatus());
            StartTransactionResponse start = client.startTransaction(new StartTransactionRequest().withConnectorId(connectorId).withIdTag(idTag).withTimestamp(DateTime.now()).withMeterStart(transactionStart), chargeBoxId);
            Assertions.assertNotNull(start);
            StatusNotificationResponse statusStart = client.statusNotification(new StatusNotificationRequest().withErrorCode(ChargePointErrorCode.NO_ERROR).withStatus(ChargePointStatus.CHARGING).withConnectorId(connectorId).withTimestamp(DateTime.now()), chargeBoxId);
            Assertions.assertNotNull(statusStart);
            MeterValuesResponse meter = client.meterValues(new MeterValuesRequest().withConnectorId(connectorId).withTransactionId(start.getTransactionId()).withMeterValue(getMeterValues(transactionStart, transactionStop)), chargeBoxId);
            Assertions.assertNotNull(meter);
            StopTransactionResponse stop = client.stopTransaction(new StopTransactionRequest().withTransactionId(start.getTransactionId()).withTimestamp(DateTime.now()).withIdTag(idTag).withMeterStop(transactionStop), chargeBoxId);
            Assertions.assertNotNull(stop);
            StatusNotificationResponse statusStop = client.statusNotification(new StatusNotificationRequest().withErrorCode(ChargePointErrorCode.NO_ERROR).withStatus(ChargePointStatus.AVAILABLE).withConnectorId(connectorId).withTimestamp(DateTime.now()), chargeBoxId);
            Assertions.assertNotNull(statusStop);
        }

        @Override
        public void afterRepeat() {
        }
    };
    StressTester tester = new StressTester(THREAD_COUNT, REPEAT_COUNT_PER_THREAD);
    tester.test(runnable);
    tester.shutDown();
}
Also used : HeartbeatResponse(ocpp.cs._2015._10.HeartbeatResponse) MeterValuesResponse(ocpp.cs._2015._10.MeterValuesResponse) StopTransactionResponse(ocpp.cs._2015._10.StopTransactionResponse) AuthorizeRequest(ocpp.cs._2015._10.AuthorizeRequest) MeterValuesRequest(ocpp.cs._2015._10.MeterValuesRequest) CentralSystemService(ocpp.cs._2015._10.CentralSystemService) StatusNotificationResponse(ocpp.cs._2015._10.StatusNotificationResponse) BootNotificationRequest(ocpp.cs._2015._10.BootNotificationRequest) Helpers.getRandomString(de.rwth.idsg.steve.utils.Helpers.getRandomString) StressTester(de.rwth.idsg.steve.utils.StressTester) HeartbeatRequest(ocpp.cs._2015._10.HeartbeatRequest) BootNotificationResponse(ocpp.cs._2015._10.BootNotificationResponse) AuthorizeResponse(ocpp.cs._2015._10.AuthorizeResponse) StopTransactionRequest(ocpp.cs._2015._10.StopTransactionRequest) StartTransactionRequest(ocpp.cs._2015._10.StartTransactionRequest) StartTransactionResponse(ocpp.cs._2015._10.StartTransactionResponse) ThreadLocalRandom(java.util.concurrent.ThreadLocalRandom) StatusNotificationRequest(ocpp.cs._2015._10.StatusNotificationRequest)

Example 4 with StopTransactionRequest

use of ocpp.cs._2015._10.StopTransactionRequest in project steve by RWTH-i5-IDSG.

the class Issue72 method attackInternal.

protected void attackInternal() throws Exception {
    String idTag = __DatabasePreparer__.getRegisteredOcppTag();
    String chargeBoxId = Helpers.getRandomString();
    DateTime startDateTime = DateTime.now();
    DateTime stopDateTime = startDateTime.plusHours(5);
    int connectorId = 2;
    int meterStart = 444;
    int meterStop = 99999;
    BootNotificationResponse boot = getForOcpp16(path).bootNotification(new BootNotificationRequest().withChargePointVendor(getRandomString()).withChargePointModel(getRandomString()), chargeBoxId);
    Assertions.assertEquals(RegistrationStatus.ACCEPTED, boot.getStatus());
    StartTransactionResponse start = getForOcpp16(path).startTransaction(new StartTransactionRequest().withConnectorId(connectorId).withIdTag(idTag).withTimestamp(startDateTime).withMeterStart(meterStart), chargeBoxId);
    Assertions.assertNotNull(start);
    int transactionId = start.getTransactionId();
    StressTester.Runnable runnable = new StressTester.Runnable() {

        private final ThreadLocal<CentralSystemService> threadLocalClient = new ThreadLocal<>();

        @Override
        public void beforeRepeat() {
            threadLocalClient.set(getForOcpp16(path));
        }

        @Override
        public void toRepeat() {
            MeterValuesResponse mvr = threadLocalClient.get().meterValues(new MeterValuesRequest().withConnectorId(connectorId).withTransactionId(transactionId).withMeterValue(new MeterValue().withTimestamp(stopDateTime).withSampledValue(new SampledValue().withValue("555").withUnit(UnitOfMeasure.WH))), chargeBoxId);
            Assertions.assertNotNull(mvr);
            StopTransactionResponse stop = threadLocalClient.get().stopTransaction(new StopTransactionRequest().withTransactionId(transactionId).withTimestamp(stopDateTime).withIdTag(idTag).withMeterStop(meterStop), chargeBoxId);
            Assertions.assertNotNull(stop);
        }

        @Override
        public void afterRepeat() {
        }
    };
    StressTester tester = new StressTester(THREAD_COUNT, REPEAT_COUNT_PER_THREAD);
    tester.test(runnable);
    tester.shutDown();
}
Also used : MeterValuesResponse(ocpp.cs._2015._10.MeterValuesResponse) StopTransactionResponse(ocpp.cs._2015._10.StopTransactionResponse) MeterValuesRequest(ocpp.cs._2015._10.MeterValuesRequest) BootNotificationRequest(ocpp.cs._2015._10.BootNotificationRequest) Helpers.getRandomString(de.rwth.idsg.steve.utils.Helpers.getRandomString) DateTime(org.joda.time.DateTime) StressTester(de.rwth.idsg.steve.utils.StressTester) MeterValue(ocpp.cs._2015._10.MeterValue) SampledValue(ocpp.cs._2015._10.SampledValue) BootNotificationResponse(ocpp.cs._2015._10.BootNotificationResponse) StopTransactionRequest(ocpp.cs._2015._10.StopTransactionRequest) StartTransactionRequest(ocpp.cs._2015._10.StartTransactionRequest) StartTransactionResponse(ocpp.cs._2015._10.StartTransactionResponse)

Example 5 with StopTransactionRequest

use of ocpp.cs._2015._10.StopTransactionRequest in project steve by RWTH-i5-IDSG.

the class OperationalTestSoapOCPP16 method testInTransactionStatusOfIdTag.

@Test
public void testInTransactionStatusOfIdTag() {
    CentralSystemService client = getForOcpp16(path);
    StartTransactionResponse start = client.startTransaction(new StartTransactionRequest().withConnectorId(2).withIdTag(REGISTERED_OCPP_TAG).withTimestamp(DateTime.now()).withMeterStart(0), REGISTERED_CHARGE_BOX_ID);
    Assertions.assertNotNull(start);
    Assertions.assertTrue(start.getTransactionId() > 0);
    Assertions.assertTrue(__DatabasePreparer__.getOcppTagRecord(REGISTERED_OCPP_TAG).getInTransaction());
    StopTransactionResponse stop = client.stopTransaction(new StopTransactionRequest().withTransactionId(start.getTransactionId()).withTimestamp(DateTime.now()).withIdTag(REGISTERED_OCPP_TAG).withMeterStop(30), REGISTERED_CHARGE_BOX_ID);
    Assertions.assertNotNull(stop);
    Assertions.assertFalse(__DatabasePreparer__.getOcppTagRecord(REGISTERED_OCPP_TAG).getInTransaction());
}
Also used : StopTransactionRequest(ocpp.cs._2015._10.StopTransactionRequest) StartTransactionRequest(ocpp.cs._2015._10.StartTransactionRequest) StopTransactionResponse(ocpp.cs._2015._10.StopTransactionResponse) CentralSystemService(ocpp.cs._2015._10.CentralSystemService) StartTransactionResponse(ocpp.cs._2015._10.StartTransactionResponse) Test(org.junit.jupiter.api.Test)

Aggregations

StartTransactionRequest (ocpp.cs._2015._10.StartTransactionRequest)10 StopTransactionRequest (ocpp.cs._2015._10.StopTransactionRequest)10 StopTransactionResponse (ocpp.cs._2015._10.StopTransactionResponse)10 MeterValuesRequest (ocpp.cs._2015._10.MeterValuesRequest)8 StartTransactionResponse (ocpp.cs._2015._10.StartTransactionResponse)8 Helpers.getRandomString (de.rwth.idsg.steve.utils.Helpers.getRandomString)6 StressTester (de.rwth.idsg.steve.utils.StressTester)6 AuthorizeRequest (ocpp.cs._2015._10.AuthorizeRequest)6 BootNotificationRequest (ocpp.cs._2015._10.BootNotificationRequest)6 CentralSystemService (ocpp.cs._2015._10.CentralSystemService)6 HeartbeatRequest (ocpp.cs._2015._10.HeartbeatRequest)6 MeterValuesResponse (ocpp.cs._2015._10.MeterValuesResponse)6 StatusNotificationRequest (ocpp.cs._2015._10.StatusNotificationRequest)6 ThreadLocalRandom (java.util.concurrent.ThreadLocalRandom)4 AuthorizeResponse (ocpp.cs._2015._10.AuthorizeResponse)4 BootNotificationResponse (ocpp.cs._2015._10.BootNotificationResponse)4 HeartbeatResponse (ocpp.cs._2015._10.HeartbeatResponse)4 StatusNotificationResponse (ocpp.cs._2015._10.StatusNotificationResponse)4 DateTime (org.joda.time.DateTime)4 ChargePoint (de.rwth.idsg.steve.repository.dto.ChargePoint)2