Combine test files, reduce number of targets
In an effort to reduce the numbers of targets built, and consequently the repeated work and overhead of compiling boost test, a series of test programs are combined to larger modules. Every target typically has a constant cost of 3-6s, depending on the computer, just for the make to set up dependencies and for the compiler to parse and compile the testing framework and other dependencies. Each set of tests typically add very little, so significant savings are achieved by merging targets. When tested on a 2015 i5m laptop, this reduced serial, single-core compile time from ~14m45s to ~11m15s.
This commit is contained in:
@@ -33,8 +33,23 @@
|
||||
#include <opm/parser/eclipse/Deck/DeckKeyword.hpp>
|
||||
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Completion.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/CompletionSet.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/ScheduleEnums.hpp>
|
||||
|
||||
namespace Opm {
|
||||
|
||||
inline std::ostream& operator<<( std::ostream& stream, const Completion& c ) {
|
||||
return stream << "(" << c.getI() << "," << c.getJ() << "," << c.getK() << ")";
|
||||
}
|
||||
|
||||
inline std::ostream& operator<<( std::ostream& stream, const CompletionSet& cs ) {
|
||||
stream << "{ ";
|
||||
for( const auto& c : cs ) stream << c << " ";
|
||||
return stream << "}";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(CreateCompletionOK) {
|
||||
@@ -69,6 +84,74 @@ BOOST_AUTO_TEST_CASE(CompletionTestssameCoordinate) {
|
||||
BOOST_CHECK_EQUAL( false , completion1.sameCoordinate( completion5 ));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(CreateCompletionSetOK) {
|
||||
Opm::CompletionSet completionSet;
|
||||
BOOST_CHECK_EQUAL( 0U , completionSet.size() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(AddCompletionSizeCorrect) {
|
||||
Opm::CompletionSet completionSet;
|
||||
Opm::Completion completion1( 10,10,10, 1, 0.0,Opm::WellCompletion::OPEN , Opm::Value<double>("ConnectionTransmissibilityFactor",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22), 0);
|
||||
Opm::Completion completion2( 11,10,10, 1, 0.0,Opm::WellCompletion::OPEN , Opm::Value<double>("ConnectionTransmissibilityFactor",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22), 0);
|
||||
completionSet.add( completion1 );
|
||||
BOOST_CHECK_EQUAL( 1U , completionSet.size() );
|
||||
|
||||
completionSet.add( completion2 );
|
||||
BOOST_CHECK_EQUAL( 2U , completionSet.size() );
|
||||
|
||||
BOOST_CHECK_EQUAL( completion1 , completionSet.get(0) );
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(CompletionSetGetOutOfRangeThrows) {
|
||||
Opm::CompletionSet completionSet;
|
||||
Opm::Completion completion1( 10,10,10,1, 0.0,Opm::WellCompletion::OPEN , Opm::Value<double>("ConnectionTransmissibilityFactor",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22), 0);
|
||||
Opm::Completion completion2( 11,10,10,1, 0.0,Opm::WellCompletion::OPEN , Opm::Value<double>("ConnectionTransmissibilityFactor",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22), 0);
|
||||
completionSet.add( completion1 );
|
||||
BOOST_CHECK_EQUAL( 1U , completionSet.size() );
|
||||
|
||||
completionSet.add( completion2 );
|
||||
BOOST_CHECK_EQUAL( 2U , completionSet.size() );
|
||||
|
||||
BOOST_CHECK_THROW( completionSet.get(10) , std::out_of_range );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(AddCompletionSameCellUpdates) {
|
||||
Opm::CompletionSet completionSet;
|
||||
Opm::Completion completion1( 10,10,10, 1, 0.0, Opm::WellCompletion::OPEN , Opm::Value<double>("ConnectionTransmissibilityFactor",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22), 0);
|
||||
Opm::Completion completion2( 10,10,10, 1, 0.0,Opm::WellCompletion::SHUT , Opm::Value<double>("ConnectionTransmissibilityFactor",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22), 0);
|
||||
|
||||
|
||||
completionSet.add( completion1 );
|
||||
BOOST_CHECK_EQUAL( 1U , completionSet.size() );
|
||||
|
||||
completionSet.add( completion2 );
|
||||
BOOST_CHECK_EQUAL( 1U , completionSet.size() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(AddCompletionCopy) {
|
||||
Opm::CompletionSet completionSet;
|
||||
|
||||
Opm::Completion completion1( 10,10,10, 1, 0.0, Opm::WellCompletion::OPEN , Opm::Value<double>("ConnectionTransmissibilityFactor",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22), 0);
|
||||
Opm::Completion completion2( 10,10,11, 1, 0.0, Opm::WellCompletion::SHUT , Opm::Value<double>("ConnectionTransmissibilityFactor",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22), 0);
|
||||
Opm::Completion completion3( 10,10,12, 1, 0.0, Opm::WellCompletion::SHUT , Opm::Value<double>("ConnectionTransmissibilityFactor",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22), 0);
|
||||
|
||||
completionSet.add( completion1 );
|
||||
completionSet.add( completion2 );
|
||||
completionSet.add( completion3 );
|
||||
BOOST_CHECK_EQUAL( 3U , completionSet.size() );
|
||||
|
||||
auto copy = completionSet;
|
||||
BOOST_CHECK_EQUAL( 3U , copy.size() );
|
||||
|
||||
BOOST_CHECK_EQUAL( completion1 , copy.get(0));
|
||||
BOOST_CHECK_EQUAL( completion2 , copy.get(1));
|
||||
BOOST_CHECK_EQUAL( completion3 , copy.get(2));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user