eclipse-iceoryx / iceoryx

Eclipse iceoryx™ - true zero-copy inter-process-communication
https://iceoryx.io
Apache License 2.0
1.57k stars 373 forks source link

integrationtest to verify limits of iceoryx #1077

Open elfenpiff opened 2 years ago

elfenpiff commented 2 years ago

Brief feature description

In iceoryx_posh_types.hpp defines maximum supported amounts of resources like ports, history size, mempools, shared memory segments etc. free to use by the user.

We require tests to check if those limits are compatible with each other and maybe connect them with if necessary. Additionally, we require integrationtests which verify that iceoryx runs stable even when all resources are in use.

Detailed information

In a first step it would make sense to split up iceoryx_posh_types.hpp into a iceoryx_config.hpp file and into a compile time iceoryx_config_verificator.hpp. In the config file only the global constexpr are defined and we put all the static_asserts into the verification file. All the remaining class and function definitions have to be moved to more fitting places. Maybe a iceoryx_common.hpp file would make sense. Finally, when having tightly coupled MAX_ values then only one of those values should be present in iceoryx_config.hpp. The coupling of the other value should happen in iceoryx_config_internal.hpp so that the user cannot create incompatible configurations.

List of coupling problems (not complete):

Internally used resources

A user does not know what kind of resources we are using internally. So it may happen that they are surprised that they configured 6 publishers but they can only create 1 (since the remaining 5 are used by the introspection). This can be solved by having a MAX_PUBLISHERS variable in the public iceoryx_config.hpp and a MAX_PUBLISHER_IN_SYSTEM=MAX_PUBLISHER + PUBLISHERS_USED_BY_INTROSPECTION in the iceoryx_config_internal.hpp.

But still it may happen that a user then breaks its own contract and uses more publishers than configured and maybe internal services are then crashing. In a further step it may makes sense to decouple internal resources completely so that they are always available for roudi.

To Do

elfenpiff commented 2 years ago

@budrus @dkroenke @elBoberido

In my opinion this should be one of the highest priorities after we released iceoryx 2.0. Do you have additional ideas or remarks?