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)
|
||||||
|
|
|
@ -126,11 +126,20 @@ void SharedDataCpp::SetWritableMemory(void *buf, const unsigned int &bufLength)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (SHARER_NAME_PRIMARY == mSharerName && bufLength == mMinorReadSize)
|
if (SHARER_NAME_PRIMARY == mSharerName && bufLength == mMinorReadSize)
|
||||||
|
{
|
||||||
|
UserDataHeader *readableHeader = (UserDataHeader *)((char *)mSharedMemeory);
|
||||||
|
if (memcmp(readableHeader->mUserName, USER_NAME_INIT_NAME, USER_NAME_BUF_LENGTH) == 0 &&
|
||||||
|
mPrimaryReadSize == readableHeader->mDataLength)
|
||||||
{
|
{
|
||||||
memcpy((char *)mSharedMemeory + sizeof(UserDataHeader) * THERE_TWO_USER_DATA_HEADER + mPrimaryReadSize,
|
memcpy((char *)mSharedMemeory + sizeof(UserDataHeader) * THERE_TWO_USER_DATA_HEADER + mPrimaryReadSize,
|
||||||
buf,
|
buf,
|
||||||
bufLength);
|
bufLength);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LogError("Peer not match.\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (SHARER_NAME_MINOR == mSharerName && bufLength == mPrimaryReadSize)
|
else if (SHARER_NAME_MINOR == mSharerName && bufLength == mPrimaryReadSize)
|
||||||
{
|
{
|
||||||
memcpy((char *)mSharedMemeory + sizeof(UserDataHeader), buf, bufLength);
|
memcpy((char *)mSharedMemeory + sizeof(UserDataHeader), buf, bufLength);
|
||||||
|
|
|
@ -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