diff --git a/.github/actions/deps/action.yml b/.github/actions/deps/action.yml new file mode 100644 index 0000000..0bf062f --- /dev/null +++ b/.github/actions/deps/action.yml @@ -0,0 +1,41 @@ +name: 'Install Dependencies' +description: 'Install dependencies' +runs: + using: "composite" + + steps: + - name: Clone kpsr-sdk + uses: actions/checkout@v4 + with: + repository: klepsydra-technologies/kpsr-sdk + ref: main + submodules: recursive + path: kpsr-sdk + + - name: Build and install SDK + shell: bash + run: | + mkdir build && cd build/ + cmake .. + make -j$(nproc) + make install + cd ../../ && rm -rf kpsr-sdk/ + working-directory: kpsr-sdk + + - name: Clone kpsr-core + uses: actions/checkout@v4 + with: + repository: klepsydra-technologies/kpsr-core + ref: main + submodules: recursive + path: kpsr-core + + - name: Build and install kpsr-core + shell: bash + run: | + mkdir build && cd build/ + cmake -DKPSR_WITH_ZMQ=true -DKPSR_TEST_PERFORMANCE=true -DKPSR_WITH_SOCKET=true ../ + make -j$(nproc) + make install + cd ../../ && rm -rf kpsr-core/ + working-directory: kpsr-core diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 4243e88..5c36e1d 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -29,12 +29,15 @@ jobs: container: image: ghcr.io/klepsydra-technologies/kpsrbase:1.0.0 steps: - - uses: actions/checkout@v3 + - name: Clone project + uses: actions/checkout@v4 with: submodules: recursive - fetch-depth: 0 - - name: Build + - name: Install Dependencies + uses: ./.github/actions/deps/ + + - name: Build project run: | git config --global --add safe.directory ${GITHUB_WORKSPACE} python3 -m pip install build --upgrade @@ -47,21 +50,13 @@ jobs: python3 -m pip install pytest==7.0 --upgrade pytest - - name: Install Klepsydra SDK - run: | - git clone https://github.com/klepsydra-technologies/kpsr-core.git --recursive - cd kpsr-core && mkdir build && cd build - cmake .. -DKPSR_RUNTIME=On -DKPSR_ENABLE_TESTS=Off -DKPSR_WITH_ZMQ=On -DKPSR_WITH_DDS=Off - cmake --build . - cmake --build . --target install - - name: Test codegen against klepsydra core timeout-minutes: 10 run: | python3 -m pip install -I --find-links dist kpsr_codegen mkdir build_cpptesting cd build_cpptesting - cmake -DKPSR_WITH_ZMQ=On -DKPSR_WITH_DDS=Off ../cpp_testing + cmake -DKPSR_WITH_ZMQ=On ../cpp_testing cmake --build . make test diff --git a/README.md b/README.md index acc498e..696e3a7 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,6 @@ Run the cpp tests: See the [Tutorial](https://github.com/klepsydra-technologies/kpsr-tutorial/blob/main/tutorials/chapter3.md) for detailed usage of the tool. -The options that can be provided to A simple help is available by passing the `-h` option: ``` @@ -52,7 +51,6 @@ kpsr_codegen [options]: Input directory: -i | --idir Output directory: -o | --odir Include path: -p | --include_path - Disable DDS: -d | --disable_dds Disable ZMQ: -z | --disable_zmq Disable ROS: -r | --disable_ros Configuration path: -c | --conf_path diff --git a/cpp_testing/kpsr-build b/cpp_testing/kpsr-build index b0cc42b..07a0d4f 160000 --- a/cpp_testing/kpsr-build +++ b/cpp_testing/kpsr-build @@ -1 +1 @@ -Subproject commit b0cc42babd8ab1e6ed496f391d2d88997f428d6e +Subproject commit 07a0d4f009db733b87be1120dbe05327fdbc8971 diff --git a/cpp_testing/modules/codegen/CMakeLists.txt b/cpp_testing/modules/codegen/CMakeLists.txt index 4aee2b4..40df6a1 100644 --- a/cpp_testing/modules/codegen/CMakeLists.txt +++ b/cpp_testing/modules/codegen/CMakeLists.txt @@ -21,13 +21,12 @@ SET(PROJ_NAME kpsr_${PROJ_MAIN_NAME}) PROJECT(${PROJ_NAME}) set(disableZmq "True") -set(disableDds "True") -KpsrEventGenerator("${CMAKE_CURRENT_SOURCE_DIR}/kidl_test1" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test1" "klepsydra/codegen" "False" ${disableZmq} ${disableDds}) -KpsrEventGenerator("${CMAKE_CURRENT_SOURCE_DIR}/kidl_test2" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test2" "klepsydra/codegen" "False" ${disableZmq} ${disableDds}) -KpsrEventGenerator("${CMAKE_CURRENT_SOURCE_DIR}/kidl_test3" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test3" "klepsydra/codegen" "False" ${disableZmq} ${disableDds}) -KpsrEventGenerator("${CMAKE_CURRENT_SOURCE_DIR}/kidl_test4" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test4" "klepsydra/codegen" "False" ${disableZmq} ${disableDds}) -KpsrEventGenerator("${CMAKE_CURRENT_SOURCE_DIR}/kidl_test5" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test5" "klepsydra/codegen" "False" ${disableZmq} ${disableDds}) +KpsrEventGenerator("${CMAKE_CURRENT_SOURCE_DIR}/kidl_test1" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test1" "klepsydra/codegen" "False" ${disableZmq}) +KpsrEventGenerator("${CMAKE_CURRENT_SOURCE_DIR}/kidl_test2" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test2" "klepsydra/codegen" "False" ${disableZmq}) +KpsrEventGenerator("${CMAKE_CURRENT_SOURCE_DIR}/kidl_test3" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test3" "klepsydra/codegen" "False" ${disableZmq}) +KpsrEventGenerator("${CMAKE_CURRENT_SOURCE_DIR}/kidl_test4" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test4" "klepsydra/codegen" "False" ${disableZmq}) +KpsrEventGenerator("${CMAKE_CURRENT_SOURCE_DIR}/kidl_test5" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test5" "klepsydra/codegen" "False" ${disableZmq}) # Source #---------------------------------------------------# diff --git a/cpp_testing/modules/codegen/kidl_test1/gps.yaml b/cpp_testing/modules/codegen/kidl_test1/gps.yaml index 2ff6939..3cd0643 100644 --- a/cpp_testing/modules/codegen/kidl_test1/gps.yaml +++ b/cpp_testing/modules/codegen/kidl_test1/gps.yaml @@ -21,10 +21,6 @@ middlewares: include_file: ignore_fields: - seq - - type: DDS - class_name: kpsr_dds_geometry::GpsData - sequence_fields: - - seq - type: ZMQ fields: - name : seq diff --git a/cpp_testing/modules/codegen/kidl_test1/header.yaml b/cpp_testing/modules/codegen/kidl_test1/header.yaml index 778a6bd..81d72f7 100644 --- a/cpp_testing/modules/codegen/kidl_test1/header.yaml +++ b/cpp_testing/modules/codegen/kidl_test1/header.yaml @@ -19,10 +19,6 @@ middlewares: already_exists: true class_name: Header include_file: - - type: DDS - class_name: kpsr_dds_geometry::HeaderData - sequence_fields: - - seq - type: ZMQ fields: - name : seq diff --git a/cpp_testing/modules/codegen/kidl_test1/imu.yaml b/cpp_testing/modules/codegen/kidl_test1/imu.yaml index ac43ebc..c6b3547 100644 --- a/cpp_testing/modules/codegen/kidl_test1/imu.yaml +++ b/cpp_testing/modules/codegen/kidl_test1/imu.yaml @@ -21,10 +21,6 @@ middlewares: include_file: ignore_fields: - seq - - type: DDS - class_name: kpsr_dds_geometry::ImuData - sequence_fields: - - seq - type: ZMQ fields: - name : seq diff --git a/cpp_testing/modules/codegen/kidl_test1/quaternion.yaml b/cpp_testing/modules/codegen/kidl_test1/quaternion.yaml index 4eaf868..bdf2494 100644 --- a/cpp_testing/modules/codegen/kidl_test1/quaternion.yaml +++ b/cpp_testing/modules/codegen/kidl_test1/quaternion.yaml @@ -21,10 +21,6 @@ middlewares: include_file: ignore_fields: - seq - - type: DDS - class_name: kpsr_dds_geometry::QuaternionData - sequence_fields: - - seq - type: ZMQ fields: - name : seq diff --git a/cpp_testing/modules/codegen/kidl_test1/vector3.yaml b/cpp_testing/modules/codegen/kidl_test1/vector3.yaml index 71662a4..ff075c6 100644 --- a/cpp_testing/modules/codegen/kidl_test1/vector3.yaml +++ b/cpp_testing/modules/codegen/kidl_test1/vector3.yaml @@ -21,10 +21,6 @@ middlewares: include_file: ignore_fields: - seq - - type: DDS - class_name: kpsr_dds_geometry::Vector3Data - sequence_fields: - - seq - type: ZMQ fields: - name : seq diff --git a/cpp_testing/modules/codegen/kidl_test2/primitive_types_array.yaml b/cpp_testing/modules/codegen/kidl_test2/primitive_types_array.yaml index d72b355..4859a87 100644 --- a/cpp_testing/modules/codegen/kidl_test2/primitive_types_array.yaml +++ b/cpp_testing/modules/codegen/kidl_test2/primitive_types_array.yaml @@ -19,10 +19,6 @@ middlewares: project_name: kpsr_ros_codegen already_exists: false class_name: PrimitiveTypesArray - - type: DDS - class_name: kpsr_dds_codegen::PrimitiveTypesArrayData - sequence_fields: - - seq - type: ZMQ fields: - name : seq diff --git a/cpp_testing/modules/codegen/kidl_test2/primitive_types_basic.yaml b/cpp_testing/modules/codegen/kidl_test2/primitive_types_basic.yaml index 085f3f4..2212011 100644 --- a/cpp_testing/modules/codegen/kidl_test2/primitive_types_basic.yaml +++ b/cpp_testing/modules/codegen/kidl_test2/primitive_types_basic.yaml @@ -19,10 +19,6 @@ middlewares: project_name: kpsr_ros_codegen already_exists: false class_name: PrimitiveTypesBasic - - type: DDS - class_name: kpsr_dds_codegen::PrimitiveTypesBasicData - sequence_fields: - - seq - type: ZMQ fields: - name : seq diff --git a/cpp_testing/modules/codegen/kidl_test2/primitive_types_vector.yaml b/cpp_testing/modules/codegen/kidl_test2/primitive_types_vector.yaml index 323d943..b286f2f 100644 --- a/cpp_testing/modules/codegen/kidl_test2/primitive_types_vector.yaml +++ b/cpp_testing/modules/codegen/kidl_test2/primitive_types_vector.yaml @@ -19,10 +19,6 @@ middlewares: project_name: kpsr_ros_codegen already_exists: false class_name: PrimitiveTypesVector - - type: DDS - class_name: kpsr_dds_codegen::PrimitiveTypesVectorData - sequence_fields: - - seq - type: ZMQ fields: - name : seq diff --git a/cpp_testing/modules/codegen/kidl_test2/primitive_types_vector_pointer.yaml b/cpp_testing/modules/codegen/kidl_test2/primitive_types_vector_pointer.yaml index 940c703..336e603 100644 --- a/cpp_testing/modules/codegen/kidl_test2/primitive_types_vector_pointer.yaml +++ b/cpp_testing/modules/codegen/kidl_test2/primitive_types_vector_pointer.yaml @@ -19,10 +19,6 @@ middlewares: project_name: kpsr_ros_codegen already_exists: false class_name: PrimitiveTypesVectorPointer - - type: DDS - class_name: kpsr_dds_codegen::PrimitiveTypesVectorPointerData - sequence_fields: - - seq fields: - name : seq type : uint32 diff --git a/cpp_testing/modules/codegen/kidl_test2/primitive_types_vector_shared_pointer.yaml b/cpp_testing/modules/codegen/kidl_test2/primitive_types_vector_shared_pointer.yaml index 8dfb62f..bedb083 100644 --- a/cpp_testing/modules/codegen/kidl_test2/primitive_types_vector_shared_pointer.yaml +++ b/cpp_testing/modules/codegen/kidl_test2/primitive_types_vector_shared_pointer.yaml @@ -19,10 +19,6 @@ middlewares: project_name: kpsr_ros_codegen already_exists: false class_name: PrimitiveTypesVectorSharedPtr - - type: DDS - class_name: kpsr_dds_codegen::PrimitiveTypesVectorSharedPtrData - sequence_fields: - - seq - type: ZMQ fields: - name : seq diff --git a/cpp_testing/modules/codegen/kidl_test3/composition_type.yaml b/cpp_testing/modules/codegen/kidl_test3/composition_type.yaml index ffc9a8c..5831ae3 100644 --- a/cpp_testing/modules/codegen/kidl_test3/composition_type.yaml +++ b/cpp_testing/modules/codegen/kidl_test3/composition_type.yaml @@ -18,10 +18,6 @@ middlewares: project_name: kpsr_ros_codegen already_exists: false class_name: CompositionType - - type: DDS - class_name: kpsr_dds_codegen::CompositionTypeData - sequence_fields: - - seq - type: ZMQ enums: - enum_name: kpsr::codegen::NewEnum diff --git a/cpp_testing/modules/codegen/kidl_test3/header.yaml b/cpp_testing/modules/codegen/kidl_test3/header.yaml index 778a6bd..81d72f7 100644 --- a/cpp_testing/modules/codegen/kidl_test3/header.yaml +++ b/cpp_testing/modules/codegen/kidl_test3/header.yaml @@ -19,10 +19,6 @@ middlewares: already_exists: true class_name: Header include_file: - - type: DDS - class_name: kpsr_dds_geometry::HeaderData - sequence_fields: - - seq - type: ZMQ fields: - name : seq diff --git a/cpp_testing/modules/codegen/kidl_test3/vector3.yaml b/cpp_testing/modules/codegen/kidl_test3/vector3.yaml index 71662a4..ff075c6 100644 --- a/cpp_testing/modules/codegen/kidl_test3/vector3.yaml +++ b/cpp_testing/modules/codegen/kidl_test3/vector3.yaml @@ -21,10 +21,6 @@ middlewares: include_file: ignore_fields: - seq - - type: DDS - class_name: kpsr_dds_geometry::Vector3Data - sequence_fields: - - seq - type: ZMQ fields: - name : seq diff --git a/cpp_testing/modules/codegen/kidl_test3/vector4.yaml b/cpp_testing/modules/codegen/kidl_test3/vector4.yaml index 74c9de9..32e81af 100644 --- a/cpp_testing/modules/codegen/kidl_test3/vector4.yaml +++ b/cpp_testing/modules/codegen/kidl_test3/vector4.yaml @@ -18,8 +18,6 @@ middlewares: project_name: kpsr_ros_codegen already_exists: false class_name: Vector4 - - type: DDS - class_name: kpsr_dds_codegen::Vector4Data - type: ZMQ fields: - name : a diff --git a/cpp_testing/modules/codegen/kidl_test4/vector4.yaml b/cpp_testing/modules/codegen/kidl_test4/vector4.yaml index 5dd43ab..cb8414f 100644 --- a/cpp_testing/modules/codegen/kidl_test4/vector4.yaml +++ b/cpp_testing/modules/codegen/kidl_test4/vector4.yaml @@ -19,10 +19,6 @@ middlewares: project_name: kpsr_ros_codegen already_exists: false class_name: InheritanceVector4 - - type: DDS - class_name: kpsr_dds_codegen::InheritanceVector4Data - sequence_fields: - - d - type: ZMQ fields: - name : d diff --git a/cpp_testing/modules/codegen/kidl_test5/composition_type_related.yaml b/cpp_testing/modules/codegen/kidl_test5/composition_type_related.yaml index 69f8cc3..9b71b9e 100644 --- a/cpp_testing/modules/codegen/kidl_test5/composition_type_related.yaml +++ b/cpp_testing/modules/codegen/kidl_test5/composition_type_related.yaml @@ -18,10 +18,6 @@ middlewares: project_name: kpsr_ros_codegen already_exists: false class_name: CompositionTypeRelated - - type: DDS - class_name: kpsr_dds_codegen::CompositionTypeRelatedData - sequence_fields: - - seq - type: ZMQ enums: - enum_name: kpsr::codegen::NewEnum @@ -74,4 +70,4 @@ fields: - name : quat type : kpsr::geometry::Quaternion - name : gpsData - type : kpsr::geometry::Gps \ No newline at end of file + type : kpsr::geometry::Gps diff --git a/cpp_testing/modules/codegen/kidl_test5/header.yaml b/cpp_testing/modules/codegen/kidl_test5/header.yaml index 778a6bd..81d72f7 100644 --- a/cpp_testing/modules/codegen/kidl_test5/header.yaml +++ b/cpp_testing/modules/codegen/kidl_test5/header.yaml @@ -19,10 +19,6 @@ middlewares: already_exists: true class_name: Header include_file: - - type: DDS - class_name: kpsr_dds_geometry::HeaderData - sequence_fields: - - seq - type: ZMQ fields: - name : seq diff --git a/cpp_testing/modules/codegen/kidl_test5/related_class.yaml b/cpp_testing/modules/codegen/kidl_test5/related_class.yaml index d15e322..cfdeb48 100644 --- a/cpp_testing/modules/codegen/kidl_test5/related_class.yaml +++ b/cpp_testing/modules/codegen/kidl_test5/related_class.yaml @@ -22,11 +22,6 @@ related_classes: class_name: Quaternion include_file: mapper_include_file: - - type: DDS - class_name: kpsr_dds_geometry::QuaternionData - already_exists: true - mapper_include_file: - idl_file: "quaternion_data.idl" - type: ZMQ serializer_include_file: - class_name: kpsr::geometry::Gps @@ -38,10 +33,5 @@ related_classes: class_name: NavSatFix include_file: mapper_include_file: - - type: DDS - class_name: kpsr_dds_geometry::GpsData - already_exists: True - mapper_include_file: - idl_file: "gps_data.idl" - type: ZMQ serializer_include_file: diff --git a/cpp_testing/modules/codegen/kidl_test5/vector3.yaml b/cpp_testing/modules/codegen/kidl_test5/vector3.yaml index 71662a4..ff075c6 100644 --- a/cpp_testing/modules/codegen/kidl_test5/vector3.yaml +++ b/cpp_testing/modules/codegen/kidl_test5/vector3.yaml @@ -21,10 +21,6 @@ middlewares: include_file: ignore_fields: - seq - - type: DDS - class_name: kpsr_dds_geometry::Vector3Data - sequence_fields: - - seq - type: ZMQ fields: - name : seq diff --git a/cpp_testing/modules/codegen/kidl_test5/vector4.yaml b/cpp_testing/modules/codegen/kidl_test5/vector4.yaml index 74c9de9..32e81af 100644 --- a/cpp_testing/modules/codegen/kidl_test5/vector4.yaml +++ b/cpp_testing/modules/codegen/kidl_test5/vector4.yaml @@ -18,8 +18,6 @@ middlewares: project_name: kpsr_ros_codegen already_exists: false class_name: Vector4 - - type: DDS - class_name: kpsr_dds_codegen::Vector4Data - type: ZMQ fields: - name : a diff --git a/cpp_testing/tests/CMakeLists.txt b/cpp_testing/tests/CMakeLists.txt index b0b9126..dc6c96c 100644 --- a/cpp_testing/tests/CMakeLists.txt +++ b/cpp_testing/tests/CMakeLists.txt @@ -34,10 +34,3 @@ add_subdirectory(${PROJ_MAIN_NAME}_tests) IF(KPSR_WITH_ZMQ) ADD_SUBDIRECTORY(zmq_${PROJ_MAIN_NAME}_tests) ENDIF() -IF(KPSR_WITH_DDS) - include (MacroConnext) - find_package (RTIConnextDDS REQUIRED) - ADD_SUBDIRECTORY(dds_${PROJ_MAIN_NAME}_tests_1_2) - ADD_SUBDIRECTORY(dds_${PROJ_MAIN_NAME}_tests_3_4) - ADD_SUBDIRECTORY(dds_${PROJ_MAIN_NAME}_tests_1_5) -ENDIF() diff --git a/cpp_testing/tests/codegen_tests/CMakeLists.txt b/cpp_testing/tests/codegen_tests/CMakeLists.txt index 97644bd..a3380c4 100644 --- a/cpp_testing/tests/codegen_tests/CMakeLists.txt +++ b/cpp_testing/tests/codegen_tests/CMakeLists.txt @@ -22,11 +22,11 @@ PROJECT(${PROJ_NAME}) # Source #---------------------------------------------------# -KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test1" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test1" "klepsydra/codegen" "True" "True" "True") -KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test2" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test2" "klepsydra/codegen" "True" "True" "True") -KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test3" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test3" "klepsydra/codegen" "True" "True" "True") -KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test4" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test4" "klepsydra/codegen" "True" "True" "True") -KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test5" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test5" "klepsydra/codegen" "True" "True" "True") +KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test1" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test1" "klepsydra/codegen" "True" "True") +KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test2" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test2" "klepsydra/codegen" "True" "True") +KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test3" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test3" "klepsydra/codegen" "True" "True") +KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test4" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test4" "klepsydra/codegen" "True" "True") +KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test5" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test5" "klepsydra/codegen" "True" "True") FILE(GLOB ${PROJ_NAME}_SRC "src/*.cpp" diff --git a/cpp_testing/tests/dds_codegen_tests_1_2/CMakeLists.txt b/cpp_testing/tests/dds_codegen_tests_1_2/CMakeLists.txt deleted file mode 100644 index ba50a4a..0000000 --- a/cpp_testing/tests/dds_codegen_tests_1_2/CMakeLists.txt +++ /dev/null @@ -1,70 +0,0 @@ -#**************************************************************************** -# -# Klepsydra Core Modules -# Copyright (C) 2019-2020 Klepsydra Technologies GmbH -# All Rights Reserved. -# -# This file is subject to the terms and conditions defined in -# file 'LICENSE.md', which is part of this source code package. -# -# NOTICE: All information contained herein is, and remains the property of Klepsydra -# Technologies GmbH and its suppliers, if any. The intellectual and technical concepts -# contained herein are proprietary to Klepsydra Technologies GmbH and its suppliers and -# may be covered by Swiss and Foreign Patents, patents in process, and are protected by -# trade secret or copyright law. Dissemination of this information or reproduction of -# this material is strictly forbidden unless prior written permission is obtained from -# Klepsydra Technologies GmbH. -# -#**************************************************************************** - -SET(PROJ_NAME kpsr_dds_${PROJ_MAIN_NAME}_tests_1_2) -PROJECT(${PROJ_NAME}) - -file(REMOVE_RECURSE ${CMAKE_CURRENT_SOURCE_DIR}/gen) -file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/gen) - -KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test1" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test1" "klepsydra/codegen" "True" "True" "False") -KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test2" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test2" "klepsydra/codegen" "True" "True" "False") - -file(GLOB idls ${CMAKE_CURRENT_SOURCE_DIR}/gen_test1/dds/idl/*.idl - ${CMAKE_CURRENT_SOURCE_DIR}/gen_test2/dds/idl/*.idl) -FOREACH(idl ${idls}) - Connext_IDLGEN (${idl} ${CMAKE_CURRENT_SOURCE_DIR}) - GET_FILENAME_COMPONENT(nfile ${idl} NAME) - Connext_GENDATAMODEL(${nfile} ${CMAKE_CURRENT_SOURCE_DIR}) -ENDFOREACH(idl) - -# Source -#---------------------------------------------------# -FILE(GLOB ${PROJ_NAME}_SRC - "src/*.cpp" -) - -# Link libraries with Project -#---------------------------------------------------# -ADD_LIBRARY (kpsr_dds_${PROJ_MAIN_NAME}_datamodel_1_2 SHARED ${Connext_DATAMODEL}) - -ADD_EXECUTABLE(${PROJ_NAME} ${${PROJ_NAME}_HEADERS} ${${PROJ_NAME}_SRC} ) - -#---------------------------------------------------# -TARGET_LINK_LIBRARIES(kpsr_dds_${PROJ_MAIN_NAME}_datamodel_1_2 - PUBLIC - RTIConnextDDS::cpp2_api - ) - -TARGET_INCLUDE_DIRECTORIES(${PROJ_NAME} - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/gen_test1/poco/include - ${CMAKE_CURRENT_SOURCE_DIR}/gen_test1/dds/include - ${CMAKE_CURRENT_SOURCE_DIR}/gen_test2/poco/include - ${CMAKE_CURRENT_SOURCE_DIR}/gen_test2/dds/include - ${CMAKE_CURRENT_SOURCE_DIR}/modules/${PROJ_MAIN_NAME}/include - ${CMAKE_CURRENT_SOURCE_DIR}/gen -) - -TARGET_LINK_LIBRARIES(${PROJ_NAME} kpsr_core gtest_main - kpsr_dds_core - kpsr_dds_serialization_datamodel kpsr_dds_${PROJ_MAIN_NAME}_datamodel_1_2 - ) - -add_test(NAME ${PROJ_NAME} COMMAND ${PROJ_NAME} --output-on-failure --gtest_output=xml:gtestresults.xml) diff --git a/cpp_testing/tests/dds_codegen_tests_1_2/src/ddsstg_codegen_test1.cpp b/cpp_testing/tests/dds_codegen_tests_1_2/src/ddsstg_codegen_test1.cpp deleted file mode 100644 index 39bb939..0000000 --- a/cpp_testing/tests/dds_codegen_tests_1_2/src/ddsstg_codegen_test1.cpp +++ /dev/null @@ -1,449 +0,0 @@ -/**************************************************************************** -* -* Klepsydra Core Modules -* Copyright (C) 2019-2020 Klepsydra Technologies GmbH -* All Rights Reserved. -* -* This file is subject to the terms and conditions defined in -* file 'LICENSE.md', which is part of this source code package. -* -* NOTICE: All information contained herein is, and remains the property of Klepsydra -* Technologies GmbH and its suppliers, if any. The intellectual and technical concepts -* contained herein are proprietary to Klepsydra Technologies GmbH and its suppliers and -* may be covered by Swiss and Foreign Patents, patents in process, and are protected by -* trade secret or copyright law. Dissemination of this information or reproduction of -* this material is strictly forbidden unless prior written permission is obtained from -* Klepsydra Technologies GmbH. -* -****************************************************************************/ - -#include - -#include - -#include -#include - -#include -#include - -#include - -#include -#include - -#include "dds/dds.hpp" - -#include -#include -#include -#include -#include - -TEST(KpsrDdsCodegeTest, headerMapperTest) { - - dds::domain::DomainParticipant dp(0); - dds::pub::Publisher publisher(dp); - dds::sub::Subscriber subscriber(dp); - - dds::topic::Topic headerTopic(dp, "header_data_test"); - dds::pub::DataWriter headerDataWriter(publisher, headerTopic); - dds::sub::DataReader headerDataReader(subscriber, headerTopic); - - kpsr::dds_mdlw::FromDDSMiddlewareProvider fromDDSProvider; - kpsr::dds_mdlw::ToDDSMiddlewareProvider toDDSProvider(nullptr); - - kpsr::Publisher * kpsrPublisher = - toDDSProvider.getToMiddlewareChannel("kpsr_ros_codegen_test_topicA", 1, nullptr, &headerDataWriter); - - kpsr::EventEmitterMiddlewareProvider basicProvider(nullptr, "test", 0, nullptr, nullptr); - - fromDDSProvider.registerToTopic("kpsr_dds_codegen_test_topicA", &headerDataReader, true, basicProvider.getPublisher()); - - kpsr::mem::CacheListener cacheListener; - basicProvider.getSubscriber()->registerListener("cacheListener", cacheListener.cacheListenerFunction); - - ASSERT_EQ(cacheListener.counter, 0); - - kpsr::geometry::Header event; - - event.seq = 1; - event.frame_id = "hola.1"; - kpsrPublisher->publish(event); - - event.seq = 2; - event.frame_id = "hola.2"; - kpsrPublisher->publish(event); - - event.seq = 3; - event.frame_id = "hola.3"; - kpsrPublisher->publish(event); - - event.seq = 4; - event.frame_id = "hola.4"; - kpsrPublisher->publish(event); - - while (cacheListener.counter < 5) { - spdlog::info("publishing loop... "); - event.seq = 5; - event.frame_id = "hola.5"; - kpsrPublisher->publish(event); - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - } - - ASSERT_EQ(cacheListener.counter, 5); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->seq, 5); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->frame_id, "hola.5"); - - fromDDSProvider.unregisterFromTopic("kpsr_dds_codegen_test_topicA", &headerDataReader); -} - -TEST(KpsrDdsCodegenTest1, gpsMapperTest) { - - dds::domain::DomainParticipant dp(0); - dds::pub::Publisher publisher(dp); - dds::sub::Subscriber subscriber(dp); - - dds::topic::Topic headerTopic(dp, "header_data_test"); - dds::pub::DataWriter headerDataWriter(publisher, headerTopic); - dds::sub::DataReader headerDataReader(subscriber, headerTopic); - - kpsr::dds_mdlw::FromDDSMiddlewareProvider fromDDSProvider; - kpsr::dds_mdlw::ToDDSMiddlewareProvider toDDSProvider(nullptr); - - kpsr::Publisher * kpsrPublisher = - toDDSProvider.getToMiddlewareChannel("kpsr_ros_codegen_test_topicA", 1, nullptr, &headerDataWriter); - - kpsr::EventEmitterMiddlewareProvider basicProvider(nullptr, "test", 0, nullptr, nullptr); - - fromDDSProvider.registerToTopic("kpsr_dds_codegen_test_topicA", &headerDataReader, true, basicProvider.getPublisher()); - - kpsr::mem::CacheListener cacheListener; - basicProvider.getSubscriber()->registerListener("cacheListener", cacheListener.cacheListenerFunction); - - ASSERT_EQ(cacheListener.counter, 0); - - kpsr::geometry::Gps event; - - event.seq = 1; - event.altitude = 0.0; - event.latitude = 0.1; - event.longitude = 0.2; - kpsrPublisher->publish(event); - - event.seq++; - event.altitude = 1.0; - event.latitude = 1.1; - event.longitude = 1.2; - kpsrPublisher->publish(event); - - event.seq++; - event.altitude = 2.0; - event.latitude = 2.1; - event.longitude = 2.2; - kpsrPublisher->publish(event); - - event.seq++; - event.altitude = 3.0; - event.latitude = 3.1; - event.longitude = 3.2; - kpsrPublisher->publish(event); - - event.seq++; - while (cacheListener.counter < 5) { - spdlog::info("publishing loop... "); - event.altitude = 4.0; - event.latitude = 4.1; - event.longitude = 4.2; - kpsrPublisher->publish(event); - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - } - - ASSERT_EQ(cacheListener.counter, 5); - ASSERT_FLOAT_EQ(cacheListener.getLastReceivedEvent()->seq, event.seq); - ASSERT_FLOAT_EQ(cacheListener.getLastReceivedEvent()->altitude, 4.0); - ASSERT_FLOAT_EQ(cacheListener.getLastReceivedEvent()->latitude, 4.1); - ASSERT_FLOAT_EQ(cacheListener.getLastReceivedEvent()->longitude, 4.2); - - fromDDSProvider.unregisterFromTopic("kpsr_dds_codegen_test_topicA", &headerDataReader); -} - - -TEST(KpsrDdsCodegenTest1, vector3MapperTest) { - - dds::domain::DomainParticipant dp(0); - dds::pub::Publisher publisher(dp); - dds::sub::Subscriber subscriber(dp); - - dds::topic::Topic headerTopic(dp, "header_data_test"); - dds::pub::DataWriter headerDataWriter(publisher, headerTopic); - dds::sub::DataReader headerDataReader(subscriber, headerTopic); - - kpsr::dds_mdlw::FromDDSMiddlewareProvider fromDDSProvider; - kpsr::dds_mdlw::ToDDSMiddlewareProvider toDDSProvider(nullptr); - - kpsr::Publisher * kpsrPublisher = - toDDSProvider.getToMiddlewareChannel("kpsr_ros_codegen_test_topicA", 1, nullptr, &headerDataWriter); - - kpsr::EventEmitterMiddlewareProvider basicProvider(nullptr, "test", 0, nullptr, nullptr); - - fromDDSProvider.registerToTopic("kpsr_dds_codegen_test_topicA", &headerDataReader, true, basicProvider.getPublisher()); - - kpsr::mem::CacheListener cacheListener; - basicProvider.getSubscriber()->registerListener("cacheListener", cacheListener.cacheListenerFunction); - - ASSERT_EQ(cacheListener.counter, 0); - - kpsr::geometry::Vector3 event; - - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - event.seq = 1; - event.x = 0.0; - event.y = 0.1; - event.z = 0.2; - kpsrPublisher->publish(event); - - event.seq++; - event.x = 1.0; - event.y = 1.1; - event.z = 1.2; - kpsrPublisher->publish(event); - - event.seq++; - event.x = 2.0; - event.y = 2.1; - event.z = 2.2; - kpsrPublisher->publish(event); - - event.seq++; - event.x = 3.0; - event.y = 3.1; - event.z = 3.2; - kpsrPublisher->publish(event); - - while (cacheListener.counter < 5) { - spdlog::info("publishing loop... "); - event.seq++; - event.x = 4.0; - event.y = 4.1; - event.z = 4.2; - kpsrPublisher->publish(event); - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - } - - ASSERT_EQ(cacheListener.counter, 5); - ASSERT_FLOAT_EQ(cacheListener.getLastReceivedEvent()->x, 4.0); - ASSERT_FLOAT_EQ(cacheListener.getLastReceivedEvent()->y, 4.1); - ASSERT_FLOAT_EQ(cacheListener.getLastReceivedEvent()->z, 4.2); - - fromDDSProvider.unregisterFromTopic("kpsr_dds_codegen_test_topicA", &headerDataReader); -} - -TEST(KpsrDdsCodegenTest1, quaternionMapperTest) { - - dds::domain::DomainParticipant dp(0); - dds::pub::Publisher publisher(dp); - dds::sub::Subscriber subscriber(dp); - - dds::topic::Topic headerTopic(dp, "header_data_test"); - dds::pub::DataWriter headerDataWriter(publisher, headerTopic); - dds::sub::DataReader headerDataReader(subscriber, headerTopic); - - kpsr::dds_mdlw::FromDDSMiddlewareProvider fromDDSProvider; - kpsr::dds_mdlw::ToDDSMiddlewareProvider toDDSProvider(nullptr); - - kpsr::Publisher * kpsrPublisher = - toDDSProvider.getToMiddlewareChannel("kpsr_ros_codegen_test_topicA", 1, nullptr, &headerDataWriter); - - kpsr::EventEmitterMiddlewareProvider basicProvider(nullptr, "test", 0, nullptr, nullptr); - - fromDDSProvider.registerToTopic("kpsr_dds_codegen_test_topicA", &headerDataReader, true, basicProvider.getPublisher()); - - kpsr::mem::CacheListener cacheListener; - basicProvider.getSubscriber()->registerListener("cacheListener", cacheListener.cacheListenerFunction); - - ASSERT_EQ(cacheListener.counter, 0); - - kpsr::geometry::Quaternion event; - - event.seq = 1; - event.x = 0.0; - event.y = 0.1; - event.z = 0.2; - event.w = 0.3; - kpsrPublisher->publish(event); - - event.seq ++; - event.x = 1.0; - event.y = 1.1; - event.z = 1.2; - event.w = 1.3; - kpsrPublisher->publish(event); - - event.seq ++; - event.x = 2.0; - event.y = 2.1; - event.z = 2.2; - event.w = 2.3; - kpsrPublisher->publish(event); - - event.seq ++; - event.x = 3.0; - event.y = 3.1; - event.z = 3.2; - event.w = 3.3; - kpsrPublisher->publish(event); - - while (cacheListener.counter < 5) { - spdlog::info("publishing loop... "); - event.seq ++; - event.x = 4.0; - event.y = 4.1; - event.z = 4.2; - event.w = 4.3; - kpsrPublisher->publish(event); - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - } - - ASSERT_EQ(cacheListener.counter, 5); - ASSERT_FLOAT_EQ(cacheListener.getLastReceivedEvent()->x, 4.0); - ASSERT_FLOAT_EQ(cacheListener.getLastReceivedEvent()->y, 4.1); - ASSERT_FLOAT_EQ(cacheListener.getLastReceivedEvent()->z, 4.2); - ASSERT_FLOAT_EQ(cacheListener.getLastReceivedEvent()->w, 4.3); - - fromDDSProvider.unregisterFromTopic("kpsr_dds_codegen_test_topicA", &headerDataReader); -} - -TEST(KpsrDdsCodegenTest1, imuMapperTest) { - - dds::domain::DomainParticipant dp(0); - dds::pub::Publisher publisher(dp); - dds::sub::Subscriber subscriber(dp); - - dds::topic::Topic headerTopic(dp, "header_data_test"); - dds::pub::DataWriter headerDataWriter(publisher, headerTopic); - dds::sub::DataReader headerDataReader(subscriber, headerTopic); - - kpsr::dds_mdlw::FromDDSMiddlewareProvider fromDDSProvider; - kpsr::dds_mdlw::ToDDSMiddlewareProvider toDDSProvider(nullptr); - - kpsr::Publisher * kpsrPublisher = - toDDSProvider.getToMiddlewareChannel("kpsr_ros_codegen_test_topicA", 1, nullptr, &headerDataWriter); - - kpsr::EventEmitterMiddlewareProvider basicProvider(nullptr, "test", 0, nullptr, nullptr); - - fromDDSProvider.registerToTopic("kpsr_dds_codegen_test_topicA", &headerDataReader, true, basicProvider.getPublisher()); - - kpsr::mem::CacheListener cacheListener; - basicProvider.getSubscriber()->registerListener("cacheListener", cacheListener.cacheListenerFunction); - - ASSERT_EQ(cacheListener.counter, 0); - - unsigned int seq = 0; - { - kpsr::geometry::Quaternion orientation(seq++, 0.1, 0.2, 0.3, 0.4); - std::array orientation_covariance{{1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9}}; - kpsr::geometry::Vector3 angular_velocity(seq++, 0.5, 0.6, 0.7); - std::array angular_velocity_covariance{{2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9}}; - kpsr::geometry::Vector3 linear_acceleration(seq++, 0.8, 0.9, 1.0); - std::array linear_acceleration_covariance{{3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9}}; - - kpsr::geometry::Imu event(seq++, orientation, orientation_covariance, angular_velocity, - angular_velocity_covariance, linear_acceleration, - linear_acceleration_covariance); - kpsrPublisher->publish(event); - } - - { - kpsr::geometry::Quaternion orientation(seq++, 10.1, 10.2, 10.3, 10.4); - std::array orientation_covariance{{11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7, 11.8, 11.9}}; - kpsr::geometry::Vector3 angular_velocity(seq++, 10.5, 10.6, 10.7); - std::array angular_velocity_covariance{{12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7, 12.8, 12.9}}; - kpsr::geometry::Vector3 linear_acceleration(seq++, 0.8, 0.9, 1.0); - std::array linear_acceleration_covariance{{3.1, 3.2, 3.3, 3.4, 3.5, 13.6, 13.7, 13.8, 13.9}}; - - kpsr::geometry::Imu event(seq++, orientation, orientation_covariance, angular_velocity, - angular_velocity_covariance, linear_acceleration, - linear_acceleration_covariance); - kpsrPublisher->publish(event); - } - - { - kpsr::geometry::Quaternion orientation(seq++, 20.1, 20.2, 20.3, 20.4); - std::array orientation_covariance{{21.1, 21.2, 21.3, 21.4, 21.5, 21.6, 21.7, 21.8, 21.9}}; - kpsr::geometry::Vector3 angular_velocity(seq++, 0.5, 0.6, 0.7); - std::array angular_velocity_covariance{{22.1, 22.2, 22.3, 22.4, 22.5, 22.6, 22.7, 22.8, 22.9}}; - kpsr::geometry::Vector3 linear_acceleration(seq++, 0.8, 0.9, 1.0); - std::array linear_acceleration_covariance{{23.1, 23.2, 23.3, 23.4, 23.5, 23.6, 23.7, 23.8, 23.9}}; - - kpsr::geometry::Imu event(seq++, orientation, orientation_covariance, angular_velocity, - angular_velocity_covariance, linear_acceleration, - linear_acceleration_covariance); - kpsrPublisher->publish(event); - } - - { - kpsr::geometry::Quaternion orientation(seq++, 30.1, 30.2, 30.3, 30.4); - std::array orientation_covariance{{31.1, 31.2, 31.3, 31.4, 31.5, 31.6, 31.7, 31.8, 31.9}}; - kpsr::geometry::Vector3 angular_velocity(seq++, 30.5, 30.6, 30.7); - std::array angular_velocity_covariance{{32.1, 32.2, 32.3, 32.4, 32.5, 32.6, 32.7, 32.8, 32.9}}; - kpsr::geometry::Vector3 linear_acceleration(seq++, 0.8, 0.9, 1.0); - std::array linear_acceleration_covariance{{33.1, 33.2, 33.3, 33.4, 33.5, 33.6, 33.7, 33.8, 33.9}}; - - kpsr::geometry::Imu event(seq++, orientation, orientation_covariance, angular_velocity, - angular_velocity_covariance, linear_acceleration, - linear_acceleration_covariance); - kpsrPublisher->publish(event); - } - - while (cacheListener.counter < 5) { - spdlog::info("publishing loop... "); - { - kpsr::geometry::Quaternion orientation(seq++, 40.1, 40.2, 40.3, 40.4); - std::array orientation_covariance{{41.1, 41.2, 41.3, 41.4, 41.5, 41.6, 41.7, 41.8, 41.9}}; - kpsr::geometry::Vector3 angular_velocity(seq++, 30.5, 30.6, 30.7); - std::array angular_velocity_covariance{{42.1, 42.2, 42.3, 42.4, 42.5, 42.6, 42.7, 42.8, 42.9}}; - kpsr::geometry::Vector3 linear_acceleration(seq++, 40.8, 40.9, 41.0); - std::array linear_acceleration_covariance{{43.1, 43.2, 43.3, 43.4, 43.5, 43.6, 43.7, 43.8, 43.9}}; - - kpsr::geometry::Imu event(seq++, orientation, orientation_covariance, angular_velocity, - angular_velocity_covariance, linear_acceleration, - linear_acceleration_covariance); - kpsrPublisher->publish(event); - } - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - } - - kpsr::geometry::Quaternion orientation(seq++, 40.1, 40.2, 40.3, 40.4); - std::array orientation_covariance{{41.1, 41.2, 41.3, 41.4, 41.5, 41.6, 41.7, 41.8, 41.9}}; - kpsr::geometry::Vector3 angular_velocity(seq++, 30.5, 30.6, 30.7); - std::array angular_velocity_covariance{{42.1, 42.2, 42.3, 42.4, 42.5, 42.6, 42.7, 42.8, 42.9}}; - kpsr::geometry::Vector3 linear_acceleration(seq++, 40.8, 40.9, 41.0); - std::array linear_acceleration_covariance{{43.1, 43.2, 43.3, 43.4, 43.5, 43.6, 43.7, 43.8, 43.9}}; - - kpsr::geometry::Imu event(seq++, orientation, orientation_covariance, angular_velocity, - angular_velocity_covariance, linear_acceleration, - linear_acceleration_covariance); - - ASSERT_EQ(cacheListener.counter, 5); - ASSERT_EQ(event.orientation.x, cacheListener.getLastReceivedEvent()->orientation.x); - ASSERT_EQ(event.orientation.y, cacheListener.getLastReceivedEvent()->orientation.y); - ASSERT_EQ(event.orientation.z, cacheListener.getLastReceivedEvent()->orientation.z); - ASSERT_EQ(event.orientation.w, cacheListener.getLastReceivedEvent()->orientation.w); - - ASSERT_EQ(event.angular_velocity.x, cacheListener.getLastReceivedEvent()->angular_velocity.x); - ASSERT_EQ(event.angular_velocity.y, cacheListener.getLastReceivedEvent()->angular_velocity.y); - ASSERT_EQ(event.angular_velocity.z, cacheListener.getLastReceivedEvent()->angular_velocity.z); - - for (int i = 0; i < 9; i ++) { - ASSERT_EQ(event.orientation_covariance[i], cacheListener.getLastReceivedEvent()->orientation_covariance[i]); - ASSERT_EQ(event.angular_velocity_covariance[i], cacheListener.getLastReceivedEvent()->angular_velocity_covariance[i]); - ASSERT_EQ(event.linear_acceleration_covariance[i], cacheListener.getLastReceivedEvent()->linear_acceleration_covariance[i]); - } - - ASSERT_EQ(event.linear_acceleration.x, cacheListener.getLastReceivedEvent()->linear_acceleration.x); - ASSERT_EQ(event.linear_acceleration.y, cacheListener.getLastReceivedEvent()->linear_acceleration.y); - ASSERT_EQ(event.linear_acceleration.z, cacheListener.getLastReceivedEvent()->linear_acceleration.z); - - fromDDSProvider.unregisterFromTopic("kpsr_dds_codegen_test_topicA", &headerDataReader); -} diff --git a/cpp_testing/tests/dds_codegen_tests_1_2/src/ddsstg_codegen_test2.cpp b/cpp_testing/tests/dds_codegen_tests_1_2/src/ddsstg_codegen_test2.cpp deleted file mode 100644 index 8a7f384..0000000 --- a/cpp_testing/tests/dds_codegen_tests_1_2/src/ddsstg_codegen_test2.cpp +++ /dev/null @@ -1,495 +0,0 @@ -/**************************************************************************** -* -* Klepsydra Core Modules -* Copyright (C) 2019-2020 Klepsydra Technologies GmbH -* All Rights Reserved. -* -* This file is subject to the terms and conditions defined in -* file 'LICENSE.md', which is part of this source code package. -* -* NOTICE: All information contained herein is, and remains the property of Klepsydra -* Technologies GmbH and its suppliers, if any. The intellectual and technical concepts -* contained herein are proprietary to Klepsydra Technologies GmbH and its suppliers and -* may be covered by Swiss and Foreign Patents, patents in process, and are protected by -* trade secret or copyright law. Dissemination of this information or reproduction of -* this material is strictly forbidden unless prior written permission is obtained from -* Klepsydra Technologies GmbH. -* -****************************************************************************/ - -#include - -#include - -#include -#include - -#include -#include - -#include - -#include -#include - -#include "dds/dds.hpp" - -#include -#include -#include -#include -#include - -TEST(KpsrDdsCodegenTest2, primitiveTypeBasicMapperTest) { - - dds::domain::DomainParticipant dp(0); - dds::pub::Publisher publisher(dp); - dds::sub::Subscriber subscriber(dp); - - dds::topic::Topic topic(dp, "primitive_data_test"); - dds::pub::DataWriter dataWriter(publisher, topic); - dds::sub::DataReader dataReader(subscriber, topic); - - kpsr::dds_mdlw::FromDDSMiddlewareProvider fromDDSProvider; - kpsr::dds_mdlw::ToDDSMiddlewareProvider toDDSProvider(nullptr); - - kpsr::Publisher * kpsrPublisher = toDDSProvider.getToMiddlewareChannel("kpsr_dds_codegen_test_topicA", 1, nullptr, &dataWriter); - - kpsr::EventEmitterMiddlewareProvider basicProvider(nullptr, "test", 0, nullptr, nullptr); - - fromDDSProvider.registerToTopic("kpsr_dds_codegen_test_topicA", &dataReader, true, basicProvider.getPublisher()); - - kpsr::mem::CacheListener cacheListener; - basicProvider.getSubscriber()->registerListener("cacheListener", cacheListener.cacheListenerFunction); - - ASSERT_EQ(cacheListener.counter, 0); - - unsigned short seq = 0; - { - kpsr::codegen::PrimitiveTypesBasic event(seq++, 'a', 0, 1, 2 , 3, 4, 5, 6.0, 6.1, true, "a1"); - kpsrPublisher->publish(event); - } - - { - kpsr::codegen::PrimitiveTypesBasic event(seq++, 'a', 0, 1, 2 , 3, 4, 5, 6.0, 6.1, true, "a1"); - kpsrPublisher->publish(event); - } - - { - kpsr::codegen::PrimitiveTypesBasic event(seq++, 'a', 0, 1, 2 , 3, 4, 5, 6.0, 6.1, true, "a1"); - kpsrPublisher->publish(event); - } - - { - kpsr::codegen::PrimitiveTypesBasic event(seq++, 'a', 0, 1, 2 , 3, 4, 5, 6.0, 6.1, true, "a1"); - kpsrPublisher->publish(event); - } - - kpsr::codegen::PrimitiveTypesBasic event(seq++, 'a', 0, 1, 2 , 3, 4, 5, 6.0, 6.1, true, "a1"); - while (cacheListener.counter < 5) { - spdlog::info("publishing loop... "); - kpsrPublisher->publish(event); - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - } - - ASSERT_EQ(cacheListener.counter, 5); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->a, event.a); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->b, event.b); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->c, event.c); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->d, event.d); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->e, event.e); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->f, event.f); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->g, event.g); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->h, event.h); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->i, event.i); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->j, event.j); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->k, event.k); - - fromDDSProvider.unregisterFromTopic("kpsr_dds_codegen_test_topicA", &dataReader); -} - -TEST(KpsrDdsCodegenTest2, primitiveTypeArrayMapperTest) { - - dds::domain::DomainParticipant dp(0); - dds::pub::Publisher publisher(dp); - dds::sub::Subscriber subscriber(dp); - - dds::topic::Topic topic(dp, "primitive_data_test"); - dds::pub::DataWriter dataWriter(publisher, topic); - dds::sub::DataReader dataReader(subscriber, topic); - - kpsr::dds_mdlw::FromDDSMiddlewareProvider fromDDSProvider; - kpsr::dds_mdlw::ToDDSMiddlewareProvider toDDSProvider(nullptr); - - kpsr::Publisher * kpsrPublisher = toDDSProvider.getToMiddlewareChannel("kpsr_dds_codegen_test_topic1", 1, nullptr, &dataWriter); - - kpsr::EventEmitterMiddlewareProvider basicProvider(nullptr, "test", 0, nullptr, nullptr); - - fromDDSProvider.registerToTopic("kpsr_dds_codegen_test_topic1", &dataReader, true, basicProvider.getPublisher()); - - kpsr::mem::CacheListener cacheListener; - basicProvider.getSubscriber()->registerListener("cacheListener", cacheListener.cacheListenerFunction); - - ASSERT_EQ(cacheListener.counter, 0); - - unsigned short seq = 0; - { - kpsr::codegen::PrimitiveTypesArray event(seq++, {{'a', 'b'}}, {{0, 1, 2}}, {{3, 4, 5, 6}}, {{ 7, 8, 9, 10, 11 }}, {{12, 13, 14, 15, 16, 17}}, - {{ 18, 19, 20, 21, 22, 23, 24}}, {{ 25, 26, 27, 28, 29, 30, 31, 32 }}, - {{ 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9}}, {{ 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9}}, - {{ true, false, true, false, true, false, true, false, true, false, true }}, - {{ "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10", "a11", "a12"}}); - kpsrPublisher->publish(event); - } - - { - kpsr::codegen::PrimitiveTypesArray event(seq++, {{'a', 'b'}}, {{0, 1, 2}}, {{3, 4, 5, 6}}, {{ 7, 8, 9, 10, 11 }}, {{12, 13, 14, 15, 16, 17}}, - {{ 18, 19, 20, 21, 22, 23, 24}}, {{ 25, 26, 27, 28, 29, 30, 31, 32 }}, - {{ 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9}}, {{ 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9}}, - {{ true, false, true, false, true, false, true, false, true, false, true }}, - {{ "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12"}}); - kpsrPublisher->publish(event); - } - - { - kpsr::codegen::PrimitiveTypesArray event(seq++, {{'a', 'b'}}, {{0, 1, 2}}, {{3, 4, 5, 6}}, {{ 7, 8, 9, 10, 11 }}, {{12, 13, 14, 15, 16, 17}}, - {{ 18, 19, 20, 21, 22, 23, 24}}, {{ 25, 26, 27, 28, 29, 30, 31, 32 }}, - {{ 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9}}, {{ 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9}}, - {{ true, false, true, false, true, false, true, false, true, false, true }}, - {{ "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "c10", "c11", "c12"}}); - kpsrPublisher->publish(event); - } - - { - kpsr::codegen::PrimitiveTypesArray event(seq++, {{'a', 'b'}}, {{0, 1, 2}}, {{3, 4, 5, 6}}, {{ 7, 8, 9, 10, 11 }}, {{12, 13, 14, 15, 16, 17}}, - {{ 18, 19, 20, 21, 22, 23, 24}}, {{ 25, 26, 27, 28, 29, 30, 31, 32 }}, - {{ 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9}}, {{ 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9}}, - {{ true, false, true, false, true, false, true, false, true, false, true }}, - {{ "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "d10", "d11", "d12"}}); - kpsrPublisher->publish(event); - } - - kpsr::codegen::PrimitiveTypesArray event(seq++, {{'a', 'b'}}, {{0, 1, 2}}, {{3, 4, 5, 6}}, {{ 7, 8, 9, 10, 11 }}, {{12, 13, 14, 15, 16, 17}}, - {{ 18, 19, 20, 21, 22, 23, 24}}, {{ 25, 26, 27, 28, 29, 30, 31, 32 }}, - {{ 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9}}, {{ 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9}}, - {{ true, false, true, false, true, false, true, false, true, false, true }}, - {{ "e1", "e2", "e3", "e4", "e5", "e6", "e7", "e8", "e9", "e10", "e11", "e12"}}); - - while (cacheListener.counter < 5) { - spdlog::info("publishing loop... "); - kpsrPublisher->publish(event); - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - } - - ASSERT_EQ(cacheListener.counter, 5); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->aa, event.aa); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->bb, event.bb); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->cc, event.cc); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->dd, event.dd); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->ee, event.ee); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->ff, event.ff); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->gg, event.gg); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->hh, event.hh); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->ii, event.ii); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->jj, event.jj); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->kk, event.kk); - - fromDDSProvider.unregisterFromTopic("kpsr_dds_codegen_test_topic1", &dataReader); -} - -TEST(KpsrDdsCodegenTest2, primitiveTypeVectorMapperTest) { - - dds::domain::DomainParticipant dp(0); - dds::pub::Publisher publisher(dp); - dds::sub::Subscriber subscriber(dp); - - dds::topic::Topic topic(dp, "primitive_data_test"); - dds::pub::DataWriter dataWriter(publisher, topic); - dds::sub::DataReader dataReader(subscriber, topic); - - kpsr::dds_mdlw::FromDDSMiddlewareProvider fromDDSProvider; - kpsr::dds_mdlw::ToDDSMiddlewareProvider toDDSProvider(nullptr); - - kpsr::Publisher * kpsrPublisher = toDDSProvider.getToMiddlewareChannel("kpsr_dds_codegen_test_topic2", 1, nullptr, &dataWriter); - - kpsr::EventEmitterMiddlewareProvider basicProvider(nullptr, "test", 0, nullptr, nullptr); - - fromDDSProvider.registerToTopic("kpsr_dds_codegen_test_topic2", &dataReader, true, basicProvider.getPublisher()); - - kpsr::mem::CacheListener cacheListener; - basicProvider.getSubscriber()->registerListener("cacheListener", cacheListener.cacheListenerFunction); - - ASSERT_EQ(cacheListener.counter, 0); - - unsigned short seq = 0; - { - kpsr::codegen::PrimitiveTypesVector event(seq++, {'a', 'b'}, {0, 1, 2}, {3, 4, 5, 6}, { 7, 8, 9, 10, 11 }, {12, 13, 14, 15, 16, 17}, - { 18, 19, 20, 21, 22, 23, 24}, { 25, 26, 27, 28, 29, 30, 31, 32 }, - { 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9}, { 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9}, - { true, false, true, false, true, false, true, false, true, false, true }, - { "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10", "a11", "a12"}); - kpsrPublisher->publish(event); - } - - { - kpsr::codegen::PrimitiveTypesVector event(seq++, {'a', 'b'}, {0, 1, 2}, {3, 4, 5, 6}, { 7, 8, 9, 10, 11 }, {12, 13, 14, 15, 16, 17}, - { 18, 19, 20, 21, 22, 23, 24}, { 25, 26, 27, 28, 29, 30, 31, 32 }, - { 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9}, { 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9}, - { true, false, true, false, true, false, true, false, true, false, true }, - { "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12"}); - kpsrPublisher->publish(event); - } - - { - kpsr::codegen::PrimitiveTypesVector event(seq++, {'a', 'b'}, {0, 1, 2}, {3, 4, 5, 6}, { 7, 8, 9, 10, 11 }, {12, 13, 14, 15, 16, 17}, - { 18, 19, 20, 21, 22, 23, 24}, { 25, 26, 27, 28, 29, 30, 31, 32 }, - { 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9}, { 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9}, - { true, false, true, false, true, false, true, false, true, false, true }, - { "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "c10", "c11", "c12"}); - kpsrPublisher->publish(event); - } - - { - kpsr::codegen::PrimitiveTypesVector event(seq++, {'a', 'b'}, {0, 1, 2}, {3, 4, 5, 6}, { 7, 8, 9, 10, 11 }, {12, 13, 14, 15, 16, 17}, - { 18, 19, 20, 21, 22, 23, 24}, { 25, 26, 27, 28, 29, 30, 31, 32 }, - { 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9}, { 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9}, - { true, false, true, false, true, false, true, false, true, false, true }, - { "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "d10", "d11", "d12"}); - kpsrPublisher->publish(event); - } - - kpsr::codegen::PrimitiveTypesVector event(seq++, {'a', 'b'}, {0, 1, 2}, {3, 4, 5, 6}, { 7, 8, 9, 10, 11 }, {12, 13, 14, 15, 16, 17}, - { 18, 19, 20, 21, 22, 23, 24}, { 25, 26, 27, 28, 29, 30, 31, 32 }, - { 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9}, { 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9}, - { true, false, true, false, true, false, true, false, true, false, true }, - { "e1", "e2", "e3", "e4", "e5", "e6", "e7", "e8", "e9", "e10", "e11", "e12"}); - - while (cacheListener.counter < 5) { - spdlog::info("publishing loop... "); - kpsrPublisher->publish(event); - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - } - - ASSERT_EQ(cacheListener.counter, 5); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->aaa, event.aaa); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->bbb, event.bbb); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->ccc, event.ccc); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->ddd, event.ddd); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->eee, event.eee); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->fff, event.fff); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->ggg, event.ggg); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->hhh, event.hhh); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->iii, event.iii); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->jjj, event.jjj); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->kkk, event.kkk); - - fromDDSProvider.unregisterFromTopic("kpsr_dds_codegen_test_topic2", &dataReader); -} - -TEST(KpsrDdsCodegenTest2, primitiveTypeVectorSharedPtrMapperTest) { - - dds::domain::DomainParticipant dp(0); - dds::pub::Publisher publisher(dp); - dds::sub::Subscriber subscriber(dp); - - dds::topic::Topic topic(dp, "primitive_data_test"); - dds::pub::DataWriter dataWriter(publisher, topic); - dds::sub::DataReader dataReader(subscriber, topic); - - kpsr::dds_mdlw::FromDDSMiddlewareProvider fromDDSProvider; - kpsr::dds_mdlw::ToDDSMiddlewareProvider toDDSProvider(nullptr); - - kpsr::Publisher * kpsrPublisher = toDDSProvider.getToMiddlewareChannel("kpsr_dds_codegen_test_topic2", 1, nullptr, &dataWriter); - - kpsr::EventEmitterMiddlewareProvider basicProvider(nullptr, "test", 0, nullptr, nullptr); - - fromDDSProvider.registerToTopic("kpsr_dds_codegen_test_topic2", &dataReader, true, basicProvider.getPublisher()); - - kpsr::mem::CacheListener cacheListener; - basicProvider.getSubscriber()->registerListener("cacheListener", cacheListener.cacheListenerFunction); - - ASSERT_EQ(cacheListener.counter, 0); - - unsigned short seq = 0; - { - kpsr::codegen::PrimitiveTypesVectorSharedPtr event(seq++, - {std::shared_ptr(new signed char('a'))}, - {std::shared_ptr(new unsigned char(0))}, - {std::shared_ptr(new short int(1))}, - {std::shared_ptr(new unsigned short int(2))}, - {std::shared_ptr(new unsigned int(3))}, - {std::shared_ptr(new long long int(4))}, - {std::shared_ptr(new unsigned long long int(5))}, - {std::shared_ptr(new float(6.1))}, - {std::shared_ptr(new double(6.2))}, - {std::shared_ptr(new bool(true))}, - {std::shared_ptr(new std::string("hola"))}); - kpsrPublisher->publish(event); - } - - { - kpsr::codegen::PrimitiveTypesVectorSharedPtr event(seq++, - {std::shared_ptr(new signed char('a'))}, - {std::shared_ptr(new unsigned char(0))}, - {std::shared_ptr(new short int(1))}, - {std::shared_ptr(new unsigned short int(2))}, - {std::shared_ptr(new unsigned int(3))}, - {std::shared_ptr(new long long int(4))}, - {std::shared_ptr(new unsigned long long int(5))}, - {std::shared_ptr(new float(6.1))}, - {std::shared_ptr(new double(6.2))}, - {std::shared_ptr(new bool(true))}, - {std::shared_ptr(new std::string("hola"))}); - kpsrPublisher->publish(event); - } - - { - kpsr::codegen::PrimitiveTypesVectorSharedPtr event(seq++, - {std::shared_ptr(new signed char('a'))}, - {std::shared_ptr(new unsigned char(0))}, - {std::shared_ptr(new short int(1))}, - {std::shared_ptr(new unsigned short int(2))}, - {std::shared_ptr(new unsigned int(3))}, - {std::shared_ptr(new long long int(4))}, - {std::shared_ptr(new unsigned long long int(5))}, - {std::shared_ptr(new float(6.1))}, - {std::shared_ptr(new double(6.2))}, - {std::shared_ptr(new bool(true))}, - {std::shared_ptr(new std::string("hola"))}); - kpsrPublisher->publish(event); - } - - { - kpsr::codegen::PrimitiveTypesVectorSharedPtr event(seq++, - {std::shared_ptr(new signed char('a'))}, - {std::shared_ptr(new unsigned char(0))}, - {std::shared_ptr(new short int(1))}, - {std::shared_ptr(new unsigned short int(2))}, - {std::shared_ptr(new unsigned int(3))}, - {std::shared_ptr(new long long int(4))}, - {std::shared_ptr(new unsigned long long int(5))}, - {std::shared_ptr(new float(6.1))}, - {std::shared_ptr(new double(6.2))}, - {std::shared_ptr(new bool(true))}, - {std::shared_ptr(new std::string("hola"))}); - kpsrPublisher->publish(event); - } - - kpsr::codegen::PrimitiveTypesVectorSharedPtr event(seq++, - {std::shared_ptr(new signed char('a'))}, - {std::shared_ptr(new unsigned char(0))}, - {std::shared_ptr(new short int(1))}, - {std::shared_ptr(new unsigned short int(2))}, - {std::shared_ptr(new unsigned int(3))}, - {std::shared_ptr(new long long int(4))}, - {std::shared_ptr(new unsigned long long int(5))}, - {std::shared_ptr(new float(6.1))}, - {std::shared_ptr(new double(6.2))}, - {std::shared_ptr(new bool(true))}, - {std::shared_ptr(new std::string("hola"))}); - - while (cacheListener.counter < 5) { - spdlog::info("publishing loop... "); - kpsrPublisher->publish(event); - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - } - - ASSERT_EQ(cacheListener.counter, 5); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->aaa[0].get(), * event.aaa[0].get()); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->bbb[0].get(), * event.bbb[0].get()); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->ccc[0].get(), * event.ccc[0].get()); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->ddd[0].get(), * event.ddd[0].get()); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->eee[0].get(), * event.eee[0].get()); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->fff[0].get(), * event.fff[0].get()); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->ggg[0].get(), * event.ggg[0].get()); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->hhh[0].get(), * event.hhh[0].get()); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->iii[0].get(), * event.iii[0].get()); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->jjj[0].get(), * event.jjj[0].get()); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->kkk[0].get(), * event.kkk[0].get()); - - fromDDSProvider.unregisterFromTopic("kpsr_dds_codegen_test_topic2", &dataReader); -} - -TEST(KpsrDdsCodegenTest2, primitiveTypeVectorPointerMapperTest) { - - dds::domain::DomainParticipant dp(0); - dds::pub::Publisher publisher(dp); - dds::sub::Subscriber subscriber(dp); - - dds::topic::Topic topic(dp, "primitive_data_test"); - dds::pub::DataWriter dataWriter(publisher, topic); - dds::sub::DataReader dataReader(subscriber, topic); - - kpsr::dds_mdlw::FromDDSMiddlewareProvider fromDDSProvider; - kpsr::dds_mdlw::ToDDSMiddlewareProvider toDDSProvider(nullptr); - - kpsr::Publisher * kpsrPublisher = toDDSProvider.getToMiddlewareChannel("kpsr_dds_codegen_test_topic2", 1, nullptr, &dataWriter); - - kpsr::EventEmitterMiddlewareProvider basicProvider(nullptr, "test", 0, nullptr, nullptr); - - fromDDSProvider.registerToTopic("kpsr_dds_codegen_test_topic2", &dataReader, true, basicProvider.getPublisher()); - - kpsr::mem::CacheListener cacheListener; - basicProvider.getSubscriber()->registerListener("cacheListener", cacheListener.cacheListenerFunction); - - ASSERT_EQ(cacheListener.counter, 0); - - unsigned short seq = 0; - { - kpsr::codegen::PrimitiveTypesVectorPointer event(seq++, - {new signed char('a')}, {new unsigned char(0)}, {new short int(1)}, {new unsigned short int(2)}, - {new unsigned int(3)}, {new long long int(4)}, {new unsigned long long int(5)}, {new float(6.1)}, - {new double(6.2)}, {new bool(true)}, {new std::string("hola")}); - kpsrPublisher->publish(event); - } - - { - kpsr::codegen::PrimitiveTypesVectorPointer event(seq++, - {new signed char('a')}, {new unsigned char(0)}, {new short int(1)}, {new unsigned short int(2)}, - {new unsigned int(3)}, {new long long int(4)}, {new unsigned long long int(5)}, {new float(6.1)}, - {new double(6.2)}, {new bool(true)}, {new std::string("hola")}); - kpsrPublisher->publish(event); - } - - { - kpsr::codegen::PrimitiveTypesVectorPointer event(seq++, - {new signed char('a')}, {new unsigned char(0)}, {new short int(1)}, {new unsigned short int(2)}, - {new unsigned int(3)}, {new long long int(4)}, {new unsigned long long int(5)}, {new float(6.1)}, - {new double(6.2)}, {new bool(true)}, {new std::string("hola")}); - kpsrPublisher->publish(event); - } - - { - kpsr::codegen::PrimitiveTypesVectorPointer event(seq++, - {new signed char('a')}, {new unsigned char(0)}, {new short int(1)}, {new unsigned short int(2)}, - {new unsigned int(3)}, {new long long int(4)}, {new unsigned long long int(5)}, {new float(6.1)}, - {new double(6.2)}, {new bool(true)}, {new std::string("hola")}); - kpsrPublisher->publish(event); - } - - kpsr::codegen::PrimitiveTypesVectorPointer event(seq++, - {new signed char('a')}, {new unsigned char(0)}, {new short int(1)}, {new unsigned short int(2)}, - {new unsigned int(3)}, {new long long int(4)}, {new unsigned long long int(5)}, {new float(6.1)}, - {new double(6.2)}, {new bool(true)}, {new std::string("hola")}); - - while (cacheListener.counter < 5) { - spdlog::info("publishing loop... "); - kpsrPublisher->publish(event); - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - } - - ASSERT_EQ(cacheListener.counter, 5); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->aaa[0], * event.aaa[0]); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->bbb[0], * event.bbb[0]); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->ccc[0], * event.ccc[0]); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->ddd[0], * event.ddd[0]); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->eee[0], * event.eee[0]); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->fff[0], * event.fff[0]); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->ggg[0], * event.ggg[0]); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->hhh[0], * event.hhh[0]); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->iii[0], * event.iii[0]); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->jjj[0], * event.jjj[0]); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->kkk[0], * event.kkk[0]); - - fromDDSProvider.unregisterFromTopic("kpsr_dds_codegen_test_topic2", &dataReader); -} diff --git a/cpp_testing/tests/dds_codegen_tests_1_2/src/main.cpp b/cpp_testing/tests/dds_codegen_tests_1_2/src/main.cpp deleted file mode 100644 index 6d5962f..0000000 --- a/cpp_testing/tests/dds_codegen_tests_1_2/src/main.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/**************************************************************************** -* -* Klepsydra Core Modules -* Copyright (C) 2019-2020 Klepsydra Technologies GmbH -* All Rights Reserved. -* -* This file is subject to the terms and conditions defined in -* file 'LICENSE.md', which is part of this source code package. -* -* NOTICE: All information contained herein is, and remains the property of Klepsydra -* Technologies GmbH and its suppliers, if any. The intellectual and technical concepts -* contained herein are proprietary to Klepsydra Technologies GmbH and its suppliers and -* may be covered by Swiss and Foreign Patents, patents in process, and are protected by -* trade secret or copyright law. Dissemination of this information or reproduction of -* this material is strictly forbidden unless prior written permission is obtained from -* Klepsydra Technologies GmbH. -* -****************************************************************************/ - -#include "gtest/gtest.h" - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - int ret = RUN_ALL_TESTS(); - return ret; -} - diff --git a/cpp_testing/tests/dds_codegen_tests_1_5/CMakeLists.txt b/cpp_testing/tests/dds_codegen_tests_1_5/CMakeLists.txt deleted file mode 100644 index ebf1da4..0000000 --- a/cpp_testing/tests/dds_codegen_tests_1_5/CMakeLists.txt +++ /dev/null @@ -1,77 +0,0 @@ -#**************************************************************************** -# -# Klepsydra Core Modules -# Copyright (C) 2019-2020 Klepsydra Technologies GmbH -# All Rights Reserved. -# -# This file is subject to the terms and conditions defined in -# file 'LICENSE.md', which is part of this source code package. -# -# NOTICE: All information contained herein is, and remains the property of Klepsydra -# Technologies GmbH and its suppliers, if any. The intellectual and technical concepts -# contained herein are proprietary to Klepsydra Technologies GmbH and its suppliers and -# may be covered by Swiss and Foreign Patents, patents in process, and are protected by -# trade secret or copyright law. Dissemination of this information or reproduction of -# this material is strictly forbidden unless prior written permission is obtained from -# Klepsydra Technologies GmbH. -# -#**************************************************************************** - -SET(PROJ_NAME kpsr_dds_${PROJ_MAIN_NAME}_tests_1_5) -PROJECT(${PROJ_NAME}) - -file(REMOVE_RECURSE ${CMAKE_CURRENT_SOURCE_DIR}/gen) -file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/gen) -file(REMOVE_RECURSE ${CMAKE_CURRENT_SOURCE_DIR}/temp_idls) - -KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test1" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test1" "klepsydra/codegen" "True" "True" "False") -KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test5" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test5" "klepsydra/codegen" "True" "True" "False") - -file(GLOB idls - ${CMAKE_CURRENT_SOURCE_DIR}/gen_test1/dds/idl/quaternion_data.idl - ${CMAKE_CURRENT_SOURCE_DIR}/gen_test1/dds/idl/gps_data.idl - ${CMAKE_CURRENT_SOURCE_DIR}/gen_test5/dds/idl/*.idl) - -file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/temp_idls) -file(COPY ${idls} DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/temp_idls) - -file(GLOB temp_idls ${CMAKE_CURRENT_SOURCE_DIR}/temp_idls/*.idl) -FOREACH(idl ${temp_idls}) - Connext_IDLGEN (${idl} ${CMAKE_CURRENT_SOURCE_DIR}) - GET_FILENAME_COMPONENT(nfile ${idl} NAME) - Connext_GENDATAMODEL(${nfile} ${CMAKE_CURRENT_SOURCE_DIR}) -ENDFOREACH(idl) - -# Source -#---------------------------------------------------# -FILE(GLOB ${PROJ_NAME}_SRC - "src/*.cpp" -) - -# Link libraries with Project -#---------------------------------------------------# -ADD_LIBRARY (kpsr_dds_${PROJ_MAIN_NAME}_datamodel_1_5 SHARED ${Connext_DATAMODEL}) - -ADD_EXECUTABLE(${PROJ_NAME} ${${PROJ_NAME}_HEADERS} ${${PROJ_NAME}_SRC} ) - -#---------------------------------------------------# -TARGET_LINK_LIBRARIES(kpsr_dds_${PROJ_MAIN_NAME}_datamodel_1_5 - PUBLIC - RTIConnextDDS::cpp2_api - ) - -TARGET_INCLUDE_DIRECTORIES(${PROJ_NAME} - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/gen_test1/poco/include - ${CMAKE_CURRENT_SOURCE_DIR}/gen_test1/dds/include - ${CMAKE_CURRENT_SOURCE_DIR}/gen_test5/poco/include - ${CMAKE_CURRENT_SOURCE_DIR}/gen_test5/dds/include - ${CMAKE_SOURCE_DIR}/modules/${PROJ_MAIN_NAME}/include - ${CMAKE_CURRENT_SOURCE_DIR}/gen -) -TARGET_LINK_LIBRARIES(${PROJ_NAME} kpsr_core gtest_main - kpsr_dds_core - kpsr_dds_serialization_datamodel - kpsr_dds_${PROJ_MAIN_NAME}_datamodel_1_5) - -add_test(NAME ${PROJ_NAME} COMMAND ${PROJ_NAME} --output-on-failure --gtest_output=xml:gtestresults.xml) diff --git a/cpp_testing/tests/dds_codegen_tests_1_5/src/ddstg_codegen_test5.cpp b/cpp_testing/tests/dds_codegen_tests_1_5/src/ddstg_codegen_test5.cpp deleted file mode 100644 index c58ea2c..0000000 --- a/cpp_testing/tests/dds_codegen_tests_1_5/src/ddstg_codegen_test5.cpp +++ /dev/null @@ -1,126 +0,0 @@ -/**************************************************************************** -* -* Klepsydra Core Modules -* Copyright (C) 2019-2020 Klepsydra Technologies GmbH -* All Rights Reserved. -* -* This file is subject to the terms and conditions defined in -* file 'LICENSE.md', which is part of this source code package. -* -* NOTICE: All information contained herein is, and remains the property of Klepsydra -* Technologies GmbH and its suppliers, if any. The intellectual and technical concepts -* contained herein are proprietary to Klepsydra Technologies GmbH and its suppliers and -* may be covered by Swiss and Foreign Patents, patents in process, and are protected by -* trade secret or copyright law. Dissemination of this information or reproduction of -* this material is strictly forbidden unless prior written permission is obtained from -* Klepsydra Technologies GmbH. -* -****************************************************************************/ - -#include - -#include - -#include -#include - -#include -#include - -#include - -#include -#include - -#include "dds/dds.hpp" - -#include - -TEST(KpsrDdsCodegenTest5, compositionTypeRelatedMapperTest) { - dds::domain::DomainParticipant dp(0); - dds::pub::Publisher publisher(dp); - dds::sub::Subscriber subscriber(dp); - - dds::topic::Topic topic(dp, "header_data_test"); - dds::pub::DataWriter dataWriter(publisher, topic); - dds::sub::DataReader dataReader(subscriber, topic); - - kpsr::dds_mdlw::FromDDSMiddlewareProvider fromDDSProvider; - kpsr::dds_mdlw::ToDDSMiddlewareProvider toDDSProvider(nullptr); - - kpsr::Publisher * kpsrPublisher = - toDDSProvider.getToMiddlewareChannel("kpsr_ros_codegen_test_topicA", 1, nullptr, &dataWriter); - - kpsr::EventEmitterMiddlewareProvider basicProvider(nullptr, "test", 0, nullptr, nullptr); - - fromDDSProvider.registerToTopic("kpsr_dds_codegen_test_topic5", &dataReader, true, basicProvider.getPublisher()); - - kpsr::mem::CacheListener cacheListener; - basicProvider.getSubscriber()->registerListener("cacheListener", cacheListener.cacheListenerFunction); - - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - ASSERT_EQ(cacheListener.counter, 0); - - unsigned short seq = 0; - kpsr::codegen::CompositionTypeRelated event; - for (int i = 0; i < 5; i++) { - event.seq = seq++; - event.newEnum = kpsr::codegen::NewEnum::new1; - event.newEnumArray = {{kpsr::codegen::NewEnum::new2, kpsr::codegen::NewEnum::new3}}; - event.newEnumVector = {kpsr::codegen::NewEnum::new1, kpsr::codegen::NewEnum::new2}; - event.newEnumVectorPointer = {new kpsr::codegen::NewEnum(kpsr::codegen::NewEnum::new1)}; - event.newEnumVectorSharedPtr = {std::shared_ptr(new kpsr::codegen::NewEnum(kpsr::codegen::NewEnum::new1))}; - - event.oldEnum = kpsr::codegen::OldEnum::oldA; - event.oldEnumArray = {{kpsr::codegen::OldEnum::oldA, kpsr::codegen::OldEnum::oldB}}; - event.oldEnumVector = {kpsr::codegen::OldEnum::oldA, kpsr::codegen::OldEnum::oldB}; - event.oldEnumVectorPointer = {new kpsr::codegen::OldEnum(kpsr::codegen::OldEnum::oldB)}; - event.oldEnumVectorSharedPtr = {std::shared_ptr(new kpsr::codegen::OldEnum(kpsr::codegen::OldEnum::oldA))}; - - event.positionArray = {{ kpsr::geometry::Vector3(seq++, 0.1, 0.2, 0.3), kpsr::geometry::Vector3(seq++, 1.1, 1.2, 1.3) }}; - event.positionVector = { kpsr::geometry::Vector3(seq++, 0.1, 0.2, 0.3), kpsr::geometry::Vector3(seq++, 1.1, 1.2, 1.3) }; - event.positionVectorPointer = { new kpsr::geometry::Vector3(seq++, 0.1, 0.2, 0.3), new kpsr::geometry::Vector3(seq++, 1.1, 1.2, 1.3) }; - event.positionVectorSharedPtr = { std::shared_ptr(new kpsr::geometry::Vector3(seq++, 0.1, 0.2, 0.3)), - std::shared_ptr(new kpsr::geometry::Vector3(seq++, 1.1, 1.2, 1.3)) }; - - event.quaternionArray = {{ kpsr::codegen::Vector4(0.1, 0.2, 0.3, 0.4), kpsr::codegen::Vector4(1.1, 1.2, 1.3, 1.4) }}; - event.quaternionVector = { kpsr::codegen::Vector4(0.1, 0.2, 0.3, 0.4), kpsr::codegen::Vector4(1.1, 1.2, 1.3, 1.4) }; - event.quaternionVectorPointer = { new kpsr::codegen::Vector4(0.1, 0.2, 0.3, 0.4), new kpsr::codegen::Vector4(1.1, 1.2, 1.3, 1.4) }; - event.quaternionVectorSharedPtr = { std::shared_ptr(new kpsr::codegen::Vector4(0.1, 0.2, 0.3, 0.4)), - std::shared_ptr(new kpsr::codegen::Vector4(1.1, 1.2, 1.3, 1.4)) }; - event.quat = kpsr::geometry::Quaternion(0, 1.0, 2.0, 3.0, 4.0); - event.gpsData = kpsr::geometry::Gps(1, 1.0, 2.0, 3.0); - spdlog::info("publishing loop... "); - kpsrPublisher->publish(event); - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - } - - ASSERT_EQ(cacheListener.counter, 5); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->newEnum, event.newEnum); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->newEnumArray, event.newEnumArray); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->newEnumVector, event.newEnumVector); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->newEnumVectorPointer[0], * event.newEnumVectorPointer[0]); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->newEnumVectorSharedPtr[0].get(), * event.newEnumVectorSharedPtr[0].get()); - - ASSERT_EQ(cacheListener.getLastReceivedEvent()->oldEnum, event.oldEnum); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->oldEnumArray, event.oldEnumArray); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->oldEnumVector[0], event.oldEnumVector[0]); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->oldEnumVectorPointer[0], * event.oldEnumVectorPointer[0]); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->oldEnumVectorSharedPtr[0].get(), * event.oldEnumVectorSharedPtr[0].get()); - - ASSERT_EQ(cacheListener.getLastReceivedEvent()->positionArray[0].x, event.positionArray[0].x); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->positionVector[0].x, event.positionVector[0].x); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->positionVectorPointer[0]->x, event.positionVectorPointer[0]->x); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->positionVectorSharedPtr[0]->x, event.positionVectorSharedPtr[0]->x); - - ASSERT_EQ(cacheListener.getLastReceivedEvent()->quaternionArray[0].a, event.quaternionArray[0].a); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->quaternionVector[0].a, event.quaternionVector[0].a); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->quaternionVectorPointer[0]->a, event.quaternionVectorPointer[0]->a); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->quaternionVectorSharedPtr[0]->a, event.quaternionVectorSharedPtr[0]->a); - - ASSERT_EQ(cacheListener.getLastReceivedEvent()->quat.x, event.quat.x); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->gpsData.altitude, event.gpsData.altitude); - - fromDDSProvider.unregisterFromTopic("kpsr_dds_codegen_test_topic5", &dataReader); -} - diff --git a/cpp_testing/tests/dds_codegen_tests_1_5/src/main.cpp b/cpp_testing/tests/dds_codegen_tests_1_5/src/main.cpp deleted file mode 100644 index 6d5962f..0000000 --- a/cpp_testing/tests/dds_codegen_tests_1_5/src/main.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/**************************************************************************** -* -* Klepsydra Core Modules -* Copyright (C) 2019-2020 Klepsydra Technologies GmbH -* All Rights Reserved. -* -* This file is subject to the terms and conditions defined in -* file 'LICENSE.md', which is part of this source code package. -* -* NOTICE: All information contained herein is, and remains the property of Klepsydra -* Technologies GmbH and its suppliers, if any. The intellectual and technical concepts -* contained herein are proprietary to Klepsydra Technologies GmbH and its suppliers and -* may be covered by Swiss and Foreign Patents, patents in process, and are protected by -* trade secret or copyright law. Dissemination of this information or reproduction of -* this material is strictly forbidden unless prior written permission is obtained from -* Klepsydra Technologies GmbH. -* -****************************************************************************/ - -#include "gtest/gtest.h" - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - int ret = RUN_ALL_TESTS(); - return ret; -} - diff --git a/cpp_testing/tests/dds_codegen_tests_3_4/CMakeLists.txt b/cpp_testing/tests/dds_codegen_tests_3_4/CMakeLists.txt deleted file mode 100644 index 92a3fe3..0000000 --- a/cpp_testing/tests/dds_codegen_tests_3_4/CMakeLists.txt +++ /dev/null @@ -1,70 +0,0 @@ -#**************************************************************************** -# -# Klepsydra Core Modules -# Copyright (C) 2019-2020 Klepsydra Technologies GmbH -# All Rights Reserved. -# -# This file is subject to the terms and conditions defined in -# file 'LICENSE.md', which is part of this source code package. -# -# NOTICE: All information contained herein is, and remains the property of Klepsydra -# Technologies GmbH and its suppliers, if any. The intellectual and technical concepts -# contained herein are proprietary to Klepsydra Technologies GmbH and its suppliers and -# may be covered by Swiss and Foreign Patents, patents in process, and are protected by -# trade secret or copyright law. Dissemination of this information or reproduction of -# this material is strictly forbidden unless prior written permission is obtained from -# Klepsydra Technologies GmbH. -# -#**************************************************************************** - -SET(PROJ_NAME kpsr_dds_${PROJ_MAIN_NAME}_tests_3_4) -PROJECT(${PROJ_NAME}) - -file(REMOVE_RECURSE ${CMAKE_CURRENT_SOURCE_DIR}/gen) -file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/gen) - -KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test3" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test3" "klepsydra/codegen" "True" "True" "False") -KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test4" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test4" "klepsydra/codegen" "True" "True" "False") - - -file(GLOB idls ${CMAKE_CURRENT_SOURCE_DIR}/gen_test3/dds/idl/*.idl - ${CMAKE_CURRENT_SOURCE_DIR}/gen_test4/dds/idl/*.idl) -FOREACH(idl ${idls}) - Connext_IDLGEN (${idl} ${CMAKE_CURRENT_SOURCE_DIR}) - GET_FILENAME_COMPONENT(nfile ${idl} NAME) - Connext_GENDATAMODEL(${nfile} ${CMAKE_CURRENT_SOURCE_DIR}) -ENDFOREACH(idl) - - -# Source -#---------------------------------------------------# -FILE(GLOB ${PROJ_NAME}_SRC - "src/*.cpp" -) - -# Link libraries with Project -#---------------------------------------------------# -ADD_LIBRARY (kpsr_dds_${PROJ_MAIN_NAME}_datamodel_3_4 SHARED ${Connext_DATAMODEL}) - -ADD_EXECUTABLE(${PROJ_NAME} ${${PROJ_NAME}_HEADERS} ${${PROJ_NAME}_SRC} ) - -#---------------------------------------------------# -TARGET_LINK_LIBRARIES(kpsr_dds_${PROJ_MAIN_NAME}_datamodel_3_4 - PUBLIC - RTIConnextDDS::cpp2_api - ) - -TARGET_INCLUDE_DIRECTORIES(${PROJ_NAME} - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/gen_test3/poco/include - ${CMAKE_CURRENT_SOURCE_DIR}/gen_test3/dds/include - ${CMAKE_CURRENT_SOURCE_DIR}/gen_test4/poco/include - ${CMAKE_CURRENT_SOURCE_DIR}/gen_test4/dds/include - ${CMAKE_SOURCE_DIR}/modules/${PROJ_MAIN_NAME}/include - ${CMAKE_CURRENT_SOURCE_DIR}/gen -) -TARGET_LINK_LIBRARIES(${PROJ_NAME} kpsr_core gtest_main - kpsr_dds_core - kpsr_dds_serialization_datamodel kpsr_dds_${PROJ_MAIN_NAME}_datamodel_3_4) - -add_test(NAME ${PROJ_NAME} COMMAND ${PROJ_NAME} --output-on-failure --gtest_output=xml:gtestresults.xml) diff --git a/cpp_testing/tests/dds_codegen_tests_3_4/src/ddsstg_codegen_test3.cpp b/cpp_testing/tests/dds_codegen_tests_3_4/src/ddsstg_codegen_test3.cpp deleted file mode 100644 index 3b64aac..0000000 --- a/cpp_testing/tests/dds_codegen_tests_3_4/src/ddsstg_codegen_test3.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/**************************************************************************** -* -* Klepsydra Core Modules -* Copyright (C) 2019-2020 Klepsydra Technologies GmbH -* All Rights Reserved. -* -* This file is subject to the terms and conditions defined in -* file 'LICENSE.md', which is part of this source code package. -* -* NOTICE: All information contained herein is, and remains the property of Klepsydra -* Technologies GmbH and its suppliers, if any. The intellectual and technical concepts -* contained herein are proprietary to Klepsydra Technologies GmbH and its suppliers and -* may be covered by Swiss and Foreign Patents, patents in process, and are protected by -* trade secret or copyright law. Dissemination of this information or reproduction of -* this material is strictly forbidden unless prior written permission is obtained from -* Klepsydra Technologies GmbH. -* -****************************************************************************/ - -#include - -#include - -#include -#include - -#include -#include - -#include - -#include -#include - -#include "dds/dds.hpp" - -#include - -TEST(KpsrDdsCodegenTest3, compositionTypeMapperTest) { - dds::domain::DomainParticipant dp(0); - dds::pub::Publisher publisher(dp); - dds::sub::Subscriber subscriber(dp); - - dds::topic::Topic topic(dp, "header_data_test"); - dds::pub::DataWriter dataWriter(publisher, topic); - dds::sub::DataReader dataReader(subscriber, topic); - - kpsr::dds_mdlw::FromDDSMiddlewareProvider fromDDSProvider; - kpsr::dds_mdlw::ToDDSMiddlewareProvider toDDSProvider(nullptr); - - kpsr::Publisher * kpsrPublisher = - toDDSProvider.getToMiddlewareChannel("kpsr_ros_codegen_test_topicA", 1, nullptr, &dataWriter); - - kpsr::EventEmitterMiddlewareProvider basicProvider(nullptr, "test", 0, nullptr, nullptr); - - fromDDSProvider.registerToTopic("kpsr_dds_codegen_test_topic3", &dataReader, true, basicProvider.getPublisher()); - - kpsr::mem::CacheListener cacheListener; - basicProvider.getSubscriber()->registerListener("cacheListener", cacheListener.cacheListenerFunction); - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - - ASSERT_EQ(cacheListener.counter, 0); - - unsigned short seq = 0; - kpsr::codegen::CompositionType event; - for (int i = 0; i < 5; i++) - { - event.seq = seq++; - event.newEnum = kpsr::codegen::NewEnum::new1; - event.newEnumArray = {{kpsr::codegen::NewEnum::new2, kpsr::codegen::NewEnum::new3}}; - event.newEnumVector = {kpsr::codegen::NewEnum::new1, kpsr::codegen::NewEnum::new2}; - event.newEnumVectorPointer = {new kpsr::codegen::NewEnum(kpsr::codegen::NewEnum::new1)}; - event.newEnumVectorSharedPtr = {std::shared_ptr(new kpsr::codegen::NewEnum(kpsr::codegen::NewEnum::new1))}; - - event.oldEnum = kpsr::codegen::OldEnum::oldA; - event.oldEnumArray = {{kpsr::codegen::OldEnum::oldA, kpsr::codegen::OldEnum::oldB}}; - event.oldEnumVector = {kpsr::codegen::OldEnum::oldA, kpsr::codegen::OldEnum::oldB}; - event.oldEnumVectorPointer = {new kpsr::codegen::OldEnum(kpsr::codegen::OldEnum::oldB)}; - event.oldEnumVectorSharedPtr = {std::shared_ptr(new kpsr::codegen::OldEnum(kpsr::codegen::OldEnum::oldA))}; - - event.positionArray = {{ kpsr::geometry::Vector3(seq++, 0.1, 0.2, 0.3), kpsr::geometry::Vector3(seq++, 1.1, 1.2, 1.3) }}; - event.positionVector = { kpsr::geometry::Vector3(seq++, 0.1, 0.2, 0.3), kpsr::geometry::Vector3(seq++, 1.1, 1.2, 1.3) }; - event.positionVectorPointer = { new kpsr::geometry::Vector3(seq++, 0.1, 0.2, 0.3), new kpsr::geometry::Vector3(seq++, 1.1, 1.2, 1.3) }; - event.positionVectorSharedPtr = { std::shared_ptr(new kpsr::geometry::Vector3(seq++, 0.1, 0.2, 0.3)), - std::shared_ptr(new kpsr::geometry::Vector3(seq++, 1.1, 1.2, 1.3)) }; - - event.quaternionArray = {{ kpsr::codegen::Vector4(0.1, 0.2, 0.3, 0.4), kpsr::codegen::Vector4(1.1, 1.2, 1.3, 1.4) }}; - event.quaternionVector = { kpsr::codegen::Vector4(0.1, 0.2, 0.3, 0.4), kpsr::codegen::Vector4(1.1, 1.2, 1.3, 1.4) }; - event.quaternionVectorPointer = { new kpsr::codegen::Vector4(0.1, 0.2, 0.3, 0.4), new kpsr::codegen::Vector4(1.1, 1.2, 1.3, 1.4) }; - event.quaternionVectorSharedPtr = { std::shared_ptr(new kpsr::codegen::Vector4(0.1, 0.2, 0.3, 0.4)), - std::shared_ptr(new kpsr::codegen::Vector4(1.1, 1.2, 1.3, 1.4)) }; - kpsrPublisher->publish(event); - std::this_thread::sleep_for(std::chrono::milliseconds(2)); - } - - ASSERT_EQ(cacheListener.counter, 5); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->newEnum, event.newEnum); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->newEnumArray, event.newEnumArray); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->newEnumVector, event.newEnumVector); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->newEnumVectorPointer[0], * event.newEnumVectorPointer[0]); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->newEnumVectorSharedPtr[0].get(), * event.newEnumVectorSharedPtr[0].get()); - - ASSERT_EQ(cacheListener.getLastReceivedEvent()->oldEnum, event.oldEnum); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->oldEnumArray, event.oldEnumArray); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->oldEnumVector[0], event.oldEnumVector[0]); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->oldEnumVectorPointer[0], * event.oldEnumVectorPointer[0]); - ASSERT_EQ(* cacheListener.getLastReceivedEvent()->oldEnumVectorSharedPtr[0].get(), * event.oldEnumVectorSharedPtr[0].get()); - - ASSERT_EQ(cacheListener.getLastReceivedEvent()->positionArray[0].x, event.positionArray[0].x); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->positionVector[0].x, event.positionVector[0].x); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->positionVectorPointer[0]->x, event.positionVectorPointer[0]->x); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->positionVectorSharedPtr[0]->x, event.positionVectorSharedPtr[0]->x); - - ASSERT_EQ(cacheListener.getLastReceivedEvent()->quaternionArray[0].a, event.quaternionArray[0].a); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->quaternionVector[0].a, event.quaternionVector[0].a); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->quaternionVectorPointer[0]->a, event.quaternionVectorPointer[0]->a); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->quaternionVectorSharedPtr[0]->a, event.quaternionVectorSharedPtr[0]->a); - - fromDDSProvider.unregisterFromTopic("kpsr_dds_codegen_test_topic3", &dataReader); -} - diff --git a/cpp_testing/tests/dds_codegen_tests_3_4/src/ddsstg_codegen_test4.cpp b/cpp_testing/tests/dds_codegen_tests_3_4/src/ddsstg_codegen_test4.cpp deleted file mode 100644 index 2bd95a9..0000000 --- a/cpp_testing/tests/dds_codegen_tests_3_4/src/ddsstg_codegen_test4.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************** -* -* Klepsydra Core Modules -* Copyright (C) 2019-2020 Klepsydra Technologies GmbH -* All Rights Reserved. -* -* This file is subject to the terms and conditions defined in -* file 'LICENSE.md', which is part of this source code package. -* -* NOTICE: All information contained herein is, and remains the property of Klepsydra -* Technologies GmbH and its suppliers, if any. The intellectual and technical concepts -* contained herein are proprietary to Klepsydra Technologies GmbH and its suppliers and -* may be covered by Swiss and Foreign Patents, patents in process, and are protected by -* trade secret or copyright law. Dissemination of this information or reproduction of -* this material is strictly forbidden unless prior written permission is obtained from -* Klepsydra Technologies GmbH. -* -****************************************************************************/ - -#include - -#include - -#include -#include - -#include -#include - -#include - -#include -#include - -#include "dds/dds.hpp" - -#include - -TEST(KpsrDdsCodegenTest4, inheritanceMapperMapperTest) { - - dds::domain::DomainParticipant dp(0); - dds::pub::Publisher publisher(dp); - dds::sub::Subscriber subscriber(dp); - - dds::topic::Topic topic(dp, "header_data_test"); - dds::pub::DataWriter dataWriter(publisher, topic); - dds::sub::DataReader dataReader(subscriber, topic); - - kpsr::dds_mdlw::FromDDSMiddlewareProvider fromDDSProvider; - kpsr::dds_mdlw::ToDDSMiddlewareProvider toDDSProvider(nullptr); - - kpsr::Publisher * kpsrPublisher = - toDDSProvider.getToMiddlewareChannel("kpsr_ros_codegen_test_topicA", 1, nullptr, &dataWriter); - - kpsr::EventEmitterMiddlewareProvider basicProvider(nullptr, "test", 0, nullptr, nullptr); - - fromDDSProvider.registerToTopic("kpsr_dds_codegen_test_topic4", &dataReader, true, basicProvider.getPublisher()); - - kpsr::mem::CacheListener cacheListener; - basicProvider.getSubscriber()->registerListener("cacheListener", cacheListener.cacheListenerFunction); - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - - ASSERT_EQ(cacheListener.counter, 0); - - { - kpsr::codegen::InheritanceVector4 event(1.0, 1.1, 1.2, 1.3); - kpsrPublisher->publish(event); - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - } - - { - kpsr::codegen::InheritanceVector4 event(2.0, 2.1, 2.2, 2.3); - kpsrPublisher->publish(event); - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - } - - { - kpsr::codegen::InheritanceVector4 event(3.0, 3.1, 3.2, 3.3); - kpsrPublisher->publish(event); - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - } - - { - kpsr::codegen::InheritanceVector4 event(4.0, 4.1, 4.2, 4.3); - kpsrPublisher->publish(event); - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - } - - kpsr::codegen::InheritanceVector4 event(5.0, 5.1, 5.2, 5.3); - - kpsrPublisher->publish(event); - std::this_thread::sleep_for(std::chrono::milliseconds(1)); - - ASSERT_EQ(cacheListener.counter, 5); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->a, event.a); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->b, event.b); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->c, event.c); - ASSERT_EQ(cacheListener.getLastReceivedEvent()->d, event.d); - - fromDDSProvider.unregisterFromTopic("kpsr_dds_codegen_test_topic4", &dataReader); -} - diff --git a/cpp_testing/tests/dds_codegen_tests_3_4/src/main.cpp b/cpp_testing/tests/dds_codegen_tests_3_4/src/main.cpp deleted file mode 100644 index 6d5962f..0000000 --- a/cpp_testing/tests/dds_codegen_tests_3_4/src/main.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/**************************************************************************** -* -* Klepsydra Core Modules -* Copyright (C) 2019-2020 Klepsydra Technologies GmbH -* All Rights Reserved. -* -* This file is subject to the terms and conditions defined in -* file 'LICENSE.md', which is part of this source code package. -* -* NOTICE: All information contained herein is, and remains the property of Klepsydra -* Technologies GmbH and its suppliers, if any. The intellectual and technical concepts -* contained herein are proprietary to Klepsydra Technologies GmbH and its suppliers and -* may be covered by Swiss and Foreign Patents, patents in process, and are protected by -* trade secret or copyright law. Dissemination of this information or reproduction of -* this material is strictly forbidden unless prior written permission is obtained from -* Klepsydra Technologies GmbH. -* -****************************************************************************/ - -#include "gtest/gtest.h" - -int main(int argc, char **argv) -{ - ::testing::InitGoogleTest(&argc, argv); - int ret = RUN_ALL_TESTS(); - return ret; -} - diff --git a/cpp_testing/tests/kpsr_ros_codegen/CMakeLists.txt b/cpp_testing/tests/kpsr_ros_codegen/CMakeLists.txt index b4d0323..ae3813a 100644 --- a/cpp_testing/tests/kpsr_ros_codegen/CMakeLists.txt +++ b/cpp_testing/tests/kpsr_ros_codegen/CMakeLists.txt @@ -78,11 +78,11 @@ set(KPSR_INCLUDE_PATH ${CMAKE_INSTALL_INCLUDEDIR}) # # * uncomment the generate_messages entry below # # * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) -KpsrEventGenerator("${CMAKE_CURRENT_SOURCE_DIR}/kidl_test1" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test1" "klepsydra/codegen" "False" "True" "True") -KpsrEventGenerator("${CMAKE_CURRENT_SOURCE_DIR}/kidl_test2" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test2" "klepsydra/codegen" "False" "True" "True") -KpsrEventGenerator("${CMAKE_CURRENT_SOURCE_DIR}/kidl_test3" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test3" "klepsydra/codegen" "False" "True" "True") -KpsrEventGenerator("${CMAKE_CURRENT_SOURCE_DIR}/kidl_test4" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test4" "klepsydra/codegen" "False" "True" "True") -KpsrEventGenerator("${CMAKE_CURRENT_SOURCE_DIR}/kidl_test5" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test5" "klepsydra/codegen" "False" "True" "True") +KpsrEventGenerator("${CMAKE_CURRENT_SOURCE_DIR}/kidl_test1" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test1" "klepsydra/codegen" "False" "True") +KpsrEventGenerator("${CMAKE_CURRENT_SOURCE_DIR}/kidl_test2" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test2" "klepsydra/codegen" "False" "True") +KpsrEventGenerator("${CMAKE_CURRENT_SOURCE_DIR}/kidl_test3" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test3" "klepsydra/codegen" "False" "True") +KpsrEventGenerator("${CMAKE_CURRENT_SOURCE_DIR}/kidl_test4" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test4" "klepsydra/codegen" "False" "True") +KpsrEventGenerator("${CMAKE_CURRENT_SOURCE_DIR}/kidl_test5" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test5" "klepsydra/codegen" "False" "True") file(GLOB TEST2_ROS_MESSAGES "gen_test2/rosstg/msg/*.msg" diff --git a/cpp_testing/tests/zmq_codegen_tests/CMakeLists.txt b/cpp_testing/tests/zmq_codegen_tests/CMakeLists.txt index 9eb273b..3b9064f 100644 --- a/cpp_testing/tests/zmq_codegen_tests/CMakeLists.txt +++ b/cpp_testing/tests/zmq_codegen_tests/CMakeLists.txt @@ -22,11 +22,11 @@ PROJECT(${PROJ_NAME}) # Source #---------------------------------------------------# -KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test1" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test1" "klepsydra/codegen" "True" "False" "True") -KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test2" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test2" "klepsydra/codegen" "True" "False" "True") -KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test3" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test3" "klepsydra/codegen" "True" "False" "True") -KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test4" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test4" "klepsydra/codegen" "True" "False" "True") -KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test5" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test5" "klepsydra/codegen" "True" "False" "True") +KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test1" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test1" "klepsydra/codegen" "True" "False") +KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test2" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test2" "klepsydra/codegen" "True" "False") +KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test3" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test3" "klepsydra/codegen" "True" "False") +KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test4" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test4" "klepsydra/codegen" "True" "False") +KpsrEventGenerator("${CMAKE_SOURCE_DIR}/modules/codegen/kidl_test5" "${CMAKE_CURRENT_SOURCE_DIR}/gen_test5" "klepsydra/codegen" "True" "False") FILE(GLOB ${PROJ_NAME}_SRC "src/*.cpp" diff --git a/cpp_testing/tests/zmq_codegen_tests/src/zmqstg_codegen_test1.cpp b/cpp_testing/tests/zmq_codegen_tests/src/zmqstg_codegen_test1.cpp index 557ea70..2714e6a 100644 --- a/cpp_testing/tests/zmq_codegen_tests/src/zmqstg_codegen_test1.cpp +++ b/cpp_testing/tests/zmq_codegen_tests/src/zmqstg_codegen_test1.cpp @@ -64,7 +64,7 @@ TEST(KpsrZmqCodegeTest, headerMapperTest) { // Process 100 updates kpsr::zmq_mdlw::FromZmqMiddlewareProvider _fromZmqMiddlewareProvider; - kpsr::zmq_mdlw::FromZmqChannel * fromZMQProvider = + auto fromZMQProvider = _fromZmqMiddlewareProvider.getJsonFromMiddlewareChannel(subscriber, 10); fromZMQProvider->start(); @@ -139,7 +139,7 @@ TEST(KpsrZmqCodegeTest, gpsMapperTest) { // Process 100 updates kpsr::zmq_mdlw::FromZmqMiddlewareProvider _fromZmqMiddlewareProvider; - kpsr::zmq_mdlw::FromZmqChannel * fromZMQProvider = + auto fromZMQProvider = _fromZmqMiddlewareProvider.getJsonFromMiddlewareChannel(subscriber, 10); fromZMQProvider->start(); @@ -225,7 +225,7 @@ TEST(KpsrZmqCodegeTest, vector3MapperTest) { // Process 100 updates kpsr::zmq_mdlw::FromZmqMiddlewareProvider _fromZmqMiddlewareProvider; - kpsr::zmq_mdlw::FromZmqChannel * fromZMQProvider = + auto fromZMQProvider = _fromZmqMiddlewareProvider.getJsonFromMiddlewareChannel(subscriber, 10); fromZMQProvider->start(); @@ -310,7 +310,7 @@ TEST(KpsrZmqCodegeTest, quaternionMapperTest) { // Process 100 updates kpsr::zmq_mdlw::FromZmqMiddlewareProvider _fromZmqMiddlewareProvider; - kpsr::zmq_mdlw::FromZmqChannel * fromZMQProvider = + auto fromZMQProvider = _fromZmqMiddlewareProvider.getJsonFromMiddlewareChannel(subscriber, 10); fromZMQProvider->start(); @@ -401,7 +401,7 @@ TEST(KpsrZmqCodegeTest, imuMapperTest) { // Process 100 updates kpsr::zmq_mdlw::FromZmqMiddlewareProvider _fromZmqMiddlewareProvider; - kpsr::zmq_mdlw::FromZmqChannel * fromZMQProvider = + auto fromZMQProvider = _fromZmqMiddlewareProvider.getJsonFromMiddlewareChannel(subscriber, 10); fromZMQProvider->start(); diff --git a/cpp_testing/tests/zmq_codegen_tests/src/zmqstg_codegen_test2.cpp b/cpp_testing/tests/zmq_codegen_tests/src/zmqstg_codegen_test2.cpp index aff2906..21a6098 100644 --- a/cpp_testing/tests/zmq_codegen_tests/src/zmqstg_codegen_test2.cpp +++ b/cpp_testing/tests/zmq_codegen_tests/src/zmqstg_codegen_test2.cpp @@ -64,7 +64,7 @@ TEST(KpsrZMQCodegeTest, primitiveTypeBasicMapperTest) { // Process 100 updates kpsr::zmq_mdlw::FromZmqMiddlewareProvider _fromZmqMiddlewareProvider; - kpsr::zmq_mdlw::FromZmqChannel * fromZMQProvider = + auto fromZMQProvider = _fromZmqMiddlewareProvider.getJsonFromMiddlewareChannel(subscriber, 10); fromZMQProvider->start(); @@ -151,7 +151,7 @@ TEST(KpsrZMQCodegeTest, primitiveTypeArrayMapperTest) { // Process 100 updates kpsr::zmq_mdlw::FromZmqMiddlewareProvider _fromZmqMiddlewareProvider; - kpsr::zmq_mdlw::FromZmqChannel * fromZMQProvider = + auto fromZMQProvider = _fromZmqMiddlewareProvider.getJsonFromMiddlewareChannel(subscriber, 10); fromZMQProvider->start(); @@ -256,7 +256,7 @@ TEST(KpsrZMQCodegeTest, primitiveTypeVectorMapperTest) { // Process 100 updates kpsr::zmq_mdlw::FromZmqMiddlewareProvider _fromZmqMiddlewareProvider; - kpsr::zmq_mdlw::FromZmqChannel * fromZMQProvider = + auto fromZMQProvider = _fromZmqMiddlewareProvider.getJsonFromMiddlewareChannel(subscriber, 10); fromZMQProvider->start(); @@ -362,7 +362,7 @@ TEST(KpsrZMQCodegeTest, primitiveTypeVectorSharedPtrMapperTest) { // Process 100 updates kpsr::zmq_mdlw::FromZmqMiddlewareProvider _fromZmqMiddlewareProvider; - kpsr::zmq_mdlw::FromZmqChannel * fromZMQProvider = + auto fromZMQProvider = _fromZmqMiddlewareProvider.getJsonFromMiddlewareChannel(subscriber, 10); fromZMQProvider->start(); diff --git a/cpp_testing/tests/zmq_codegen_tests/src/zmqstg_codegen_test3.cpp b/cpp_testing/tests/zmq_codegen_tests/src/zmqstg_codegen_test3.cpp index c0fbb64..dd09c0e 100644 --- a/cpp_testing/tests/zmq_codegen_tests/src/zmqstg_codegen_test3.cpp +++ b/cpp_testing/tests/zmq_codegen_tests/src/zmqstg_codegen_test3.cpp @@ -61,7 +61,7 @@ TEST(KpsrZMQCodegeTest, compositionTypeMapperTest) { // Process 100 updates kpsr::zmq_mdlw::FromZmqMiddlewareProvider _fromZmqMiddlewareProvider; - kpsr::zmq_mdlw::FromZmqChannel * fromZMQProvider = + auto fromZMQProvider = _fromZmqMiddlewareProvider.getJsonFromMiddlewareChannel(subscriber, 10); fromZMQProvider->start(); diff --git a/cpp_testing/tests/zmq_codegen_tests/src/zmqstg_codegen_test4.cpp b/cpp_testing/tests/zmq_codegen_tests/src/zmqstg_codegen_test4.cpp index 9aef888..0dfa0ee 100644 --- a/cpp_testing/tests/zmq_codegen_tests/src/zmqstg_codegen_test4.cpp +++ b/cpp_testing/tests/zmq_codegen_tests/src/zmqstg_codegen_test4.cpp @@ -61,7 +61,7 @@ TEST(KpsrZMQCodegeTest, inheritanceMapperMapperTest) { // Process 100 updates kpsr::zmq_mdlw::FromZmqMiddlewareProvider _fromZmqMiddlewareProvider; - kpsr::zmq_mdlw::FromZmqChannel * fromZMQProvider = + auto fromZMQProvider = _fromZmqMiddlewareProvider.getJsonFromMiddlewareChannel(subscriber, 10); fromZMQProvider->start(); diff --git a/cpp_testing/tests/zmq_codegen_tests/src/zmqstg_codegen_test5.cpp b/cpp_testing/tests/zmq_codegen_tests/src/zmqstg_codegen_test5.cpp index 178e32f..125b10a 100644 --- a/cpp_testing/tests/zmq_codegen_tests/src/zmqstg_codegen_test5.cpp +++ b/cpp_testing/tests/zmq_codegen_tests/src/zmqstg_codegen_test5.cpp @@ -61,7 +61,7 @@ TEST(KpsrZMQCodegeTest, compositionTypeRelatedMapperTest) { // Process 100 updates kpsr::zmq_mdlw::FromZmqMiddlewareProvider _fromZmqMiddlewareProvider; - kpsr::zmq_mdlw::FromZmqChannel * fromZMQProvider = + auto fromZMQProvider = _fromZmqMiddlewareProvider.getJsonFromMiddlewareChannel(subscriber, 10); fromZMQProvider->start(); diff --git a/cpp_testing_build.sh.in b/cpp_testing_build.sh.in index 5d7ef8c..b547a75 100644 --- a/cpp_testing_build.sh.in +++ b/cpp_testing_build.sh.in @@ -28,7 +28,7 @@ python3 -m venv build_cpptesting . build_cpptesting/bin/activate python -m pip install --find-links dist kpsr_codegen cd build_cpptesting -cmake -DKPSR_WITH_DDS=@KPSR_WITH_DDS@ -DKPSR_WITH_ZMQ=@KPSR_WITH_ZMQ@ +cmake -DKPSR_WITH_ZMQ=@KPSR_WITH_ZMQ@ cmake --build . -- "-j$(nproc)" make test deactivate diff --git a/kpsr_codegen/__main__.py b/kpsr_codegen/__main__.py index b88f2b5..6665e18 100644 --- a/kpsr_codegen/__main__.py +++ b/kpsr_codegen/__main__.py @@ -24,7 +24,6 @@ DISABLE_ROS_OPTION = "disable_ros" DISABLE_ZMQ_OPTION = "disable_zmq" -DISABLE_DDS_OPTION = "disable_dds" INCLUDE_PATH_OPTION = "include_path" OUTPUT_DIR_OPTION = "odir" INPUT_DIR_OPTION = "idir" @@ -33,7 +32,6 @@ DISABLE_ROS_SHORT_OPT = "r" DISABLE_ZMQ_SHORT_OPT = "z" -DISABLE_DDS_SHORT_OPT = "d" INCLUDE_PATH_SHORT_OPT = "p" OUTPUT_DIR_SHORT_OPT = "o" INPUT_DIR_SHORT_OPT = "i" @@ -52,7 +50,6 @@ def main(argv = None): odir (o) : Output folder name. include_path (p) : The prefix to the include_path for generated files. disable_zmq (z) : Disable ZMQ functionality (True or False) - disable_dds (d) : Disable DDS functionality (True or False) disable_ros (r) : Disable ROS functionality (True or False) conf_path (c) : The configuration path. Currently defaults to 'conf' folder template_path (t) : The template path. Currently defaults to 'templates' folder @@ -64,20 +61,19 @@ def main(argv = None): input_directory = '' output_directory = '' include_path = '' - disable_dds = False disable_zmq = False disable_ros = False conf_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'conf')) template_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'templates')) try: - opts, args = getopt.getopt(argv, "h%s:%s:%s:%s:%s:%s:%s:%s:" % (INPUT_DIR_SHORT_OPT, OUTPUT_DIR_SHORT_OPT, - INCLUDE_PATH_SHORT_OPT, DISABLE_DDS_SHORT_OPT, - DISABLE_ZMQ_SHORT_OPT, DISABLE_ROS_SHORT_OPT, - CONF_PATH_SHORT_OPT, TEMPLATE_PATH_SHORT_OPT), - [("%s=" % INPUT_DIR_OPTION), ("%s=" % OUTPUT_DIR_OPTION), - ("%s=" % INCLUDE_PATH_OPTION), ("%s=" % DISABLE_DDS_OPTION), ("%s=" % DISABLE_ZMQ_OPTION), - ("%s=" % DISABLE_ROS_OPTION), ("%s=" % CONF_PATH_OPTION), ("%s=" % TEMPLATE_PATH_OPTION)]) + opts, args = getopt.getopt(argv, "h%s:%s:%s:%s:%s:%s:%s:" % (INPUT_DIR_SHORT_OPT, OUTPUT_DIR_SHORT_OPT, + INCLUDE_PATH_SHORT_OPT, DISABLE_ZMQ_SHORT_OPT, + DISABLE_ROS_SHORT_OPT, CONF_PATH_SHORT_OPT, + TEMPLATE_PATH_SHORT_OPT), + [("%s=" % INPUT_DIR_OPTION), ("%s=" % OUTPUT_DIR_OPTION), ("%s=" % INCLUDE_PATH_OPTION), + ("%s=" % DISABLE_ZMQ_OPTION), ("%s=" % DISABLE_ROS_OPTION), ("%s=" % CONF_PATH_OPTION), + ("%s=" % TEMPLATE_PATH_OPTION)]) except getopt.GetoptError: print_help() sys.exit(2) @@ -91,8 +87,6 @@ def main(argv = None): output_directory = add_slash_at_end(arg) elif opt in (("-%s" % INCLUDE_PATH_SHORT_OPT), ("--%s" % INCLUDE_PATH_OPTION)): include_path = add_slash_at_end(arg) - elif opt in (("-%s" % DISABLE_DDS_SHORT_OPT), ("--%s" % DISABLE_DDS_OPTION)): - disable_dds = arg.lower() == 'true' elif opt in (("-%s" % DISABLE_ZMQ_SHORT_OPT), ("--%s" % DISABLE_ZMQ_OPTION)): disable_zmq = arg.lower() == 'true' elif opt in (("-%s" % DISABLE_ROS_SHORT_OPT), ("--%s" % DISABLE_ROS_OPTION)): @@ -105,12 +99,11 @@ def main(argv = None): print ('Input directory is "', input_directory) print ('Output directory is "', output_directory) print ('Include path is "', include_path) - print ('Disable DDS is "', disable_dds) print ('Disable ZMQ is "', disable_zmq) print ('Disable ROS is "', disable_ros) generator = Generator(conf_path, template_path) - generator.render(input_directory, output_directory, include_path, disable_ros, disable_dds, disable_zmq) + generator.render(input_directory, output_directory, include_path, disable_ros, disable_zmq) def add_slash_at_end(arg): @@ -125,7 +118,6 @@ def print_help(): print (" Input directory: -%s | --%s" % (INPUT_DIR_SHORT_OPT, INPUT_DIR_OPTION)) print (" Output directory: -%s | --%s" % (OUTPUT_DIR_SHORT_OPT, OUTPUT_DIR_OPTION)) print (" Include path: -%s | --%s" % (INCLUDE_PATH_SHORT_OPT, INCLUDE_PATH_OPTION)) - print (" Disable DDS: -%s | --%s" % (DISABLE_DDS_SHORT_OPT, DISABLE_DDS_OPTION)) print (" Disable ZMQ: -%s | --%s" % (DISABLE_ZMQ_SHORT_OPT, DISABLE_ZMQ_OPTION)) print (" Disable ROS: -%s | --%s" % (DISABLE_ROS_SHORT_OPT, DISABLE_ROS_OPTION)) print (" Configuration path: -%s | --%s" % (CONF_PATH_SHORT_OPT, CONF_PATH_OPTION)) diff --git a/kpsr_codegen/conf/dds_types.yaml b/kpsr_codegen/conf/dds_types.yaml deleted file mode 100644 index f0fa06a..0000000 --- a/kpsr_codegen/conf/dds_types.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright 2023 Klepsydra Technologies AG -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# 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. - -# fundamental types and their mapping to DDS - -char8: 'char' -uchar8: 'octet' -int16: 'short' -uint16: 'unsigned short' -int32: 'long' -uint32: 'unsigned long' -int64: 'long long' -uint64: 'unsigned long long' -float32: 'float' -float64: 'double' -boolean: 'boolean' -string: 'string' -enum: 'unsigned short' diff --git a/kpsr_codegen/generator/generator_engine.py b/kpsr_codegen/generator/generator_engine.py index 88b9625..c0f7f72 100644 --- a/kpsr_codegen/generator/generator_engine.py +++ b/kpsr_codegen/generator/generator_engine.py @@ -44,9 +44,6 @@ from ros_mapper_processor import RosMapperProcessor from ros_msg_processor import RosMsgProcessor -from dds_mapper_processor import DdsMapperProcessor -from dds_idl_processor import DdsIdlProcessor - from zmq_serializer_processor import ZmqSerializerProcessor from node_handler_processor import NodeHandlerProcessor @@ -83,9 +80,6 @@ def __init__(self, conf_path, template_path): self.ros_mapper_processor = RosMapperProcessor(configuration) self.ros_msg_processor = RosMsgProcessor(configuration) - self.dds_mapper_processor = DdsMapperProcessor(configuration) - self.dds_idl_processor = DdsIdlProcessor(configuration) - self.zmq_serializer_processor = ZmqSerializerProcessor(configuration) self.node_handler_processor = NodeHandlerProcessor(configuration) @@ -96,8 +90,6 @@ def __init__(self, conf_path, template_path): self.poco_template = env.get_template('poco_template.h') self.ros_mapper_template = env.get_template('ros_mapper_template.h') self.ros_msg_template = env.get_template('ros_template.msg') - self.dds_mapper_template = env.get_template('dds_mapper_template.h') - self.dds_idl_template = env.get_template('dds_template.idl') self.zmq_serializer_template = env.get_template('zmq_serializer_template.h') self.node_handler_template = env.get_template('node_handler_template.js') @@ -106,9 +98,8 @@ def __init__(self, conf_path, template_path): # @param output_dir The output directory # @param include_path # @param disable_ros - # @param disable_dds # @param disable_zmq - def render(self, input_dir, output_dir, include_path, disable_ros, disable_dds, disable_zmq): + def render(self, input_dir, output_dir, include_path, disable_ros, disable_zmq): kidl_files = [] for (dirpath, dirnames, filenames) in walk(input_dir): kidl_files.extend(filenames) @@ -123,11 +114,11 @@ def render(self, input_dir, output_dir, include_path, disable_ros, disable_dds, related_classes_dict.update(class_definition_dict) [self.generate_code(related_classes_dict, include_path, input_dir, class_name, - output_dir, disable_ros, disable_dds, disable_zmq) for class_name in class_definition_dict] + output_dir, disable_ros, disable_zmq) for class_name in class_definition_dict] ## Generate the code from parsed kidl data def generate_code(self, class_definition_dict, include_path, input_dir, class_name, output_dir, - disable_ros, disable_dds, disable_zmq): + disable_ros, disable_zmq): main_class_definition = class_definition_dict[class_name] poco_definition = self.poco_processor.process(main_class_definition.class_name, class_definition_dict, include_path) @@ -163,23 +154,6 @@ def generate_code(self, class_definition_dict, include_path, input_dir, class_na node_handler_template_content = self.node_handler_template.render(definition=node_handler_definition) write_contents_to_file(node_handler_file_path, node_handler_template_content) - if (not disable_dds) and (main_class_definition.middlewares.get(MiddlewareType.DDS) is not None): - if not main_class_definition.middlewares.get(MiddlewareType.DDS).mapper_include_file: - dds_mapper_definition = self.dds_mapper_processor.process(main_class_definition.class_name, - class_definition_dict, include_path) - dds_mapper_file_name = output_dir + "/dds/include/" + include_path + "/dds/" \ - + convert_to_lower_case_underscores(class_name) + "_dds_mapper.h" - dds_mapper_template_content = self.dds_mapper_template.render(definition=dds_mapper_definition) - write_contents_to_file(dds_mapper_file_name, dds_mapper_template_content) - - if not main_class_definition.middlewares.get(MiddlewareType.DDS).already_exists: - dds_idl_definition = self.dds_idl_processor.process(main_class_definition.class_name, - class_definition_dict) - dds_idl_file_name = output_dir + "/dds/idl/" + \ - convert_to_lower_case_underscores(dds_idl_definition.class_name) + ".idl" - dds_idl_template_content = self.dds_idl_template.render(definition=dds_idl_definition) - write_contents_to_file(dds_idl_file_name, dds_idl_template_content) - if (not disable_zmq) and main_class_definition.middlewares.get(MiddlewareType.ZMQ) is not None: if not main_class_definition.middlewares.get(MiddlewareType.ZMQ).serializer_include_file: class_name = split_namespace_class(main_class_definition.class_name)[-1] diff --git a/kpsr_codegen/kidl_data/middleware_definition.py b/kpsr_codegen/kidl_data/middleware_definition.py index dd4be88..f197578 100644 --- a/kpsr_codegen/kidl_data/middleware_definition.py +++ b/kpsr_codegen/kidl_data/middleware_definition.py @@ -42,24 +42,6 @@ def __repr__(self): % (self.__class__.__name__, self.middleware_type, self.mapper_include_file, self.class_name, self.already_exists, self.include_file, self.msg_file, self.project_name, self.ignore_fields) - -class DdsMiddlewareDefinition(MiddlewareDefinition): - def __init__(self, middleware_type, mapper_include_file, class_name, already_exists, include_file, idl_file, - sequence_fields): - MiddlewareDefinition.__init__(self, middleware_type, mapper_include_file) - self.class_name = class_name - self.already_exists = already_exists - self.include_file = include_file - self.idl_file = idl_file - self.sequence_fields = sequence_fields - - def __repr__(self): - return "%s(middleware_type=%r, mapper_include_file=%r, class_name=%r, already_exists=%r, include_file=%r, " \ - "idl_file=%r, sequence_fields=%r)" \ - % (self.__class__.__name__, self.middleware_type, self.mapper_include_file, self.class_name, - self.already_exists, self.include_file, self.idl_file, self.sequence_fields) - - class ZmqMiddlewareDefinition(MiddlewareDefinition): def __init__(self, middleware_type, mapper_include_file, serializer_class_name, serializer_include_file): MiddlewareDefinition.__init__(self, middleware_type, mapper_include_file) diff --git a/kpsr_codegen/kidl_data/middleware_type.py b/kpsr_codegen/kidl_data/middleware_type.py index 458ec28..7c765fb 100644 --- a/kpsr_codegen/kidl_data/middleware_type.py +++ b/kpsr_codegen/kidl_data/middleware_type.py @@ -20,7 +20,6 @@ class MiddlewareType(Enum): ROS = 1 - DDS = 2 ZMQ = 3 REST = 4 CUSTOM = 5 diff --git a/kpsr_codegen/preprocessor/configuration.py b/kpsr_codegen/preprocessor/configuration.py index b5415f8..a600b2f 100644 --- a/kpsr_codegen/preprocessor/configuration.py +++ b/kpsr_codegen/preprocessor/configuration.py @@ -23,11 +23,6 @@ # to respective middlewares. class Configuration: def __init__(self, conf_path): - with open(conf_path + "/dds_types.yaml", 'r') as stream: - try: - self.dds_types = yaml.load(stream, Loader=yaml.FullLoader) - except yaml.YAMLError as exc: - print(exc) with open(conf_path + "/fundamental_types.yaml", 'r') as stream: try: self.fundamental_types = yaml.load(stream, Loader=yaml.FullLoader) @@ -48,11 +43,6 @@ def __init__(self, conf_path): self.type_modifiers_cpp = yaml.load(stream, Loader=yaml.FullLoader) except yaml.YAMLError as exc: print(exc) - with open(conf_path + "/type_modifiers_dds.yaml", 'r') as stream: - try: - self.type_modifiers_dds = yaml.load(stream, Loader=yaml.FullLoader) - except yaml.YAMLError as exc: - print(exc) with open(conf_path + "/type_modifiers_ros.yaml", 'r') as stream: try: self.type_modifiers_ros = yaml.load(stream, Loader=yaml.FullLoader) diff --git a/kpsr_codegen/preprocessor/middleware_preprocessor.py b/kpsr_codegen/preprocessor/middleware_preprocessor.py index 4fea0cc..d6042d7 100644 --- a/kpsr_codegen/preprocessor/middleware_preprocessor.py +++ b/kpsr_codegen/preprocessor/middleware_preprocessor.py @@ -20,7 +20,6 @@ sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../kidl_data'))) from middleware_definition import RosMiddlewareDefinition -from middleware_definition import DdsMiddlewareDefinition from middleware_definition import ZmqMiddlewareDefinition from middleware_type import MiddlewareType @@ -41,10 +40,6 @@ def process(self, middleware_data): middleware_data.get('already_exists', False), middleware_data.get('include_file', ''), middleware_data.get('msg_file', ''), middleware_data.get('project_name'), middleware_data.get('ignore_fields', [])) - if middleware_type.lower() == 'dds': - return DdsMiddlewareDefinition(MiddlewareType.DDS, mapper_include_file, middleware_data.get('class_name'), - middleware_data.get('already_exists', False), middleware_data.get('include_file', ''), - middleware_data.get('idl_file', ''), middleware_data.get('sequence_fields', [])) if middleware_type.lower() == 'zmq': return ZmqMiddlewareDefinition(MiddlewareType.ZMQ, mapper_include_file, middleware_data.get('serializer_class_name', ''), middleware_data.get('serializer_include_file', '')) diff --git a/kpsr_codegen/processor/dds_idl_processor.py b/kpsr_codegen/processor/dds_idl_processor.py deleted file mode 100644 index 8995e39..0000000 --- a/kpsr_codegen/processor/dds_idl_processor.py +++ /dev/null @@ -1,114 +0,0 @@ -# Copyright 2023 Klepsydra Technologies AG -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# 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. - - -# -*- coding: utf-8 -*- -import sys -import os - -sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../kidl_data'))) -sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../render_data'))) - -from dds_idl_definition import IdlDefinition -from dds_idl_definition import IdlFieldDefinition -from middleware_type import MiddlewareType -from poco_processor import split_namespace_class -from poco_processor import convert_to_lower_case_underscores - - -## Doc for the DdsIdlProcessor class -# \ingroup kpsr-code-generator -# -# Processes yaml fields to create DDS Idl files. -class DdsIdlProcessor: - - def __init__(self, configuration): - self.fundamental_types = configuration.fundamental_types - self.dds_types = configuration.dds_types - self.type_modifiers_dds = configuration.type_modifiers_dds - - def process(self, class_definition_name, class_definition_dict): - class_definition = class_definition_dict.get(class_definition_name) - - idl_field_definitions = [self.process_field(field, class_definition_dict, class_definition.enums) - for field in class_definition.fields] - - include_list = self.process_includes(class_definition, class_definition_dict) - - if MiddlewareType.DDS in class_definition.middlewares: - dds_middleware_definition = class_definition.middlewares[MiddlewareType.DDS] - module_name = split_namespace_class(dds_middleware_definition.class_name)[0] - class_name = split_namespace_class(dds_middleware_definition.class_name)[-1] - sequence_fields = dds_middleware_definition.sequence_fields - else: - sequence_fields = [] - module_name = '' - class_name = '' - - if class_definition.parent_class is not None: - parent_class_definition = self.process(class_definition.parent_class, class_definition_dict) - include_list = parent_class_definition.include_list.union(include_list) - idl_field_definitions = parent_class_definition.fields + idl_field_definitions - - return IdlDefinition(class_name, module_name, include_list, idl_field_definitions, - sequence_fields) - - def process_includes(self, class_definition, class_definition_dict): - include_list = set() - for field in class_definition.fields: - if not field.is_enum and field.field_type not in self.fundamental_types: - dds_middleware_definition = class_definition_dict.get(field.field_type).middlewares[MiddlewareType.DDS] - if dds_middleware_definition.idl_file: - include_list.add("\"%s\"" % dds_middleware_definition.idl_file) - else: - class_name = split_namespace_class(dds_middleware_definition.class_name)[-1] - include_list.add("\"%s.idl\"" % convert_to_lower_case_underscores(class_name)) - - return include_list - - def process_field(self, field, class_definition_dict, enums): - if field.field_type in self.fundamental_types: - field_dds_type = split_namespace_class(self.dds_types.get(field.field_type))[-1] - else: - if field.field_type in enums: - field_dds_type = self.dds_types.get('enum') - else: - dds_middleware_definition = class_definition_dict.get(field.field_type).middlewares[MiddlewareType.DDS] - field_dds_type = dds_middleware_definition.class_name - - if field.is_vector: - if field.use_smart_pointer: - field_dds_type = self.type_modifiers_dds\ - .get('smart_pointer_vector')\ - .replace("#0", field.field_name)\ - .replace("#1", field_dds_type) - else: - if field.use_raw_pointer: - field_dds_type = self.type_modifiers_dds.get('raw_pointer_vector') \ - .replace("#0", field.field_name) \ - .replace("#1", field_dds_type) - else: - field_dds_type = self.type_modifiers_dds.get('vector')\ - .replace("#0", field.field_name) \ - .replace("#1", field_dds_type) - else: - if field.is_array: - field_dds_type = self.type_modifiers_dds\ - .get('fix_size_array') \ - .replace("#0", field.field_name) \ - .replace("#1", field_dds_type)\ - .replace("#2", field.size) - else: - field_dds_type = "%s %s" % (field_dds_type, field.field_name) - return IdlFieldDefinition(field.field_name, field_dds_type) diff --git a/kpsr_codegen/processor/dds_mapper_processor.py b/kpsr_codegen/processor/dds_mapper_processor.py deleted file mode 100644 index 3d89403..0000000 --- a/kpsr_codegen/processor/dds_mapper_processor.py +++ /dev/null @@ -1,150 +0,0 @@ -# Copyright 2023 Klepsydra Technologies AG -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# 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. - - -# -*- coding: utf-8 -*- - -import re -import sys -import os - -sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../kidl_data'))) -sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../render_data'))) -sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../processor'))) - -from middleware_type import MiddlewareType -from dds_mapper_definition import DdsMapperInstanceDefinition -from dds_mapper_definition import DdsMapperFieldDefinition -from dds_mapper_definition import DdsMapperDefinition -from poco_processor import convert_to_lower_case_underscores - - -def process_custom_includes(class_definition, mapper_instances, include_path): - custom_includes = set() - - for mapper_instance in mapper_instances: - if mapper_instance.include_file: - custom_includes.add(mapper_instance.include_file) - - if class_definition.already_exists: - custom_includes.add(class_definition.include_file) - else: - class_name = split_namespace_class(class_definition.class_name)[-1] - if include_path: - custom_includes.add("<%s%s.h>" % (include_path, convert(class_name))) - else: - custom_includes.add("<%s.h>" % convert(class_name)) - - middleware_definition = class_definition.middlewares[MiddlewareType.DDS] - if middleware_definition.already_exists: - custom_includes.add(middleware_definition.include_file) - else: - class_name = split_namespace_class(middleware_definition.class_name)[-1] - custom_includes.add("\"%s.hpp\"" % convert_to_lower_case_underscores(class_name)) - - return custom_includes - - -def split_namespace_class(class_name): - return class_name.split("::") - - -def camelCase(string): - output = ''.join(x for x in string if x.isalpha()) - return output[0].lower() + output[1:] - - -def process_mapper_instances(class_definition, class_definition_dict, include_path): - mapper_instances = dict() - - for field in class_definition.fields: - if field.is_related_class: - dds_middleware_definition = class_definition_dict.get(field.field_type).middlewares[MiddlewareType.DDS] - field_dds_type = dds_middleware_definition.class_name - dds_type = field_dds_type - mapper_name = '_%s_mapper' % field.field_type.replace('::', '_').lower() - - if dds_middleware_definition.mapper_include_file: - include_file = dds_middleware_definition.mapper_include_file - else: - class_name = split_namespace_class(field.field_type)[-1] - include_file = "<%s/dds/%s%s>" % (include_path, convert_to_lower_case_underscores(class_name), - "_dds_mapper.h") - include_file = include_file.replace("//", "/") - - dds_mapper_definition = DdsMapperInstanceDefinition(mapper_name, field.field_type, dds_type, include_file) - - mapper_instances[mapper_name] = dds_mapper_definition - - return list(mapper_instances.values()) - - -def convert(name): - s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name) - return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).lower() - - -## Doc for the DDSMapperProcessor class -# \ingroup kpsr-code-generator -# -# Processes yaml fields to map them to dds compatible types. -class DdsMapperProcessor: - - def __init__(self, configuration): - self.dds_types = configuration.dds_types - self.fundamental_types = configuration.fundamental_types - - def process(self, class_definition_name, class_definition_dict, include_path): - class_definition = class_definition_dict.get(class_definition_name) - - define_class_name = convert('%sMapper' % split_namespace_class(class_definition.class_name)[-1]).upper() - mapper_instances = process_mapper_instances(class_definition, class_definition_dict, include_path) - custom_includes = process_custom_includes(class_definition, mapper_instances, include_path) - field_definitions = [self.process_field(field, class_definition_dict) for field in class_definition.fields] - if class_definition.parent_class is not None: - parent_class_definition = class_definition_dict.get(class_definition.parent_class) - parent_field_definitions = [self.process_field(field, class_definition_dict) - for field in parent_class_definition.fields] - field_definitions = field_definitions + parent_field_definitions - - dds_middleware_definition = class_definition.middlewares[MiddlewareType.DDS] - field_dds_type = dds_middleware_definition.class_name - dds_type = field_dds_type - - return DdsMapperDefinition(class_definition.class_name, define_class_name , dds_type, custom_includes, - mapper_instances, field_definitions) - - def process_field(self, field, class_definition_dict): - if field.is_related_class: - mapper_name = '_%s_mapper' % field.field_type.replace('::', '_').lower() - else: - mapper_name = None - - if field.is_related_class: - dds_middleware_definition = class_definition_dict.get(field.field_type).middlewares[MiddlewareType.DDS] - field_dds_type = dds_middleware_definition.class_name - elif field.is_enum: - field_dds_type = self.dds_types.get('int16') - else: - field_dds_type = self.dds_types.get(field.field_type) - - if field.field_type in self.fundamental_types: - field_cpp_type = self.fundamental_types.get(field.field_type) - else: - field_cpp_type = field.field_type - - return DdsMapperFieldDefinition(field.field_name, field_cpp_type, field_dds_type, field.is_enum, - field.is_vector, field.use_raw_pointer, field.use_smart_pointer, - field.is_array, field.size, mapper_name) - diff --git a/kpsr_codegen/render_data/dds_mapper_definition.py b/kpsr_codegen/render_data/dds_mapper_definition.py deleted file mode 100644 index cdda54f..0000000 --- a/kpsr_codegen/render_data/dds_mapper_definition.py +++ /dev/null @@ -1,66 +0,0 @@ -# Copyright 2023 Klepsydra Technologies AG -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# 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. - - -# -*- coding: utf-8 -*- -class DdsMapperFieldDefinition: - def __init__(self, field_name, field_type, dds_type, is_enum, is_vector, use_raw_pointer, use_smart_pointer, - is_array, size, mapper_name): - self.field_name = field_name - self.field_type = field_type - self.dds_type = dds_type - self.is_enum = is_enum - self.is_vector = is_vector - self.use_raw_pointer = use_raw_pointer - self.use_smart_pointer = use_smart_pointer - self.is_array = is_array - self.size = size - self.mapper_name = mapper_name - - def __repr__(self): - return "%s(field_name=%r, field_type=%r, dds_type,=%r, is_enum=%r, is_vector=%r, use_raw_pointer=%r, " \ - "use_smart_pointer=%r, is_array=%r, size=%r, mapper_name=%r)" % ( - self.__class__.__name__, self.field_name, self.dds_type, self.field_type, self.is_enum, - self.is_vector, self.use_raw_pointer, self.use_smart_pointer, self.is_array, self.size, - self.mapper_name) - - - -class DdsMapperInstanceDefinition: - def __init__(self, mapper_name, kpsr_class_name, dds_class_name, include_file): - self.mapper_name = mapper_name - self.kpsr_class_name = kpsr_class_name - self.dds_class_name = dds_class_name - self.include_file = include_file - - def __repr__(self): - return "%s(mapper_name=%r, kpsr_class_name=%r, dds_class_name=%r, include_file=%r)" % \ - (self.__class__.__name__, self.mapper_name, self.kpsr_class_name, self.dds_class_name, - self.include_file) - - -class DdsMapperDefinition: - def __init__(self, class_name, define_class_name, dds_type, include_list, mapper_instances, fields): - self.class_name = class_name - self.define_class_name = define_class_name - self.dds_type = dds_type - self.include_list = include_list - self.mapper_instances = mapper_instances - self.fields = fields - - def __repr__(self): - return "%s(class_name=%r, define_class_name=%r, dds_type=%r, include_list=%r, mapper_instances=%r, fields=%r)"\ - % \ - (self.__class__.__name__, self.class_name, self.define_class_name, self.dds_type, self.include_list, - self.mapper_instances, self.fields) diff --git a/kpsr_codegen/templates/dds_mapper_template.h b/kpsr_codegen/templates/dds_mapper_template.h deleted file mode 100644 index a272da8..0000000 --- a/kpsr_codegen/templates/dds_mapper_template.h +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright 2023 Klepsydra Technologies AG - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * 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. - */ - - -// This code has been automatically generated, manual modification might be inadvertently overridden. - -#ifndef {{ definition.define_class_name }}_DDS -#define {{ definition.define_class_name }}_DDS - -#include -{% for include_file in definition.include_list %} -#include {{ include_file }} -{%- endfor %} - -namespace kpsr { -template <> - -class Mapper<{{ definition.class_name }}, {{ definition.dds_type }}> { -public: - void fromMiddleware(const {{ definition.dds_type }} & data, {{ definition.class_name }} & event) { -{%- for field in definition.fields %} - {%- if not field.is_vector and not field.is_array %} - {%- if field.is_enum or (field.mapper_name is none) %} - {%- if field.is_enum %} - event.{{ field.field_name }} = ({{ field.field_type }}) data.{{ field.field_name }}(); - {%- else %} - event.{{ field.field_name }} = data.{{ field.field_name }}(); - {%- endif %} - {%- else %} - {{ field.mapper_name }}.fromMiddleware(data.{{ field.field_name }}(), event.{{ field.field_name }}); - {%- endif %} - {%- else %} - {% if field.is_vector %} - event.{{ field.field_name }}.resize(data.{{ field.field_name }}().size()); - {%- endif %} - std::transform(data.{{ field.field_name }}().begin(), data.{{ field.field_name }}().end(), event.{{ field.field_name }}.begin(), - {%- if field.is_enum or (field.mapper_name is none) %} - {%- if field.is_enum %} - [](const unsigned short int dataItem) { - {%- if field.use_smart_pointer %} - return std::make_shared<{{ field.field_type }}>( ({{ field.field_type }}) dataItem); - {%- else %} - {%- if field.use_raw_pointer %} - return new {{ field.field_type }} ( ({{ field.field_type }}) dataItem); - {%- else %} - return ({{ field.field_type }}) dataItem; - {%- endif %} - {%- endif %} - {%- else %} - [](const {{ field.field_type }} dataItem) { - {%- if field.use_smart_pointer %} - return std::make_shared<{{ field.field_type }}>(dataItem); - {%- else %} - {%- if field.use_raw_pointer %} - return new {{ field.field_type }} (dataItem); - {%- else %} - return dataItem; - {%- endif %} - {%- endif %} - {%- endif %} - {%- else %} - [&](const {{ field.dds_type }} dataItem) { - {%- if field.use_smart_pointer %} - std::shared_ptr<{{ field.field_type }}> eventData(new {{ field.field_type }}()); - {{ field.mapper_name }}.fromMiddleware(dataItem, * eventData.get()); - {%- else %} - {%- if field.use_raw_pointer %} - {{ field.field_type }} * eventData = new {{ field.field_type }}(); - {{ field.mapper_name }}.fromMiddleware(dataItem, * eventData); - {%- else %} - {{ field.field_type }} eventData; - {{ field.mapper_name }}.fromMiddleware(dataItem, eventData); - {%- endif %} - {%- endif %} - return eventData; - {%- endif %} - }); - {%- endif %} -{%- endfor %} - } - - void toMiddleware(const {{ definition.class_name }} &event, {{ definition.dds_type }} &data) { -{%- for field in definition.fields %} - {%- if not field.is_vector and not field.is_array %} - {%- if field.is_enum or (field.mapper_name is none) %} - data.{{ field.field_name }}(event.{{ field.field_name }}); - {%- else %} - {{ field.mapper_name }}.toMiddleware(event.{{ field.field_name }}, data.{{ field.field_name }}()); - {%- endif %} - {%- else %} - {% if field.is_vector %} - data.{{ field.field_name }}().resize(event.{{ field.field_name }}.size()); - {%- endif %} - std::transform(event.{{ field.field_name }}.begin(), event.{{ field.field_name }}.end(), data.{{ field.field_name }}().begin(), - {%- if field.use_smart_pointer %} - [&](std::shared_ptr<{{ field.field_type }}> eventData) { - {%- else %} - {%- if field.use_raw_pointer %} - [&]({{ field.field_type }} * eventData) { - {%- else %} - [&]({{ field.field_type }} eventData) { - {%- endif %} - {%- endif %} - {%- if field.is_enum or (field.mapper_name is none) %} - {%- if field.use_smart_pointer %} - return * eventData.get(); - {%- else %} - {%- if field.use_raw_pointer %} - return * eventData; - {%- else %} - return eventData; - {%- endif %} - {%- endif %} - {%- else %} - {{ field.dds_type }} dataItem; - {%- if field.use_smart_pointer %} - {{ field.mapper_name }}.toMiddleware(* eventData.get(), dataItem); - {%- else %} - {%- if field.use_raw_pointer %} - {{ field.mapper_name }}.toMiddleware(* eventData, dataItem); - {%- else %} - {{ field.mapper_name }}.toMiddleware(eventData, dataItem); - {%- endif %} - {%- endif %} - return dataItem; - {%- endif %} - }); - {%- endif %} -{%- endfor %} - } - -{%- for mapper_instance in definition.mapper_instances %} - Mapper<{{ mapper_instance.kpsr_class_name }}, {{ mapper_instance.dds_class_name }}> {{ mapper_instance.mapper_name }}; -{%- endfor %} -}; -} - -#endif // {{ definition.define_class_name }}_DDS diff --git a/kpsr_codegen/templates/dds_template.idl b/kpsr_codegen/templates/dds_template.idl deleted file mode 100644 index 36b9ed0..0000000 --- a/kpsr_codegen/templates/dds_template.idl +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright 2023 Klepsydra Technologies AG -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# 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. - -// This code has been automatically generated, manual modification might be inadvertently overridden. - -{%- for include in definition.include_list %} -#include {{ include }} -{% endfor %} -{% if definition.module_name %} -module {{ definition.module_name }} { -{% endif %} -struct {{ definition.class_name }} { -{% for field in definition.fields %} -{{ field.field_type }}; -{% endfor %} -}; -{% if definition.sequence_fields %} -#pragma keylist {{ definition.class_name }} {% for field in definition.sequence_fields %}{{ field }} {% endfor %} -{% endif %} -{%- if definition.module_name %} -}; -{%- endif %} diff --git a/setup.cfg b/setup.cfg index 6b11914..7196c76 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = kpsr_codegen -version = 1.0 +version = 1.1 [options] install_requires = @@ -29,4 +29,4 @@ exclude = tests* kpsr_codegen = conf/* templates/* - cmake/* \ No newline at end of file + cmake/*