From 0de83c3577ea75bad06fd4ef200e73e96e90e29d Mon Sep 17 00:00:00 2001 From: Julien LE GALL <julien.legall@libriciel.coop> Date: Mon, 22 Apr 2024 17:15:21 +0200 Subject: [PATCH] corrections pour correspondre au rebase --- CHANGELOG.md | 1 + class/AbstractWorkerRunner.php | 1 - src/Services/Helios/HeliosReceptionWorker.php | 8 ++--- .../Helios/HeliosReceptionWorkerTest.php | 36 ++++++++++++++++--- 4 files changed, 35 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ecfb2a1a..c2d1459dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ - Permettre de convertir les login/mot de passe de l'identification HTTP de l'ISO-8859-1 vers l'UTF-8 en spécifiant CONVERT_API_LOGINS_FROM_ISO #1071 - Permettre de convertir les login/mot de passe contenus dans le nonce de l'ISO-8859-1 vers l'UTF-8 en spécifiant CONVERT_API_LOGINS_FROM_ISO #1071 - Continuer la récupération des PES depuis le serveur DGFiP après un erreur de téléchargement #1183 +- Enregistrer les fichiers PES à récupérer depuis le serveur DGFiP dans une file Beanstalkd #1129 ## 5.0.37 - 2024-04-03 diff --git a/class/AbstractWorkerRunner.php b/class/AbstractWorkerRunner.php index f993b0f7a..0b1b54995 100644 --- a/class/AbstractWorkerRunner.php +++ b/class/AbstractWorkerRunner.php @@ -97,6 +97,5 @@ class AbstractWorkerRunner $this->s2lowLogger->debug("RecoverableException " . $e->getMessage()); } } - $this->worker->end(); } } diff --git a/src/Services/Helios/HeliosReceptionWorker.php b/src/Services/Helios/HeliosReceptionWorker.php index d1955182f..1950fd898 100644 --- a/src/Services/Helios/HeliosReceptionWorker.php +++ b/src/Services/Helios/HeliosReceptionWorker.php @@ -64,22 +64,20 @@ class HeliosReceptionWorker implements IWorker */ public function work($data) { - $sigtermHandler = SigTermHandler::getInstance(); try { $this->ftpFileGetter->recupOneFile($data); if ($this->workerScript) { $this->workerScript->putJobByClassName(HeliosAnalyseFichierRecuWorker::class, $data); } - if ($sigtermHandler->isSigtermCalled()) { - $this->ftpFileGetter->finTraitement(); - } } catch (FTPFileRetrieveException $e) { // Dans ce cas, on va continuer à traiter les autres fichiers + // Car la RecoverableException reste dans la boucle de traitement du AbstractWorkerRunner $this->s2lowLogger->info("Probleme lors de la recuperation du fichier $data : " . $e->getMessage()); throw new RecoverableException($e->getMessage()); } catch (Exception $e) { + // Dans ce cas, on sort de la boucle de traitement du AbstractWorkerRunner + // car tous les autres types d'Exceptions ne sont pas catchées $this->s2lowLogger->info("Probleme lors de la recuperation du fichier $data : " . $e->getMessage()); - $this->ftpFileGetter->finTraitement(); throw $e; } } diff --git a/tests/Services/Helios/HeliosReceptionWorkerTest.php b/tests/Services/Helios/HeliosReceptionWorkerTest.php index b4d0e6dce..25f8459ec 100644 --- a/tests/Services/Helios/HeliosReceptionWorkerTest.php +++ b/tests/Services/Helios/HeliosReceptionWorkerTest.php @@ -4,11 +4,14 @@ declare(strict_types=1); namespace S2low\Tests\Services\Helios; +use Exception; +use RuntimeException; use PHPUnit\Framework\TestCase; use S2low\Services\Helios\DGFiPConnection\FTPFileRetrieveException; use S2low\Services\Helios\FTPHeliosReceiver; use S2low\Services\Helios\HeliosReceptionWorker; use S2lowLegacy\Class\helios\HeliosAnalyseFichierRecuWorker; +use S2lowLegacy\Class\RecoverableException; use S2lowLegacy\Class\S2lowLogger; use S2lowLegacy\Class\WorkerScript; @@ -35,6 +38,9 @@ class HeliosReceptionWorkerTest extends TestCase ); } + /** + * @throws Exception + */ public function testExecutionNormale(): void { // On récupère bien le fichier fileName @@ -48,21 +54,41 @@ class HeliosReceptionWorkerTest extends TestCase $this->heliosReceptionWorker->work('fileName'); } + /** + * @throws Exception + */ public function testExecutionAvecFTPFileRetrieveException(): void { // Si l'exception FTPFileRetrieveException qui indique une erreur de récupération côté serveur est throw // lors de la récupération du fichier $this->FTPHeliosReceiver->expects(self::once())->method('recupOneFile') - ->willThrowException(new FTPFileRetrieveException()); + ->willThrowException(new FTPFileRetrieveException('OupsieDaysy')); // On n'aura rien à envoyer dans la queue d'analyse des fichiers reçus $this->workerScript->expects(self::never())->method('putJobByClassName') ->with(HeliosAnalyseFichierRecuWorker::class, 'fileName'); - // Mais on continuera le traitement des fichiers tout de même - $this->FTPHeliosReceiver->expects(self::never())->method('finTraitement'); + // Et une RecoverableException est lancée + $this->expectException(RecoverableException::class); + $this->expectExceptionMessage('OupsieDaysy'); $this->heliosReceptionWorker->work('fileName'); } - // Pour l'instant, il n'est pas possible de tester que le déclenchement d'un autre type d'exception stoppera bien - // la réception ... Ce sera possible lorsqu'on changera le exit pour le changement d'une exception appropriée. + /** + * @throws Exception + */ + public function testExecutionAvecAutreException(): void + { + // Si une Exception générique est throw + // lors de la récupération du fichier + $this->FTPHeliosReceiver->expects(self::once())->method('recupOneFile') + ->willThrowException(new RuntimeException('OupsieDaysy')); + // On n'aura rien à envoyer dans la queue d'analyse des fichiers reçus + $this->workerScript->expects(self::never())->method('putJobByClassName') + ->with(HeliosAnalyseFichierRecuWorker::class, 'fileName'); + // Et l'exception est relancée + $this->expectException(RuntimeException::class); + $this->expectExceptionMessage('OupsieDaysy'); + + $this->heliosReceptionWorker->work('fileName'); + } } -- GitLab