TP HTTP

Conception de logiciels Intranet : patrons et canevas

Moderators: douinj, graffiop

Post Reply
guill_f58
Posts: 68
Joined: 10 Oct 2020 19:42

TP HTTP

Post by guill_f58 » 13 Apr 2022 15:13

Bonjour, j'ai commencé le tp HTTP et j'ai un gigantesque souci au niveau d'une ligne dans la validation des tests unitaires.

Est-ce que dans la classe de test de la question 2, au niveau de cette ligne :
assertTrue("La liste des observateurs inaccessibles retourn�e est erron�e, elle doit �tre vide pour ce test ???", response.getText().contains("http://localhost:9226/update/"));

Il n'y aurait pas, je l'espère beaucoup, une erreur et que le contains aurait dû être :
"http://localhost:9227/update/"));

Si ce n'est pas le cas, est-ce-que ce serait possible d'avoir une petite explication ?
Dans toute la classe de test c'est la seule ligne qui me bloque. Si je la commente, je valide le tous les tests.

edit: Par contre, pour les tests sous blueJ, je dois redémarrer la machine virtuelle de ce dernier pour passer séparément test_addObservers() et test_addObserver_sans_doublon. Cela ne me le fait pas sous Intellj.

Bonne journée

douinj
Posts: 462
Joined: 18 Mar 2009 15:46

Re: TP HTTP

Post by douinj » 14 Apr 2022 13:53

Bonjour, est-ce que les tests distants JNEWS passent, si oui passez ces tests locaux, je corrigerai bientôt .... bonne fin de tp

guill_f58
Posts: 68
Joined: 10 Oct 2020 19:42

Re: TP HTTP

Post by guill_f58 » 14 Apr 2022 21:33

douinj wrote:
14 Apr 2022 13:53
Bonjour, est-ce que les tests distants JNEWS passent, si oui passez ces tests locaux, je corrigerai bientôt .... bonne fin de tp
Bonsoir, non il ne passe pas :
There were 2 failures:
1) test_save_restore(question2): La liste des observateurs retournée est erronée, elle doit être vide pour ce test ???
2) test_addObserver_sans_doublon(question2): la réponse doit ici retournée true ???

le 1er doit être la même chose que le mien. Et le deuxième doit correspondre à ce que je suis obligé de faire : reset le vm pour passer ces deux tests sur les observers un par un.

Je verrais peut être d'où cela vient, merci.

douinj
Posts: 462
Joined: 18 Mar 2009 15:46

Re: TP HTTP

Post by douinj » 15 Apr 2022 9:07

Bonjour,

Le source de ce test... test_save_restore()... si cela peut vous aider, les tests unitaires httpunit (bas niveau)...

Code: Select all


