Napisałem program / bibliotekę, której użyłem do uzyskania wyników w artykule. (Tutaj jest , ale moje pytanie jest ogólne). Mam testy, które regularnie uruchamiam ctest
( uruchomienie zajmuje kilka minut). Aby odtworzyć niektóre tabele lub ryciny w tym artykule, muszę zbudować skrypt lub prosty program sterownika, który działa może 10 minut, czasem dłużej, więc nie chcę mieć tej części standardowego zestawu testów. Jednocześnie chcę się upewnić, że wyniki z tego artykułu mogą być:
- powielone później
- upewnij się, że nadal dają takie same / poprawne wyniki po dalszym rozwijaniu biblioteki
Obecnie staram się mieć mały program sterownika, który uruchamiam jako część standardowego zestawu testów, a jeśli chcę odtworzyć wyniki z tego artykułu, odkomentuję niektóre wiersze. Oczywiście nigdy nie wiem, które dokładnie linie i czy muszę poprawić niektóre inne parametry, aby uzyskać dokładnie takie same wyniki jak w artykule.
Próbowałem też mieć skrypt w języku Python, który oblicza dokładne liczby / tabele z artykułu. Taki skrypt zazwyczaj przestaje działać po aktualizacji biblioteki, ponieważ nie jest uruchamiany regularnie (zajmuje zbyt dużo czasu).
Najlepszą metodą, jaką przyszło mi do głowy, jest posiadanie przykładu Fortran (lub C / C ++), który będzie regularnie kompilowany (jako część biblioteki), ale nie będzie uruchamiany w zwykłym pakiecie testowym. W ten sposób przynajmniej wiem, że dobrze się kompiluje (i mam nadzieję, że również działa). I przetestuję prosty (mniejszy) przykład jako część standardowego zestawu testów.
Jakie są optymalne sposoby rozwiązania tego problemu?
źródło
Odpowiedzi:
W deal.II mamy testsuite, który jest obsługiwany przez zwykły Uniksowy Makefile. Ma domyślny cel, który uruchamia wszystkie zwykłe testy, oraz osobny cel dla drogich testów. Uruchamianie każdego testu odbywa się przy użyciu ogólnej reguły, ale domyślny cel wywołuje ogólną regułę tylko w przypadku niektórych testów, a drogi cel wywołuje ją w przypadku drogich testów. Ponieważ wszystko odbywa się przy użyciu ogólnej reguły, musi być aktualne w dowolnym momencie; przestarzałe mogą być tylko listy nazw testów.
Aktualizacja: powyższy tekst był poprawny w 2012 r. Od 2014 r. Testsuite. Transakcja II opiera się na CTest, ale ogólna idea pozostaje aktualna.
źródło
p4est
?