This is an automated email from the ASF dual-hosted git repository. dinglei pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/rocketmq-ons-cpp.git
commit 2d0b3d67503c9ab5680420b95c33ebb4c13fd647 Author: ShannonDing <[email protected]> AuthorDate: Wed Jul 24 11:10:17 2019 +0800 Add unitest for Java --- src/main/cpp/demos/CMakeLists.Release | 6 ++-- src/main/cpp/demos/CMakeLists.txt | 2 +- .../apache/rocketmq/graalvm/CInterfaceTest.java | 38 ++++++++++++++++++++++ 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/src/main/cpp/demos/CMakeLists.Release b/src/main/cpp/demos/CMakeLists.Release index 7f47ee5..fd7ff83 100644 --- a/src/main/cpp/demos/CMakeLists.Release +++ b/src/main/cpp/demos/CMakeLists.Release @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.0) -project(onsclient4cpp_demo VERSION 1.0 +set(LIBRARY_NAME_DEMO onsclient4cpp) +set(PROJECT_NAME_DEMO rocketmq-ons-cpp-demo) +project(${PROJECT_NAME_DEMO} VERSION 1.0 LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 11) include_directories(../include) @@ -13,7 +15,7 @@ if (${ROCKETMQ_CLIENT_CORE-NOTFOUNT}) endif () find_library(ONS_CLIENT - NAMES onsclient4cpp + NAMES ${LIBRARY_NAME_DEMO} HINTS ../lib) if (${ONS_CLIENT-NOTFOUNT}) diff --git a/src/main/cpp/demos/CMakeLists.txt b/src/main/cpp/demos/CMakeLists.txt index 6ffd443..d377ddf 100644 --- a/src/main/cpp/demos/CMakeLists.txt +++ b/src/main/cpp/demos/CMakeLists.txt @@ -1,6 +1,6 @@ macro(add_demo name source_file) add_executable(${name} ${source_file}) - target_link_libraries(${name} pthread ${CMAKE_PROJECT_NAME}) + target_link_libraries(${name} pthread ${LIBRARY_NAME}) set_target_properties(${name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/demos) endmacro() diff --git a/src/test/java/org/apache/rocketmq/graalvm/CInterfaceTest.java b/src/test/java/org/apache/rocketmq/graalvm/CInterfaceTest.java new file mode 100644 index 0000000..3400af4 --- /dev/null +++ b/src/test/java/org/apache/rocketmq/graalvm/CInterfaceTest.java @@ -0,0 +1,38 @@ +package org.apache.rocketmq.graalvm; + +import org.graalvm.nativeimage.c.type.CTypeConversion; +import org.junit.Assert; +import org.mockito.Mockito; + +/** + * <p> + * <strong>Warning:</strong> CTypeConversion can only used with native-image. Hence, we cannot create JUnit test + * cases in the Java side. + * </p> + */ +public class CInterfaceTest { + +// @Test + public void testCreateProducer() { + CInterface.CFactoryProperty property = Mockito.mock(CInterface.CFactoryProperty.class); + Mockito.when(property.getAccessKey()).thenReturn(CTypeConversion.toCString("Ak").get()); + Mockito.when(property.getAccessSecret()).thenReturn(CTypeConversion.toCString("Sk").get()); + Mockito.when(property.getGroupId()).thenReturn(CTypeConversion.toCString("GID_opensource_unit_test").get()); + Mockito.when(property.getNameServerAddress()).thenReturn(CTypeConversion.toCString("47.100.33.127:9876").get()); + int id = CInterface.create_producer(null, property); + Assert.assertEquals(1, id); + Assert.assertEquals(1, CInterface.instances.size()); + } + +// @Test + public void testDestroyInstance() { + CInterface.CFactoryProperty property = Mockito.mock(CInterface.CFactoryProperty.class); + Mockito.when(property.getAccessKey()).thenReturn(CTypeConversion.toCString("Ak").get()); + Mockito.when(property.getAccessSecret()).thenReturn(CTypeConversion.toCString("Sk").get()); + Mockito.when(property.getGroupId()).thenReturn(CTypeConversion.toCString("GID_opensource_unit_test").get()); + Mockito.when(property.getNameServerAddress()).thenReturn(CTypeConversion.toCString("47.100.33.127:9876").get()); + int id = CInterface.create_producer(null, property); + CInterface.destroy_instance(null, id); + Assert.assertTrue(CInterface.instances.isEmpty()); + } +} \ No newline at end of file