import com.meterware.httpunit.*;


 public void test_save_restore(){
    try{
        new Thread(new Runnable(){
          public void run(){
            try{Class.forName("question3.ObservableServer",true,this.getClass().getClassLoader());}catch(Exception e){e.printStackTrace();}
            ObservableServer.main(new String[]{"8226"});
          }}).start();
        
        WebConversation conversation = new WebConversation();
        WebRequest request = new GetMethodWebRequest("http://localhost:8226/addObserver/?url=http://localhost:9226/update/" );  
        WebResponse response = conversation.getResponse( request );
        assertTrue(" pas de réponse ???", response.getText().length() > 0);     
        assertTrue(" la réponse lors d'un addObserver doit ici retournée true ???", response.getText().contains("true"));
        
        request = new GetMethodWebRequest("http://localhost:8226/addObserver/?url=http://localhost:9227/update/" );  
        response = conversation.getResponse( request );
        assertTrue(" pas de réponse ???", response.getText().length() > 0);     
        assertTrue(" la réponse lors d'un addObserver doit ici retournée true ???", response.getText().contains("true"));
        
        request = new GetMethodWebRequest("http://localhost:8226/observersList/" );
        response = conversation.getResponse( request );
//         System.out.println("response.getText(): " + response.getText());
        assertTrue("La liste des observateurs retournée est erronée, il manque l'url d'un observateur ???", response.getText().contains("http://localhost:9226/update/"));
        assertTrue("La liste des observateurs retournée est erronée, il manque l'url d'un observateur ???", response.getText().contains("http://localhost:9227/update/"));
        
        request = new GetMethodWebRequest("http://localhost:8226/saveObserversList/" );
        response = conversation.getResponse( request );
        //System.out.println("response.getText(): " + response.getText());
        assertTrue(" la réponse pour saveObserversList doit ici retournée true ???", response.getText().contains("true"));
        
        request = new GetMethodWebRequest("http://localhost:8226/notifyObservers/?temperature=300&capteur=DS1921" );
        response = conversation.getResponse( request );
        // System.out.println("response.getText(): " + response.getText());
        request = new GetMethodWebRequest("http://localhost:8226/observersList/" );
        response = conversation.getResponse( request );
//         System.out.println("response.getText(): " + response.getText());
        assertTrue("La liste des observateurs retournée est erronée, elle doit être vide pour ce test ???", response.getText().contains("[]"));
        
        
        request = new GetMethodWebRequest("http://localhost:8226/restoreObserversList/" );
        response = conversation.getResponse( request );
        //System.out.println("response.getText(): " + response.getText());
        assertTrue(" la réponse pour restoreObserversList doit ici retournée true ???", response.getText().contains("true"));
        
        request = new GetMethodWebRequest("http://localhost:8226/observersList/" );
        response = conversation.getResponse( request );
//         System.out.println("response.getText(): " + response.getText());
        assertTrue("La liste des observateurs après un restore est erronée, il manque l'url d'un observateur ???", response.getText().contains("http://localhost:9226/update/"));
        assertTrue("La liste des observateurs après un restore est erronée, il manque l'url d'un observateur ???", response.getText().contains("http://localhost:9227/update/"));
        
        new Thread(new Runnable(){
          public void run(){
            ObserverServer.main(new String[]{"9226"});
          }}).start();
          
        request = new GetMethodWebRequest("http://localhost:8226/notifyObservers/?temperature=300&capteur=DS1921" );
        response = conversation.getResponse( request );
//         System.out.println("response.getText():_____ " + response.getText());
        assertTrue(" pas de réponse ???", response.getText().length() > 0);     
        assertTrue(" la réponse doit doit ici retournée true ???", response.getText().contains("true"));
        
        request = new GetMethodWebRequest("http://localhost:8226/observersList/" );
        response = conversation.getResponse( request );
//         System.out.println("response.getText(): " + response.getText());
        assertTrue("La liste des observateurs retournée est erronée, il manque l'url d'un observateur ???", response.getText().contains("http://localhost:9226/update/"));
        
        request = new GetMethodWebRequest("http://localhost:8226/deadObserversList/" );
        response = conversation.getResponse( request );
//         System.out.println("response.getText(): " + response.getText());
        assertTrue("La liste des observateurs inaccessibles retournée est erronée, il manque l'url d'un observateur ???", response.getText().contains("http://localhost:9227/update/"));
        
        request = new GetMethodWebRequest("http://localhost:8226/saveObserversList/" );
        response = conversation.getResponse( request );
//         System.out.println("response.getText(): " + response.getText());
        assertTrue(" la réponse pour saveObserversList doit ici retournée true ???", response.getText().contains("true"));
        
        ObserverServer.stopServer(); 
        try{Thread.sleep(TIME_OUT_TEST);}catch(Exception e){}
        
        request = new GetMethodWebRequest("http://localhost:8226/notifyObservers/?temperature=300&capteur=DS1921" );
        response = conversation.getResponse( request );
//         System.out.println("response.getText():_____ " + response.getText());
        assertTrue(" pas de réponse ???", response.getText().length() > 0);     
        assertTrue(" la réponse pour notifyObservers doit ici retournée false ???", response.getText().contains("false"));
        
        request = new GetMethodWebRequest("http://localhost:8226/observersList/" );
        response = conversation.getResponse( request );
        assertTrue("La liste des observateurs retournée est erronée, elle doit être vide pour ce test ???", response.getText().contains("[]"));
        
        request = new GetMethodWebRequest("http://localhost:8226/deadObserversList/" );
        response = conversation.getResponse( request );
        assertTrue("La liste des observateurs inaccessibles retournée est erronée, elle doit être vide pour ce test ???", response.getText().contains("http://localhost:9226/update/"));
        
        request = new GetMethodWebRequest("http://localhost:8226/restoreObserversList/" );
        response = conversation.getResponse( request );
        //System.out.println("response.getText(): " + response.getText());
        assertTrue(" la réponse pour restoreObserversList doit ici retournée true ???", response.getText().contains("true"));
        
        request = new GetMethodWebRequest("http://localhost:8226/deadObserversList/" );
        response = conversation.getResponse( request );
        assertFalse("La liste des observateurs inaccessibles retournée après restore est erronée ???", response.getText().contains("http://localhost:9226/update/"));
        
        
        request = new GetMethodWebRequest("http://localhost:8226/observersList/" );
        response = conversation.getResponse( request );
        assertTrue("La liste des observateurs retournée est erronée, elle doit être vide pour ce test ???", response.getText().contains("http://localhost:9226/update/"));
        
      }catch(Exception e){
        fail("Exception inattendue ? " + e.getMessage());
      }finally{
        ObservableServer.stopServer();

        try{Thread.sleep(TIME_OUT_TEST);}catch(Exception e){}
      }
    }
