IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres éditeurs Discussion :

CppUnit et les threads


Sujet :

Autres éditeurs

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de zaphibel
    Homme Profil pro
    Ingénieur Logiciel
    Inscrit en
    Janvier 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 71
    Par défaut CppUnit et les threads
    Bonjour,
    CppUnit lance-t-il des threads en internes et de quel type sur
    windows ?
    Sinon éclairez moi Merci.

  2. #2
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Cela me suprendrait.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #3
    Membre confirmé Avatar de zaphibel
    Homme Profil pro
    Ingénieur Logiciel
    Inscrit en
    Janvier 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 71
    Par défaut
    bonjour,
    donc tu crois que tout est séquentiel?

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par zaphibel
    bonjour,
    donc tu crois que tout est séquentiel?
    Je pense que la méthode de base est séquentiel, comme avec Junit. Mais qu'il est possible de lancer de manière asynchrone des tests sur les classes (en effet, les lancements de tests sont protégés par des mutex (SynchronizedObject dans cppUnit))

    Pourquoi te demandez tu cela ?

    On ajoute un teste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void 
    TestRunner::addTest( Test *test )
    {
      m_suite->addTest( test ); 
    }
    On lance la batterie de test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void 
    TestRunner::run( TestResult &controller,
                     const std::string &testPath )
    {
      TestPath path = m_suite->resolveTestPath( testPath );
      Test *testToRun = path.getChildTest();
     
      controller.runTest( testToRun );
    }
    Le controlleur ne faisait qu'exécuter runTest du Test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void 
    TestResult::runTest( Test *test )
    {
      startTestRun( test );
      test->run( this );
      endTestRun( test );
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void 
    TestCase::run( TestResult *result )
    {
      result->startTest(this);
     
    ...    result->protect( TestCaseMethodFunctor( this, &TestCase::runTest ),
                         this );
    Enfin, le TestResult fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void 
    TestResult::startTest( Test *test )
    { 
      ExclusiveZone zone( m_syncObject ); 
      for ( TestListeners::iterator it = m_listeners.begin();
            it != m_listeners.end(); 
            ++it )
        (*it)->startTest( test );
    }
    A ce moment, on voit apparaître un mutex qui laisse présager la possibilité de lancer des tests dans plusieurs threads.

    Après, j'avoue m'être à moitié paumé dans le code et j'ai eu la flemme de réflechir d'avantage

  5. #5
    Membre confirmé Avatar de zaphibel
    Homme Profil pro
    Ingénieur Logiciel
    Inscrit en
    Janvier 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 71
    Par défaut
    Bonsoir,
    Tout d'abord Merci pour l'attention que tu as apporté à ma question.
    Ce code me permet d'éclaircir un gros problème lié à mes tests.
    Car j'utilise ACE (adaptive communication enviroment) et j'utillise
    des Mutex. Il se trouve que seul mon application qui utilse les
    mutex tourne parfaitement. Mais en l'integrant à des tests avec
    cppUnit il se trouve que mes Tasks (pour être précis employés
    par ACE) ne se lancent plus car ils n'ont jamais la main.
    Ce qu iaboutit à un crash sur un Mutex d'ACE de temps en temps.
    Il semblerait qu'il y ait un conflit de Mutex; L'emploi de plusieurs
    frameworks pourrait ne pas être compatible à ce que je vois.
    Naturellement ce n'est qu'une théorie pour l'instant qui demande
    à être vérifiée.
    Merci Arigato ^^

  6. #6
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Cela me parraitrait complètement idiot comme approche. Quid des nombreux codes non réentrants, ou des machines mono-proc. Il n'y a pas d'option pour empêcher cela ?

    Sinon, tu peux toujours te diriger vers des frameworks de TU plus complets, plus simples, et mieux foutus (cxxtest p.ex.)
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

Discussions similaires

  1. Aide sur les Threads
    Par themoye dans le forum MFC
    Réponses: 24
    Dernier message: 06/03/2005, 15h02
  2. Les Threads... J'en remet une couche :)
    Par Higestromm dans le forum C++
    Réponses: 5
    Dernier message: 17/11/2004, 12h19
  3. Gestion des message windows dans les threads
    Par billyboy dans le forum Windows
    Réponses: 5
    Dernier message: 06/10/2003, 17h25
  4. Question simple sur les threads :)
    Par momox dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/06/2003, 04h13
  5. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 13h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo