tp_proxy

Conception de logiciels Intranet : patrons et canevas

Modérateurs : douinj, graffiop

valen_f3
Messages : 28
Inscription : 30 sept. 2020 10:46

tp_proxy

Message par valen_f3 » 02 mars 2021 12:27

Bonjour,

Il semble qu'il n'y a pas de test unitaire JNEWS sur la Q1 du tp_proxy que j'ai téléchargé.
Est-ce normal ?

Merci.

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

Re: tp_proxy

Message par cheva_m23 » 03 mars 2021 22:40

Bonsoir,

Même chose de mon côté : pas de tests JNEWS pour tp_proxy_q1

Il semble, en revanche, que 3 tests soient effectués pour la question 2.

Image

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

Re: tp_proxy

Message par douinj » 04 mars 2021 9:22

Bonjour, merci de me l'avoir signalé, je vérifie et reviens vers vous

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

Re: tp_proxy

Message par douinj » 04 mars 2021 12:04

Re-bonjour

Je n'ai pas trouvé, le blocage ( ou l'interblocage) sur jnews des tests qui fonctionnent localement,

je vous propose de tester votre question1 avec la classe de tests ci-dessous, c'est la copie conforme de ce qui est installé côté jnews, en attendant ...

Code : Tout sélectionner

package question1;

import java.util.Iterator;
import java.util.Properties;

import java.net.URL;
import java.net.URLConnection;
import java.net.HttpURLConnection;
import java.net.URLEncoder;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;

import java.util.StringTokenizer;
import java.util.Random;

public class TestsListeProxyHttp extends junit.framework.TestCase{
    private question1.Liste<String> listeAvecProxy;
    private String nom;
    private String url;

    protected void setUp() throws java.lang.Exception{
        try{
            this.nom = "LISTE_JNEWS_TESTS";
            this.url = "http://lmi92.cnam.fr/jnews/tests/tp_proxy.html"; 
            listeAvecProxy = new question1.ListeProxyHttp(url,this.nom);
            Connexion connexion = new Connexion(url,"nom=" + this.nom + "&junit=true"); // delete  'LISTE_JNEWS%'
            String res = connexion.result();
        }catch(Exception e){
            fail("exception inattendue !" + e.getMessage());
        }
    }

    protected void tearDown() throws java.lang.Exception{

    }


    public void test_taille(){
        try{
            assertTrue(true);
            assertEquals(" taille erronée ?",0, listeAvecProxy.taille());

            Connexion connexion = new Connexion(url,"nom=" + this.nom + "&commande=taille");
            String res = connexion.result();                  assertTrue(" retour de connexion, incorrect ???", res!=null);
            StringTokenizer st = new StringTokenizer(res);    
            assertTrue(" retour de connexion, incorrect, vérifiez avec votre navigateur ???", st.countTokens()>=1);
            assertEquals(" erreur sur la taille de liste, incohérence non détectée ?", st.nextToken(),"0");
        }catch(Exception e){
            fail("exception inattendue ..." + e.getMessage());
        }
    }

    public void test_ajouter(){
        try{

            assertEquals(" true est attendu, en retour de ajouter ?",true, listeAvecProxy.ajouter("test2"));
            Connexion connexion = new Connexion(url,"nom=" + this.nom + "&commande=taille");
            String res = connexion.result();                  assertTrue(" retour de connexion, incorrect ???", res!=null);
            StringTokenizer st = new StringTokenizer(res);    assertTrue(" retour de connexion, incorrect ???", st !=null);  
            assertTrue(" retour de connexion, incorrect, vérifiez avec votre navigateur ???", st.countTokens()>=1);
            assertEquals(" erreur sur la taille de liste ?", st.nextToken(),"1");

            connexion = new Connexion(url,"nom=" + this.nom + "&commande=estPresent&elt=test2");
            res = connexion.result();         assertTrue(" retour de connexion, incorrect ???", res!=null);
            st = new StringTokenizer(res);    
            assertTrue(" retour de connexion, incorrect, vérifiez avec votre navigateur ???", st.countTokens()>=1);
            assertTrue(" erreur, l'élément n'est pas présent dans la liste distante ?", st.nextToken().equals("true"));

        }catch(Exception e){
            fail("exception inattendue ..." + e.getMessage());
        }
    }

