From 6e3431e81f25508b7c89d726d3c0fff475e4a7dd Mon Sep 17 00:00:00 2001 From: Shikhar Bhardwaj Date: Wed, 31 May 2017 19:50:52 +0530 Subject: [PATCH 01/10] Add tests to the list of tests for CTest --- src/mlpack/tests/CMakeLists.txt | 106 ++++++++++++++++++++++++++++++-- 1 file changed, 101 insertions(+), 5 deletions(-) diff --git a/src/mlpack/tests/CMakeLists.txt b/src/mlpack/tests/CMakeLists.txt index 694c23d877..8c9461abcd 100644 --- a/src/mlpack/tests/CMakeLists.txt +++ b/src/mlpack/tests/CMakeLists.txt @@ -126,8 +126,104 @@ add_custom_command(TARGET mlpack_test WORKING_DIRECTORY ${PROJECT_BINARY_DIR} ) -# For 'make test'. -add_test (NAME mlpack_test - COMMAND mlpack_test "--log_level=test_suite" # Set UTF runtime param - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/ # This is where test files are put. -) +# List of tests in the testing suite +add_test(NAME ActivationFunctionsTest COMMAND mlpack_test -t ActivationFunctionsTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME AdaBoostTest COMMAND mlpack_test -t AdaBoostTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME AdamTest COMMAND mlpack_test -t AdamTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME AdaDeltaTest COMMAND mlpack_test -t AdaDeltaTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME AdaGradTest COMMAND mlpack_test -t AdaGradTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME AKFNTest COMMAND mlpack_test -t AKFNTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME AKNNTest COMMAND mlpack_test -t AKNNTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME ANNLayerTest COMMAND mlpack_test -t ANNLayerTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME ArmaExtendTest COMMAND mlpack_test -t ArmaExtendTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME ArmadilloSVDTest COMMAND mlpack_test -t ArmadilloSVDTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME AugLagrangianTest COMMAND mlpack_test -t AugLagrangianTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME BinarizeTest COMMAND mlpack_test -t BinarizeTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME BlockKrylovSVDTest COMMAND mlpack_test -t BlockKrylovSVDTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME CFTest COMMAND mlpack_test -t CFTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME CLITest COMMAND mlpack_test -t CLITest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME ConvolutionTest COMMAND mlpack_test -t ConvolutionTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME ConvolutionalNetworkTest COMMAND mlpack_test -t ConvolutionalNetworkTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME CosineTreeTest COMMAND mlpack_test -t CosineTreeTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME DBSCANTest COMMAND mlpack_test -t DBSCANTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME DecisionStumpTest COMMAND mlpack_test -t DecisionStumpTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME DecisionTreeTest COMMAND mlpack_test -t DecisionTreeTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME DETTest COMMAND mlpack_test -t DETTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME DistributionTest COMMAND mlpack_test -t DistributionTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME DrusillaSelectTest COMMAND mlpack_test -t DrusillaSelectTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME EMSTTest COMMAND mlpack_test -t EMSTTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME FastMKSTest COMMAND mlpack_test -t FastMKSTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME FeedForwardNetworkTest COMMAND mlpack_test -t FeedForwardNetworkTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME GMMTest COMMAND mlpack_test -t GMMTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME GradientDescentTest COMMAND mlpack_test -t GradientDescentTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME HMMTest COMMAND mlpack_test -t HMMTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME HoeffdingTreeTest COMMAND mlpack_test -t HoeffdingTreeTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME HyperplaneTest COMMAND mlpack_test -t HyperplaneTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME ImputationTest COMMAND mlpack_test -t ImputationTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME ind2subTest COMMAND mlpack_test -t ind2subTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME InitRulesTest COMMAND mlpack_test -t InitRulesTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME KernelTest COMMAND mlpack_test -t KernelTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME KernelPCATest COMMAND mlpack_test -t KernelPCATest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME KernelTraitsTest COMMAND mlpack_test -t KernelTraitsTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME KFNTest COMMAND mlpack_test -t KFNTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME KMeansTest COMMAND mlpack_test -t KMeansTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME KNNTest COMMAND mlpack_test -t KNNTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME KRANNTest COMMAND mlpack_test -t KRANNTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME KSInitialization COMMAND mlpack_test -t KSInitialization WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME LARSTest COMMAND mlpack_test -t LARSTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME LBFGSTest COMMAND mlpack_test -t LBFGSTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME LinAlgTest COMMAND mlpack_test -t LinAlgTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME LinearRegressionTest COMMAND mlpack_test -t LinearRegressionTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME LoadSaveTest COMMAND mlpack_test -t LoadSaveTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME LocalCoordinateCodingTest COMMAND mlpack_test -t LocalCoordinateCodingTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME LogTest COMMAND mlpack_test -t LogTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME LogisticRegressionTest COMMAND mlpack_test -t LogisticRegressionTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME LRSDPTest COMMAND mlpack_test -t LRSDPTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME LSHTest COMMAND mlpack_test -t LSHTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME MathTest COMMAND mlpack_test -t MathTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME MatrixCompletionTest COMMAND mlpack_test -t MatrixCompletionTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME MaximalInputsTest COMMAND mlpack_test -t MaximalInputsTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME MeanShiftTest COMMAND mlpack_test -t MeanShiftTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME LMetricTest COMMAND mlpack_test -t LMetricTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME MiniBatchSGDTest COMMAND mlpack_test -t MiniBatchSGDTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME MomentumSGDTest COMMAND mlpack_test -t MomentumSGDTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME NBCTest COMMAND mlpack_test -t NBCTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME NCATest COMMAND mlpack_test -t NCATest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME NMFTest COMMAND mlpack_test -t NMFTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME NystroemMethodTest COMMAND mlpack_test -t NystroemMethodTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME OctreeTest COMMAND mlpack_test -t OctreeTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME PCATest COMMAND mlpack_test -t PCATest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME PerceptronTest COMMAND mlpack_test -t PerceptronTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME QDAFNTest COMMAND mlpack_test -t QDAFNTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME QUICSVDTest COMMAND mlpack_test -t QUICSVDTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME RadicalTest COMMAND mlpack_test -t RadicalTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME RandomizedSVDTest COMMAND mlpack_test -t RandomizedSVDTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME RangeSearchTest COMMAND mlpack_test -t RangeSearchTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME RecurrentNetworkTest COMMAND mlpack_test -t RecurrentNetworkTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME RectangleTreeTest COMMAND mlpack_test -t RectangleTreeTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME RegularizedSVDTest COMMAND mlpack_test -t RegularizedSVDTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME RLComponentsTest COMMAND mlpack_test -t RLComponentsTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME RMSPropTest COMMAND mlpack_test -t RMSPropTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME SATest COMMAND mlpack_test -t SATest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME SdpPrimalDualTest COMMAND mlpack_test -t SdpPrimalDualTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME SGDTest COMMAND mlpack_test -t SGDTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME SGDRTest COMMAND mlpack_test -t SGDRTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME SnapshotEnsemblesTest COMMAND mlpack_test -t SnapshotEnsemblesTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME SerializationTest COMMAND mlpack_test -t SerializationTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME SMORMS3Test COMMAND mlpack_test -t SMORMS3Test WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME SoftmaxRegressionTest COMMAND mlpack_test -t SoftmaxRegressionTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME SortPolicyTest COMMAND mlpack_test -t SortPolicyTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME SparseAutoencoderTest COMMAND mlpack_test -t SparseAutoencoderTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME SparseCodingTest COMMAND mlpack_test -t SparseCodingTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME SpillTreeTest COMMAND mlpack_test -t SpillTreeTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME SplitDataTest COMMAND mlpack_test -t SplitDataTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME SVDBatchTest COMMAND mlpack_test -t SVDBatchTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME SVDIncrementalTest COMMAND mlpack_test -t SVDIncrementalTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME TerminationPolicyTest COMMAND mlpack_test -t TerminationPolicyTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME TreeTest COMMAND mlpack_test -t TreeTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME TreeTraitsTest COMMAND mlpack_test -t TreeTraitsTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME UnionFindTest COMMAND mlpack_test -t UnionFindTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME UBTreeTest COMMAND mlpack_test -t UBTreeTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME VantagePointTreeTest COMMAND mlpack_test -t VantagePointTreeTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME PrefixedOutStreamTest COMMAND mlpack_test -t PrefixedOutStreamTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME TimerTest COMMAND mlpack_test -t TimerTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) From dc4e29897d843194797c916668e4b95b400e58f5 Mon Sep 17 00:00:00 2001 From: Shikhar Bhardwaj Date: Wed, 31 May 2017 19:51:51 +0530 Subject: [PATCH 02/10] Modify travis script command to run CTest instead. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d486c5c4fa..aca2b9a141 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,7 +14,7 @@ install: - mkdir build && cd build && cmake -DDEBUG=OFF -DPROFILE=OFF .. && make -j2 script: - - travis_wait 30 ./bin/mlpack_test -p + - CTEST_OUTPUT_ON_FAILURE=1 travis_wait 30 ctest -j2 notifications: email: From e270cc68d2a9dd67b63823665396434b3a94a67d Mon Sep 17 00:00:00 2001 From: Shikhar Bhardwaj Date: Wed, 31 May 2017 20:48:08 +0530 Subject: [PATCH 03/10] Remove redundant entries and re order the list of test sources Remove outdated test source files --- src/mlpack/tests/CMakeLists.txt | 26 +++---- src/mlpack/tests/layer_traits_test.cpp | 69 ------------------- src/mlpack/tests/lstm_peephole_test.cpp | 92 ------------------------- 3 files changed, 11 insertions(+), 176 deletions(-) delete mode 100644 src/mlpack/tests/layer_traits_test.cpp delete mode 100644 src/mlpack/tests/lstm_peephole_test.cpp diff --git a/src/mlpack/tests/CMakeLists.txt b/src/mlpack/tests/CMakeLists.txt index 8c9461abcd..97410ebdc9 100644 --- a/src/mlpack/tests/CMakeLists.txt +++ b/src/mlpack/tests/CMakeLists.txt @@ -8,15 +8,15 @@ add_executable(mlpack_test akfn_test.cpp aknn_test.cpp ann_layer_test.cpp - arma_extend_test.cpp armadillo_svd_test.cpp + arma_extend_test.cpp aug_lagrangian_test.cpp binarize_test.cpp block_krylov_svd_test.cpp cf_test.cpp cli_test.cpp - convolution_test.cpp convolutional_network_test.cpp + convolution_test.cpp cosine_tree_test.cpp dbscan_test.cpp decision_stump_test.cpp @@ -35,8 +35,8 @@ add_executable(mlpack_test imputation_test.cpp ind2sub_test.cpp init_rules_test.cpp - kernel_test.cpp kernel_pca_test.cpp + kernel_test.cpp kernel_traits_test.cpp kfn_test.cpp kmeans_test.cpp @@ -49,8 +49,8 @@ add_executable(mlpack_test linear_regression_test.cpp load_save_test.cpp local_coordinate_coding_test.cpp - log_test.cpp logistic_regression_test.cpp + log_test.cpp lrsdp_test.cpp lsh_test.cpp math_test.cpp @@ -68,25 +68,26 @@ add_executable(mlpack_test octree_test.cpp pca_test.cpp perceptron_test.cpp + prefixedoutstream_test.cpp qdafn_test.cpp quic_svd_test.cpp radical_test.cpp randomized_svd_test.cpp range_search_test.cpp - recurrent_network_test.cpp rectangle_tree_test.cpp + recurrent_network_test.cpp regularized_svd_test.cpp rl_components_test.cpp rmsprop_test.cpp sa_test.cpp sdp_primal_dual_test.cpp - sgd_test.cpp - sgdr_test.cpp - snapshot_ensembles.cpp serialization.hpp serialization.cpp serialization_test.cpp + sgdr_test.cpp + sgd_test.cpp smorms3_test.cpp + snapshot_ensembles.cpp softmax_regression_test.cpp sort_policy_test.cpp sparse_autoencoder_test.cpp @@ -96,17 +97,12 @@ add_executable(mlpack_test svd_batch_test.cpp svd_incremental_test.cpp termination_policy_test.cpp + timer_test.cpp tree_test.cpp tree_traits_test.cpp - union_find_test.cpp - svd_batch_test.cpp - svd_incremental_test.cpp - nystroem_method_test.cpp - armadillo_svd_test.cpp ub_tree_test.cpp + union_find_test.cpp vantage_point_tree_test.cpp - prefixedoutstream_test.cpp - timer_test.cpp ) # Link dependencies of test executable. target_link_libraries(mlpack_test diff --git a/src/mlpack/tests/layer_traits_test.cpp b/src/mlpack/tests/layer_traits_test.cpp deleted file mode 100644 index d7c0f10b4b..0000000000 --- a/src/mlpack/tests/layer_traits_test.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/** - * @file layer_traits_test.cpp - * @author Marcus Edel - * - * Test the LayerTraits class. Because all of the values are known at compile - * time, this test is meant to ensure that uses of LayerTraits still compile - * okay and react as expected. - * - * mlpack is free software; you may redistribute it and/or modify it under the - * terms of the 3-clause BSD license. You should have received a copy of the - * 3-clause BSD license along with mlpack. If not, see - * http://www.opensource.org/licenses/BSD-3-Clause for more information. - */ -#include - -#include -#include -#include - -#include -#include "test_tools.hpp" - -using namespace mlpack; -using namespace mlpack::ann; - -BOOST_AUTO_TEST_SUITE(LayerTraitsTest); - -// Test the defaults. -BOOST_AUTO_TEST_CASE(DefaultsTraitsTest) -{ - // An irrelevant non-connection type class is used here so that the default - // implementation of ConnectionTraits is chosen. - bool b = LayerTraits::IsBinary; - BOOST_REQUIRE_EQUAL(b, false); - - b = LayerTraits::IsOutputLayer; - BOOST_REQUIRE_EQUAL(b, false); - - b = LayerTraits::IsBiasLayer; - BOOST_REQUIRE_EQUAL(b, false); -} - -// Test the BiasLayer traits. -BOOST_AUTO_TEST_CASE(BiasLayerTraitsTest) -{ - bool b = LayerTraits >::IsBinary; - BOOST_REQUIRE_EQUAL(b, false); - - b = LayerTraits >::IsOutputLayer; - BOOST_REQUIRE_EQUAL(b, false); - - b = LayerTraits >::IsBiasLayer; - BOOST_REQUIRE_EQUAL(b, true); -} - -// Test the MulticlassClassificationLayer traits. -BOOST_AUTO_TEST_CASE(MulticlassClassificationLayerTraitsTest) -{ - bool b = LayerTraits >::IsBinary; - BOOST_REQUIRE_EQUAL(b, false); - - b = LayerTraits >::IsOutputLayer; - BOOST_REQUIRE_EQUAL(b, true); - - b = LayerTraits >::IsBiasLayer; - BOOST_REQUIRE_EQUAL(b, false); -} - -BOOST_AUTO_TEST_SUITE_END(); diff --git a/src/mlpack/tests/lstm_peephole_test.cpp b/src/mlpack/tests/lstm_peephole_test.cpp deleted file mode 100644 index 1624706d3f..0000000000 --- a/src/mlpack/tests/lstm_peephole_test.cpp +++ /dev/null @@ -1,92 +0,0 @@ -/** - * @file lstm_peephole_test.cpp - * @author Marcus Edel - * - * Tests the LSTM peepholes. - * - * mlpack is free software; you may redistribute it and/or modify it under the - * terms of the 3-clause BSD license. You should have received a copy of the - * 3-clause BSD license along with mlpack. If not, see - * http://www.opensource.org/licenses/BSD-3-Clause for more information. - */ -#include - -#include - -#include -#include "test_tools.hpp" - -using namespace mlpack; -using namespace mlpack::ann; - - -BOOST_AUTO_TEST_SUITE(LSTMPeepholeTest); - -/* - * Test the peephole connections in the forward pass. The test is a modification - * of the peephole test originally written by Tom Schaul. - */ -BOOST_AUTO_TEST_CASE(LSTMPeepholeForwardTest) -{ - double state1 = 0.2; - double state2 = 0.345; - double state3 = -0.135; - double state4 = 10000; - - arma::colvec input, output; - - LSTMLayer<> hiddenLayer0(1, 6, true); - - hiddenLayer0.InGatePeepholeWeights() = arma::mat("3"); - hiddenLayer0.ForgetGatePeepholeWeights() = arma::mat("4"); - hiddenLayer0.OutGatePeepholeWeights() = arma::mat("5"); - - // Set the LSTM state to state1 (state = inGateActivation * cellActivation - // = 1 / (1 + e^(-1000)) * tanh(atanh(0.2)) = 1 * 0.2 = 0.2). - // outputActivation = outGateActivation * stateActivation - // = tanh((0.2)) * (1 / (1 + e^1000)) = 0. - input << state4 << state4 << std::atanh(state1) << -state4; - hiddenLayer0.FeedForward(input, output); - BOOST_REQUIRE_CLOSE(output(0), 0, 1e-3); - - // Verify that the LSTM state is correctly stored. - input.clear(); - input << -state4 << state4 << state4 << state4; - hiddenLayer0.FeedForward(input, output); - BOOST_REQUIRE_CLOSE(output(0), std::tanh(state1), 1e-3); - - // Add state2 to the LSTM state. - // state = state + forgateGateActivation * state(t - 1) = 0.345 + 1 * 0.2 = - // 0.545 - input.clear(); - input << state4 << state4 << std::atanh(state2) << state4; - hiddenLayer0.FeedForward(input, output); - BOOST_REQUIRE_CLOSE(output(0), std::tanh(state1 + state2), 1e-3); - - // Verify the peephole connection to the forgetgate (weight = 4) by - // neutralizing its contibution and therefore dividing the LSTM state value - // by 2. - input.clear(); - input << -state4 << -(state1 + state2) * 4 << state4 << state4; - hiddenLayer0.FeedForward(input, output); - BOOST_REQUIRE_CLOSE(output(0), std::tanh((state1 + state2) / 2), 1e-3); - - // Verify the peephole connection to the inputgate (weight = 3) by - // neutralizing its contibution and therefore dividing the provided input - // by 2. - input.clear(); - input << -(state1 + state2) / 2 * 3 << -state4 << std::atanh(state3) - << state4; - hiddenLayer0.FeedForward(input, output); - BOOST_REQUIRE_CLOSE(output(0), std::tanh(state3 / 2), 1e-3); - - // Verify the peephole connection to the outputgate (weight = 5) by - // neutralizing its contibution and therefore dividing the provided output - // by 2. - input.clear(); - input << -state4 << state4 << state4 << -state3 / 2 * 5; - hiddenLayer0.FeedForward(input, output); - BOOST_REQUIRE_CLOSE(output(0), std::tanh(state3 / 2) / 2, 1e-3); -} - -BOOST_AUTO_TEST_SUITE_END(); From c7040d7e5570c298a407303584059bf2491d46a5 Mon Sep 17 00:00:00 2001 From: Shikhar Bhardwaj Date: Tue, 6 Jun 2017 19:15:00 +0530 Subject: [PATCH 04/10] Automatically add tests to the CTest framework on build generation --- src/mlpack/tests/CMakeLists.txt | 128 +++++++------------------------- 1 file changed, 27 insertions(+), 101 deletions(-) diff --git a/src/mlpack/tests/CMakeLists.txt b/src/mlpack/tests/CMakeLists.txt index 97410ebdc9..c648d00ed1 100644 --- a/src/mlpack/tests/CMakeLists.txt +++ b/src/mlpack/tests/CMakeLists.txt @@ -122,104 +122,30 @@ add_custom_command(TARGET mlpack_test WORKING_DIRECTORY ${PROJECT_BINARY_DIR} ) -# List of tests in the testing suite -add_test(NAME ActivationFunctionsTest COMMAND mlpack_test -t ActivationFunctionsTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME AdaBoostTest COMMAND mlpack_test -t AdaBoostTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME AdamTest COMMAND mlpack_test -t AdamTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME AdaDeltaTest COMMAND mlpack_test -t AdaDeltaTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME AdaGradTest COMMAND mlpack_test -t AdaGradTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME AKFNTest COMMAND mlpack_test -t AKFNTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME AKNNTest COMMAND mlpack_test -t AKNNTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME ANNLayerTest COMMAND mlpack_test -t ANNLayerTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME ArmaExtendTest COMMAND mlpack_test -t ArmaExtendTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME ArmadilloSVDTest COMMAND mlpack_test -t ArmadilloSVDTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME AugLagrangianTest COMMAND mlpack_test -t AugLagrangianTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME BinarizeTest COMMAND mlpack_test -t BinarizeTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME BlockKrylovSVDTest COMMAND mlpack_test -t BlockKrylovSVDTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME CFTest COMMAND mlpack_test -t CFTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME CLITest COMMAND mlpack_test -t CLITest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME ConvolutionTest COMMAND mlpack_test -t ConvolutionTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME ConvolutionalNetworkTest COMMAND mlpack_test -t ConvolutionalNetworkTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME CosineTreeTest COMMAND mlpack_test -t CosineTreeTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME DBSCANTest COMMAND mlpack_test -t DBSCANTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME DecisionStumpTest COMMAND mlpack_test -t DecisionStumpTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME DecisionTreeTest COMMAND mlpack_test -t DecisionTreeTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME DETTest COMMAND mlpack_test -t DETTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME DistributionTest COMMAND mlpack_test -t DistributionTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME DrusillaSelectTest COMMAND mlpack_test -t DrusillaSelectTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME EMSTTest COMMAND mlpack_test -t EMSTTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME FastMKSTest COMMAND mlpack_test -t FastMKSTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME FeedForwardNetworkTest COMMAND mlpack_test -t FeedForwardNetworkTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME GMMTest COMMAND mlpack_test -t GMMTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME GradientDescentTest COMMAND mlpack_test -t GradientDescentTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME HMMTest COMMAND mlpack_test -t HMMTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME HoeffdingTreeTest COMMAND mlpack_test -t HoeffdingTreeTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME HyperplaneTest COMMAND mlpack_test -t HyperplaneTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME ImputationTest COMMAND mlpack_test -t ImputationTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME ind2subTest COMMAND mlpack_test -t ind2subTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME InitRulesTest COMMAND mlpack_test -t InitRulesTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME KernelTest COMMAND mlpack_test -t KernelTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME KernelPCATest COMMAND mlpack_test -t KernelPCATest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME KernelTraitsTest COMMAND mlpack_test -t KernelTraitsTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME KFNTest COMMAND mlpack_test -t KFNTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME KMeansTest COMMAND mlpack_test -t KMeansTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME KNNTest COMMAND mlpack_test -t KNNTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME KRANNTest COMMAND mlpack_test -t KRANNTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME KSInitialization COMMAND mlpack_test -t KSInitialization WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME LARSTest COMMAND mlpack_test -t LARSTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME LBFGSTest COMMAND mlpack_test -t LBFGSTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME LinAlgTest COMMAND mlpack_test -t LinAlgTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME LinearRegressionTest COMMAND mlpack_test -t LinearRegressionTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME LoadSaveTest COMMAND mlpack_test -t LoadSaveTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME LocalCoordinateCodingTest COMMAND mlpack_test -t LocalCoordinateCodingTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME LogTest COMMAND mlpack_test -t LogTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME LogisticRegressionTest COMMAND mlpack_test -t LogisticRegressionTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME LRSDPTest COMMAND mlpack_test -t LRSDPTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME LSHTest COMMAND mlpack_test -t LSHTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME MathTest COMMAND mlpack_test -t MathTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME MatrixCompletionTest COMMAND mlpack_test -t MatrixCompletionTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME MaximalInputsTest COMMAND mlpack_test -t MaximalInputsTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME MeanShiftTest COMMAND mlpack_test -t MeanShiftTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME LMetricTest COMMAND mlpack_test -t LMetricTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME MiniBatchSGDTest COMMAND mlpack_test -t MiniBatchSGDTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME MomentumSGDTest COMMAND mlpack_test -t MomentumSGDTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME NBCTest COMMAND mlpack_test -t NBCTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME NCATest COMMAND mlpack_test -t NCATest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME NMFTest COMMAND mlpack_test -t NMFTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME NystroemMethodTest COMMAND mlpack_test -t NystroemMethodTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME OctreeTest COMMAND mlpack_test -t OctreeTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME PCATest COMMAND mlpack_test -t PCATest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME PerceptronTest COMMAND mlpack_test -t PerceptronTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME QDAFNTest COMMAND mlpack_test -t QDAFNTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME QUICSVDTest COMMAND mlpack_test -t QUICSVDTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME RadicalTest COMMAND mlpack_test -t RadicalTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME RandomizedSVDTest COMMAND mlpack_test -t RandomizedSVDTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME RangeSearchTest COMMAND mlpack_test -t RangeSearchTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME RecurrentNetworkTest COMMAND mlpack_test -t RecurrentNetworkTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME RectangleTreeTest COMMAND mlpack_test -t RectangleTreeTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME RegularizedSVDTest COMMAND mlpack_test -t RegularizedSVDTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME RLComponentsTest COMMAND mlpack_test -t RLComponentsTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME RMSPropTest COMMAND mlpack_test -t RMSPropTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME SATest COMMAND mlpack_test -t SATest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME SdpPrimalDualTest COMMAND mlpack_test -t SdpPrimalDualTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME SGDTest COMMAND mlpack_test -t SGDTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME SGDRTest COMMAND mlpack_test -t SGDRTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME SnapshotEnsemblesTest COMMAND mlpack_test -t SnapshotEnsemblesTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME SerializationTest COMMAND mlpack_test -t SerializationTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME SMORMS3Test COMMAND mlpack_test -t SMORMS3Test WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME SoftmaxRegressionTest COMMAND mlpack_test -t SoftmaxRegressionTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME SortPolicyTest COMMAND mlpack_test -t SortPolicyTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME SparseAutoencoderTest COMMAND mlpack_test -t SparseAutoencoderTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME SparseCodingTest COMMAND mlpack_test -t SparseCodingTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME SpillTreeTest COMMAND mlpack_test -t SpillTreeTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME SplitDataTest COMMAND mlpack_test -t SplitDataTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME SVDBatchTest COMMAND mlpack_test -t SVDBatchTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME SVDIncrementalTest COMMAND mlpack_test -t SVDIncrementalTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME TerminationPolicyTest COMMAND mlpack_test -t TerminationPolicyTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME TreeTest COMMAND mlpack_test -t TreeTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME TreeTraitsTest COMMAND mlpack_test -t TreeTraitsTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME UnionFindTest COMMAND mlpack_test -t UnionFindTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME UBTreeTest COMMAND mlpack_test -t UBTreeTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME VantagePointTreeTest COMMAND mlpack_test -t VantagePointTreeTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME PrefixedOutStreamTest COMMAND mlpack_test -t PrefixedOutStreamTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME TimerTest COMMAND mlpack_test -t TimerTest WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +# Add tests to the testing framework +get_target_property(test_sources mlpack_test SOURCES) + +foreach(test_file ${test_sources}) + file(STRINGS ${test_file} test_suite REGEX "BOOST_AUTO_TEST_SUITE\\(.*") + if("${test_suite}" STREQUAL "") + #message(STATUS "No auto test suite found in " ${test_file}) + else() + string(REGEX MATCH "\\(.*\\)" test_name ${test_suite}) + string(LENGTH ${test_name} end_idx) + math(EXPR end_idx "${end_idx} - 2") + string(SUBSTRING ${test_name} "1" ${end_idx} test) + message(STATUS ${test}) + add_test(NAME ${test} COMMAND mlpack_test -t ${test} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) + endif() + file(STRINGS ${test_file} test_suite REGEX "BOOST_FIXTURE_TEST_SUITE\\(.*,") + if("${test_suite}" STREQUAL "") + #message(STATUS "No fixture test suite found in " ${test_file}) + else() + string(REGEX MATCH "\\(.*," test_name ${test_suite}) + string(LENGTH ${test_name} end_idx) + math(EXPR end_idx "${end_idx} - 2") + string(SUBSTRING ${test_name} "1" ${end_idx} test) + message(STATUS ${test}) + add_test(NAME ${test} COMMAND mlpack_test -t ${test} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) + endif() +endforeach() From eac49026f3d9730a4445cb201dc84d7c1ec3a008 Mon Sep 17 00:00:00 2001 From: Shikhar Bhardwaj Date: Tue, 6 Jun 2017 20:39:13 +0530 Subject: [PATCH 05/10] No output of test suite names on build generation --- src/mlpack/tests/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/mlpack/tests/CMakeLists.txt b/src/mlpack/tests/CMakeLists.txt index c648d00ed1..76bcfbe39c 100644 --- a/src/mlpack/tests/CMakeLists.txt +++ b/src/mlpack/tests/CMakeLists.txt @@ -134,7 +134,6 @@ foreach(test_file ${test_sources}) string(LENGTH ${test_name} end_idx) math(EXPR end_idx "${end_idx} - 2") string(SUBSTRING ${test_name} "1" ${end_idx} test) - message(STATUS ${test}) add_test(NAME ${test} COMMAND mlpack_test -t ${test} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) endif() file(STRINGS ${test_file} test_suite REGEX "BOOST_FIXTURE_TEST_SUITE\\(.*,") @@ -145,7 +144,6 @@ foreach(test_file ${test_sources}) string(LENGTH ${test_name} end_idx) math(EXPR end_idx "${end_idx} - 2") string(SUBSTRING ${test_name} "1" ${end_idx} test) - message(STATUS ${test}) add_test(NAME ${test} COMMAND mlpack_test -t ${test} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) endif() endforeach() From 342fd186db3a62b9b3bb3f067a4b007a7965b4ba Mon Sep 17 00:00:00 2001 From: Shikhar Bhardwaj Date: Wed, 7 Jun 2017 14:32:32 +0530 Subject: [PATCH 06/10] Clean up tests/CMakeLists.txt --- src/mlpack/tests/CMakeLists.txt | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/mlpack/tests/CMakeLists.txt b/src/mlpack/tests/CMakeLists.txt index 76bcfbe39c..dc8b3108a3 100644 --- a/src/mlpack/tests/CMakeLists.txt +++ b/src/mlpack/tests/CMakeLists.txt @@ -127,23 +127,19 @@ get_target_property(test_sources mlpack_test SOURCES) foreach(test_file ${test_sources}) file(STRINGS ${test_file} test_suite REGEX "BOOST_AUTO_TEST_SUITE\\(.*") - if("${test_suite}" STREQUAL "") - #message(STATUS "No auto test suite found in " ${test_file}) - else() + if(NOT "${test_suite}" STREQUAL "") string(REGEX MATCH "\\(.*\\)" test_name ${test_suite}) string(LENGTH ${test_name} end_idx) math(EXPR end_idx "${end_idx} - 2") string(SUBSTRING ${test_name} "1" ${end_idx} test) - add_test(NAME ${test} COMMAND mlpack_test -t ${test} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) + add_test(NAME ${test} COMMAND mlpack_test -t ${test} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) endif() file(STRINGS ${test_file} test_suite REGEX "BOOST_FIXTURE_TEST_SUITE\\(.*,") - if("${test_suite}" STREQUAL "") - #message(STATUS "No fixture test suite found in " ${test_file}) - else() + if(NOT "${test_suite}" STREQUAL "") string(REGEX MATCH "\\(.*," test_name ${test_suite}) string(LENGTH ${test_name} end_idx) math(EXPR end_idx "${end_idx} - 2") string(SUBSTRING ${test_name} "1" ${end_idx} test) - add_test(NAME ${test} COMMAND mlpack_test -t ${test} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) + add_test(NAME ${test} COMMAND mlpack_test -t ${test} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) endif() endforeach() From c63cd87655eba21bc07e9abee004bfaf2ecb3bb0 Mon Sep 17 00:00:00 2001 From: Shikhar Bhardwaj Date: Wed, 7 Jun 2017 16:52:16 +0530 Subject: [PATCH 07/10] Try increasing number of parallel jobs to reduce Travis testing time --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index aca2b9a141..c710458154 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,7 +14,7 @@ install: - mkdir build && cd build && cmake -DDEBUG=OFF -DPROFILE=OFF .. && make -j2 script: - - CTEST_OUTPUT_ON_FAILURE=1 travis_wait 30 ctest -j2 + - CTEST_OUTPUT_ON_FAILURE=1 travis_wait 30 ctest -j4 notifications: email: From 005f9b69c07f70eb229afc336b734da4b0fdf999 Mon Sep 17 00:00:00 2001 From: Shikhar Bhardwaj Date: Wed, 7 Jun 2017 17:39:06 +0530 Subject: [PATCH 08/10] Revert "Try increasing number of parallel jobs to reduce Travis testing time" This reverts commit c63cd87655eba21bc07e9abee004bfaf2ecb3bb0. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c710458154..aca2b9a141 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,7 +14,7 @@ install: - mkdir build && cd build && cmake -DDEBUG=OFF -DPROFILE=OFF .. && make -j2 script: - - CTEST_OUTPUT_ON_FAILURE=1 travis_wait 30 ctest -j4 + - CTEST_OUTPUT_ON_FAILURE=1 travis_wait 30 ctest -j2 notifications: email: From 8d983dd4145bf64d56c3978f580e065c2a69fb87 Mon Sep 17 00:00:00 2001 From: Shikhar Bhardwaj Date: Tue, 13 Jun 2017 03:18:13 +0530 Subject: [PATCH 09/10] Add comments to describe automatic test suite addition to CTest --- src/mlpack/tests/CMakeLists.txt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/mlpack/tests/CMakeLists.txt b/src/mlpack/tests/CMakeLists.txt index dc8b3108a3..4aa6f9cf88 100644 --- a/src/mlpack/tests/CMakeLists.txt +++ b/src/mlpack/tests/CMakeLists.txt @@ -123,23 +123,33 @@ add_custom_command(TARGET mlpack_test ) # Add tests to the testing framework +# Get the list of sources from the test target get_target_property(test_sources mlpack_test SOURCES) +# Go through the list of test sources and parse the test suite name foreach(test_file ${test_sources}) + # Regex for parsing files with AUTO_TEST_SUITE file(STRINGS ${test_file} test_suite REGEX "BOOST_AUTO_TEST_SUITE\\(.*") if(NOT "${test_suite}" STREQUAL "") + # Get the substring of test_suite within brackets in test_name string(REGEX MATCH "\\(.*\\)" test_name ${test_suite}) + # Get the substring excluding the brackets, by calculating the indices string(LENGTH ${test_name} end_idx) math(EXPR end_idx "${end_idx} - 2") string(SUBSTRING ${test_name} "1" ${end_idx} test) - add_test(NAME ${test} COMMAND mlpack_test -t ${test} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) + # Add the test to the testing tool, test is the names of the test suite + add_test(NAME ${test} COMMAND mlpack_test -t ${test} WORKING_DIRECTORY + ${CMAKE_BINARY_DIR}) endif() + # Regex for parsing files with FIXTURE_TEST_SUITE similarly file(STRINGS ${test_file} test_suite REGEX "BOOST_FIXTURE_TEST_SUITE\\(.*,") if(NOT "${test_suite}" STREQUAL "") + # Get the substring of test_suite within brackets and comma in test_name string(REGEX MATCH "\\(.*," test_name ${test_suite}) string(LENGTH ${test_name} end_idx) math(EXPR end_idx "${end_idx} - 2") string(SUBSTRING ${test_name} "1" ${end_idx} test) - add_test(NAME ${test} COMMAND mlpack_test -t ${test} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) + add_test(NAME ${test} COMMAND mlpack_test -t ${test} WORKING_DIRECTORY + ${CMAKE_BINARY_DIR}) endif() endforeach() From 0555fd6659e64fbe92f1b330840bc6ef45e39517 Mon Sep 17 00:00:00 2001 From: Shikhar Bhardwaj Date: Tue, 13 Jun 2017 15:59:46 +0530 Subject: [PATCH 10/10] Run long running parallel tests serially in CTest --- src/mlpack/tests/CMakeLists.txt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/mlpack/tests/CMakeLists.txt b/src/mlpack/tests/CMakeLists.txt index 4aa6f9cf88..036ddaa30b 100644 --- a/src/mlpack/tests/CMakeLists.txt +++ b/src/mlpack/tests/CMakeLists.txt @@ -122,6 +122,13 @@ add_custom_command(TARGET mlpack_test WORKING_DIRECTORY ${PROJECT_BINARY_DIR} ) +# The list of long running parallel tests +set(parallel_tests + "SdpPrimalDualTest;SVDIncrementalTest;SVDBatchTest;" + "LocalCoordinateCodingTest;FeedForwardNetworkTest;SparseAutoencoderTest;" + "GMMTest;CFTest;ConvolutionalNetworkTest;HMMTest;LARSTest;" + "LogisticRegressionTest") + # Add tests to the testing framework # Get the list of sources from the test target get_target_property(test_sources mlpack_test SOURCES) @@ -137,7 +144,7 @@ foreach(test_file ${test_sources}) string(LENGTH ${test_name} end_idx) math(EXPR end_idx "${end_idx} - 2") string(SUBSTRING ${test_name} "1" ${end_idx} test) - # Add the test to the testing tool, test is the names of the test suite + # Add the test to the testing tool, test is the name of the test suite add_test(NAME ${test} COMMAND mlpack_test -t ${test} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) endif() @@ -153,3 +160,6 @@ foreach(test_file ${test_sources}) ${CMAKE_BINARY_DIR}) endif() endforeach() + +# Use RUN_SERIAL for long running parallel tests +set_tests_properties(${parallel_tests} PROPERTIES RUN_SERIAL TRUE)