TP HTTP Question 2 - test_save_restore()

Conception de logiciels Intranet : patrons et canevas

Modérateurs : douinj, graffiop

georg_s4
Messages : 29
Inscription : 16 oct. 2020 11:09

TP HTTP Question 2 - test_save_restore()

Message par georg_s4 » 14 avr. 2021 11:31

Bonjour,
Dans la méthode test_save_restore() de la classe de tests de la question 2 du TP HTTP, la ligne 288 assume que l'observateur "http://localhost:9226/update/" est présent dans la liste des observateurs inaccessibles. Or, lorsque je déroule la liste des actions qui précèdent depuis le début de la méthode, je n'en vois aucune qui expliquerait la présence de cet observateur dans cette liste (j'ai enlevé 'http://' ici pour alléger l'écriture) :

- 200 : Création d'un ObservableServer sur le port 8226 -> deadObserversList == []
- 207 : Ajout de l'observateur localhost:9226/update/ -> deadObserversList == []
- 212 : Ajout de l'observateur localhost:9227/update/ -> deadObserversList == []
- 223 : Sauvegarde des observateurs de localhost:8226 -> observersList == [] (comme vérifié ligne 234), deadObserversList == []
- 228 : Notification des observateurs de localhost:8226 -> deadObserversList == [] car aucun observateur (observersList == [])
- 236 : Restauration des observateurs de localhost:8226 -> deadObserversList == [], toujours, observersList == [localhost:9226/update/, localhost:9227/update/] (comme vérifié lignes 244 et 245)
- 247 : Création d'un ObserverServer sur le port 9226 -> deadObserversList == [], observersList == [localhost:9226/update/, localhost:9227/update/]
- 252 : Notification des observateurs de localhost:8226 -> deadObserversList == [localhost:9227/update/], car il n'a pas été créé. localhost:9226/update/ a été créé ce qui explique le succès de la notification (ligne 256)
- 268 : Sauvegarde des observateurs de localhost:8226 -> observersList == [] (comme vérifié ligne 284), deadObserversList == [localhost:9227/update/] ou [] (la spécification et les tests ne le précisent pas)
- 273 : Arrêt du serveur ObserverServer -> observersList == [], deadObserversList == [localhost:9227/update/] ou [],
- 276 : Notification des observateurs de localhost:8226 -> deadObserversList == [localhost:9227/update/] ou [], car aucun observateur (observersList == [])
- 288 : On assume que deadObserversList contient localhost:9226/update/, alors que deadObserversList == [localhost:9227/update/] ou []

Si je neutralise cette ligne, tous les autres tests passent.
La soumission BlueJ retourne une erreur avec le message "La liste des observateurs inaccessibles retournée est erronée, elle doit être vide pour ce test ???", identique à celui de la ligne 288. Je suppose donc qu'il s'agit de la même erreur.
Pouvez-vous me dire si j'ai manqué quelque chose ?
Cordialement

douinj
Messages : 281
Inscription : 18 mars 2009 15:46

Re: TP HTTP Question 2 - test_save_restore()

Message par douinj » 15 avr. 2021 17:04

Bonjour, je regarde de plus près et essaie avec la solution dite référente ... je viens d'essayer et n'ai pas rencontré d'erreur, je vérifie de nouveau ...

cheva_m23
Messages : 8
Inscription : 11 oct. 2019 18:32

Re: TP HTTP Question 2 - test_save_restore()

Message par cheva_m23 » 17 avr. 2021 17:23

Bonjour,

Fais attention à la ligne "ObserverServer.stopServer();".

Peut-être as-tu un petit bug au niveau lors des traitements qui font suite aux valeurs retournées par les update() ?

Voilà ce que je comprends du déroulement de la méthode test_save_restore():
Dans ce qui suit, j'appèle un observateur selon son numéro de port.

Inscription des observateurs 9226 et 9227 ==> OK:[9226,9227] dead:[] saveOK:[] saveDead:[]

Sauvegarde ==> OK:[9226,9227] dead:[] saevOK:[9226,9227] saveDead:[]

Notification (aucun observateur ne tourne...) ==> OK:[] dead:[9226,9227] saveOK:[9226,9227] saveDead:[]

Restauration ==> OK:[9226,9227] dead:[] saveOK:[9226,9227] saveDead:[]

Lancement de l'observateur 9226.

Notification (9226 tourne et 9227 ne tourne pas) ==> OK:[9226] dead:[9227] saveOK:[9226,9227] saveDead:[]

Sauvegarde ==> OK:[9226] dead:[9227] saveOK:[9226] saveDead:[9227]

Arrêt de l'observateur 9226.

Notification (aucun observateur ne tourne...) ==> OK:[] dead:[9227,9226] savOK:[9226] savDead:[9227]

Restauration ==> OK:[9226] dead:[9227] savOK:[9226] savDead:[9227]


J'espère que cela t'aidera à trouver ce qui ne fonctionne pas.

georg_s4
Messages : 29
Inscription : 16 oct. 2020 11:09

Re: TP HTTP Question 2 - test_save_restore()

Message par georg_s4 » 19 avr. 2021 10:01

Bonjour cher auditeur,
Grâce à tes explications, j'ai compris mon erreur. En lisant les tests, qui complètent les spécifications, j'ai interprété que c'est la sauvegarde des observateurs qui vident la liste courante des observateurs abonnés, alors qu'en fait, c'est à chaque échec de notification d'un observateur (update) qu'on doit le retirer de cette liste. Mon implémentation, basée sur cette interprétation, permettait quand même de passer tous les tests de toutes les méthodes de test, sauf celui de la ligne 288 !
Je te remercie beaucoup, parce que je ne sais pas si j'aurais trouvé si facilement sans ton aide.
Bonne journée
Stéfan

Répondre