SciCompMod / memilio

Modular spatio-temporal models for epidemic and pandemic simulations
https://scicompmod.github.io/memilio/
Apache License 2.0
53 stars 16 forks source link

lcov Code coverage drop #472

Closed mknaranja closed 1 year ago

mknaranja commented 1 year ago

Due to some unknown, changed behavior of (probably?) lcov, our code coverage dropped from 90 to 60 % in one day.

It was still high at about 90% in https://github.com/DLR-SC/memilio/actions/runs/3493936927/jobs/5849427987

With https://github.com/DLR-SC/memilio/actions/runs/3501838610/jobs/5865945170 code coverage dropped.

Probably, the difference (or error?) is to be found in test-cpp-gcc_clang (gcc, Debug, latest) which gives

2022-11-18T03:55:35.0447528Z Deleted 391 files
2022-11-18T03:55:35.0447752Z Writing data to coverage.info
2022-11-18T03:55:35.0447995Z Summary coverage rate:
2022-11-18T03:55:35.0448240Z   lines......: 90.1% (6257 of 6944 lines)
2022-11-18T03:55:35.0448490Z   functions..: 85.3% (4034 of 4729 functions)
2022-11-18T03:55:35.0448744Z   branches...: no data found

and test-cpp-gcc_clang (gcc, Debug, latest) which gives

2022-11-19T03:55:00.1058326Z Deleted 398 files
2022-11-19T03:55:00.1060246Z Writing data to coverage.info
2022-11-19T03:55:00.1061306Z Summary coverage rate:
2022-11-19T03:55:00.1061940Z   lines......: 62.1% (4315 of 6951 lines)
2022-11-19T03:55:00.1062851Z   functions..: 44.5% (2111 of 4749 functions)
2022-11-19T03:55:00.1063517Z   branches...: no data found
mknaranja commented 1 year ago

Interestingly, I get the following locally with gcc-10.4

Overall coverage rate:
  lines......: 92.0% (6245 of 6790 lines)
  functions..: 95.3% (4063 of 4264 functions)
Reading tracefile coverage.info
                                               |Lines      |Functions|Branches  
