Skip to content

Commit cd10687

Browse files
reneSchmHenrZu
andauthored
1463 Remove log outputs from testing (#1464)
- Set gtest flags "brief" and "shuffle" in debug builds. - Add LogLevelOverride to temporarily change log levels. - Make RandomNumberTest use the same seed as thread_local_rng instead getting a new one each test, but still reset the counter. - Only log rng seeds once. - Turn off all unneeded log outputs from tests. Co-authored-by: Henrik Zunker <[email protected]>
1 parent b5cc5e8 commit cd10687

21 files changed

Lines changed: 169 additions & 109 deletions

cpp/memilio/utils/parameter_distributions.h

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -274,11 +274,6 @@ class ParameterDistributionNormal : public VisitableParameterDistribution<Parame
274274
return m_standard_dev;
275275
}
276276

277-
void log_stddev_changes(bool log_stddev_change)
278-
{
279-
m_log_stddev_change = log_stddev_change;
280-
}
281-
282277
void set_lower_bound(ScalarType lower_bound)
283278
{
284279
m_lower_bound = lower_bound;
@@ -337,7 +332,7 @@ class ParameterDistributionNormal : public VisitableParameterDistribution<Parame
337332

338333
int i = 0;
339334
int retries = 10;
340-
ScalarType rnumb = m_distribution.get_distribution_instance()(thread_local_rng(), m_distribution.params);
335+
ScalarType rnumb = m_distribution.get_distribution_instance()(rng, m_distribution.params);
341336
while ((rnumb > m_upper_bound || rnumb < m_lower_bound) && i < retries) {
342337
rnumb = m_distribution.get_distribution_instance()(rng, m_distribution.params);
343338
i++;
@@ -429,7 +424,6 @@ class ParameterDistributionNormal : public VisitableParameterDistribution<Parame
429424
ScalarType m_lower_bound = std::numeric_limits<ScalarType>::min();
430425
ScalarType m_quantile = 2.5758; // default is 0.995 quartile
431426
NormalDistribution<ScalarType>::ParamType m_distribution;
432-
bool m_log_stddev_change = true;
433427
};
434428

435429
template <class IOObj>

cpp/tests/random_number_test.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ class RandomNumberTest : public ::testing::Test
5959
protected:
6060
void SetUp() override
6161
{
62-
log_rng_seeds(m_rng, mio::LogLevel::warn);
62+
m_rng.set_counter(mio::Counter<uint64_t>{0});
6363
}
6464

6565
private:
66-
mio::RandomNumberGenerator m_rng{}; ///< Seeded rng used by this test fixture.
66+
static inline mio::RandomNumberGenerator m_rng = mio::thread_local_rng(); ///< Seeded rng used by this test fixture.
6767
};

cpp/tests/test_abstract_parameter_dist.cpp

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,10 @@
2323
#include "memilio/utils/random_number_generator.h"
2424
#include "models/abm/personal_rng.h"
2525
#include <gtest/gtest.h>
26-
#include <stdio.h>
2726
#include <vector>
2827

