Add test of shared data module.
This commit is contained in:
		
							parent
							
								
									c345c87297
								
							
						
					
					
						commit
						aaa3fb036d
					
				| 
						 | 
					@ -49,6 +49,7 @@ namespace SharedDataTest
 | 
				
			||||||
    // ../output_files/test/bin/SharedDataTest --gtest_filter=SharedDataTest.Demo2
 | 
					    // ../output_files/test/bin/SharedDataTest --gtest_filter=SharedDataTest.Demo2
 | 
				
			||||||
    TEST(SharedDataTest, Demo2)
 | 
					    TEST(SharedDataTest, Demo2)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        constexpr int WRITABLE_DATA = 189;
 | 
				
			||||||
        CreateLogModule();
 | 
					        CreateLogModule();
 | 
				
			||||||
        ILogInit(LOG_INSTANCE_TYPE_END);
 | 
					        ILogInit(LOG_INSTANCE_TYPE_END);
 | 
				
			||||||
        constexpr int PROJECT_ID = 9;
 | 
					        constexpr int PROJECT_ID = 9;
 | 
				
			||||||
| 
						 | 
					@ -56,17 +57,129 @@ namespace SharedDataTest
 | 
				
			||||||
        SharedData *sharedDataMinor = CreateSharedData(SHARER_NAME_MINOR, "./shared_file", PROJECT_ID);
 | 
					        SharedData *sharedDataMinor = CreateSharedData(SHARER_NAME_MINOR, "./shared_file", PROJECT_ID);
 | 
				
			||||||
        if (nullptr != sharedDataMinor)
 | 
					        if (nullptr != sharedDataMinor)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            int writableData = 189;
 | 
					            IMakeSharedData(sharedDataMinor, sizeof(int), sizeof(int));
 | 
				
			||||||
            IMakeSharedData(sharedDataMinor, sizeof(int) * 200, sizeof(int));
 | 
					            ISetWritableData(sharedDataMinor, (void *)&WRITABLE_DATA, sizeof(int));
 | 
				
			||||||
            ISetWritableData(sharedDataMinor, &writableData, sizeof(int));
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (nullptr != sharedDataPrimary)
 | 
					        if (nullptr != sharedDataPrimary)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            int readableData[2] = {0};
 | 
					            int readableData = 0;
 | 
				
			||||||
            IMakeSharedData(sharedDataPrimary, sizeof(int) * 2, sizeof(int));
 | 
					            IMakeSharedData(sharedDataPrimary, sizeof(int), sizeof(int));
 | 
				
			||||||
            StatusCode code = IGetReadableData(sharedDataPrimary, readableData, sizeof(int) * 2);
 | 
					            StatusCode code = IGetReadableData(sharedDataPrimary, &readableData, sizeof(int));
 | 
				
			||||||
            PrintStringCode(code);
 | 
					            PrintStringCode(code);
 | 
				
			||||||
            LogInfo("readableData = %d\n", readableData);
 | 
					            LogInfo("readableData = %d\n", readableData);
 | 
				
			||||||
 | 
					            EXPECT_EQ(readableData, WRITABLE_DATA);
 | 
				
			||||||
 | 
					            IFree(sharedDataPrimary);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (nullptr != sharedDataMinor)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            IFree(sharedDataMinor);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        ILogUnInit();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // ../output_files/test/bin/SharedDataTest --gtest_filter=SharedDataTest.Demo3
 | 
				
			||||||
 | 
					    TEST(SharedDataTest, Demo3)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        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 != sharedDataMinor)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            constexpr int WRITABLE_DATA_LENGTH = 9;
 | 
				
			||||||
 | 
					            char writableData[WRITABLE_DATA_LENGTH] = {0};
 | 
				
			||||||
 | 
					            IMakeSharedData(sharedDataMinor, sizeof(int), sizeof(writableData));
 | 
				
			||||||
 | 
					            ISetWritableData(sharedDataMinor, writableData, sizeof(writableData));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (nullptr != sharedDataPrimary)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            constexpr int DEFAULT_DATA = 0;
 | 
				
			||||||
 | 
					            int readableData = DEFAULT_DATA;
 | 
				
			||||||
 | 
					            IMakeSharedData(sharedDataPrimary, sizeof(int), sizeof(int));
 | 
				
			||||||
 | 
					            StatusCode code = IGetReadableData(sharedDataPrimary, &readableData, sizeof(int));
 | 
				
			||||||
 | 
					            PrintStringCode(code);
 | 
				
			||||||
 | 
					            LogInfo("readableData = %d\n", readableData);
 | 
				
			||||||
 | 
					            EXPECT_NE(code.mStatusCode, STATUS_CODE_OK);
 | 
				
			||||||
 | 
					            EXPECT_EQ(readableData, DEFAULT_DATA);
 | 
				
			||||||
 | 
					            IFree(sharedDataPrimary);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (nullptr != sharedDataMinor)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            IFree(sharedDataMinor);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        ILogUnInit();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // ../output_files/test/bin/SharedDataTest --gtest_filter=SharedDataTest.Demo4
 | 
				
			||||||
 | 
					    TEST(SharedDataTest, Demo4)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        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 != sharedDataMinor)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            IMakeSharedData(sharedDataMinor, sizeof(int) * 2, sizeof(int));
 | 
				
			||||||
 | 
					            ISetWritableData(sharedDataMinor, (void *)&WRITABLE_DATA, sizeof(int));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (nullptr != sharedDataPrimary)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            constexpr int DEFAULT_DATA = 0;
 | 
				
			||||||
 | 
					            int readableData = DEFAULT_DATA;
 | 
				
			||||||
 | 
					            IMakeSharedData(sharedDataPrimary, sizeof(int), sizeof(int));
 | 
				
			||||||
 | 
					            StatusCode code = IGetReadableData(sharedDataPrimary, &readableData, sizeof(int));
 | 
				
			||||||
 | 
					            PrintStringCode(code);
 | 
				
			||||||
 | 
					            LogInfo("readableData = %d\n", readableData);
 | 
				
			||||||
 | 
					            EXPECT_EQ(code.mStatusCode, STATUS_CODE_OK);
 | 
				
			||||||
 | 
					            EXPECT_EQ(readableData, WRITABLE_DATA);
 | 
				
			||||||
 | 
					            IFree(sharedDataPrimary);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (nullptr != sharedDataMinor)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            IFree(sharedDataMinor);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        ILogUnInit();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // ../output_files/test/bin/SharedDataTest --gtest_filter=SharedDataTest.Demo5
 | 
				
			||||||
 | 
					    TEST(SharedDataTest, Demo5)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        CreateLogModule();
 | 
				
			||||||
 | 
					        ILogInit(LOG_INSTANCE_TYPE_END);
 | 
				
			||||||
 | 
					        constexpr int PROJECT_ID = 9;
 | 
				
			||||||
 | 
					        SharedData *sharedDataPrimary = CreateSharedData(SHARER_NAME_PRIMARY, "./shared_file", PROJECT_ID);
 | 
				
			||||||
 | 
					        if (nullptr != sharedDataPrimary)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            constexpr int DEFAULT_DATA = 0;
 | 
				
			||||||
 | 
					            int readableData = DEFAULT_DATA;
 | 
				
			||||||
 | 
					            IMakeSharedData(sharedDataPrimary, sizeof(int), sizeof(int));
 | 
				
			||||||
 | 
					            StatusCode code = IGetReadableData(sharedDataPrimary, &readableData, sizeof(int));
 | 
				
			||||||
 | 
					            PrintStringCode(code);
 | 
				
			||||||
 | 
					            LogInfo("readableData = %d\n", readableData);
 | 
				
			||||||
 | 
					            EXPECT_NE(code.mStatusCode, STATUS_CODE_OK);
 | 
				
			||||||
 | 
					            EXPECT_EQ(readableData, DEFAULT_DATA);
 | 
				
			||||||
 | 
					            IFree(sharedDataPrimary);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        ILogUnInit();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // ../output_files/test/bin/SharedDataTest --gtest_filter=SharedDataTest.Demo6
 | 
				
			||||||
 | 
					    TEST(SharedDataTest, Demo6)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        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)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            constexpr int DEFAULT_DATA = 0;
 | 
				
			||||||
 | 
					            int readableData = DEFAULT_DATA;
 | 
				
			||||||
 | 
					            IMakeSharedData(sharedDataPrimary, sizeof(int), sizeof(int));
 | 
				
			||||||
 | 
					            StatusCode code = IGetReadableData(sharedDataPrimary, &readableData, sizeof(int));
 | 
				
			||||||
 | 
					            PrintStringCode(code);
 | 
				
			||||||
 | 
					            LogInfo("readableData = %d\n", readableData);
 | 
				
			||||||
 | 
					            EXPECT_NE(code.mStatusCode, STATUS_CODE_OK);
 | 
				
			||||||
 | 
					            EXPECT_EQ(readableData, DEFAULT_DATA);
 | 
				
			||||||
            IFree(sharedDataPrimary);
 | 
					            IFree(sharedDataPrimary);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (nullptr != sharedDataMinor)
 | 
					        if (nullptr != sharedDataMinor)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -127,9 +127,18 @@ void SharedDataCpp::SetWritableMemory(void *buf, const unsigned int &bufLength)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (SHARER_NAME_PRIMARY == mSharerName && bufLength == mMinorReadSize)
 | 
					    if (SHARER_NAME_PRIMARY == mSharerName && bufLength == mMinorReadSize)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        memcpy((char *)mSharedMemeory + sizeof(UserDataHeader) * THERE_TWO_USER_DATA_HEADER + mPrimaryReadSize,
 | 
					        UserDataHeader *readableHeader = (UserDataHeader *)((char *)mSharedMemeory);
 | 
				
			||||||
               buf,
 | 
					        if (memcmp(readableHeader->mUserName, USER_NAME_INIT_NAME, USER_NAME_BUF_LENGTH) == 0 &&
 | 
				
			||||||
               bufLength);
 | 
					            mPrimaryReadSize == readableHeader->mDataLength)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            memcpy((char *)mSharedMemeory + sizeof(UserDataHeader) * THERE_TWO_USER_DATA_HEADER + mPrimaryReadSize,
 | 
				
			||||||
 | 
					                   buf,
 | 
				
			||||||
 | 
					                   bufLength);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            LogError("Peer not match.\n");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else if (SHARER_NAME_MINOR == mSharerName && bufLength == mPrimaryReadSize)
 | 
					    else if (SHARER_NAME_MINOR == mSharerName && bufLength == mPrimaryReadSize)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,6 +17,7 @@
 | 
				
			||||||
