in core/unittest/sender/SenderUnittest.cpp [549:643]
static void MockSyncSend(const std::string& projectName,
const std::string& logstore,
const std::string& logData,
SEND_DATA_TYPE dataType,
int32_t rawSize,
sls_logs::SlsCompressType compressType) {
if (projectName == string("logtail-test-network-project")) {
// printf("test network %d.\n", gTestNetWorkStat ? 1 : 0);
if (gTestNetWorkStat) {
return;
}
throw sdk::LOGException(sdk::LOGE_REQUEST_ERROR, "Can not connect to server.");
}
LOG_INFO(sLogger, ("MockSyncSend, projectName", projectName)("logstore", logstore)("dataType", dataType));
vector<LogGroup> logGroupVec;
Sender::ParseLogGroupFromString(logData, dataType, rawSize, compressType, logGroupVec);
for (vector<LogGroup>::iterator iter = logGroupVec.begin(); iter != logGroupVec.end(); ++iter) {
bool projectDisabled = true;
if (iter->logs_size() > 0) {
if (gNetWorkStat && iter->category() == "app_log") {
PTScopedLock lock(gBufferLogGroupsLock);
gBufferLogGroups.push_back(*iter);
}
if (gNetWorkStat && (projectName.find("_proj") != string::npos)) /* "1000000_proj" */
{
int prjIndex = atoi(projectName.substr(0, 7).c_str()) - 1000000;
if (prjIndex <= gProjectNetEnableIndex) {
projectDisabled = false;
gRecvLogGroupLock.lock();
gRcvLogGroup = *iter;
gCounter += gRcvLogGroup.logs_size();
gMessageSize += gRcvLogGroup.ByteSize();
gRecvLogGroupLock.unlock();
LOG_INFO(
sLogger,
("gRcvLogGroup.ByteSize()", gRcvLogGroup.ByteSize())("logData.size()", logData.size()));
} else {
++gSynProjectSendFailCount;
}
}
if (gNetWorkStat && projectName == STRING_FLAG(profile_project_name)
&& iter->category() == "logtail_status_profile") {
gStatusCount++;
gStatusLogGroup = *iter;
}
}
if (!gNetWorkStat || projectDisabled) {
// printf("[@MockSyncSend] fail %s %s %d.\n", projectName.c_str(), logstore.c_str(), rawSize);
if (gSendFailType == 1)
throw sdk::LOGException(sdk::LOGE_REQUEST_ERROR, "Can not connect to server.");
else if (gSendFailType == 2) {
int randInt = rand() % 4;
if (randInt == 0)
throw sdk::LOGException(sdk::LOGE_REQUEST_ERROR, "Can not connect to server.");
else if (randInt == 1)
throw sdk::LOGException(sdk::LOGE_WRITE_QUOTA_EXCEED, "project write quota exceed.");
else if (randInt == 2)
throw sdk::LOGException(sdk::LOGE_SERVER_BUSY, "connect to server timeout.");
else if (randInt == 3)
throw sdk::LOGException(sdk::LOGE_INTERNAL_SERVER_ERROR, "connect to server timeout.");
} else if (gSendFailType == 3) {
int randInt = rand() % 5;
if (randInt == 0)
throw sdk::LOGException(sdk::LOGE_UNAUTHORIZED, "LOGE_UNAUTHORIZED.");
else if (randInt == 1)
throw sdk::LOGException(sdk::LOGE_BAD_RESPONSE, "LOGE_BAD_RESPONSE.");
else if (randInt == 2)
throw sdk::LOGException(sdk::LOGE_CATEGORY_NOT_EXIST, "LOGE_CATEGORY_NOT_EXIST.");
else if (randInt == 3)
throw sdk::LOGException(sdk::LOGE_PROJECT_NOT_EXIST, "LOGE_PROJECT_NOT_EXIST.");
else if (randInt == 4)
throw sdk::LOGException(sdk::LOGE_TOPIC_NOT_EXIST, "LOGE_TOPIC_NOT_EXIST.");
} else if (gSendFailType == 4) {
int randInt = rand() % 2;
if (randInt == 0) {
throw sdk::LOGException(sdk::LOGE_WRITE_QUOTA_EXCEED, "LOGE_WRITE_QUOTA_EXCEED");
} else if (randInt == 1) {
throw sdk::LOGException(sdk::LOGE_SHARD_WRITE_QUOTA_EXCEED, "LOGE_SHARD_WRITE_QUOTA_EXCEED");
}
} else if (gSendFailType == 5) {
int randInt = rand() % 2;
if (randInt == 0) {
throw sdk::LOGException(sdk::LOGE_SERVER_BUSY, "LOGE_WRITE_QUOTA_EXCEED");
} else if (randInt == 1) {
throw sdk::LOGException(sdk::LOGE_INTERNAL_SERVER_ERROR, "LOGE_SHARD_WRITE_QUOTA_EXCEED");
}
}
} else {
// printf("[@MockSyncSend] success %s %s %d.\n", projectName.c_str(), logstore.c_str(), rawSize);
}
}
}