2928
TEST(AbstractParameterDist, test_abstract_normal_distribution)
3029
{
31-
mio::log_thread_local_rng_seeds(mio::LogLevel::warn);
32-
3330
mio::AbstractParameterDistribution p1(mio::ParameterDistributionNormal(10., 0.5));
3431
mio::AbstractParameterDistribution p2(mio::ParameterDistributionNormal(20., 0.3));
3532
auto params1 = std::vector<double>{10., 0.5};
@@ -52,8 +49,6 @@ TEST(AbstractParameterDist, test_abstract_normal_distribution)
5249

5350
TEST(AbstractParameterDist, test_abstract_uniform_distribution)
5451
{
55-
mio::log_thread_local_rng_seeds(mio::LogLevel::warn);
56-
5752
mio::AbstractParameterDistribution p1(mio::ParameterDistributionUniform(0., 1.));
5853
mio::AbstractParameterDistribution p2(mio::ParameterDistributionUniform(2., 3.));
5954
auto params1 = std::vector<double>{0., 1.};
@@ -78,8 +73,6 @@ TEST(AbstractParameterDist, test_abstract_uniform_distribution)
7873

7974
TEST(AbstractParameterDist, test_abstract_lognormal_distribution)
8075
{
81-
mio::log_thread_local_rng_seeds(mio::LogLevel::warn);
82-
8376
mio::AbstractParameterDistribution p1(mio::ParameterDistributionLogNormal(1., 0.25));
8477
mio::AbstractParameterDistribution p2(mio::ParameterDistributionLogNormal(2., 0.1));
8578
auto params1 = std::vector<double>{1., 0.25};
@@ -102,8 +95,6 @@ TEST(AbstractParameterDist, test_abstract_lognormal_distribution)
10295

10396
TEST(AbstractParameterDist, test_abstract_exponential_distribution)
10497
{
105-
mio::log_thread_local_rng_seeds(mio::LogLevel::warn);
106-
10798
mio::AbstractParameterDistribution p1(mio::ParameterDistributionExponential(1.));
10899
mio::AbstractParameterDistribution p2(mio::ParameterDistributionExponential(2.));
109100
auto params1 = std::vector<double>{1.};
@@ -126,8 +117,6 @@ TEST(AbstractParameterDist, test_abstract_exponential_distribution)
126117

127118
TEST(AbstractParameterDist, test_abstract_constant_distribution)
128119
{
129-
mio::log_thread_local_rng_seeds(mio::LogLevel::warn);
130-
131120
mio::AbstractParameterDistribution p1(mio::ParameterDistributionConstant(1.));
132121
mio::AbstractParameterDistribution p2(mio::ParameterDistributionConstant(2.));
133122
auto params1 = std::vector<double>{1.};

cpp/tests/test_analyze_result.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#include "memilio/utils/time_series.h"
2727
#include "ode_secir/analyze_result.h"
2828
#include "ode_secir/model.h"
29+
#include "utils.h"
2930

3031
#include "gtest/gtest.h"
3132
#include "gmock/gmock.h"
@@ -679,15 +680,19 @@ TEST(TestMergeTimeSeries, joint_tp_add)
679680

680681
TEST(TestMergeTimeSeries, joint_tp)
681682
{
683+
mio::RedirectLogger logger;
684+
logger.capture();
685+
682686
mio::TimeSeries<double> ts1(2);
683687
mio::TimeSeries<double> ts2(2);
684688
ts1.add_time_point(0., mio::TimeSeries<double>::Vector::Constant(2, 1.));
685689
ts2.add_time_point(0., mio::TimeSeries<double>::Vector::Constant(2, 2.));
686690

687691
//Check for both TimeSeries having only one time point
688692
auto merged_ts_status = mio::merge_time_series(ts1, ts2, false);
689-
auto merged_ts = merged_ts_status.value();
693+
EXPECT_THAT(logger.read(), testing::HasSubstr("Both TimeSeries have values for t=0"));
690694
ASSERT_TRUE(merged_ts_status);
695+
auto merged_ts = merged_ts_status.value();
691696
ASSERT_EQ(merged_ts.get_num_time_points(), 1);
692697
EXPECT_NEAR(merged_ts.get_time(0), 0., 1e-12);
693698
EXPECT_NEAR(merged_ts.get_value(0)[0], 1., 1e-12);
@@ -698,13 +703,16 @@ TEST(TestMergeTimeSeries, joint_tp)
698703
ts2.add_time_point(1., mio::TimeSeries<double>::Vector::Constant(2, 3.));
699704

700705
merged_ts_status = mio::merge_time_series(ts1, ts2, false);
701-
merged_ts = merged_ts_status.value();
706+
EXPECT_THAT(logger.read(), testing::AllOf(testing::HasSubstr("Both TimeSeries have values for t=0"),
707+
testing::HasSubstr("Both TimeSeries have values for t=1")));
702708
ASSERT_TRUE(merged_ts_status);
709+
merged_ts = merged_ts_status.value();
703710
ASSERT_EQ(merged_ts.get_num_time_points(), 2);
704711
EXPECT_NEAR(merged_ts.get_time(0), 0., 1e-12);
705712
EXPECT_NEAR(merged_ts.get_value(0)[0], 1., 1e-12);
706713
EXPECT_NEAR(merged_ts.get_value(0)[1], 1., 1e-12);
707714
EXPECT_NEAR(merged_ts.get_time(1), 1., 1e-12);
708715
EXPECT_NEAR(merged_ts.get_value(1)[0], 2., 1e-12);
709716
EXPECT_NEAR(merged_ts.get_value(1)[1], 2., 1e-12);
717+
logger.release();
710718
}

cpp/tests/test_binary_serializer.cpp

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,17 @@
1717
* See the License for the specific language governing permissions and
1818
* limitations under the License.
1919
*/
20-
#include "boost/none.hpp"
21-
#include "boost/none_t.hpp"
2220
#include "matchers.h"
23-
#include "memilio/epidemiology/damping.h"
24-
#include "memilio/epidemiology/damping_sampling.h"
2521
#include "memilio/io/binary_serializer.h"
2622
#include "memilio/io/io.h"
2723
#include "memilio/utils/logging.h"
28-
#include "memilio/utils/parameter_distributions.h"
2924
#include "memilio/utils/time_series.h"
30-
#include "memilio/utils/uncertain_value.h"
3125
#include "ode_secir/model.h"
3226
#include "ode_secir/parameter_space.h"
33-
#include "ode_secir/parameters.h"
27+
#include "utils.h"
28+
29+
#include "boost/none.hpp"
3430
#include "gtest/gtest.h"
35-
#include <memory>
3631

3732
namespace
3833
{
@@ -180,10 +175,9 @@ TEST(BinarySerializer, model)
180175
//this test is only to make sure the correct number of bytes are serialized/deserialized
181176
//in a very complex object. correct serializing of single values is tested by other tests.
182177
mio::osecir::Model<double> model{5};
183-
mio::set_log_level(mio::LogLevel::err);
184178
mio::osecir::set_params_distributions_normal<double>(model, 0, 10, 0.01);
185-
mio::set_log_level(mio::LogLevel::warn);
186179
auto stream = mio::serialize_binary(model);
180+
mio::LogLevelOverride llo(mio::LogLevel::off); // suppress warnings from model constructor
187181
auto result = mio::deserialize_binary(stream, mio::Tag<mio::osecir::Model<double>>{});
188182
EXPECT_THAT(result, IsSuccess());
189183
}
@@ -233,4 +227,4 @@ TEST(ByteStream, reset)
233227
auto p = (unsigned char*)&i;
234228
EXPECT_TRUE(stream.read(p, sizeof(i)));
235229
EXPECT_EQ(i, 0);
236-
}
230+
}

cpp/tests/test_epi_data_io.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,19 @@
1717
* See the License for the specific language governing permissions and
1818
* limitations under the License.
1919
*/
20-
21-
#include "abm/infection_state.h"
2220
#include "memilio/epidemiology/age_group.h"
2321
#include "memilio/geography/regions.h"
2422
#include "memilio/io/epi_data.h"
2523
#include "matchers.h"
2624
#include "memilio/io/io.h"
27-
#include "memilio/io/mobility_io.h"
2825
#include "test_data_dir.h"
2926
#include "gtest/gtest.h"
3027
#include "json/value.h"
3128
#include "ode_secirts/model.h"
3229
#include "ode_secirts/parameters_io.h"
3330
#include "memilio/utils/stl_util.h"
3431
#include "boost/optional/optional_io.hpp"
32+
#include "utils.h"
3533
#include <gmock/gmock-matchers.h>
3634

3735
TEST(TestEpiDataIo, read_rki)
@@ -423,9 +421,12 @@ TEST(TestEpiData, set_vaccination_data)
423421
model.parameters.set<mio::osecirts::DaysUntilEffectiveBoosterImmunity<double>>(1);
424422
std::vector<mio::osecirts::Model<double>> model_vector{model};
425423

426-
auto f = mio::osecirts::details::set_vaccination_data(model_vector,
427-
mio::path_join(TEST_DATA_DIR, "vaccination_test.json"),
428-
mio::Date(2022, 4, 15), county_ids, num_days);
424+
{
425+
mio::LogLevelOverride llo(mio::LogLevel::off); // suppress "Vaccination data only available from [...]"
426+
mio::unused(mio::osecirts::details::set_vaccination_data(model_vector,
427+
mio::path_join(TEST_DATA_DIR, "vaccination_test.json"),
428+
mio::Date(2022, 4, 15), county_ids, num_days));
429+
}
429430

430431
auto expected_values_PI =
431432
(Eigen::ArrayXd(num_age_groups * (num_days + 1)) << 7, 10, 20, 15, 10, 5, 2, 15, 8, 0).finished();

cpp/tests/test_graph.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,13 @@
3535
#include "matchers.h"
3636
#include "temp_file_register.h"
3737
#include "memilio/utils/stl_util.h"
38+
#include "utils.h"
3839
#include "gmock/gmock-matchers.h"
40+
#include "gmock/gmock.h"
3941
#include <cstddef>
4042
#include <gtest/gtest.h>
4143
#include <gmock/gmock.h>
44+
#include <sys/types.h>
4245
#include <type_traits>
4346
#include <string>
4447

@@ -373,7 +376,11 @@ TEST(TestGraphBuilder, Build_unique)
373376
builder.add_edge(1, 2, 200);
374377
builder.add_edge(2, 1, 300);
375378

379+
mio::RedirectLogger logger;
380+
logger.capture();
376381
auto g = std::move(builder).build(true);
382+
EXPECT_THAT(logger.read(), testing::HasSubstr("[warning] Removed duplicate edge(s)"));
383+
logger.release();
377384

378385
EXPECT_EQ(g.nodes().size(), 3);
379386
EXPECT_EQ(g.edges().size(), 3);

cpp/tests/test_graph_abm.cpp

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,10 @@
2929
#include "graph_abm/graph_abm_mobility.h"
3030
#include "memilio/epidemiology/age_group.h"
3131
#include "memilio/utils/logging.h"
32-
#include "memilio/utils/miompi.h"
3332
#include "memilio/mobility/graph.h"
34-
#include "abm_helpers.h"
35-
#include <algorithm>
36-
#include <cstddef>
33+
#include "utils.h"
34+
3735
#include <gtest/gtest.h>
38-
#include <iostream>
3936

4037
struct MockHistory {
4138

@@ -253,10 +250,15 @@ TEST(TestGraphABM, test_get_person)
253250
auto& p1 = model.get_person(pid1);
254251
EXPECT_EQ(p1.get_location(), home);
255252
EXPECT_EQ(p1.get_age(), mio::AgeGroup(0));
256-
model.remove_person(model.get_person_index(pid1));
257-
EXPECT_EQ(model.get_person_index(pid1), std::numeric_limits<uint32_t>::max());
258253

259-
auto& p2 = model.get_person(pid2);
260-
EXPECT_EQ(p2.get_location(), work);
261-
EXPECT_EQ(p2.get_age(), mio::AgeGroup(1));
254+
{
255+
model.remove_person(model.get_person_index(pid1));
256+
257+
mio::LogLevelOverride llo(mio::LogLevel::off);
258+
EXPECT_EQ(model.get_person_index(pid1), std::numeric_limits<uint32_t>::max());
259+
260+
auto& p2 = model.get_person(pid2);
261+
EXPECT_EQ(p2.get_location(), work);
262+
EXPECT_EQ(p2.get_age(), mio::AgeGroup(1));
263+
}
262264
}

cpp/tests/test_odemseirs4.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "ode_mseirs4/model.h"
2424
#include "ode_mseirs4/infection_state.h"
2525
#include "ode_mseirs4/parameters.h"
26+
#include "utils.h"
2627

2728
#include <gtest/gtest.h>
2829

@@ -113,6 +114,7 @@ TEST_F(ModelTestOdeMseirs4, checkPopulationConservation)
113114

114115
TEST(TestOdeMseirs4, apply_constraints_parameters)
115116
{
117+
mio::LogLevelOverride llo(mio::LogLevel::off); // hide constraint warnings/errors
116118
mio::omseirs4::Model<double> model;
117119

118120
auto& params = model.parameters;
@@ -148,6 +150,7 @@ TEST(TestOdeMseirs4, apply_constraints_parameters)
148150

149151
TEST(TestOdeMseirs4, check_constraints_parameters)
150152
{
153+
mio::LogLevelOverride llo(mio::LogLevel::off); // hide constraint warnings/errors
151154
mio::omseirs4::Model<double> model;
152155
auto& params = model.parameters;
153156

0 commit comments

Comments
 (0)