From: Jérôme Benoit Date: Thu, 14 Aug 2025 20:26:22 +0000 (+0200) Subject: fix: randomInt() usage and its boundaries X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=96df231901db546358353767252e63f4f4e71380;p=e-mobility-charging-stations-simulator.git fix: randomInt() usage and its boundaries Signed-off-by: Jérôme Benoit --- diff --git a/src/charging-station/AutomaticTransactionGenerator.ts b/src/charging-station/AutomaticTransactionGenerator.ts index 61be7d76..ebe543ae 100644 --- a/src/charging-station/AutomaticTransactionGenerator.ts +++ b/src/charging-station/AutomaticTransactionGenerator.ts @@ -300,7 +300,7 @@ export class AutomaticTransactionGenerator { .minDelayBetweenTwoTransactions, // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.chargingStation.getAutomaticTransactionGeneratorConfiguration()! - .maxDelayBetweenTwoTransactions + .maxDelayBetweenTwoTransactions + 1 ) ) logger.info(`${this.logPrefix(connectorId)} waiting for ${formatDurationMilliSeconds(wait)}`) @@ -322,7 +322,7 @@ export class AutomaticTransactionGenerator { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.chargingStation.getAutomaticTransactionGeneratorConfiguration()!.minDuration, // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - this.chargingStation.getAutomaticTransactionGeneratorConfiguration()!.maxDuration + this.chargingStation.getAutomaticTransactionGeneratorConfiguration()!.maxDuration + 1 ) ) logger.info( diff --git a/src/charging-station/ChargingStation.ts b/src/charging-station/ChargingStation.ts index 7b6281dd..5b93b0bb 100644 --- a/src/charging-station/ChargingStation.ts +++ b/src/charging-station/ChargingStation.ts @@ -1625,7 +1625,7 @@ export class ChargingStation extends EventEmitter { } const templateConnectorId = connectorId > 0 && stationTemplate.randomConnectors === true - ? randomInt(1, templateMaxAvailableConnectors) + ? randomInt(1, templateMaxAvailableConnectors + 1) : connectorId const connectorStatus = stationTemplate.Connectors[templateConnectorId] checkStationInfoConnectorStatus( diff --git a/src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts b/src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts index 7c0afb28..9fbf6a69 100644 --- a/src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts +++ b/src/charging-station/ocpp/1.6/OCPP16IncomingRequestService.ts @@ -1669,7 +1669,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { chargingStation.stationInfo?.firmwareUpgrade?.failureStatus === OCPP16FirmwareStatus.DownloadFailed ) { - await sleep(secondsToMilliseconds(randomInt(minDelay, maxDelay))) + await sleep(secondsToMilliseconds(randomInt(minDelay, maxDelay + 1))) await chargingStation.ocppRequestService.requestHandler< OCPP16FirmwareStatusNotificationRequest, OCPP16FirmwareStatusNotificationResponse @@ -1680,7 +1680,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { chargingStation.stationInfo.firmwareUpgrade.failureStatus return } - await sleep(secondsToMilliseconds(randomInt(minDelay, maxDelay))) + await sleep(secondsToMilliseconds(randomInt(minDelay, maxDelay + 1))) await chargingStation.ocppRequestService.requestHandler< OCPP16FirmwareStatusNotificationRequest, OCPP16FirmwareStatusNotificationResponse @@ -1736,7 +1736,8 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { transactionsStarted = false } } while (transactionsStarted) - !wasTransactionsStarted && (await sleep(secondsToMilliseconds(randomInt(minDelay, maxDelay)))) + !wasTransactionsStarted && + (await sleep(secondsToMilliseconds(randomInt(minDelay, maxDelay + 1)))) if (!checkChargingStationState(chargingStation, chargingStation.logPrefix())) { return } @@ -1752,7 +1753,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { chargingStation.stationInfo?.firmwareUpgrade?.failureStatus === OCPP16FirmwareStatus.InstallationFailed ) { - await sleep(secondsToMilliseconds(randomInt(minDelay, maxDelay))) + await sleep(secondsToMilliseconds(randomInt(minDelay, maxDelay + 1))) await chargingStation.ocppRequestService.requestHandler< OCPP16FirmwareStatusNotificationRequest, OCPP16FirmwareStatusNotificationResponse @@ -1764,7 +1765,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService { return } if (chargingStation.stationInfo?.firmwareUpgrade?.reset === true) { - await sleep(secondsToMilliseconds(randomInt(minDelay, maxDelay))) + await sleep(secondsToMilliseconds(randomInt(minDelay, maxDelay + 1))) await chargingStation.reset(OCPP16StopTransactionReason.REBOOT) } } diff --git a/tests/utils/AsyncLock.test.ts b/tests/utils/AsyncLock.test.ts index 3af1c5cb..dcdd8b0a 100644 --- a/tests/utils/AsyncLock.test.ts +++ b/tests/utils/AsyncLock.test.ts @@ -28,7 +28,7 @@ await describe('AsyncLock test suite', async () => { let count = 0 const asyncFn = async () => { await new Promise(resolve => { - setTimeout(resolve, randomInt(1, 100)) + setTimeout(resolve, randomInt(1, 101)) }) executed.push(++count) } diff --git a/tests/utils/Utils.test.ts b/tests/utils/Utils.test.ts index ec467912..30a387be 100644 --- a/tests/utils/Utils.test.ts +++ b/tests/utils/Utils.test.ts @@ -102,7 +102,7 @@ await describe('Utils test suite', async () => { expect(convertToInt(undefined)).toBe(0) expect(convertToInt(null)).toBe(0) expect(convertToInt(0)).toBe(0) - const randomInteger = randomInt(Constants.MAX_RANDOM_INTEGER) + const randomInteger = randomInt(Constants.MAX_RANDOM_INTEGER + 1) expect(convertToInt(randomInteger)).toEqual(randomInteger) expect(convertToInt('-1')).toBe(-1) expect(convertToInt('1')).toBe(1)