diff --git a/ddsrouter_test/compose/CMakeLists.txt b/ddsrouter_test/compose/CMakeLists.txt index 62a2695d1..d49206259 100644 --- a/ddsrouter_test/compose/CMakeLists.txt +++ b/ddsrouter_test/compose/CMakeLists.txt @@ -45,12 +45,18 @@ set(TESTS forwarding_routes/topic_routes forwarding_routes/repeater - remove_unused_entities/disconnect - remove_unused_entities/disconnect_wan - remove_unused_entities/persist_diff_domain - remove_unused_entities/persist_same_domain - remove_unused_entities/reconnect - remove_unused_entities/reconnect_wan + remove_unused_entities/reader/disconnect + remove_unused_entities/reader/disconnect_wan + remove_unused_entities/reader/persist_diff_domain + remove_unused_entities/reader/persist_same_domain + remove_unused_entities/reader/reconnect + remove_unused_entities/reader/reconnect_wan + remove_unused_entities/writer/disconnect + remove_unused_entities/writer/disconnect_wan + remove_unused_entities/writer/persist_diff_domain + remove_unused_entities/writer/persist_same_domain + remove_unused_entities/writer/reconnect + remove_unused_entities/writer/reconnect_wan frequency/max-tx-rate/specs frequency/max-tx-rate/participant diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect/compose.yml b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect/compose.yml similarity index 97% rename from ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect/compose.yml rename to ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect/compose.yml index 17780dc58..06dd16982 100644 --- a/ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect/compose.yml +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect/compose.yml @@ -48,7 +48,7 @@ services: networks: - std_net volumes: - - ../../../scripts:/scripts + - ../../../../scripts:/scripts command: python3 /scripts/execute_and_validate_publisher.py --exe build/fastdds_configuration_example/configuration --n-unmatches 1 --timeout 8 --args "--samples 80 --domain 80 --name topic0 --interval 100" @@ -59,7 +59,7 @@ services: networks: - std_net volumes: - - ../../../scripts:/scripts + - ../../../../scripts:/scripts command: python3 /scripts/execute_and_validate_subscriber.py --exe build/fastdds_configuration_example/configuration --samples 20 --timeout 4 --args "--samples 20 --domain 81 --name topic0" diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/persist_same_domain/ddsrouter.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect/ddsrouter.yaml similarity index 85% rename from ddsrouter_test/compose/test_cases/remove_unused_entities/persist_same_domain/ddsrouter.yaml rename to ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect/ddsrouter.yaml index 55b2deb2a..5950a85a3 100644 --- a/ddsrouter_test/compose/test_cases/remove_unused_entities/persist_same_domain/ddsrouter.yaml +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect/ddsrouter.yaml @@ -12,3 +12,4 @@ participants: specs: remove-unused-entities: true + discovery-trigger: reader diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect_wan/compose.yml b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect_wan/compose.yml similarity index 98% rename from ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect_wan/compose.yml rename to ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect_wan/compose.yml index d5e8144ec..e10528464 100644 --- a/ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect_wan/compose.yml +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect_wan/compose.yml @@ -79,7 +79,7 @@ services: networks: - edge_0_net volumes: - - ../../../scripts:/scripts + - ../../../../scripts:/scripts command: python3 /scripts/execute_and_validate_publisher.py --exe build/fastdds_configuration_example/configuration --n-unmatches 1 --timeout 8 --args "--samples 80 --domain 80 --interval 100" # DOMAIN 81 @@ -103,7 +103,7 @@ services: networks: - edge_1_net volumes: - - ../../../scripts:/scripts + - ../../../../scripts:/scripts command: python3 /scripts/execute_and_validate_subscriber.py --exe build/fastdds_configuration_example/configuration --samples 20 --timeout 8 --args "--samples 20 --domain 81" networks: diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect_wan/ddsrouter_cloud_0.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect_wan/ddsrouter_cloud_0.yaml similarity index 92% rename from ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect_wan/ddsrouter_cloud_0.yaml rename to ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect_wan/ddsrouter_cloud_0.yaml index 66d7ca1fb..3ad3edc1b 100644 --- a/ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect_wan/ddsrouter_cloud_0.yaml +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect_wan/ddsrouter_cloud_0.yaml @@ -18,3 +18,4 @@ participants: specs: remove-unused-entities: true + discovery-trigger: reader diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect_wan/ddsrouter_cloud_1.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect_wan/ddsrouter_cloud_1.yaml similarity index 92% rename from ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect_wan/ddsrouter_cloud_1.yaml rename to ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect_wan/ddsrouter_cloud_1.yaml index 43450ed9f..4439cf1fe 100644 --- a/ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect_wan/ddsrouter_cloud_1.yaml +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect_wan/ddsrouter_cloud_1.yaml @@ -18,3 +18,4 @@ participants: specs: remove-unused-entities: true + discovery-trigger: reader diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect_wan/ddsrouter_edge_0.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect_wan/ddsrouter_edge_0.yaml similarity index 90% rename from ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect_wan/ddsrouter_edge_0.yaml rename to ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect_wan/ddsrouter_edge_0.yaml index 8c3df4a8e..8d9cb3141 100644 --- a/ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect_wan/ddsrouter_edge_0.yaml +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect_wan/ddsrouter_edge_0.yaml @@ -15,3 +15,4 @@ participants: specs: remove-unused-entities: true + discovery-trigger: reader diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect_wan/ddsrouter_edge_1.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect_wan/ddsrouter_edge_1.yaml similarity index 90% rename from ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect_wan/ddsrouter_edge_1.yaml rename to ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect_wan/ddsrouter_edge_1.yaml index 3d61b928f..24f9d30a7 100644 --- a/ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect_wan/ddsrouter_edge_1.yaml +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/disconnect_wan/ddsrouter_edge_1.yaml @@ -15,3 +15,4 @@ participants: specs: remove-unused-entities: true + discovery-trigger: reader diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/persist_diff_domain/compose.yml b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/persist_diff_domain/compose.yml similarity index 98% rename from ddsrouter_test/compose/test_cases/remove_unused_entities/persist_diff_domain/compose.yml rename to ddsrouter_test/compose/test_cases/remove_unused_entities/reader/persist_diff_domain/compose.yml index 00d3b627c..7b67d2595 100644 --- a/ddsrouter_test/compose/test_cases/remove_unused_entities/persist_diff_domain/compose.yml +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/persist_diff_domain/compose.yml @@ -83,7 +83,7 @@ services: networks: - std_net volumes: - - ../../../scripts:/scripts + - ../../../../scripts:/scripts command: python3 /scripts/execute_and_validate_publisher.py --exe build/fastdds_configuration_example/configuration --n-unmatches 1 --timeout 11 --args "--samples 110 --domain 80 --name topic0 --interval 100" # DOMAIN 81 @@ -93,7 +93,7 @@ services: networks: - std_net volumes: - - ../../../scripts:/scripts + - ../../../../scripts:/scripts command: python3 /scripts/execute_and_validate_subscriber.py --exe build/fastdds_configuration_example/configuration --samples 40 --timeout 6 --args "--samples 40 --domain 81 --name topic0" @@ -104,7 +104,7 @@ services: networks: - std_net volumes: - - ../../../scripts:/scripts + - ../../../../scripts:/scripts command: python3 /scripts/execute_and_validate_subscriber.py --exe build/fastdds_configuration_example/configuration --samples 40 --timeout 8 --delay 2 --args "--samples 40 --domain 82 --name topic0" networks: diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/persist_diff_domain/ddsrouter.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/persist_diff_domain/ddsrouter.yaml similarity index 88% rename from ddsrouter_test/compose/test_cases/remove_unused_entities/persist_diff_domain/ddsrouter.yaml rename to ddsrouter_test/compose/test_cases/remove_unused_entities/reader/persist_diff_domain/ddsrouter.yaml index 56dc762fa..108234dd2 100644 --- a/ddsrouter_test/compose/test_cases/remove_unused_entities/persist_diff_domain/ddsrouter.yaml +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/persist_diff_domain/ddsrouter.yaml @@ -16,3 +16,4 @@ participants: specs: remove-unused-entities: true + discovery-trigger: reader diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/persist_same_domain/compose.yml b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/persist_same_domain/compose.yml similarity index 98% rename from ddsrouter_test/compose/test_cases/remove_unused_entities/persist_same_domain/compose.yml rename to ddsrouter_test/compose/test_cases/remove_unused_entities/reader/persist_same_domain/compose.yml index bf06dd274..990c5a48e 100644 --- a/ddsrouter_test/compose/test_cases/remove_unused_entities/persist_same_domain/compose.yml +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/persist_same_domain/compose.yml @@ -78,7 +78,7 @@ services: networks: - std_net volumes: - - ../../../scripts:/scripts + - ../../../../scripts:/scripts command: python3 /scripts/execute_and_validate_publisher.py --exe build/fastdds_configuration_example/configuration --n-unmatches 1 --timeout 11 --args "--samples 110 --domain 80 --name topic0 --interval 100" @@ -89,7 +89,7 @@ services: networks: - std_net volumes: - - ../../../scripts:/scripts + - ../../../../scripts:/scripts command: python3 /scripts/execute_and_validate_subscriber.py --exe build/fastdds_configuration_example/configuration --samples 40 --timeout 6 --args "--samples 40 --domain 81 --name topic0" subscriber_t0_2: @@ -98,7 +98,7 @@ services: networks: - std_net volumes: - - ../../../scripts:/scripts + - ../../../../scripts:/scripts command: python3 /scripts/execute_and_validate_subscriber.py --exe build/fastdds_configuration_example/configuration --samples 40 --timeout 8 --delay 2 --args "--samples 40 --domain 81 --name topic0" networks: diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect/ddsrouter.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/persist_same_domain/ddsrouter.yaml similarity index 85% rename from ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect/ddsrouter.yaml rename to ddsrouter_test/compose/test_cases/remove_unused_entities/reader/persist_same_domain/ddsrouter.yaml index 55b2deb2a..5950a85a3 100644 --- a/ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect/ddsrouter.yaml +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/persist_same_domain/ddsrouter.yaml @@ -12,3 +12,4 @@ participants: specs: remove-unused-entities: true + discovery-trigger: reader diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect/compose.yml b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect/compose.yml similarity index 97% rename from ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect/compose.yml rename to ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect/compose.yml index 28c91f549..db7ebc1e0 100644 --- a/ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect/compose.yml +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect/compose.yml @@ -59,7 +59,7 @@ services: networks: - std_net volumes: - - ../../../scripts:/scripts + - ../../../../scripts:/scripts command: build/fastdds_configuration_example/configuration publisher --samples 110 --domain 80 --name topic0 --interval 100 @@ -70,7 +70,7 @@ services: networks: - std_net volumes: - - ../../../scripts:/scripts + - ../../../../scripts:/scripts command: python3 /scripts/execute_and_validate_subscriber.py --exe build/fastdds_configuration_example/configuration --samples 20 --timeout 3 --args "--samples 20 --domain 81 --name topic0" subscriber_t0_2: @@ -79,7 +79,7 @@ services: networks: - std_net volumes: - - ../../../scripts:/scripts + - ../../../../scripts:/scripts command: python3 /scripts/execute_and_validate_subscriber.py --exe build/fastdds_configuration_example/configuration --samples 20 --timeout 6 --delay 4 --args "--samples 20 --domain 81 --name topic0" networks: diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect/ddsrouter.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect/ddsrouter.yaml similarity index 85% rename from ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect/ddsrouter.yaml rename to ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect/ddsrouter.yaml index 55b2deb2a..5950a85a3 100644 --- a/ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect/ddsrouter.yaml +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect/ddsrouter.yaml @@ -12,3 +12,4 @@ participants: specs: remove-unused-entities: true + discovery-trigger: reader diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect_wan/compose.yml b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect_wan/compose.yml similarity index 98% rename from ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect_wan/compose.yml rename to ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect_wan/compose.yml index 1f5b22a31..012116329 100644 --- a/ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect_wan/compose.yml +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect_wan/compose.yml @@ -97,7 +97,7 @@ services: networks: - edge_1_net volumes: - - ../../../scripts:/scripts + - ../../../../scripts:/scripts command: python3 /scripts/execute_and_validate_subscriber.py --exe build/fastdds_configuration_example/configuration --samples 20 --timeout 8 --args "--samples 20 --domain 81" subscriber_2: @@ -108,7 +108,7 @@ services: networks: - edge_1_net volumes: - - ../../../scripts:/scripts + - ../../../../scripts:/scripts command: python3 /scripts/execute_and_validate_subscriber.py --exe build/fastdds_configuration_example/configuration --samples 20 --timeout 6 --delay 4 --args "--samples 20 --domain 81" networks: diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect_wan/ddsrouter_cloud_0.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect_wan/ddsrouter_cloud_0.yaml similarity index 92% rename from ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect_wan/ddsrouter_cloud_0.yaml rename to ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect_wan/ddsrouter_cloud_0.yaml index 66d7ca1fb..3ad3edc1b 100644 --- a/ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect_wan/ddsrouter_cloud_0.yaml +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect_wan/ddsrouter_cloud_0.yaml @@ -18,3 +18,4 @@ participants: specs: remove-unused-entities: true + discovery-trigger: reader diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect_wan/ddsrouter_cloud_1.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect_wan/ddsrouter_cloud_1.yaml similarity index 92% rename from ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect_wan/ddsrouter_cloud_1.yaml rename to ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect_wan/ddsrouter_cloud_1.yaml index 43450ed9f..4439cf1fe 100644 --- a/ddsrouter_test/compose/test_cases/remove_unused_entities/reconnect_wan/ddsrouter_cloud_1.yaml +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect_wan/ddsrouter_cloud_1.yaml @@ -18,3 +18,4 @@ participants: specs: remove-unused-entities: true + discovery-trigger: reader diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect_wan/ddsrouter_edge_0.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect_wan/ddsrouter_edge_0.yaml similarity index 90% rename from ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect_wan/ddsrouter_edge_0.yaml rename to ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect_wan/ddsrouter_edge_0.yaml index 8c3df4a8e..8d9cb3141 100644 --- a/ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect_wan/ddsrouter_edge_0.yaml +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect_wan/ddsrouter_edge_0.yaml @@ -15,3 +15,4 @@ participants: specs: remove-unused-entities: true + discovery-trigger: reader diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect_wan/ddsrouter_edge_1.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect_wan/ddsrouter_edge_1.yaml similarity index 90% rename from ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect_wan/ddsrouter_edge_1.yaml rename to ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect_wan/ddsrouter_edge_1.yaml index 3d61b928f..24f9d30a7 100644 --- a/ddsrouter_test/compose/test_cases/remove_unused_entities/disconnect_wan/ddsrouter_edge_1.yaml +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/reader/reconnect_wan/ddsrouter_edge_1.yaml @@ -15,3 +15,4 @@ participants: specs: remove-unused-entities: true + discovery-trigger: reader diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect/compose.yml b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect/compose.yml new file mode 100644 index 000000000..46c64a423 --- /dev/null +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect/compose.yml @@ -0,0 +1,90 @@ +# Test description: +# This test checks that tracks get deleted when their last publisher disconnects. +# +# Test architecture: +# +# 1. Check that the subscribers connect to the publisher. +# +# ┌───────────────────┐ ┌────────────────────┐ +# │ Domain 80 │ │ Domain 81 │ +# │ ┌──────────────┐ ┌┼────────────┼┐ ┌───────────────┐ │ +# │ │publisher_0_t0│ ││ ddsrouter ││ │subscriber_1_t0│ │ +# │ │ ─┼─┼┤► ─┼┼─┤► │ │ +# │ │(local) │ ││ (local) ││ │(local) │ │ +# │ └──────────────┘ └┼──────────┬─┼┘ └───────────────┘ │ +# │ │ │ │ │ +# └───────────────────┘ │ │ ┌───────────────┐ │ +# │ │ │subscriber_2_t0│ │ +# └─┼──┤► │ │ +# │ │(local) │ │ +# │ └───────────────┘ │ +# │ │ +# └────────────────────┘ +# +# 2. Check that when the publisher disconnects the track gets deleted. +# +# ┌───────────────────┐ ┌────────────────────┐ +# │ Domain 80 │ │ Domain 81 │ +# │ ┌┼─────────────┼┐ ┌───────────────┐ │ +# │ ││ ddsrouter ││ │subscriber_2_t0| │ +# │ ││ ││ │ │ │ +# │ ││ (local) ││ │(local) │ │ +# │ └┼─────────────┼┘ └───────────────┘ │ +# │ │ │ │ +# └───────────────────┘ └────────────────────┘ +# + +services: + + # ROUTER + ddsrouter: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: ddsrouter + networks: + - std_net + volumes: + - ./ddsrouter.yaml:/config.yaml + command: ddsrouter -c /config.yaml --timeout 10 + + # DOMAIN 80 + publisher_0_t0: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: publisher_0_t0 + depends_on: + - ddsrouter + networks: + - std_net + volumes: + - ../../../../scripts:/scripts + command: python3 /scripts/execute_and_validate_publisher.py --exe build/fastdds_configuration_example/configuration --timeout 4 --args "--samples 40 --domain 80 --name topic0 --interval 100" + + # DOMAIN 81 + + # Subscriber to verify the track has been created + subscriber_1_t0: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: subscriber_1_t0 + depends_on: + - ddsrouter + networks: + - std_net + volumes: + - ../../../../scripts:/scripts + command: python3 /scripts/execute_and_validate_subscriber.py --exe build/fastdds_configuration_example/configuration --samples 10 --timeout 8 --args "--domain 81 --samples 10 --name topic0" + + # Subscriber to verify the track has been deleted + subscriber_2_t0: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: subscriber_2_t0 + depends_on: + - ddsrouter + networks: + - std_net + volumes: + - ../../../../scripts:/scripts + command: python3 /scripts/execute_and_validate_subscriber.py --exe build/fastdds_configuration_example/configuration --n-unmatches 1 --timeout 8 --args "--domain 81 --name topic0" + +networks: + std_net: + default: + driver: none diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect/ddsrouter.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect/ddsrouter.yaml new file mode 100644 index 000000000..72315c214 --- /dev/null +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect/ddsrouter.yaml @@ -0,0 +1,15 @@ +version: v5.0 + +participants: + + - name: Local_80 + kind: local + domain: 80 + + - name: Local_81 + kind: local + domain: 81 + +specs: + remove-unused-entities: true + discovery-trigger: writer diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect_wan/compose.yml b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect_wan/compose.yml new file mode 100644 index 000000000..647f33211 --- /dev/null +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect_wan/compose.yml @@ -0,0 +1,127 @@ +# Test description: +# This test checks that the removal of unused entities frees up bandwidth +# over a WAN connection when there aren't any publishers. To achieve it, the +# test sets up four routers, a subscriber, and a publisher. It then checks +# that the subscriber receives the data from the publisher, and then it stops +# the connection and checks if the tracks have been destroyed. +# +# Test architecture: +# +# ┌─────────────────────────────────────────┐ +# │ cloud_edge_net │ +# │ ┌─────────────────┐ ┌─────────────────┐ │ +# │ │ddsrouter_cloud_0│ │ddsrouter_cloud_1│ │ +# │ │ ─┼─┤► │ │ +# │ │(wan + wan) │ │(wan + wan) │ │ +# │ └──────────────▲──┘ └──────────────┬──┘ │ +# │ │ │ │ +# │ ┌──────────────┼──┐ ┌──────────────┼──┐ │ +# │ │ Domain 80 │ │ │ Domain 81 │ │ │ +# │ │ │ │ │ │ │ │ +# │ │ edge_0_net │ │ │ edge_1_net │ │ │ +# │ │ ┌────────────┴┐ │ │ ┌────────────▼┐ │ │ +# │ │ │ddsrouter_0 │ │ │ │ddsrouter_1 │ │ │ +# │ │ │ │ │ │ │ │ │ │ +# │ │ │(local + wan)│ │ │ │(local + wan)│ │ │ +# │ │ └──────────▲──┘ │ │ └──────────┬──┘ │ │ +# │ │ │ │ │ │ │ │ +# └─┼────────────┼────┼─┼────────────┼────┼─┘ +# │ │ │ │ │ │ +# │ ┌──────────┴──┐ │ │ ┌──────────▼──┐ │ +# │ │publisher_t0 │ │ │ │subscriber_t0│ │ +# │ │ │ │ │ │ │ │ +# │ │(local) │ │ │ │(local) │ │ +# │ └─────────────┘ │ │ └─────────────┘ │ +# │ │ │ │ +# └─────────────────┘ └─────────────────┘ + +services: + + # CLOUD + ddsrouter_cloud_0: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: ddsrouter_cloud_0 + networks: + - cloud_edge_net + volumes: + - ./ddsrouter_cloud_0.yaml:/config.yaml + command: ddsrouter -c /config.yaml --timeout 8 + + ddsrouter_cloud_1: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: ddsrouter_cloud_1 + depends_on: + - ddsrouter_cloud_0 + networks: + - cloud_edge_net + volumes: + - ./ddsrouter_cloud_1.yaml:/config.yaml + command: ddsrouter -c /config.yaml --timeout 8 + + # DOMAIN 80 + ddsrouter_edge_0: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: ddsrouter_edge_0 + depends_on: + - ddsrouter_cloud_0 + networks: + - cloud_edge_net + - edge_0_net + volumes: + - ./ddsrouter_edge_0.yaml:/config.yaml + command: ddsrouter -c /config.yaml --timeout 8 + + publisher_0: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: publisher_0 + depends_on: + - ddsrouter_edge_0 + networks: + - edge_0_net + volumes: + - ../../../../scripts:/scripts + command: python3 /scripts/execute_and_validate_publisher.py --exe build/fastdds_configuration_example/configuration --timeout 4 --args "--samples 40 --domain 80 --name topic0 --interval 100" + + # DOMAIN 81 + ddsrouter_edge_1: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: ddsrouter_edge_1 + depends_on: + - ddsrouter_cloud_1 + networks: + - cloud_edge_net + - edge_1_net + volumes: + - ./ddsrouter_edge_1.yaml:/config.yaml + command: ddsrouter -c /config.yaml --timeout 8 + + # Subscriber to verify the track has been created + subscriber_1: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: subscriber_1 + depends_on: + - ddsrouter_edge_1 + networks: + - edge_1_net + volumes: + - ../../../../scripts:/scripts + command: python3 /scripts/execute_and_validate_subscriber.py --exe build/fastdds_configuration_example/configuration --samples 10 --timeout 8 --args "--domain 81 --samples 10 --name topic0" + + # Subscriber to verify the track has been deleted + subscriber_2: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: subscriber_2 + depends_on: + - ddsrouter_edge_1 + networks: + - edge_1_net + volumes: + - ../../../../scripts:/scripts + command: python3 /scripts/execute_and_validate_subscriber.py --exe build/fastdds_configuration_example/configuration --n-unmatches 1 --timeout 8 --args "--domain 81 --name topic0" + +networks: + edge_0_net: + edge_1_net: + cloud_edge_net: + default: + driver: none diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect_wan/ddsrouter_cloud_0.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect_wan/ddsrouter_cloud_0.yaml new file mode 100644 index 000000000..2a19a4740 --- /dev/null +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect_wan/ddsrouter_cloud_0.yaml @@ -0,0 +1,21 @@ +version: v5.0 + +participants: + + - name: Cloud_Participant_0 + kind: wan + listening-addresses: + - domain: ddsrouter_cloud_0 + port: 11666 + transport: udp + + - name: Cloud_Participant_1 + kind: wan + listening-addresses: + - domain: ddsrouter_cloud_0 + port: 21666 + transport: udp + +specs: + remove-unused-entities: true + discovery-trigger: writer diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect_wan/ddsrouter_cloud_1.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect_wan/ddsrouter_cloud_1.yaml new file mode 100644 index 000000000..17e90fd28 --- /dev/null +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect_wan/ddsrouter_cloud_1.yaml @@ -0,0 +1,21 @@ +version: v5.0 + +participants: + + - name: Cloud_Participant_0 + kind: wan + listening-addresses: + - domain: ddsrouter_cloud_1 + port: 31666 + transport: udp + + - name: Cloud_Participant_1 + kind: wan + connection-addresses: + - domain: ddsrouter_cloud_0 + port: 21666 + transport: udp + +specs: + remove-unused-entities: true + discovery-trigger: writer diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect_wan/ddsrouter_edge_0.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect_wan/ddsrouter_edge_0.yaml new file mode 100644 index 000000000..24b26c424 --- /dev/null +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect_wan/ddsrouter_edge_0.yaml @@ -0,0 +1,18 @@ +version: v5.0 + +participants: + + - name: Local_80 + kind: local + domain: 80 + + - name: Edge_Participant + kind: wan + connection-addresses: + - domain: ddsrouter_cloud_0 + port: 11666 + transport: udp + +specs: + remove-unused-entities: true + discovery-trigger: writer diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect_wan/ddsrouter_edge_1.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect_wan/ddsrouter_edge_1.yaml new file mode 100644 index 000000000..185019a58 --- /dev/null +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/disconnect_wan/ddsrouter_edge_1.yaml @@ -0,0 +1,18 @@ +version: v5.0 + +participants: + + - name: Local_81 + kind: local + domain: 81 + + - name: Edge_Participant + kind: wan + connection-addresses: + - domain: ddsrouter_cloud_1 + port: 31666 + transport: udp + +specs: + remove-unused-entities: true + discovery-trigger: writer diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/persist_diff_domain/compose.yml b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/persist_diff_domain/compose.yml new file mode 100644 index 000000000..4bd44c24c --- /dev/null +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/persist_diff_domain/compose.yml @@ -0,0 +1,117 @@ +# Test description: +# Check that the removal of unused entities is compatible with multiple publishers in different domains. +# Check that tracks do not get deleted when the participant who created them disconnects. +# +# Test architecture: +# +# 1. Check that the subscriber receives the data sent by the first publisher. +# +# ┌───────────────────┐ ┌────────────────────┐ +# │ Domain 80 │ │ Domain 82 │ +# │ ┌──────────────┐ ┌┼────────────┼┐ ┌───────────────┐ │ +# │ │publisher_0_t0│ ││ ddsrouter ││ │subscriber_2_t0│ │ +# │ │ ─┼─┼┤► ─┼┼─┤► │ │ +# │ │(local) │ ││ (local) ││ │(local) │ │ +# │ └──────────────┘ └┼────────────┼┘ └───────────────┘ │ +# │ │ │ │ +# └───────────────────┘ └────────────────────┘ +# +# 2. Check that the subscriber receives the data sent by the second publisher. +# +# ┌───────────────────┐ ┌────────────────────┐ +# │ Domain 80 │ │ Domain 82 │ +# │ ┌──────────────┐ ┌┼────────────┼┐ ┌───────────────┐ │ +# │ │publisher_0_t0│ ││ ddsrouter ││ │subscriber_2_t0│ │ +# │ │ ─┼─┼┤► ─┼┼─┤► │ │ +# │ │(local) │ ││ (local) ││ │(local) │ │ +# │ └──────────────┘ └┼─▲──────────┼┘ └───────────────┘ │ +# │ │ │ │ │ +# └───────────────────┘ │ └────────────────────┘ +# │ +# ┌───────────────────┐ │ +# │ Domain 81 │ │ +# │ ┌──────────────┐ │ │ +# │ │publisher_1_t0│ │ │ +# │ │ ─┼──┼─┘ +# │ │(local) │ │ +# │ └──────────────┘ │ +# │ │ +# └───────────────────┘ +# +# 3. Check that the subscriber keeps receiving the data sent by the second publisher. +# +# ┌───────────────────┐ ┌────────────────────┐ +# │ Domain 81 │ │ Domain 82 │ +# │ ┌──────────────┐ ┌┼────────────┼┐ ┌───────────────┐ │ +# │ │publisher_1_t0│ ││ ddsrouter ││ │subscriber_2_t0│ │ +# │ │ ─┼─┼┤► ─┼┼─┤► │ │ +# │ │(local) │ ││ (local) ││ │(local) │ │ +# │ └──────────────┘ └┼────────────┼┘ └───────────────┘ │ +# │ │ │ │ +# └───────────────────┘ └────────────────────┘ +# +# 4. Check that when the publisher disconnects the track gets deleted. +# +# ┌───────────────────┐ ┌────────────────────┐ +# │ Domain 81 │ │ Domain 82 │ +# │ ┌┼─────────────┼┐ ┌───────────────┐ │ +# │ ││ ddsrouter ││ │subscriber_2_t0│ │ +# │ ││ ││ │ │ │ +# │ ││ (local) ││ │(local) │ │ +# │ └┼─────────────┼┘ └───────────────┘ │ +# │ │ │ │ +# └───────────────────┘ └────────────────────┘ + + +services: + + # ROUTER + ddsrouter: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: ddsrouter + networks: + - std_net + volumes: + - ./ddsrouter.yaml:/config.yaml + command: ddsrouter -c /config.yaml --timeout 12 + + # DOMAIN 80 + publisher_0_t0: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: publisher_0_t0 + depends_on: + - ddsrouter + networks: + - std_net + volumes: + - ../../../../scripts:/scripts + command: python3 /scripts/execute_and_validate_publisher.py --exe install/BasicConfigurationExample/examples/cpp/dds/BasicConfigurationExample/BasicConfigurationExample --timeout 5 --args "--samples 50 --domain 80 --name topic0 --interval 100" + + # DOMAIN 81 + publisher_1_t0: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: publisher_1_t0 + depends_on: + - ddsrouter + networks: + - std_net + volumes: + - ../../../../scripts:/scripts + command: python3 /scripts/execute_and_validate_publisher.py --exe install/BasicConfigurationExample/examples/cpp/dds/BasicConfigurationExample/BasicConfigurationExample --timeout 5 --delay 4 --args "--samples 50 --domain 81 --name topic0 --interval 100" + + # DOMAIN 82 + subscriber_2_t0: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: subscriber_2_t0 + depends_on: + - ddsrouter + networks: + - std_net + volumes: + - ../../../../scripts:/scripts + command: python3 /scripts/execute_and_validate_subscriber.py --exe install/BasicConfigurationExample/examples/cpp/dds/BasicConfigurationExample/BasicConfigurationExample --samples 51 --allow-duplicates -1 --timeout 11 --args "--samples 51 --domain 82 --name topic0" + +networks: + std_net: + default: + driver: none diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/persist_diff_domain/ddsrouter.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/persist_diff_domain/ddsrouter.yaml new file mode 100644 index 000000000..d247ac660 --- /dev/null +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/persist_diff_domain/ddsrouter.yaml @@ -0,0 +1,19 @@ +version: v5.0 + +participants: + + - name: Local_80 + kind: local + domain: 80 + + - name: Local_81 + kind: local + domain: 81 + + - name: Local_82 + kind: local + domain: 82 + +specs: + remove-unused-entities: true + discovery-trigger: writer diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/persist_same_domain/compose.yml b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/persist_same_domain/compose.yml new file mode 100644 index 000000000..e3a8d0967 --- /dev/null +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/persist_same_domain/compose.yml @@ -0,0 +1,111 @@ +# Test description: +# Check that the removal of unused entities is compatible with publishers in the same domain. +# Check that tracks do not get deleted when the participant who created them disconnects. +# +# Test architecture: +# +# 1. Check that the subscriber receives the data sent by the first publisher. +# +# ┌───────────────────┐ ┌────────────────────┐ +# │ Domain 80 │ │ Domain 81 │ +# │ ┌──────────────┐ ┌┼────────────┼┐ ┌───────────────┐ │ +# │ │publisher_0_t0│ ││ ddsrouter ││ │subscriber_1_t0│ │ +# │ │ ─┼─┼┤► ─┼┼─┤► │ │ +# │ │(local) │ ││ (local) ││ │(local) │ │ +# │ └──────────────┘ └┼────────────┼┘ └───────────────┘ │ +# │ │ │ │ +# └───────────────────┘ └────────────────────┘ +# +# 2. Check that the subscriber receives the data sent by the second publisher. +# +# ┌───────────────────┐ ┌────────────────────┐ +# │ Domain 80 │ │ Domain 81 │ +# │ ┌──────────────┐ ┌┼────────────┼┐ ┌───────────────┐ │ +# │ │publisher_0_t0│ ││ ddsrouter ││ │subscriber_1_t0│ │ +# │ │ ─┼─┼┤► ─┼┼─┤► │ │ +# │ │(local) │ ││ (local) ││ │(local) │ │ +# │ └──────────────┘ └┼─▲──────────┼┘ └───────────────┘ │ +# │ │ │ │ │ +# │ ┌──────────────┐ │ │ └────────────────────┘ +# │ │publisher_1_t0│ │ │ +# │ │ ─┼──┼─┘ +# │ │(local) │ │ +# │ └──────────────┘ │ +# │ │ +# └───────────────────┘ +# +# 3. Check that the subscriber keeps receiving the data sent by the second publisher. +# +# ┌───────────────────┐ ┌────────────────────┐ +# │ Domain 80 │ │ Domain 81 │ +# │ ┌──────────────┐ ┌┼────────────┼┐ ┌───────────────┐ │ +# │ │publisher_1_t0│ ││ ddsrouter ││ │subscriber_1_t0│ │ +# │ │ ─┼─┼┤► ─┼┼─┤► │ │ +# │ │(local) │ ││ (local) ││ │(local) │ │ +# │ └──────────────┘ └┼────────────┼┘ └───────────────┘ │ +# │ │ │ │ +# └───────────────────┘ └────────────────────┘ +# +# 4. Check that when the publisher disconnects the track gets deleted. +# +# ┌───────────────────┐ ┌────────────────────┐ +# │ Domain 80 │ │ Domain 81 │ +# │ ┌┼────────────┼┐ ┌───────────────┐ │ +# │ ││ ddsrouter ││ │subscriber_1_t0│ │ +# │ ││ ││ │ │ │ +# │ ││ (local) ││ │(local) │ │ +# │ └┼────────────┼┘ └───────────────┘ │ +# │ │ │ │ +# └───────────────────┘ └────────────────────┘ + +services: + + # ROUTER + ddsrouter: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: ddsrouter + networks: + - std_net + volumes: + - ./ddsrouter.yaml:/config.yaml + command: ddsrouter -c /config.yaml --timeout 12 + + # DOMAIN 80 + publisher_0_t0: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: publisher_0_t0 + depends_on: + - ddsrouter + networks: + - std_net + volumes: + - ../../../../scripts:/scripts + command: python3 /scripts/execute_and_validate_publisher.py --exe install/BasicConfigurationExample/examples/cpp/dds/BasicConfigurationExample/BasicConfigurationExample --timeout 5 --args "--samples 50 --domain 80 --name topic0 --interval 100" + + publisher_1_t0: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: publisher_1_t0 + depends_on: + - ddsrouter + networks: + - std_net + volumes: + - ../../../../scripts:/scripts + command: python3 /scripts/execute_and_validate_publisher.py --exe install/BasicConfigurationExample/examples/cpp/dds/BasicConfigurationExample/BasicConfigurationExample --timeout 5 --delay 4 --args "--samples 50 --domain 80 --name topic0 --interval 100" + + # DOMAIN 81 + subscriber_1_t0: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: subscriber_1_t0 + depends_on: + - ddsrouter + networks: + - std_net + volumes: + - ../../../../scripts:/scripts + command: python3 /scripts/execute_and_validate_subscriber.py --exe install/BasicConfigurationExample/examples/cpp/dds/BasicConfigurationExample/BasicConfigurationExample --samples 51 --allow-duplicates -1 --timeout 11 --args "--samples 51 --domain 81 --name topic0" + +networks: + std_net: + default: + driver: none diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/persist_same_domain/ddsrouter.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/persist_same_domain/ddsrouter.yaml new file mode 100644 index 000000000..72315c214 --- /dev/null +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/persist_same_domain/ddsrouter.yaml @@ -0,0 +1,15 @@ +version: v5.0 + +participants: + + - name: Local_80 + kind: local + domain: 80 + + - name: Local_81 + kind: local + domain: 81 + +specs: + remove-unused-entities: true + discovery-trigger: writer diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect/compose.yml b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect/compose.yml new file mode 100644 index 000000000..1f1f51395 --- /dev/null +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect/compose.yml @@ -0,0 +1,93 @@ +# Test description: +# Check that tracks get rebuilt when a publisher disconnects and reconnects. +# +# Test architecture: +# +# 1. Check that the subscriber receives the data sent by the publisher. +# +# ┌───────────────────┐ ┌────────────────────┐ +# │ Domain 80 │ │ Domain 81 │ +# │ ┌──────────────┐ ┌┼─────────────┼┐ ┌───────────────┐ │ +# │ │publisher_t0_0│ ││ ddsrouter ││ │subscriber_1_t0│ │ +# │ │ ──┼─┼┤► ─┼┼─┤► │ │ +# │ │(local) │ ││ (local) ││ │(local) │ │ +# │ └──────────────┘ └┼─────────────┼┘ └───────────────┘ │ +# │ │ │ │ +# └───────────────────┘ └────────────────────┘ +# +# 2. Disconnect the publisher. +# +# ┌───────────────────┐ ┌────────────────────┐ +# │ Domain 80 │ │ Domain 81 │ +# │ ┌┼─────────────┼┐ ┌───────────────┐ │ +# │ ││ ddsrouter ││ │subscriber_1_t0│ │ +# │ ││ ││ │ │ │ +# │ ││ (local) ││ │(local) │ │ +# │ └┼─────────────┼┘ └───────────────┘ │ +# │ │ │ │ +# └───────────────────┘ └────────────────────┘ +# +# 3. Check that when the publisher is reactivated, it receives the data sent by the publisher. +# +# ┌───────────────────┐ ┌────────────────────┐ +# │ Domain 80 │ │ Domain 81 │ +# │ ┌──────────────┐ ┌┼─────────────┼┐ ┌───────────────┐ │ +# │ │publisher_t0_1│ ││ ddsrouter ││ │subscriber_1_t0│ │ +# │ │ ──┼─┼┤► ─┼┼─┤► │ │ +# │ │(local) │ ││ (local) ││ │(local) │ │ +# │ └──────────────┘ └┼─────────────┼┘ └───────────────┘ │ +# │ │ │ │ +# └───────────────────┘ └────────────────────┘ + +services: + + # ROUTER + ddsrouter: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: ddsrouter + networks: + - std_net + volumes: + - ./ddsrouter.yaml:/config.yaml + command: ddsrouter -c /config.yaml --timeout 14 + + + # DOMAIN 80 + publisher_t0_0: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: publisher_t0_0 + depends_on: + - ddsrouter + networks: + - std_net + volumes: + - ../../../../scripts:/scripts + command: python3 /scripts/execute_and_validate_publisher.py --exe build/fastdds_configuration_example/configuration --timeout 5 --args "--samples 50 --domain 80 --name topic0 --interval 100" + + publisher_t0_1: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: publisher_t0_1 + depends_on: + - ddsrouter + networks: + - std_net + volumes: + - ../../../../scripts:/scripts + command: python3 /scripts/execute_and_validate_publisher.py --exe build/fastdds_configuration_example/configuration --timeout 5 --delay 6 --args "--samples 50 --domain 80 --name topic0 --interval 100" + + # DOMAIN 81 + subscriber_1_t0: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: subscriber_1_t0 + depends_on: + - ddsrouter + networks: + - std_net + volumes: + - ../../../../scripts:/scripts + command: python3 /scripts/execute_and_validate_subscriber.py --exe build/fastdds_configuration_example/configuration --samples 60 --allow-duplicates -1 --timeout 12 --args "--samples 60 --domain 81 --name topic0" + +networks: + std_net: + default: + driver: none diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect/ddsrouter.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect/ddsrouter.yaml new file mode 100644 index 000000000..72315c214 --- /dev/null +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect/ddsrouter.yaml @@ -0,0 +1,15 @@ +version: v5.0 + +participants: + + - name: Local_80 + kind: local + domain: 80 + + - name: Local_81 + kind: local + domain: 81 + +specs: + remove-unused-entities: true + discovery-trigger: writer diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect_wan/compose.yml b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect_wan/compose.yml new file mode 100644 index 000000000..e9c7d170c --- /dev/null +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect_wan/compose.yml @@ -0,0 +1,121 @@ +# Test description: +# Check that tracks get rebuilt when a publisher over WAN disconnects and reconnects. +# +# Test architecture: +# +# ┌─────────────────────────────────────────┐ +# │ cloud_edge_net │ +# │ ┌─────────────────┐ ┌─────────────────┐ │ +# │ │ddsrouter_cloud_0│ │ddsrouter_cloud_1│ │ +# │ │ ─┼─┤► │ │ +# │ │(wan + wan) │ │(wan + wan) │ │ +# │ └──────────────▲──┘ └──────────────┬──┘ │ +# │ │ │ │ +# │ ┌──────────────┼──┐ ┌──────────────┼──┐ │ +# │ │ Domain 80 │ │ │ Domain 81 │ │ │ +# │ │ │ │ │ │ │ │ +# │ │ edge_0_net │ │ │ edge_1_net │ │ │ +# │ │ ┌────────────┴┐ │ │ ┌────────────▼┐ │ │ +# │ │ │ddsrouter_0 │ │ │ │ddsrouter_1 │ │ │ +# │ │ │ │ │ │ │ │ │ │ +# │ │ │(local + wan)│ │ │ │(local + wan)│ │ │ +# │ │ └──────────▲──┘ │ │ └──────────┬──┘ │ │ +# │ │ │ │ │ │ │ │ +# └─┼────────────┼────┼─┼────────────┼────┼─┘ +# │ │ │ │ │ │ +# │ ┌──────────┴──┐ │ │ ┌──────────▼──┐ │ +# │ │publisher_t0 │ │ │ │subscriber_t0│ │ +# │ │ │ │ │ │ │ │ +# │ │(local) │ │ │ │(local) │ │ +# │ └─────────────┘ │ │ └─────────────┘ │ +# │ │ │ │ +# └─────────────────┘ └─────────────────┘ + +services: + + # CLOUD + ddsrouter_cloud_0: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: ddsrouter_cloud_0 + networks: + - cloud_edge_net + volumes: + - ./ddsrouter_cloud_0.yaml:/config.yaml + command: ddsrouter -c /config.yaml --timeout 12 + + ddsrouter_cloud_1: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: ddsrouter_cloud_1 + depends_on: + - ddsrouter_cloud_0 + networks: + - cloud_edge_net + volumes: + - ./ddsrouter_cloud_1.yaml:/config.yaml + command: ddsrouter -c /config.yaml --timeout 12 + + # DOMAIN 80 + ddsrouter_edge_0: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: ddsrouter_edge_0 + depends_on: + - ddsrouter_cloud_0 + networks: + - cloud_edge_net + - edge_0_net + volumes: + - ./ddsrouter_edge_0.yaml:/config.yaml + command: ddsrouter -c /config.yaml --timeout 14 + + publisher_t0_0: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: publisher_t0_0 + depends_on: + - ddsrouter_edge_0 + networks: + - edge_0_net + volumes: + - ../../../../scripts:/scripts + command: python3 /scripts/execute_and_validate_publisher.py --exe build/fastdds_configuration_example/configuration --timeout 5 --args "--samples 50 --domain 80 --name topic0 --interval 100" + + publisher_t0_1: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: publisher_t0_1 + depends_on: + - ddsrouter_edge_0 + networks: + - edge_0_net + volumes: + - ../../../../scripts:/scripts + command: python3 /scripts/execute_and_validate_publisher.py --exe build/fastdds_configuration_example/configuration --timeout 5 --delay 6 --args "--samples 50 --domain 80 --name topic0 --interval 100" + + # DOMAIN 81 + ddsrouter_edge_1: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: ddsrouter_edge_1 + depends_on: + - ddsrouter_cloud_1 + networks: + - cloud_edge_net + - edge_1_net + volumes: + - ./ddsrouter_edge_1.yaml:/config.yaml + command: ddsrouter -c /config.yaml --timeout 12 + + subscriber_1: + image: ${DDSROUTER_COMPOSE_TEST_DOCKER_IMAGE} + container_name: subscriber_1 + depends_on: + - ddsrouter_edge_1 + networks: + - edge_1_net + volumes: + - ../../../../scripts:/scripts + command: python3 /scripts/execute_and_validate_subscriber.py --exe build/fastdds_configuration_example/configuration --samples 60 --allow-duplicates -1 --timeout 12 --args "--samples 60 --domain 81 --name topic0" + +networks: + edge_0_net: + edge_1_net: + cloud_edge_net: + default: + driver: none diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect_wan/ddsrouter_cloud_0.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect_wan/ddsrouter_cloud_0.yaml new file mode 100644 index 000000000..3ad3edc1b --- /dev/null +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect_wan/ddsrouter_cloud_0.yaml @@ -0,0 +1,21 @@ +version: v5.0 + +participants: + + - name: Cloud_Participant_0 + kind: wan + listening-addresses: + - domain: ddsrouter_cloud_0 + port: 11666 + transport: udp + + - name: Cloud_Participant_1 + kind: wan + listening-addresses: + - domain: ddsrouter_cloud_0 + port: 21666 + transport: udp + +specs: + remove-unused-entities: true + discovery-trigger: reader diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect_wan/ddsrouter_cloud_1.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect_wan/ddsrouter_cloud_1.yaml new file mode 100644 index 000000000..4439cf1fe --- /dev/null +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect_wan/ddsrouter_cloud_1.yaml @@ -0,0 +1,21 @@ +version: v5.0 + +participants: + + - name: Cloud_Participant_0 + kind: wan + listening-addresses: + - domain: ddsrouter_cloud_1 + port: 31666 + transport: udp + + - name: Cloud_Participant_1 + kind: wan + connection-addresses: + - domain: ddsrouter_cloud_0 + port: 21666 + transport: udp + +specs: + remove-unused-entities: true + discovery-trigger: reader diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect_wan/ddsrouter_edge_0.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect_wan/ddsrouter_edge_0.yaml new file mode 100644 index 000000000..8d9cb3141 --- /dev/null +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect_wan/ddsrouter_edge_0.yaml @@ -0,0 +1,18 @@ +version: v5.0 + +participants: + + - name: Local_80 + kind: local + domain: 80 + + - name: Edge_Participant + kind: wan + connection-addresses: + - domain: ddsrouter_cloud_0 + port: 11666 + transport: udp + +specs: + remove-unused-entities: true + discovery-trigger: reader diff --git a/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect_wan/ddsrouter_edge_1.yaml b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect_wan/ddsrouter_edge_1.yaml new file mode 100644 index 000000000..24f9d30a7 --- /dev/null +++ b/ddsrouter_test/compose/test_cases/remove_unused_entities/writer/reconnect_wan/ddsrouter_edge_1.yaml @@ -0,0 +1,18 @@ +version: v5.0 + +participants: + + - name: Local_81 + kind: local + domain: 81 + + - name: Edge_Participant + kind: wan + connection-addresses: + - domain: ddsrouter_cloud_1 + port: 31666 + transport: udp + +specs: + remove-unused-entities: true + discovery-trigger: reader diff --git a/docs/rst/user_manual/configuration.rst b/docs/rst/user_manual/configuration.rst index e078319c7..ae304ae29 100644 --- a/docs/rst/user_manual/configuration.rst +++ b/docs/rst/user_manual/configuration.rst @@ -334,9 +334,6 @@ By setting the ``remove-unused-entities`` option to ``true``, the internal entit .. warning:: At the time being, the removal of unused entities is incompatible with the `Transient-Local Durability QoS `_. -.. warning:: - At the time being, ``remove-unused-entities: true`` is only compatible with a :ref:`discovery-trigger ` set to ``reader``. - .. note:: The ``remove-unused-entities`` option doesn't apply to :ref:`Built-in Topics ` since they are created before being discovered by a :term:`Participant`. @@ -372,10 +369,7 @@ The possible values for the ``discovery-trigger`` are: - The creation/removal of external readers or writers doesn't trigger the creation/removal of internal entities. .. warning:: - When the |ddsrouter| creates internal entities triggered by the discovery of a writer (i.e. the ``discovery-trigger`` is either ``writer`` or ``any``), the |ddsrouter| will create its internal entities with the writer's :ref:`Topic QoS `, and, therefore, the QoS of the communication between the external entities and the |ddsrouter| may differ from the QoS of the communication without the |ddsrouter|. - -.. warning:: - At the time being, :ref:`remove-unused-entities ` set to ``true`` is only compatible with a ``discovery-trigger: reader``. + When the |ddsrouter| creates internal entities triggered by the discovery of a writer (i.e. the `` `` is either ``writer`` or ``any``), the |ddsrouter| will create its internal entities with the writer's :ref:`Topic QoS `, and, therefore, the QoS of the communication between the external entities and the |ddsrouter| may differ from the QoS of the communication without the |ddsrouter|. .. _user_manual_configuration_specs_topic_qos: