diff --git a/test/utils/SharedData/CMakeLists.txt b/test/utils/SharedData/CMakeLists.txt index 70c875b0..00f52adb 100644 --- a/test/utils/SharedData/CMakeLists.txt +++ b/test/utils/SharedData/CMakeLists.txt @@ -51,4 +51,6 @@ add_custom_command( COMMAND make SharedDataTest_code_check WORKING_DIRECTORY ${PROJECT_ROOT_PATH}/cmake-shell/ ) -endif() \ No newline at end of file +endif() + +define_file_name(${TARGET_NAME}) \ No newline at end of file diff --git a/test/utils/SharedData/src/SharedDataTest.cpp b/test/utils/SharedData/src/SharedDataTest.cpp index 5b24560e..d45d1e2e 100644 --- a/test/utils/SharedData/src/SharedDataTest.cpp +++ b/test/utils/SharedData/src/SharedDataTest.cpp @@ -220,4 +220,161 @@ namespace SharedDataTest } ILogUnInit(); } + // ../output_files/test/bin/SharedDataTest --gtest_filter=SharedDataTest.UNIT_SharedData_DEME_Demo7 + TEST(SharedDataTest, UNIT_SharedData_DEME_Demo7) + { + constexpr int WRITABLE_DATA = 189; + CreateLogModule(); + ILogInit(LOG_INSTANCE_TYPE_END); + constexpr int PROJECT_ID = 9; + SharedData *sharedDataPrimary = CreateSharedData(SHARER_NAME_PRIMARY, "./shared_file", PROJECT_ID); + SharedData *sharedDataMinor = CreateSharedData(SHARER_NAME_MINOR, "./shared_file", PROJECT_ID); + if (nullptr != sharedDataPrimary) + { + IMakeSharedData(sharedDataPrimary, sizeof(int) * 2, sizeof(int)); + ISetWritableData(sharedDataPrimary, (void *)&WRITABLE_DATA, sizeof(int)); + } + if (nullptr != sharedDataMinor) + { + constexpr int DEFAULT_DATA = 0; + int readableData = DEFAULT_DATA; + IMakeSharedData(sharedDataMinor, sizeof(int), sizeof(int)); + StatusCode code = IGetReadableData(sharedDataMinor, &readableData, sizeof(int)); + PrintStringCode(code); + LogInfo("readableData = %d\n", readableData); + EXPECT_NE(code.mStatusCode, STATUS_CODE_OK); + EXPECT_EQ(readableData, DEFAULT_DATA); + IFree(sharedDataMinor); + } + if (nullptr != sharedDataPrimary) + { + IFree(sharedDataPrimary); + } + ILogUnInit(); + } + // ../output_files/test/bin/SharedDataTest --gtest_filter=SharedDataTest.UNIT_SharedData_DEME_Demo8 + TEST(SharedDataTest, UNIT_SharedData_DEME_Demo8) + { + CreateLogModule(); + ILogInit(LOG_INSTANCE_TYPE_END); + constexpr int PROJECT_ID = 9; + SharedData *sharedDataPrimary = CreateSharedData(SHARER_NAME_PRIMARY, "./shared_file", PROJECT_ID); + SharedData *sharedDataMinor = CreateSharedData(SHARER_NAME_MINOR, "./shared_file", PROJECT_ID); + if (nullptr != sharedDataPrimary) + { + int writableData[2] = {0}; + IMakeSharedData(sharedDataPrimary, sizeof(int), sizeof(int) * 2); + ISetWritableData(sharedDataPrimary, &writableData, sizeof(writableData)); + } + if (nullptr != sharedDataMinor) + { + constexpr int DEFAULT_DATA = 0; + int readableData = DEFAULT_DATA; + IMakeSharedData(sharedDataMinor, sizeof(int), sizeof(int)); + StatusCode code = IGetReadableData(sharedDataMinor, &readableData, sizeof(int)); + PrintStringCode(code); + LogInfo("readableData = %d\n", readableData); + EXPECT_NE(code.mStatusCode, STATUS_CODE_OK); + EXPECT_EQ(readableData, DEFAULT_DATA); + IFree(sharedDataMinor); + } + if (nullptr != sharedDataPrimary) + { + IFree(sharedDataPrimary); + } + ILogUnInit(); + } + // ../output_files/test/bin/SharedDataTest --gtest_filter=SharedDataTest.UNIT_SharedData_DEME_Demo9 + TEST(SharedDataTest, UNIT_SharedData_DEME_Demo9) + { + constexpr int WRITABLE_DATA = 189; + CreateLogModule(); + ILogInit(LOG_INSTANCE_TYPE_END); + constexpr int PROJECT_ID = 9; + SharedData *sharedDataPrimary = CreateSharedData(SHARER_NAME_PRIMARY, "./shared_file", PROJECT_ID); + SharedData *sharedDataMinor = CreateSharedData(SHARER_NAME_MINOR, "./shared_file", PROJECT_ID); + if (nullptr != sharedDataPrimary) + { + IMakeSharedData(sharedDataPrimary, sizeof(int), sizeof(int)); + ISetWritableData(sharedDataPrimary, (void *)&WRITABLE_DATA, sizeof(int)); + } + if (nullptr != sharedDataMinor) + { + constexpr int DEFAULT_DATA = 0; + int readableData = DEFAULT_DATA; + IMakeSharedData(sharedDataMinor, sizeof(int), sizeof(int) * 2); + StatusCode code = IGetReadableData(sharedDataMinor, &readableData, sizeof(int)); + PrintStringCode(code); + LogInfo("readableData = %d\n", readableData); + EXPECT_NE(code.mStatusCode, STATUS_CODE_OK); + EXPECT_EQ(readableData, DEFAULT_DATA); + IFree(sharedDataMinor); + } + if (nullptr != sharedDataPrimary) + { + IFree(sharedDataPrimary); + } + ILogUnInit(); + } + // ../output_files/test/bin/SharedDataTest --gtest_filter=SharedDataTest.UNIT_SharedData_DEME_Demo10 + TEST(SharedDataTest, UNIT_SharedData_DEME_Demo10) + { + constexpr int WRITABLE_DATA = 189; + CreateLogModule(); + ILogInit(LOG_INSTANCE_TYPE_END); + constexpr int PROJECT_ID = 9; + SharedData *sharedDataPrimary = CreateSharedData(SHARER_NAME_PRIMARY, "./shared_file", PROJECT_ID); + SharedData *sharedDataMinor = CreateSharedData(SHARER_NAME_MINOR, "./shared_file", PROJECT_ID); + if (nullptr != sharedDataPrimary) + { + IMakeSharedData(sharedDataPrimary, sizeof(int), sizeof(int)); + ISetWritableData(sharedDataPrimary, (void *)&WRITABLE_DATA, sizeof(int)); + } + if (nullptr != sharedDataMinor) + { + int readableData[2] = {0}; + IMakeSharedData(sharedDataMinor, sizeof(int) * 2, sizeof(int)); + StatusCode code = IGetReadableData(sharedDataMinor, readableData, sizeof(readableData)); + PrintStringCode(code); + LogInfo("readableData = %d\n", readableData); + EXPECT_NE(code.mStatusCode, STATUS_CODE_OK); + IFree(sharedDataMinor); + } + if (nullptr != sharedDataPrimary) + { + IFree(sharedDataPrimary); + } + ILogUnInit(); + } + // ../output_files/test/bin/SharedDataTest --gtest_filter=SharedDataTest.UNIT_SharedData_DEME_Demo11 + TEST(SharedDataTest, UNIT_SharedData_DEME_Demo11) + { + constexpr int WRITABLE_DATA = 189; + CreateLogModule(); + ILogInit(LOG_INSTANCE_TYPE_END); + constexpr int PROJECT_ID = 9; + SharedData *sharedDataPrimary = CreateSharedData(SHARER_NAME_PRIMARY, "./shared_file", PROJECT_ID); + SharedData *sharedDataMinor = CreateSharedData(SHARER_NAME_MINOR, "./shared_file", PROJECT_ID); + IMakeSharedData(sharedDataMinor, sizeof(int), sizeof(int)); + if (nullptr != sharedDataPrimary) + { + IMakeSharedData(sharedDataPrimary, sizeof(int), sizeof(int)); + ISetWritableData(sharedDataPrimary, (void *)&WRITABLE_DATA, sizeof(int)); + } + if (nullptr != sharedDataMinor) + { + int readableData = 0; + StatusCode code = IGetReadableData(sharedDataMinor, &readableData, sizeof(int)); + PrintStringCode(code); + LogInfo("readableData = %d\n", readableData); + EXPECT_EQ(code.mStatusCode, STATUS_CODE_OK); + EXPECT_EQ(readableData, 189); + IFree(sharedDataMinor); + } + if (nullptr != sharedDataPrimary) + { + IFree(sharedDataPrimary); + } + ILogUnInit(); + } } // namespace SharedDataTest \ No newline at end of file diff --git a/utils/SharedData/src/SharedMemory.cpp b/utils/SharedData/src/SharedMemory.cpp index 12579c36..d9d6ac62 100644 --- a/utils/SharedData/src/SharedMemory.cpp +++ b/utils/SharedData/src/SharedMemory.cpp @@ -13,6 +13,7 @@ * limitations under the License. */ #include "SharedMemory.h" +#include "SharedDataCode.h" #include "ILog.h" #include #include @@ -44,7 +45,12 @@ StatusCode SharedMemory::MakeSharedMemory(const int &size) mId = shmget(key, size, IPC_CREAT | 0666); if (mId == SHMGET_FAILED) { - printf("errno = %d, errmsg = %s\n", errno, strerror(errno)); + constexpr int MAYBE_CODE_22_MEANS_PEER_SIZE_WAS_NOT_MATCH = 22; + if (MAYBE_CODE_22_MEANS_PEER_SIZE_WAS_NOT_MATCH == errno) + { + LogInfo("errno = %d, errmsg = %s\n", errno, strerror(errno)); + return CreateSharedDataCode(SHARED_DATA_CODE_WRONG_PEER_PARAMETERS); + } LogError("shmget failed. memory size = %d\n", size); return CreateStatusCode(STATUS_CODE_NOT_OK); }