    public void test_estPresent(){
        try{

            assertEquals(" true est attendu, en retour de ajouter ?",true, listeAvecProxy.ajouter("test2"));
            Connexion connexion = new Connexion(url,"nom=" + this.nom + "&commande=taille");

            String res = connexion.result();                  assertTrue(" retour de connexion, incorrect ???", res!=null);
            StringTokenizer st = new StringTokenizer(res);      

            assertTrue(" retour de connexion, incorrect, vérifiez avec votre navigateur ???", st.countTokens()>=1);
            assertEquals(" erreur sur la taille de liste ?", st.nextToken(),"1"); 
            connexion = new Connexion(url,"nom=" + this.nom + "&commande=estPresent&elt=test2");

            res = connexion.result();         assertTrue(" retour de connexion, incorrect ???", res!=null);
            st = new StringTokenizer(res);   

            assertTrue(" retour de connexion, incorrect, vérifiez avec votre navigateur ???", st.countTokens()>=1);       
            assertEquals(" coherence de la liste distante ? ", st.nextToken(),"true");      
            connexion = new Connexion(url,"nom=" + this.nom + "&commande=estPresent&elt=test3");

            res = connexion.result();         assertTrue(" retour de connexion, incorrect ???", res!=null);
            st = new StringTokenizer(res);      
            assertTrue(" retour de connexion, incorrect, vérifiez avec votre navigateur ???", st.countTokens()>=1);       
            assertEquals(" coherence de la liste distante ? ", st.nextToken(),"false");

        }catch(Exception e){
            fail("exception inattendue ..." + e.getMessage());
        }
    }

    public void test_ajouter_retirer(){
        try{

            assertEquals(" true est attendu, en retour de ajouter ?",true, listeAvecProxy.ajouter("test2"));      
            Connexion connexion = new Connexion(url,"nom=" + this.nom + "&commande=taille");

            String res = connexion.result();                  assertTrue(" retour de connexion, incorrect ???", res!=null);
            StringTokenizer st = new StringTokenizer(res);         
            assertTrue(" retour de connexion, incorrect, vérifiez avec votre navigateur ???", st.countTokens()>=1);       
            assertEquals(" erreur sur la taille de liste ?", st.nextToken(),"1");

            connexion = new Connexion(url,"nom=" + this.nom + "&commande=estPresent&elt=test2");
            res = connexion.result();         assertTrue(" retour de connexion, incorrect ???", res!=null);
            st = new StringTokenizer(res);    

            assertTrue(" retour de connexion, incorrect, vérifiez avec votre navigateur ???", st.countTokens()>=1);       
            assertEquals(" coherence de la liste distante ? ", st.nextToken(),"true");
            assertEquals(" true est attendu, en retour de ajouter ?",true, listeAvecProxy.ajouter("test3"));
            assertEquals(" true est attendu, en retour de ajouter ?",true, listeAvecProxy.ajouter("test3"));
            assertEquals(" true est attendu, en retour de ajouter ?",true, listeAvecProxy.ajouter("test4"));

            assertEquals(" true est attendu, en retour de retirer ?",true, listeAvecProxy.retirer("test3"));
            assertEquals(" false est attendu, en retour de retirer ?",false, listeAvecProxy.retirer("test3"));

            connexion = new Connexion(url,"nom=" + this.nom + "&commande=retirer&elt=test3");
            res = connexion.result();         assertTrue(" retour de connexion, incorrect ???", res!=null);
            st = new StringTokenizer(res);   

            assertTrue(" retour de connexion, incorrect, vérifiez avec votre navigateur ???", st.countTokens()>=1);       
            assertTrue(" retrait d'un élément absent ?  ", st.nextToken().equals("false"));

        }catch(Exception e){
            fail("exception inattendue ..." + e.getMessage());
        }
    }