#include "SharedData.h"
 | 
					#include "SharedData.h"
 | 
				
			||||||
#include "SharedMemory.h"
 | 
					#include "SharedMemory.h"
 | 
				
			||||||
#include <memory>
 | 
					#include <memory>
 | 
				
			||||||
 | 
					#include <mutex>
 | 
				
			||||||
constexpr int USER_NAME_BUF_LENGTH = 4;
 | 
					constexpr int USER_NAME_BUF_LENGTH = 4;
 | 
				
			||||||
#define USER_NAME_INIT_NAME "XING"
 | 
					#define USER_NAME_INIT_NAME "XING"
 | 
				
			||||||
enum USER_DATA_INIT
 | 
					enum USER_DATA_INIT
 | 
				
			||||||
| 
						 | 
					@ -29,6 +30,10 @@ typedef struct shared_data_header
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    const char *mCheckName;
 | 
					    const char *mCheckName;
 | 
				
			||||||
} SharedDataHeader;
 | 
					} SharedDataHeader;
 | 
				
			||||||
 | 
					typedef struct shared_memory_header
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    std::mutex mMutex;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
typedef struct user_data_header
 | 
					typedef struct user_data_header
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    char mUserName[USER_NAME_BUF_LENGTH];
 | 
					    char mUserName[USER_NAME_BUF_LENGTH];
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user