eclipse-cyclonedds / cyclonedds

Eclipse Cyclone DDS project
https://projects.eclipse.org/projects/iot.cyclonedds
Other
799 stars 349 forks source link

Failing tests on the releases/0.10.x on Ubuntu 24.04 #1959

Closed clalancette closed 2 months ago

clalancette commented 3 months ago

We are currently trying to move ROS 2 over to Ubuntu 24.04. Most of the remaining failures have to do with the cyclonedds tests on that operating system.

The steps to reproduce are the following:

  1. Install Ubuntu 24.04
  2. Clone this repository: git clone https://github.com/eclipse-cyclonedds/cyclonedds -b releases/0.10.x
  3. Build: cd cyclonedds ; mkdir build ; cd build ; cmake .. -DBUILD_TESTING=ON ; make -j10
  4. Run the tests: ctest .

If I do that, then of the 1280 tests, 8 of them fail:

The following tests FAILED:
    272 - CUnit_ddssec_security_plugin_loading_missing_finalize (Subprocess aborted)
    273 - CUnit_ddssec_security_plugin_loading_authentication_missing_function (Subprocess aborted)
    274 - CUnit_ddssec_security_plugin_loading_access_control_missing_function (Subprocess aborted)
    275 - CUnit_ddssec_security_plugin_loading_cryptography_missing_function (Subprocess aborted)
    276 - CUnit_ddssec_security_plugin_loading_no_library_in_path (Subprocess aborted)
    277 - CUnit_ddssec_security_plugin_loading_init_error (Subprocess aborted)
    556 - CUnit_ddsc_config_simple_udp (Subprocess aborted)
    821 - CUnit_ddsc_participant_create_with_conf_no_env (Subprocess aborted)

When I run the same tests on Ubuntu 22.04, there are no failures.

Also, if I run test tests on the master branch, there are no failures.

I'm going to poke at this a bit more in the next week, but I thought I'd open this PR to get some early feedback or thoughts.

eboasson commented 3 months ago

My first thought is run-time linking library paths, but that doesn't make sense for CUnit_ddsc_participant_create_with_conf_no_env, so that is the one I would look at first.

If I can get the Ubuntu 24.04 image to run in qemu I'll try to have a look as well.

eboasson commented 3 months ago

This: https://github.com/eclipse-cyclonedds/cyclonedds/pull/1817 is probably the solution. It does the trick for the two non-security related ones.

Cherry-picking it is a bit tricky because ddsi_config.c is an input for some generated files that we include in the repository and the pre-commit hooks reject it. What I do when that happens is to reset the contents of those files, then do cmake + a rebuild to regenerate:

git reset ../docs/manual/config/config_file_reference.rst ../docs/manual/options.md ../etc/cyclonedds.rnc ../etc/cyclonedds.xsd ../src/core/ddsi/defconfig.c && git checkout ../docs/manual/config/config_file_reference.rst ../docs/manual/options.md ../etc/cyclonedds.rnc ../etc/cyclonedds.xsd ../src/core/ddsi/defconfig.c
cmake .
make
git add -u ..
git cherry-pick --continue
clalancette commented 3 months ago

This: #1817 is probably the solution. It does the trick for the two non-security related ones.

Yep! That seems to do it for me. Thanks for the hint. I'm going to open a PR here that contains a cherry-pick of that PR (with the great instructions you provided), plus a couple of other small fixes.

clalancette commented 2 months ago

This was fixed by #1964, so closing.