Avec la méthode setup

Code: Select all

 private final static int OBSERVABLE_PORT_TEST = 8222;
     private final static int OBSERVER_PORT_TEST = 9222;     
     
     private final static int TIME_OUT_TEST = 200;
     private final static String SERVER_TEST = "localhost"; // "jfod.cnam.fr";
     
     
    public void setUp(){
      try{
//         Field port = ObservableServer.class.getDeclaredField("HTTP_PORT");
//       port.setAccessible(true);
//       port.set(ObservableServer.class,OBSERVABLE_PORT_TEST);
      Field time_out = ObservableServer.class.getDeclaredField("TIME_OUT");
      time_out.setAccessible(true);
      time_out.set(ObservableServer.class,TIME_OUT_TEST);
      
    }catch(Exception e){
      fail(e.getMessage());
    }
    }

guill_f58
Posts: 68
Joined: 10 Oct 2020 19:42

Re: TP HTTP

Post by guill_f58 » 15 Apr 2022 14:33

douinj wrote:
15 Apr 2022 9:07
Bonjour,

Le source de ce test... test_save_restore()... si cela peut vous aider, les tests unitaires httpunit (bas niveau)...

Code: Select all


import com.meterware.httpunit.*;


 public void test_save_restore(){
    try{
        new Thread(new Runnable(){
          public void run(){
            try{Class.forName("question3.ObservableServer",true,this.getClass().getClassLoader());}catch(Exception e){e.printStackTrace();}
            ObservableServer.main(new String[]{"8226"});
          }}).start();
        
        WebConversation conversation = new WebConversation();
        WebRequest request = new GetMethodWebRequest("http://localhost:8226/addObserver/?url=http://localhost:9226/update/" );  
        WebResponse response = conversation.getResponse( request );
        assertTrue(" pas de réponse ???", response.getText().length() > 0);     
        assertTrue(" la réponse lors d'un addObserver doit ici retournée true ???", response.getText().contains("true"));
        
        request = new GetMethodWebRequest("http://localhost:8226/addObserver/?url=http://localhost:9227/update/" );  
        response = conversation.getResponse( request );
        assertTrue(" pas de réponse ???", response.getText().length() > 0);     
        assertTrue(" la réponse lors d'un addObserver doit ici retournée true ???", response.getText().contains("true"));
        
        request = new GetMethodWebRequest("http://localhost:8226/observersList/" );
        response = conversation.getResponse( request );
//         System.out.println("response.getText(): " + response.getText());
        assertTrue("La liste des observateurs retournée est erronée, il manque l'url d'un observateur ???", response.getText().contains("http://localhost:9226/update/"));
        assertTrue("La liste des observateurs retournée est erronée, il manque l'url d'un observateur ???", response.getText().contains("http://localhost:9227/update/"));
        
        request = new GetMethodWebRequest("http://localhost:8226/saveObserversList/" );
        response = conversation.getResponse( request );
        //System.out.println("response.getText(): " + response.getText());
        assertTrue(" la réponse pour saveObserversList doit ici retournée true ???", response.getText().contains("true"));
        
        request = new GetMethodWebRequest("http://localhost:8226/notifyObservers/?temperature=300&capteur=DS1921" );
        response = conversation.getResponse( request );
        // System.out.println("response.getText(): " + response.getText());
        request = new GetMethodWebRequest("http://localhost:8226/observersList/" );
        response = conversation.getResponse( request );
//         System.out.println("response.getText(): " + response.getText());
        assertTrue("La liste des observateurs retournée est erronée, elle doit être vide pour ce test ???", response.getText().contains("[]"));
        
        
        request = new GetMethodWebRequest("http://localhost:8226/restoreObserversList/" );
        response = conversation.getResponse( request );
        //System.out.println("response.getText(): " + response.getText());
        assertTrue(" la réponse pour restoreObserversList doit ici retournée true ???", response.getText().contains("true"));
        
        request = new GetMethodWebRequest("http://localhost:8226/observersList/" );
        response = conversation.getResponse( request );
//         System.out.println("response.getText(): " + response.getText());
        assertTrue("La liste des observateurs après un restore est erronée, il manque l'url d'un observateur ???", response.getText().contains("http://localhost:9226/update/"));
        assertTrue("La liste des observateurs après un restore est erronée, il manque l'url d'un observateur ???", response.getText().contains("http://localhost:9227/update/"));
        
        new Thread(new Runnable(){
          public void run(){
            ObserverServer.main(new String[]{"9226"});
          }}).start();
          
        request = new GetMethodWebRequest("http://localhost:8226/notifyObservers/?temperature=300&capteur=DS1921" );
        response = conversation.getResponse( request );
//         System.out.println("response.getText():_____ " + response.getText());
        assertTrue(" pas de réponse ???", response.getText().length() > 0);     
        assertTrue(" la réponse doit doit ici retournée true ???", response.getText().contains("true"));
        
        request = new GetMethodWebRequest("http://localhost:8226/observersList/" );
        response = conversation.getResponse( request );
//         System.out.println("response.getText(): " + response.getText());
        assertTrue("La liste des observateurs retournée est erronée, il manque l'url d'un observateur ???", response.getText().contains("http://localhost:9226/update/"));
        
        request = new GetMethodWebRequest("http://localhost:8226/deadObserversList/" );
        response = conversation.getResponse( request );
//         System.out.println("response.getText(): " + response.getText());
        assertTrue("La liste des observateurs inaccessibles retournée est erronée, il manque l'url d'un observateur ???", response.getText().contains("http://localhost:9227/update/"));
        
        request = new GetMethodWebRequest("http://localhost:8226/saveObserversList/" );
        response = conversation.getResponse( request );
//         System.out.println("response.getText(): " + response.getText());
        assertTrue(" la réponse pour saveObserversList doit ici retournée true ???", response.getText().contains("true"));
        
        ObserverServer.stopServer(); 
        try{Thread.sleep(TIME_OUT_TEST);}catch(Exception e){}
        
        request = new GetMethodWebRequest("http://localhost:8226/notifyObservers/?temperature=300&capteur=DS1921" );
        response = conversation.getResponse( request );
//         System.out.println("response.getText():_____ " + response.getText());
        assertTrue(" pas de réponse ???", response.getText().length() > 0);     
        assertTrue(" la réponse pour notifyObservers doit ici retournée false ???", response.getText().contains("false"));
        
        request = new GetMethodWebRequest("http://localhost:8226/observersList/" );
        response = conversation.getResponse( request );
        assertTrue("La liste des observateurs retournée est erronée, elle doit être vide pour ce test ???", response.getText().contains("[]"));
        
        request = new GetMethodWebRequest("http://localhost:8226/deadObserversList/" );
        response = conversation.getResponse( request );
        assertTrue("La liste des observateurs inaccessibles retournée est erronée, elle doit être vide pour ce test ???", response.getText().contains("http://localhost:9226/update/"));
        
        request = new GetMethodWebRequest("http://localhost:8226/restoreObserversList/" );
        response = conversation.getResponse( request );
        //System.out.println("response.getText(): " + response.getText());
        assertTrue(" la réponse pour restoreObserversList doit ici retournée true ???", response.getText().contains("true"));
        
        request = new GetMethodWebRequest("http://localhost:8226/deadObserversList/" );
        response = conversation.getResponse( request );
        assertFalse("La liste des observateurs inaccessibles retournée après restore est erronée ???", response.getText().contains("http://localhost:9226/update/"));
        
        
        request = new GetMethodWebRequest("http://localhost:8226/observersList/" );
        response = conversation.getResponse( request );
        assertTrue("La liste des observateurs retournée est erronée, elle doit être vide pour ce test ???", response.getText().contains("http://localhost:9226/update/"));
        
      }catch(Exception e){
        fail("Exception inattendue ? " + e.getMessage());
      }finally{
        ObservableServer.stopServer();

        try{Thread.sleep(TIME_OUT_TEST);}catch(Exception e){}
      }
    }