Filename                                       |Rate    Num|Rate  Num|Rate   Num
================================================================================
[/localdata1/kueh_mj/code/memilio/cpp/]
memilio/compartments/compartmentalmodel.h      |92.3%    26|78.6%  28|    -    0
memilio/compartments/parameter_studies.h       | 100%    30| 100%  11|    -    0
memilio/compartments/simulation.h              | 100%    26|93.1%  29|    -    0
memilio/data/analyze_result.cpp                |98.9%    91| 100%   7|    -    0
memilio/data/analyze_result.h                  | 100%    31| 100%   5|    -    0
memilio/epidemiology/age_group.h               | 100%     3| 100%   1|    -    0
memilio/epidemiology/contact_matrix.h          |96.3%   134|95.0% 120|    -    0
memilio/epidemiology/damping.h                 |96.5%   143|89.0% 146|    -    0
memilio/epidemiology/damping_sampling.h        | 100%    63| 100%  26|    -    0
memilio/epidemiology/dynamic_npis.h            |99.0%    99|83.3%  42|    -    0
memilio/epidemiology/populations.h             |95.1%    61| 100%  41|    -    0
memilio/epidemiology/regions.cpp               |32.3%    65| 100%   4|    -    0
memilio/epidemiology/uncertain_matrix.cpp      |92.5%    40|90.9%  11|    -    0
memilio/epidemiology/uncertain_matrix.h        |88.2%    34|87.5%   8|    -    0
memilio/io/epi_data.cpp                        |90.0%    10| 100%   1|    -    0
memilio/io/epi_data.h                          |97.9%   140| 100%  24|    -    0
memilio/io/hdf5_cpp.h                          | 100%    16| 100%   4|    -    0
memilio/io/io.cpp                              |87.0%    23| 100%   4|    -    0
memilio/io/io.h                                |70.5%   139|91.1% 470|    -    0
memilio/io/json_serializer.h                   |87.7%   219|98.2% 226|    -    0
memilio/io/mobility_io.cpp                     |84.4%    77| 100%   4|    -    0
memilio/io/mobility_io.h                       |85.2%    61| 100%   2|    -    0
memilio/io/result_io.cpp                       |95.2%   104| 100%   4|    -    0
memilio/io/result_io.h                         | 100%     8| 100%   3|    -    0
memilio/math/adapt_rk.cpp                      |98.6%    71| 100%   3|    -    0
memilio/math/adapt_rk.h                        | 100%    17| 100%   5|    -    0
memilio/math/eigen_util.h                      | 100%    71|92.6%  81|    -    0
memilio/math/euler.cpp                         | 100%     5| 100%   1|    -    0
memilio/math/floating_point.h                  | 100%    10| 100%   4|    -    0
memilio/math/integrator.cpp                    |95.5%    22| 100%   1|    -    0
memilio/math/integrator.h                      | 100%    12|92.3%  13|    -    0
memilio/math/interpolation.h                   | 100%     3| 100%   1|    -    0
memilio/math/matrix_shape.h                    | 100%    44| 100%  23|    -    0
memilio/math/smoother.h                        | 100%    11| 100%   7|    -    0
memilio/math/stepper_wrapper.h                 | 100%    32| 100%  24|    -    0
memilio/mobility/graph.h                       |89.3%    56|84.1%  82|    -    0
memilio/mobility/graph_simulation.h            | 100%    28| 100%  15|    -    0
memilio/mobility/mobility.h                    |89.1%   137|80.0%  65|    -    0
memilio/utils/compiler_diagnostics.h           | 100%     2| 100%   2|    -    0
memilio/utils/custom_index_array.h             |99.4%   154|98.3% 484|    -    0
memilio/utils/date.h                           |92.5%    93|92.3%  13|    -    0
memilio/utils/index.h                          | 100%    40| 100% 117|    -    0
memilio/utils/logging.h                        |57.1%    42|41.4%  29|    -    0
memilio/utils/memory.h                         |86.7%    15|88.9%   9|    -    0
memilio/utils/parameter_distributions.h        |92.3%   169|97.2%  36|    -    0
memilio/utils/parameter_set.h                  | 100%    73|99.7% 672|    -    0
memilio/utils/pointer_dereferencing_iterator.h | 100%     5| 100%   2|    -    0
memilio/utils/random_number_generator.h        |98.5%    68|97.6%  41|    -    0
memilio/utils/span.h                           | 100%    12|88.9%   9|    -    0
memilio/utils/stl_util.h                       | 100%    59| 100% 359|    -    0
memilio/utils/time_series.h                    |96.6%   205|98.3% 173|    -    0
memilio/utils/transform_iterator.h             | 100%    23| 100%  17|    -    0
memilio/utils/type_safe.h                      |96.4%    55|89.7% 184|    -    0
memilio/utils/uncertain_value.cpp              | 100%    11| 100%   4|    -    0
memilio/utils/uncertain_value.h                |70.7%    58|78.6%  14|    -    0
memilio/utils/visitor.h                        |62.5%     8|50.0%   8|    -    0
models/abm/household.cpp                       | 100%    34| 100%   5|    -    0
models/abm/household.h                         | 100%    25| 100%   9|    -    0
models/abm/location.cpp                        |99.1%   112| 100%  10|    -    0
models/abm/location.h                          | 100%    29| 100%  11|    -    0
models/abm/lockdown_rules.cpp                  | 100%    12| 100%   3|    -    0
models/abm/migration_rules.cpp                 |85.1%    74|80.0%  10|    -    0
models/abm/parameters.h                        | 100%    52| 100%  26|    -    0
models/abm/person.cpp                          |96.9%    97|93.8%  16|    -    0
models/abm/person.h                            | 100%    18| 100%   8|    -    0
models/abm/random_events.h                     | 100%    13|75.0%  16|    -    0
models/abm/simulation.cpp                      | 100%    20| 100%   3|    -    0
models/abm/simulation.h                        | 100%     2| 100%   1|    -    0
models/abm/testing_strategy.cpp                |97.3%   111|96.2%  26|    -    0
models/abm/testing_strategy.h                  | 100%     2| 100%   2|    -    0
models/abm/time.h                              | 100%    61| 100%  28|    -    0
models/abm/trip_list.cpp                       | 100%    12|83.3%   6|    -    0
models/abm/trip_list.h                         | 100%    15| 100%   4|    -    0
models/abm/world.cpp                           |81.4%   118|66.7%  27|    -    0
models/abm/world.h                             | 100%     6| 100%   2|    -    0
models/ide_seir/model.cpp                      |79.0%    62|85.7%   7|    -    0
models/ide_seir/parameters.h                   | 100%    10| 100%   4|    -    0
models/ode_secir/analyze_result.h              | 100%    65| 100%  49|    -    0
models/ode_secir/model.h                       |99.3%   136|93.8%  16|    -    0
models/ode_secir/parameter_space.cpp           | 100%   110| 100%   7|    -    0
models/ode_secir/parameters.h                  |75.1%   197| 100%  44|    -    0
models/ode_secir/parameters_io.cpp             |89.4%   218| 100%  17|    -    0
models/ode_secir/parameters_io.h               |97.0%   100| 100%   4|    -    0
models/ode_secirvvs/analyze_result.h           | 100%   112| 100%  94|    -    0
models/ode_secirvvs/model.h                    |97.7%   390| 100%  12|    -    0
models/ode_secirvvs/parameter_space.cpp        |89.9%   109|75.0%   4|    -    0
models/ode_secirvvs/parameters.h               |63.8%   188| 100%  41|    -    0
models/ode_secirvvs/parameters_io.cpp          |84.5%   239|95.5%  22|    -    0
models/ode_secirvvs/parameters_io.h            |96.3%   761| 100%   5|    -    0
models/ode_seir/model.h                        | 100%    18| 100%   2|    -    0
models/ode_seir/parameters.h                   | 100%     8| 100%   4|    -    0
================================================================================
                                         Total:|92.0%  6790|95.3%  4k|    -    0
mknaranja commented 1 year ago

I have a strong feeling that

2022-11-25T16:23:33.8702714Z 
2022-11-25T16:23:33.8702950Z [----------] 7 tests from TestSaveParameters
2022-11-25T16:23:33.8703402Z [ RUN      ] TestSaveParameters.json_single_sim_write_read_compare
2022-11-25T16:23:33.9018905Z [       OK ] TestSaveParameters.json_single_sim_write_read_compare (31 ms)
2022-11-25T16:23:33.9019443Z [ RUN      ] TestSaveParameters.json_uncertain_matrix_write_read_compare
2022-11-25T16:23:33.9134622Z /home/runner/work/memilio/memilio/cpp/build/_deps/jsoncpp-src/src/lib_json/json_reader.cpp:1559:39: runtime error: negation of -9223372036854775808 cannot be represented in type 'long long int'; cast to an unsigned type to negate this value to itself

is the reason for that. It makes the test execution break down in CI.

What I find strange nevertheless is that the CI item gives an "Okay" status.

mknaranja commented 1 year ago

Will be corrected with #477 and #479