CSC4509 – Algorithmique et communications des applications réparties

Portail informatique

Devoir maison : Étape 2

  • compléter la configuration de Maven ;
  • écrire des méthodes pour une connexion TCP.

Cette étape est réalisable à la suite de la séance 2 et doit être réalisée avant la séance 3.

Prérequis pour la réalisation de cette étape :

Ajout de deux bibliothèques à votre projet

Ajout de la bibliothèque Log4j à votre projet

Pour pouvoir suivre l'exécution d'une application réseau, il faut pouvoir trier les affichages en fonction de leur provenance et de leur niveau d'importance. Dans ce module, nous confions cette tâche à la bibliothèque Log4j. Nous ajoutons à la configuration de Maven la dépendance pour cette bibliothèque. Les artefacts Maven des bibliothèques les plus utilisées sont disponibles en ligne par exemple sur le Central Maven Repository. Utilisez le moteur de recherche pour trouver la dernière version 1.2.x de l'artefact log4j.log4j, et ensuite les lignes qu'il faut ajouter à la section <dependencies> du fichier de configuration de Maven. Pensez à mettre à jour votre projet avec la commande « mvn clean install ».

Sous Eclipse, créez un paquetage « tsp.csc4509.common » et placez-y la classe Log.

Tout est prêt, et à partir de maintenant, pensez à utiliser cette bibliothèque pour tous vos affichages et toutes vos traces.

Ajout d'une bibliothèque pour les tests unitaires des méthodes utilisant TCP

Faire des tests unitaires de méthodes utilisant TCP, demande un vis-à-vis fiable. Pour vous aider à tester vos méthodes nous avons écrit une bibliothèque qui permet de placer un serveur en face du client que vous voulez tester, ou bien un client en face du serveur que vous voulez tester.

Pour écrire vos tests vous pouvez vous reposer sur trois aides:

Cette bibliothèque a été écrite spécialement pour ce devoir, et elle ne se trouve pas sur les dépôts habituels de Maven. Il faut enrichir la configuration Maven de votre projet pour lui indiquer où chercher. Pour cela nous ajoutons dans la section <project> une sous-section <repositories> avec les lignes suivantes:

Maven connaît un dépôt de plus. Il faut encore enrichir sa configuration pour lui demander d'aller y chercher la bibliothèque. Dans la section <dependencies> nous ajoutons la dépendance suivante:

Maintenant cette bibliothèque est prête pour vos tests.

Écriture des classes de communication TCP

Écriture des classes « tsp.csc4509.dm.tcp.TcpSocket » et « tsp.csc4509.dm.tcp.TcpServer »

Créez le paquetage « tsp.csc4509.dm.tcp » dans les répertoires « src/main/java » et « src/test/java ».

Placez les squelettes des classes TcpServer et TcpSocket dans le paquetage « tsp.csc4509.dm.tcp » des sources JAVA.

Placez les classes TestTcpServer et TestTcpSocket dans le paquetage « tsp.csc4509.dm.tcp » des tests JAVA.

Complétez tous les « TODO Etape 2 » des deux squelettes et des classes de tests. Laissez pour l'étape suivante les « TODO Etape 3 ». Attention, certains tests sont déjà activés dans les classes de test. Votre installation ne fonctionnera plus tant que vous n'aurez pas écrit correctement les méthodes testées ou mis ces tests en @Ignore.

Écriture des classes d'application

Copiez les classes AppliClientTcp et AppliServerTcp dans le paquetage « tsp.csc4509.dm.appli ». Complétez ces deux classes en suivant les instructions contenues dedans (et en utilisant les méthodes des classes TcpSocket et TpcServer).

Ajoutez deux nouveaux scripts dans le répertoire « scripts » : un pour lancer l'application cliente et l'autre pour lancer la partie serveur. Depuis que l'on a ajouté la bibliothèque Log4j à notre projet, il faut indiquer à java où la trouver. Il faut ajouter l'archive qui contient cette bibliothèque à la variable « CLASSPATH ». Maven range toutes les archives dans un répertoire à la racine de votre compte: « ~/.m2/repository ».

Vérifiez que la commande « find ~/.m2/repository -name "log4j-1.2*.jar" -print »  liste dans ses résultats la ligne suivante:

(votre répertoire home)/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar

Si ce n'est pas le cas, c'est que vous n'avez pas configuré votre projet avec la bonne bibliothèque, et si oui, voici un exemple du script pour lancer un programme qui utilise cette bibliothèque:

 


$Date: 2021-04-26 01:40:50 +0200 (lun. 26 avril 2021) $