Avec la méthode setup

Code: Select all

 private final static int OBSERVABLE_PORT_TEST = 8222;
     private final static int OBSERVER_PORT_TEST = 9222;     
     
     private final static int TIME_OUT_TEST = 200;
     private final static String SERVER_TEST = "localhost"; // "jfod.cnam.fr";
     
     
    public void setUp(){
      try{
//         Field port = ObservableServer.class.getDeclaredField("HTTP_PORT");
//       port.setAccessible(true);
//       port.set(ObservableServer.class,OBSERVABLE_PORT_TEST);
      Field time_out = ObservableServer.class.getDeclaredField("TIME_OUT");
      time_out.setAccessible(true);
      time_out.set(ObservableServer.class,TIME_OUT_TEST);
      
    }catch(Exception e){
      fail(e.getMessage());
    }
    }
Bonjour, j'ai réussi à passer les tests JNews en apportant une amélioration (je pense) par rapport à la manière de sauvegarder les listes.
Et pour l'autre, en faisant un peu n'importe quoi mais cela me permet de passer la ligne qui me posait problème.
Pour la dernière question, comme je ne n'arrivais pas à mettre en ligne le tp (trop gros sans doute), j'ai mis en lien un zip vers mon one drive du cnam.

Bonne journée

Post Reply