    public void test_toString(){
        try{

            assertEquals(" true est attendu, en retour de ajouter ?",true, listeAvecProxy.ajouter("a"));  
            assertEquals(" true est attendu, en retour de ajouter ?",true, listeAvecProxy.ajouter("b"));
            assertEquals(" true est attendu, en retour de ajouter ?",true, listeAvecProxy.ajouter("c"));
            assertEquals(" true est attendu, en retour de ajouter ?",true, listeAvecProxy.ajouter("d"));

            assertEquals(" format attendu, [a, b, c] ?","[a, b, c, d]", listeAvecProxy.toString());
            Connexion connexion = new Connexion(url,"nom=" + this.nom + "&commande=toString");
            String res = connexion.result();assertTrue(" retour de connexion, incorrect ???", res!=null);
            StringTokenizer st = new StringTokenizer(res,"[]");        
            assertTrue(" retour de connexion, incorrect, vérifiez avec votre navigateur ???", st.countTokens()>=1);       
            assertTrue(" liste distante ? non-actualisee ?",st.nextToken().equals("a, b, c, d"));
        }catch(Exception e){
            fail("exception inattendue ..." + e.getMessage());
        }
    }

  
    public void test_vider(){
        try{
            listeAvecProxy.ajouter("a");
            listeAvecProxy.vider();

            Connexion connexion = new Connexion(url,"nom=" + this.nom + "&commande=taille");
            String res = connexion.result();
            assertTrue(" retour de connexion, incorrect ???", res!=null);
            StringTokenizer st = new StringTokenizer(res);
            assertTrue(" retour de connexion, incorrect, vérifiez avec votre navigateur ???", st.countTokens()>=1);  
            assertTrue(" erreur sur la taille de liste distante ?", st.nextToken().equals("0"));
        }catch(Exception e){
            fail("exception inattendue ..." + e.getMessage());
        }
    }

    public void test_restaurer(){
        try{
            Liste<String> l2 = null;
            try{
                l2 = new question1.ListeProxyHttp("test_restaurer");
                boolean b = l2.restaurer();
                assertTrue(" pas de restauration ???", b);
            }catch(NoSuchMethodError e1){
                fail("la méthode restaurer est inconnue ??? "  + e1.getMessage());
            }catch(Exception e){
                fail("exception inattendue ! " + e.getMessage());
            }finally{
                try{l2.vider();}catch(Exception e){}
            }

            String nomDeLaListe = "LISTE_JNEWS_" + new Random().nextInt(1000000);
            Liste<String> l = new question1.ListeProxyHttp(nomDeLaListe);

            assertEquals("ajout en échec ???", true, l.ajouter("I"));
            assertEquals("ajout en échec ???", true, l.ajouter("II"));
            assertEquals("ajout en échec ???", true, l.ajouter("III"));
            assertEquals("ajout en échec ???", true, l.ajouter("IV"));
            assertEquals("ajout en échec ???", true, l.ajouter("V"));

            try{
                l2 = new question1.ListeProxyHttp(nomDeLaListe);
                l2.restaurer();
                assertTrue(" taille après restaurer ???", l2.taille() == 5);
            }catch(Exception e){
                fail("exception inattendue ! " + e.getMessage());
                try{l2.vider();}catch(Exception e1){}
            }
            //l.vider();
            //l2.vider();
        }catch(Exception e){
            fail("exception inattendue ..." + e.getMessage());

        }
    }

    


  

    private static class Connexion extends Thread{
        private String url;
        private String parametres;
        private StringBuffer result;

        public Connexion(String url, String parametres){
            this.url = url;
            this.parametres = parametres.trim();
            this.result = new StringBuffer();
            //this.setDaemon(true);
            this.setPriority(Thread.MAX_PRIORITY );
            this.start();
        }

        public String result(){
            try{
                this.join();
            }catch(InterruptedException ie){
                ie.printStackTrace();
            }
            return result.toString();
        }

        public void run(){
            try{
                URL urlConnection = new URL(url);
                URLConnection connection = urlConnection.openConnection();
                connection.setDoOutput(true);
                connection.setConnectTimeout(1000);
                connection.setReadTimeout(1000);
                
                PrintWriter out = new PrintWriter(connection.getOutputStream());
                out.println(parametres);
                out.flush();
                out.close();

                BufferedReader in = new BufferedReader( new InputStreamReader(connection.getInputStream()));
                String inputLine = in.readLine();
                while(inputLine != null){
                    result.append(inputLine); 
                    inputLine = in.readLine();
                }
                in.close();
            }catch(Exception e){
                this.result = new StringBuffer(e.getMessage());
                //e.printStackTrace();
            }
        }

    }
}


Répondre