J'ai écrit un programme / bibliothèque que j'ai utilisé pour obtenir des résultats dans un article. (Ici , il est , mais ma question est générale.) J'ai des tests que j'exécuté en utilisant régulièrement ctest
(il faut quelques minutes à courir). Afin de reproduire certains tableaux ou figures de l'article, je dois construire un script ou un programme de pilote simple, qui peut durer 10 minutes, parfois plus, donc je ne veux pas avoir cette partie de la suite de tests régulière. En même temps, je veux m'assurer que les résultats de l'article peuvent être:
- reproduit plus tard
- assurez-vous qu'ils donnent toujours les mêmes résultats / corrects après avoir continué à développer la bibliothèque
Actuellement, j'essaie d'avoir un petit programme de pilote que j'exécute dans le cadre de la suite de tests régulière, et si je veux reproduire les résultats de l'article, je décommente quelques lignes. Bien sûr, je ne sais jamais quelles lignes exactes et si je dois modifier quelques autres paramètres afin d'obtenir précisément les mêmes résultats que dans l'article.
J'ai également essayé d'avoir un script Python qui calcule les chiffres / tableaux exacts de l'article. Un tel script cesse généralement de fonctionner après une mise à jour de la bibliothèque, car il n'est pas exécuté régulièrement (prend trop de temps).
La meilleure méthode qui m'est venue à l'esprit est d'avoir un exemple Fortran (ou C / C ++), qui sera régulièrement compilé (dans le cadre de la bibliothèque), mais pas exécuté dans une suite de tests régulière. De cette façon, au moins je sais qu'il compile bien (et donc, espérons-le, fonctionne également). Et je vais tester un exemple simple (plus petit) dans le cadre d'une suite de tests régulière.
Quels sont les moyens optimaux pour gérer ce problème?
la source
Réponses:
Dans deal.II, nous avons une suite de tests pilotée par un Makefile Unix standard. Il a une cible par défaut qui exécute tous les tests habituels et une cible distincte pour les tests coûteux. L'exécution de chaque test se fait à l'aide d'une règle générique, mais la cible par défaut n'appelle la règle générique que pour certains tests et la cible coûteuse l'appelle pour les tests coûteux. Parce que tout se fait à l'aide d'une règle générique, elle doit être à jour à tout moment; ce qui peut devenir obsolète ne peut être que les listes de noms de tests.
Mise à jour: Le texte ci-dessus était correct en 2012. Depuis 2014, la suite de tests deal.II est basée sur CTest, mais l'idée générale reste valable.
la source
p4est
?