/phenix-challenge

Solution apportée au projet Carrefour https://github.com/Carrefour-Group/phenix-challenge

Primary LanguageScalaApache License 2.0Apache-2.0

phenix-challenge

Build Status Coverage Status

Solution apportée au projet Carrefour https://github.com/Carrefour-Group/phenix-challenge

Pré-requis

Pour utiliser ce programme vous devez avoir une JVM au minimum en version 8.

Utilisation

Récupérez le jar fourni en release et éxécutez le comme suit:

java -jar votrejar.jar -i chemin/dossier/donnees/entrantes -o chemin/dossier/donnees/produite

Si vous ne souhaitez pas calculer les 7 derniers jours, lancez l'argument -s (comme simple) comme ceci:

java -jar votrejar.jar -i chemin/dossier/donnees/entrantes -o chemin/dossier/donnees/produite -s

Le dossier en entrée est obligatoire, il doit contenir les fichiers de transactions et de reference produits dont vous souhaitez calculés les indicateurs. Si vous ne mentionnez pas le dossier en sortie, tout sera créé dans le dossier en cours sous le répertoire `phenix-output``.

Pour le calcul des indicateurs sur les 7 derniers jours, la date du fichier le plus récent est prise en compte pour commencer les calculs, puis sont pris les 6 jours suivants disponibles dans le dossier. Si des jours sont manquants, le calcul se fait quand même normalement.

Si un fichier possède une date qui est supérieure aux 6 jours, il n'est pas pris en compte pour ce calcul.

Si vous avez besoin d'aide sur l'utilisation de la CLI/

java -jar votrejar.jar -h

NOTE: Les fichiers de données doivent être conformes aux exemples et ne pas contenir de variations, sous peine d'une erreur fatale.

Développement

Pré-requis

  • Java en version 8
  • Scala en version 2.12.8
  • Sbt en version 1.2.8

Des fichiers sont disponibles dans le dossier data. Attention à créer des nouveaux dossiers si vous souhaitez ajouter des tests.

Commandes sbt

Rappel des commandes sbt pour le développement de l'application.

Compilation:

sbt compile test:compile

Lancement des tests:

sbt test

Lancement de l'application:

sbt run -i input/folder -o output/folder

Packaging:

sbt assembly

Note: ajouter "~" devant une commande pour la lancer en mode "watch"

Simulation de contraintes

Limitation de la RAM

Le fichier .jvmopts permet d'avoir une consommation de RAM maximale de 512 Mo pour ce process sur la JVM.

Limitation du nombre de threads CPU

Ces instructions fonctionnent sous Linux Ubuntu 18.04. Il faut installer la commande cpulimit (disponible dans les dépôts ubuntu).

Pour exécuter avec seulement deux CPUs, il faut donner un pourcentage, selon le nombre de threads de la machine. Par exemple pour une machine à 8 threads pour laquelle on veut limiter à 2 threads:

cpulimit -l 25 sbt run &