Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[21886] Feature: Windows ci example testing #5397

Merged
merged 8 commits into from
Nov 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/reusable-windows-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ defaults:

jobs:
reusable-windows-ci:
runs-on: windows-2019
runs-on: windows-2022
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -144,7 +144,7 @@ jobs:
colcon_build_args: ${{ inputs.colcon-args }}
# The following Fast DDS CMake options need to be specified here instead of in the meta files
# because they vary from platform to platform
cmake_args_default: ${{ inputs.cmake-args }} -T ${{ matrix.vs-toolset }} -DTHIRDPARTY_Asio=FORCE -DTHIRDPARTY_TinyXML2=FORCE -DTHIRDPARTY_fastcdr=OFF -DTHIRDPARTY_UPDATE=ON -DEPROSIMA_EXTRA_CMAKE_CXX_FLAGS="/MP /WX"
cmake_args_default: ${{ inputs.cmake-args }} -T ${{ matrix.vs-toolset }} -DTHIRDPARTY_Asio=FORCE -DTHIRDPARTY_TinyXML2=FORCE -DTHIRDPARTY_fastcdr=OFF -DTHIRDPARTY_UPDATE=ON -DFASTDDS_EXAMPLE_TESTS=ON -DEPROSIMA_EXTRA_CMAKE_CXX_FLAGS="/MP /WX"
cmake_build_type: ${{ inputs.cmake-config }}
workspace: ${{ github.workspace }}

Expand Down
38 changes: 38 additions & 0 deletions examples/cpp/hello_world/CLIParser.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ class CLIParser
struct publisher_config
{
uint16_t samples = 0;
uint16_t matched = 1;
};

//! Subscriber application configuration structure
Expand Down Expand Up @@ -83,6 +84,9 @@ class CLIParser
std::cout << " -s <num>, --samples <num> Number of samples to send or receive" << std::endl;
std::cout << " [0 <= <num> <= 65535]" << std::endl;
std::cout << " (Default: 0 [unlimited])" << std::endl;
std::cout << "Publisher options:" << std::endl;
std::cout << " -m, --matched Number of participants to discover" << std::endl;
std::cout << " before start publishing (Default: 1)" << std::endl;
std::cout << "Subscriber options:" << std::endl;
std::cout << " -w, --waitset Use waitset & read condition" << std::endl;
std::exit(return_code);
Expand Down Expand Up @@ -194,6 +198,40 @@ class CLIParser
print_help(EXIT_FAILURE);
}
}
else if (arg == "-m" || arg == "--matched")
{
try
{
int input = std::stoi(argv[++i]);
if (input < std::numeric_limits<std::uint16_t>::min() ||
input > std::numeric_limits<std::uint16_t>::max())
{
throw std::out_of_range("matched argument out of range");
}
else
{
if (config.entity == CLIParser::EntityKind::PUBLISHER)
{
config.pub_config.matched = static_cast<uint16_t>(input);
}
else
{
EPROSIMA_LOG_ERROR(CLI_PARSER, "matched can only be used with the publisher entity");
print_help(EXIT_FAILURE);
}
}
}
catch (const std::invalid_argument& e)
{
EPROSIMA_LOG_ERROR(CLI_PARSER, "invalid sample argument for " + arg + ": " + e.what());
print_help(EXIT_FAILURE);
}
catch (const std::out_of_range& e)
{
EPROSIMA_LOG_ERROR(CLI_PARSER, "sample argument out of range for " + arg + ": " + e.what());
print_help(EXIT_FAILURE);
}
}
else
{
EPROSIMA_LOG_ERROR(CLI_PARSER, "unknown option " + arg);
Expand Down
3 changes: 2 additions & 1 deletion examples/cpp/hello_world/PublisherApp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ PublisherApp::PublisherApp(
, type_(new HelloWorldPubSubType())
, matched_(0)
, samples_(config.samples)
, expected_matches_(config.matched)
, stop_(false)
{
// Set up the data type with initial values
Expand Down Expand Up @@ -152,7 +153,7 @@ bool PublisherApp::publish()
cv_.wait(matched_lock, [&]()
{
// at least one has been discovered
return ((matched_ > 0) || is_stopped());
return ((matched_ >= expected_matches_) || is_stopped());
});

if (!is_stopped())
Expand Down
2 changes: 2 additions & 0 deletions examples/cpp/hello_world/PublisherApp.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@ class PublisherApp : public Application, public DataWriterListener

uint16_t samples_;

uint16_t expected_matches_;

std::mutex mutex_;

std::condition_variable cv_;
Expand Down
77 changes: 66 additions & 11 deletions test/examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,13 @@ set(SHELL_EXECUTABLE "")
set(TINYXML2_LIB_DIR_COMPOSE_VOLUME "")
set(TINYXML2_LIB_DIR_COMPOSE_LD_LIBRARY_PATH "")

# Configure TinyXML2 library path if installed in user library path
if(NOT (TINYXML2_FROM_SOURCE OR TINYXML2_FROM_THIRDPARTY))
get_filename_component(TINYXML2_LIB_DIR ${TINYXML2_LIBRARY} DIRECTORY)
set(TINYXML2_LIB_DIR_COMPOSE_VOLUME "- ${TINYXML2_LIB_DIR}:${CMAKE_INSTALL_PREFIX}/${DATA_INSTALL_DIR}/fastdds:ro")
set(TINYXML2_LIB_DIR_COMPOSE_LD_LIBRARY_PATH ":${CMAKE_INSTALL_PREFIX}/${DATA_INSTALL_DIR}/fastdds")
endif()

# Linux configurations
if(UNIX AND NOT(APPLE) AND NOT(QNXNTO) AND NOT(ANDROID))
# Find bash
Expand All @@ -39,6 +46,21 @@ if(UNIX AND NOT(APPLE) AND NOT(QNXNTO) AND NOT(ANDROID))
set(SHELL_EXECUTABLE ${BASH_EXECUTABLE})
set(DOCKER_IMAGE_NAME "ubuntu:22.04")

set(PROJECT_BINARY_DIR_COMPOSE_VOLUME "${PROJECT_BINARY_DIR}:${PROJECT_BINARY_DIR}")
set(fastcdr_LIB_DIR_COMPOSE_VOLUME "${fastcdr_LIB_DIR}:${fastcdr_LIB_DIR}")
set(CMAKE_INSTALL_PREFIX_COMPOSE_VOLUME "${CMAKE_INSTALL_PREFIX}:${CMAKE_INSTALL_PREFIX}")

set(PATH_ENVIRONMENT_VARIABLE_COMPOSE "LD_LIBRARY_PATH: ${PROJECT_BINARY_DIR}/src/cpp:${fastcdr_LIB_DIR}")
if (TINYXML2_LIB_DIR_COMPOSE_LD_LIBRARY_PATH)
set(PATH_ENVIRONMENT_VARIABLE_COMPOSE "${PATH_ENVIRONMENT_VARIABLE_COMPOSE}${TINYXML2_LIB_DIR_COMPOSE_LD_LIBRARY_PATH}")
endif()
set(EXAMPLE_PREFIX_DIR_COMPOSE "${PROJECT_BINARY_DIR}/examples/cpp")
set(EXAMPLE_SUFFIX_DIR_COMPOSE "")
set(FASTDDS_DEFAULT_PROFILES_FILE_PREFIX_COMPOSE "${PROJECT_BINARY_DIR}/examples/cpp")
set(COMMAND_EXAMPLE_DIR_PREFIX_COMPOSE "$\${EXAMPLE_DIR}")
set(COMMAND_CONCATENATE_COMPOSE "&")
set(COMMAND_BACKGROUND_JOB_COMPOSE "")

# Windows configurations
elseif(WIN32)
# Find pwsh
Expand All @@ -47,27 +69,60 @@ elseif(WIN32)
message(FATAL_ERROR "pwsh not found")
endif()

set(PWSH_EXECUTABLE ${BASH_EXECUTABLE})
set(PWSH_VERSION_DOCKER "latest")
set(SHELL_EXECUTABLE "C:/\"Program Files\"/PowerShell/${PWSH_VERSION_DOCKER}/pwsh.exe")

set(FILE_EXTENSION ".exe")
set(DOCKER_IMAGE_NAME "windows-testing")

# We don't know which docker image to use for Windows yet
message(FATAL_ERROR "Windows not supported yet")
cmake_path(GET fastcdr_LIB_DIR PARENT_PATH fastcdr_INSTALL_DIR)

# Ensure drives inside docker are mounted in C: drive
string(REGEX REPLACE ".:" "C:" CMAKE_INSTALL_PREFIX_C ${CMAKE_INSTALL_PREFIX})
string(REGEX REPLACE ".:" "C:" PROJECT_BINARY_DIR_C ${PROJECT_BINARY_DIR})
string(REGEX REPLACE ".:" "C:" fastcdr_INSTALL_DIR_C ${fastcdr_INSTALL_DIR})

set(PROJECT_BINARY_DIR_COMPOSE_VOLUME "${PROJECT_BINARY_DIR}:${PROJECT_BINARY_DIR_C}")
set(fastcdr_LIB_DIR_COMPOSE_VOLUME "${fastcdr_INSTALL_DIR}/bin:${fastcdr_INSTALL_DIR_C}/bin")
set(CMAKE_INSTALL_PREFIX_COMPOSE_VOLUME "${CMAKE_INSTALL_PREFIX}/bin:${CMAKE_INSTALL_PREFIX_C}/bin")

set(PATH_ENVIRONMENT_VARIABLE_COMPOSE "PATH: C:/Program Files/OpenSSL-Win64;${CMAKE_INSTALL_PREFIX_C}/bin;${fastcdr_INSTALL_DIR_C}/bin;C:/Windows/System32;C:/Windows/System32/downlevel;")
set(EXAMPLE_PREFIX_DIR_COMPOSE "${PROJECT_BINARY_DIR_C}/examples/cpp")
if (CMAKE_BUILD_TYPE)
set(EXAMPLE_SUFFIX_DIR_COMPOSE "${CMAKE_BUILD_TYPE}")
else()
set(EXAMPLE_SUFFIX_DIR_COMPOSE "Release")
endif()
set(FASTDDS_DEFAULT_PROFILES_FILE_PREFIX_COMPOSE "${PROJECT_BINARY_DIR_C}/examples/cpp")
set(COMMAND_EXAMPLE_DIR_PREFIX_COMPOSE "& $\$Env:EXAMPLE_DIR")
set(COMMAND_CONCATENATE_COMPOSE "&\" \"")
set(COMMAND_BACKGROUND_JOB_COMPOSE "; Receive-Job 1 -Wait")

set(WIN_DOCKERFILE ${CMAKE_CURRENT_LIST_DIR}/windows/Dockerfile)
# Generate image for testing
add_custom_target(
windows_docker_image_testing_generation
ALL
# Launch the docker build command using the build context.
COMMAND ${DOCKER_EXECUTABLE} build
--tag ${DOCKER_IMAGE_NAME}
--file ${WIN_DOCKERFILE}
${CMAKE_CURRENT_LIST_DIR}
COMMENT "Creating windows image for testing..." VERBATIM
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})
# Unsupported platform
else()
message(FATAL_ERROR "Unsupported platform")
endif()

# Configure TinyXML2 library path if installed in user library path
if(NOT (TINYXML2_FROM_SOURCE OR TINYXML2_FROM_THIRDPARTY))
get_filename_component(TINYXML2_LIB_DIR ${TINYXML2_LIBRARY} DIRECTORY)
set(TINYXML2_LIB_DIR_COMPOSE_VOLUME "- ${TINYXML2_LIB_DIR}:${CMAKE_INSTALL_PREFIX}/${DATA_INSTALL_DIR}/fastdds:ro")
set(TINYXML2_LIB_DIR_COMPOSE_LD_LIBRARY_PATH ":${CMAKE_INSTALL_PREFIX}/${DATA_INSTALL_DIR}/fastdds")
if(WIN32)
# Temporarily, test hello world
file(GLOB examples_python_tests RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*world.py)
else()
# Find all pytest files for testing
file(GLOB examples_python_tests RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.py)
endif()

# Find all pytest files for testing
file(GLOB examples_python_tests RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.py)

# Add security test only if security is enabled
if (NOT SECURITY)
list(FILTER examples_python_tests EXCLUDE REGEX "security")
Expand Down
29 changes: 14 additions & 15 deletions test/examples/configuration.compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,34 +11,33 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
version: "3"

services:
subscriber:
image: @DOCKER_IMAGE_NAME@
volumes:
- @PROJECT_BINARY_DIR@:@PROJECT_BINARY_DIR@
- @fastcdr_LIB_DIR@:@fastcdr_LIB_DIR@
- @PROJECT_BINARY_DIR_COMPOSE_VOLUME@
- @fastcdr_LIB_DIR_COMPOSE_VOLUME@
- @CMAKE_INSTALL_PREFIX_COMPOSE_VOLUME@
@TINYXML2_LIB_DIR_COMPOSE_VOLUME@
environment:
# TODO(eduponz): LD_LIBRARY_PATH is not the correct variable for Windows
LD_LIBRARY_PATH: @PROJECT_BINARY_DIR@/src/cpp:@fastcdr_LIB_DIR@@TINYXML2_LIB_DIR_COMPOSE_LD_LIBRARY_PATH@
EXAMPLE_DIR: @PROJECT_BINARY_DIR@/examples/cpp/configuration
FASTDDS_DEFAULT_PROFILES_FILE: @PROJECT_BINARY_DIR@/examples/cpp/configuration/configuration_profile.xml
@PATH_ENVIRONMENT_VARIABLE_COMPOSE@
EXAMPLE_DIR: @EXAMPLE_PREFIX_DIR_COMPOSE@/configuration/@EXAMPLE_SUFFIX_DIR_COMPOSE@
FASTDDS_DEFAULT_PROFILES_FILE: @FASTDDS_DEFAULT_PROFILES_FILE_PREFIX_COMPOSE@/configuration/configuration_profile.xml
SUBSCRIBER_ADDITIONAL_ARGUMENTS: ${SUB_ARGS}
command: @SHELL_EXECUTABLE@ -c "$${EXAMPLE_DIR}/configuration@FILE_EXTENSION@ subscriber --samples 10 $${SUBSCRIBER_ADDITIONAL_ARGUMENTS}"
command: @SHELL_EXECUTABLE@ -c "@COMMAND_EXAMPLE_DIR_PREFIX_COMPOSE@/configuration@FILE_EXTENSION@ subscriber --samples 10 $${SUBSCRIBER_ADDITIONAL_ARGUMENTS}"

publisher-subscriber:
image: @DOCKER_IMAGE_NAME@
volumes:
- @PROJECT_BINARY_DIR@:@PROJECT_BINARY_DIR@
- @fastcdr_LIB_DIR@:@fastcdr_LIB_DIR@
- @PROJECT_BINARY_DIR_COMPOSE_VOLUME@
- @fastcdr_LIB_DIR_COMPOSE_VOLUME@
- @CMAKE_INSTALL_PREFIX_COMPOSE_VOLUME@
@TINYXML2_LIB_DIR_COMPOSE_VOLUME@
environment:
# TODO(eduponz): LD_LIBRARY_PATH is not the correct variable for Windows
LD_LIBRARY_PATH: @PROJECT_BINARY_DIR@/src/cpp:@fastcdr_LIB_DIR@@TINYXML2_LIB_DIR_COMPOSE_LD_LIBRARY_PATH@
EXAMPLE_DIR: @PROJECT_BINARY_DIR@/examples/cpp/configuration
FASTDDS_DEFAULT_PROFILES_FILE: @PROJECT_BINARY_DIR@/examples/cpp/configuration/configuration_profile.xml
@PATH_ENVIRONMENT_VARIABLE_COMPOSE@
EXAMPLE_DIR: @EXAMPLE_PREFIX_DIR_COMPOSE@/configuration/@EXAMPLE_SUFFIX_DIR_COMPOSE@
FASTDDS_DEFAULT_PROFILES_FILE: @FASTDDS_DEFAULT_PROFILES_FILE_PREFIX_COMPOSE@/configuration/configuration_profile.xml
PUBLISHER_ADDITIONAL_ARGUMENTS: ${PUB_ARGS}
SUBSCRIBER_ADDITIONAL_ARGUMENTS: ${SUB_ARGS}
command: @SHELL_EXECUTABLE@ -c "$${EXAMPLE_DIR}/configuration@FILE_EXTENSION@ subscriber --samples 10 $${SUBSCRIBER_ADDITIONAL_ARGUMENTS} & $${EXAMPLE_DIR}/configuration@FILE_EXTENSION@ publisher --samples 10 --wait 2 $${PUBLISHER_ADDITIONAL_ARGUMENTS}"
command: @SHELL_EXECUTABLE@ -c "@COMMAND_EXAMPLE_DIR_PREFIX_COMPOSE@/configuration@FILE_EXTENSION@ subscriber --samples 10 $${SUBSCRIBER_ADDITIONAL_ARGUMENTS} @COMMAND_CONCATENATE_COMPOSE@ @COMMAND_EXAMPLE_DIR_PREFIX_COMPOSE@/configuration@FILE_EXTENSION@ publisher --samples 10 --wait 2 $${PUBLISHER_ADDITIONAL_ARGUMENTS}@COMMAND_BACKGROUND_JOB_COMPOSE@"
13 changes: 6 additions & 7 deletions test/examples/content_filter.compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,17 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
version: "3"

services:
subscriber:
image: @DOCKER_IMAGE_NAME@
volumes:
- @PROJECT_BINARY_DIR@:@PROJECT_BINARY_DIR@
- @fastcdr_LIB_DIR@:@fastcdr_LIB_DIR@
- @PROJECT_BINARY_DIR_COMPOSE_VOLUME@
- @fastcdr_LIB_DIR_COMPOSE_VOLUME@
- @CMAKE_INSTALL_PREFIX_COMPOSE_VOLUME@
@TINYXML2_LIB_DIR_COMPOSE_VOLUME@
environment:
# TODO(eduponz): LD_LIBRARY_PATH is not the correct variable for Windows
LD_LIBRARY_PATH: @PROJECT_BINARY_DIR@/src/cpp:@fastcdr_LIB_DIR@@TINYXML2_LIB_DIR_COMPOSE_LD_LIBRARY_PATH@
EXAMPLE_DIR: @PROJECT_BINARY_DIR@/examples/cpp/content_filter@FILE_EXTENSION@
@PATH_ENVIRONMENT_VARIABLE_COMPOSE@
EXAMPLE_DIR: @EXAMPLE_PREFIX_DIR_COMPOSE@/content_filter/@EXAMPLE_SUFFIX_DIR_COMPOSE@
SUBSCRIBER_ADDITIONAL_ARGUMENTS: ${SUB_ARGS}
command: @SHELL_EXECUTABLE@ -c "$${EXAMPLE_DIR}/content_filter@FILE_EXTENSION@ subscriber $${SUBSCRIBER_ADDITIONAL_ARGUMENTS} --lower-bound 4 --upper-bound 8 --reliable --transient-local & $${EXAMPLE_DIR}/content_filter@FILE_EXTENSION@ publisher --samples 15 --interval 100 --reliable --transient-local"
command: @SHELL_EXECUTABLE@ -c "@COMMAND_EXAMPLE_DIR_PREFIX_COMPOSE@/content_filter@FILE_EXTENSION@ subscriber $${SUBSCRIBER_ADDITIONAL_ARGUMENTS} --lower-bound 4 --upper-bound 8 --reliable --transient-local @COMMAND_CONCATENATE_COMPOSE@ @COMMAND_EXAMPLE_DIR_PREFIX_COMPOSE@/content_filter@FILE_EXTENSION@ publisher --samples 15 --interval 100 --reliable --transient-local@COMMAND_BACKGROUND_JOB_COMPOSE@"
23 changes: 11 additions & 12 deletions test/examples/custom_payload_pool.compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,31 +11,30 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
version: "3"

services:
subscriber:
image: @DOCKER_IMAGE_NAME@
volumes:
- @PROJECT_BINARY_DIR@:@PROJECT_BINARY_DIR@
- @fastcdr_LIB_DIR@:@fastcdr_LIB_DIR@
- @PROJECT_BINARY_DIR_COMPOSE_VOLUME@
- @fastcdr_LIB_DIR_COMPOSE_VOLUME@
- @CMAKE_INSTALL_PREFIX_COMPOSE_VOLUME@
@TINYXML2_LIB_DIR_COMPOSE_VOLUME@
environment:
# TODO(eduponz): LD_LIBRARY_PATH is not the correct variable for Windows
LD_LIBRARY_PATH: @PROJECT_BINARY_DIR@/src/cpp:@fastcdr_LIB_DIR@@TINYXML2_LIB_DIR_COMPOSE_LD_LIBRARY_PATH@
EXAMPLE_DIR: @PROJECT_BINARY_DIR@/examples/cpp/custom_payload_pool
@PATH_ENVIRONMENT_VARIABLE_COMPOSE@
EXAMPLE_DIR: @EXAMPLE_PREFIX_DIR_COMPOSE@/custom_payload_pool/@EXAMPLE_SUFFIX_DIR_COMPOSE@
command: @SHELL_EXECUTABLE@ -c "$${EXAMPLE_DIR}/custom_payload_pool@FILE_EXTENSION@ subscriber --samples 10"

publisher:
image: @DOCKER_IMAGE_NAME@
volumes:
- @PROJECT_BINARY_DIR@:@PROJECT_BINARY_DIR@
- @fastcdr_LIB_DIR@:@fastcdr_LIB_DIR@
- @PROJECT_BINARY_DIR_COMPOSE_VOLUME@
- @fastcdr_LIB_DIR_COMPOSE_VOLUME@
- @CMAKE_INSTALL_PREFIX_COMPOSE_VOLUME@
@TINYXML2_LIB_DIR_COMPOSE_VOLUME@
environment:
# TODO(eduponz): LD_LIBRARY_PATH is not the correct variable for Windows
LD_LIBRARY_PATH: @PROJECT_BINARY_DIR@/src/cpp:@fastcdr_LIB_DIR@@TINYXML2_LIB_DIR_COMPOSE_LD_LIBRARY_PATH@
EXAMPLE_DIR: @PROJECT_BINARY_DIR@/examples/cpp/custom_payload_pool
command: @SHELL_EXECUTABLE@ -c "$${EXAMPLE_DIR}/custom_payload_pool@FILE_EXTENSION@ publisher --samples 10"
@PATH_ENVIRONMENT_VARIABLE_COMPOSE@
EXAMPLE_DIR: @EXAMPLE_PREFIX_DIR_COMPOSE@/custom_payload_pool/@EXAMPLE_SUFFIX_DIR_COMPOSE@
command: @SHELL_EXECUTABLE@ -c "@COMMAND_EXAMPLE_DIR_PREFIX_COMPOSE@/custom_payload_pool@FILE_EXTENSION@ publisher --samples 10"
depends_on:
- subscriber
Loading