1 #include <gtest/gtest.h>
37 static size_t count = 0;
46 static TestFunctor testFunctor;
57 char* dir = get_current_dir_name();
64 mkdir(nodeOptions.
getTasksDataDir().c_str(), S_IRWXU | S_IRWXG | S_IRWXO);
72 return Poco::File(fileName).exists();
78 const std::string requestJson =
"{\"session\":{\"type\":0,\"tmode\":1,\"cleanup\":0,\"time_max\":5000,\"port\":0,\"user\":\"\",\"password\":\"\",\"shell\":\"\",\"environment\":[{\"LINES\":\"80\",\"HOSTNAME\":\"node22\"}]},\"limits\":{\"proc_max\":400},\"command\":\"sort\",\"input\":\"def\\nabc\\n123\\n\",\"files\":[{\"name\":\"file1\",\"data\":\"test content of file1\\n\",\"action\":13},{\"name\":\"file2\",\"data\":\"test content of file2\\n\",\"action\":1}]}";
83 inputJsonMessage.
setRequestType(DRCETaskRequest::RequestType::rtSetTaskExecute);
87 std::stringstream sourceJson;
97 ASSERT_TRUE(inputJsonMessage.
getErrorMsg().empty());
98 printSuccess(
"DRCEInputJsonMessage serialize");
105 std::string resultJson = fObj.
Process(sourceJson.str());
110 printSuccess(
"DRCEFunctionalObject Process");
119 ASSERT_TRUE(resultJsonMessage.
getErrorMsg().empty());
120 printSuccess(
"DRCEOutputJsonMessage unserialize");
133 printSuccess(
"!!! Execute sync request");
138 std::string requestJson;
139 if (requestData.empty())
140 requestJson =
"{\"session\":{\"type\":0,\"tmode\":2,\"time_max\":40000,\"port\":0,\"user\":\"\",\"password\":\"\",\"shell\":\"\",\"environment\":[{\"LINES\":\"80\",\"HOSTNAME\":\"node22\"}]},\"command\":\"sort\",\"input\":\"def\\nabc\\n123\\n\",\"files\":[{\"name\":\"file1\",\"data\":\"test content of file1\\n\",\"action\":13},{\"name\":\"file2\",\"data\":\"test content of file2\\n\",\"action\":1}]}";
148 inputJsonMessage.
setRequestType(DRCETaskRequest::RequestType::rtSetTaskExecute);
152 std::stringstream sourceJson;
156 sourceJson.str(json);
162 ASSERT_TRUE(inputJsonMessage.
getErrorMsg().empty());
163 printSuccess(
"DRCEInputJsonMessage serialize");
165 std::string resultJson = fObj.
Process(sourceJson.str());
170 printSuccess(
"DRCEFunctionalObject Process");
172 std::cout <<
"result JSON: " << resultJson <<
std::endl;
179 ASSERT_TRUE(resultJsonMessage.
getErrorMsg().empty());
180 printSuccess(
"DRCEOutputJsonMessage unserialize");
190 printSuccess(
"!!! Set task to async execute request");
195 std::string requestJson;
196 if (requestData.empty())
197 requestJson =
"{\"session\":{\"type\":0,\"tmode\":1,\"time_max\":40000,\"port\":0,\"user\":\"\",\"password\":\"\",\"shell\":\"\",\"environment\":[]},\"command\":\"sort\",\"input\":\"def\\nabc\\n123\\n\",\"files\":[]}";
203 inputJsonMessage.
setRequestType(DRCETaskRequest::RequestType::rtSetTaskExecute);
207 std::stringstream sourceJson;
208 sourceJson << inputJsonMessage;
212 ASSERT_FALSE(inputJsonMessage.isError()) <<
printError(inputJsonMessage);
213 ASSERT_EQ(inputJsonMessage.getErrorCode(),
NO_ERROR);
214 ASSERT_TRUE(inputJsonMessage.getErrorMsg().empty());
215 printSuccess(
"DRCEInputJsonMessage serialize");
217 std::string resultJson = fObj.
Process(sourceJson.str());
219 std::cout <<
"SetTaskExecute resultJson: " << resultJson <<
std::endl;
224 printSuccess(
"DRCEFunctionalObject Process");
226 Poco::Thread::sleep(5);
240 taskRequestCheckState.
setCheckType(DRCETaskRequestCheckState::CheckType::ctSimple);
242 ASSERT_FALSE(taskRequestCheckState.
isError());
243 printSuccess(
"DRCETaskRequestCheckState serialize");
245 std::cout <<
"json: " << json <<
std::endl;
248 inputJsonMessage.clear();
249 inputJsonMessage.setRequestType(DRCETaskRequest::RequestType::rtCheckTaskState);
250 inputJsonMessage.setRequestData(json);
251 inputJsonMessage.setRequestId(requestId);
254 sourceJson << inputJsonMessage;
258 ASSERT_FALSE(inputJsonMessage.isError()) <<
printError(inputJsonMessage);
259 ASSERT_EQ(inputJsonMessage.getErrorCode(),
NO_ERROR);
260 ASSERT_TRUE(inputJsonMessage.getErrorMsg().empty());
261 printSuccess(
"DRCEInputJsonMessage serialize");
263 resultJson = fObj.
Process(sourceJson.str());
268 printSuccess(
"DRCEFunctionalObject Process");
270 std::cout <<
"CheckTaskState result JSON: " << resultJson <<
std::endl;
277 ASSERT_TRUE(resultJsonMessage.
getErrorMsg().empty());
278 printSuccess(
"DRCEOutputJsonMessage unserialize");
287 printSuccess(
"Check state task use Simple flag");
290 taskRequestCheckState.
clear();
291 taskRequestCheckState.
setCheckType(DRCETaskRequestCheckState::CheckType::ctExtended);
293 ASSERT_FALSE(taskRequestCheckState.
isError());
294 printSuccess(
"DRCETaskRequestCheckState serialize");
302 Poco::Thread::sleep(10000);
303 std::cout <<
"wait the end ...." <<
std::endl;
349 printSuccess(
"!!! Check state task request after execute");
354 const std::string requestJson =
"{\"session\":{\"type\":0,\"tmode\":2,\"time_max\":40000,\"port\":0,\"user\":\"\",\"password\":\"\",\"shell\":\"\",\"environment\":[]},\"command\":\"sort\",\"input\":\"def\\nabc\\n123\\n\",\"files\":[]}";
358 inputJsonMessage.
setRequestType(DRCETaskRequest::RequestType::rtSetTaskExecute);
362 std::stringstream sourceJson;
363 sourceJson << inputJsonMessage;
367 ASSERT_FALSE(inputJsonMessage.isError()) <<
printError(inputJsonMessage);
368 ASSERT_EQ(inputJsonMessage.getErrorCode(),
NO_ERROR);
369 ASSERT_TRUE(inputJsonMessage.getErrorMsg().empty());
370 printSuccess(
"DRCEInputJsonMessage serialize");
372 std::string resultJson = fObj.
Process(sourceJson.str());
377 printSuccess(
"DRCEFunctionalObject Process");
383 Poco::Thread::sleep(10000);
384 std::cout <<
"wait the end ...." <<
std::endl;
386 Poco::Thread::sleep(5000);
390 taskRequestGetData.
setFetchType(DRCETaskRequestGetData::FetchType::ftNotDeleteDataAfterFetch);
392 ASSERT_FALSE(taskRequestGetData.
isError());
393 printSuccess(
"DRCETaskRequestGetData serialize");
398 inputJsonMessage.clear();
399 inputJsonMessage.setRequestType(DRCETaskRequest::RequestType::rtGetTaskData);
400 inputJsonMessage.setRequestData(json);
401 inputJsonMessage.setRequestId(requestId);
404 sourceJson << inputJsonMessage;
408 ASSERT_FALSE(inputJsonMessage.isError()) <<
printError(inputJsonMessage);
409 ASSERT_EQ(inputJsonMessage.getErrorCode(),
NO_ERROR);
410 ASSERT_TRUE(inputJsonMessage.getErrorMsg().empty());
411 printSuccess(
"DRCEInputJsonMessage serialize");
413 resultJson = fObj.
Process(sourceJson.str());
418 printSuccess(
"DRCEFunctionalObject Process");
427 ASSERT_TRUE(resultJsonMessage.
getErrorMsg().empty());
428 printSuccess(
"DRCEOutputJsonMessage unserialize");
439 printSuccess(
"!!! Get data task request after execute");
446 std::string requestJson =
"{\"session\":{\"type\":0,\"cleanup\":0,\"tmode\":2,\"time_max\":80000,\"port\":0,\"user\":\"\",\"password\":\"\",\"shell\":\"\",\"environment\":[{}]},\"command\":\"echo \\\"scale=40; 4*a(1)\\\" | bc -l && /home/alexander/workspace/sleeper/Debug/sleeper 10 && echo Hello && /home/alexander/workspace/sleeper/Debug/sleeper 10\",\"input\":\"\",\"files\":[]}";
450 inputJsonMessage.
setRequestType(DRCETaskRequest::RequestType::rtSetTaskExecute);
454 std::stringstream sourceJson;
455 sourceJson << inputJsonMessage;
459 ASSERT_FALSE(inputJsonMessage.isError()) <<
printError(inputJsonMessage);
460 ASSERT_EQ(inputJsonMessage.getErrorCode(),
NO_ERROR);
461 ASSERT_TRUE(inputJsonMessage.getErrorMsg().empty());
462 printSuccess(
"DRCEInputJsonMessage serialize");
464 std::string resultJson = fObj.
Process(sourceJson.str());
471 printSuccess(
"DRCEFunctionalObject Process");
473 Poco::Thread::sleep(5000);
477 taskRequestTerminate.
setTaskId(requestId);
484 ASSERT_FALSE(taskRequestTerminate.
isError());
485 printSuccess(
"DRCETaskRequestTerminate serialize");
490 inputJsonMessage.clear();
491 inputJsonMessage.setRequestType(DRCETaskRequest::RequestType::rtTerminateTask);
492 inputJsonMessage.setRequestData(json);
493 inputJsonMessage.setRequestId(requestId);
496 sourceJson << inputJsonMessage;
500 ASSERT_FALSE(inputJsonMessage.isError()) <<
printError(inputJsonMessage);
501 ASSERT_EQ(inputJsonMessage.getErrorCode(),
NO_ERROR);
502 ASSERT_TRUE(inputJsonMessage.getErrorMsg().empty());
503 printSuccess(
"DRCEInputJsonMessage serialize");
505 resultJson = fObj.
Process(sourceJson.str());
510 printSuccess(
"DRCEFunctionalObject Process");
512 std::cout <<
"result JSON: " << resultJson <<
std::endl;
519 ASSERT_TRUE(resultJsonMessage.
getErrorMsg().empty());
520 printSuccess(
"DRCEOutputJsonMessage unserialize");
533 Poco::Thread::sleep(5000);
534 std::cout <<
"wait the end ...." <<
std::endl;
538 printSuccess(
"!!! Terminate task request");
543 const std::string requestJson =
"{\"session\":{\"type\":0,\"tmode\":2,\"time_max\":40000,\"port\":0,\"user\":\"\",\"password\":\"\",\"shell\":\"\",\"environment\":[]},\"command\":\"sort\",\"input\":\"def\\nabc\\n123\\n\",\"files\":[]}";
547 inputJsonMessage.
setRequestType(DRCETaskRequest::RequestType::rtSetTaskExecute);
551 std::stringstream sourceJson;
552 sourceJson << inputJsonMessage;
556 ASSERT_FALSE(inputJsonMessage.isError()) <<
printError(inputJsonMessage);
557 ASSERT_EQ(inputJsonMessage.getErrorCode(),
NO_ERROR);
558 ASSERT_TRUE(inputJsonMessage.getErrorMsg().empty());
559 printSuccess(
"DRCEInputJsonMessage serialize");
561 std::string resultJson = fObj.
Process(sourceJson.str());
566 printSuccess(
"DRCEFunctionalObject Process");
570 Poco::Thread::sleep(5000);
571 std::cout <<
"wait the end ...." <<
std::endl;
573 Poco::Thread::sleep(2000);
578 ASSERT_FALSE(taskRequestDeleteData.
isError());
579 printSuccess(
"DRCETaskRequestDeleteData serialize");
584 inputJsonMessage.clear();
585 inputJsonMessage.setRequestType(DRCETaskRequest::RequestType::rtDeleteTaskData);
586 inputJsonMessage.setRequestData(json);
587 inputJsonMessage.setRequestId(requestId);
590 sourceJson << inputJsonMessage;
594 ASSERT_FALSE(inputJsonMessage.isError()) <<
printError(inputJsonMessage);
595 ASSERT_EQ(inputJsonMessage.getErrorCode(),
NO_ERROR);
596 ASSERT_TRUE(inputJsonMessage.getErrorMsg().empty());
597 printSuccess(
"DRCEInputJsonMessage serialize");
599 resultJson = fObj.
Process(sourceJson.str());
604 printSuccess(
"DRCEFunctionalObject Process");
613 ASSERT_TRUE(resultJsonMessage.
getErrorMsg().empty());
614 printSuccess(
"DRCEOutputJsonMessage unserialize");
636 printSuccess(
"!!! Delete task data request");
650 const std::string requestJson =
"{\"session\":{\"type\":0,\"tmode\":2,\"time_max\":90000,\"port\":0,\"user\":\"\",\"password\":\"\",\"shell\":\"\",\"environment\":[{\"LINES\":\"80\",\"HOSTNAME\":\"node22\"}]},\"command\":\"echo \\\"scale=4000; 4*a(1)\\\" | bc -l && sleep 5 && ps xau\",\"input\":\"\",\"files\":[]}";
652 const unsigned int repeat = 1;
654 for (
size_t i=0;i<repeat;++i)
656 std::cout <<
">>>>> " << i <<
") test enter !!!!!\n";
659 std::cout <<
">>>>> " << i <<
") test leave !!!!!\n";
662 Poco::Thread::sleep(500);
665 std::stringstream logMsg;
668 Poco::Thread::sleep(5000);
672 Poco::Thread::sleep(2000);
679 printSuccess(
"!!! Test Execute Notification Functor");
685 std::string requestJson =
"{\"session\":{\"type\":0,\"tmode\":1,\"time_max\":8000,\"port\":0,\"user\":\"\",\"password\":\"\",\"shell\":\"\",\"environment\":[{}]},\"command\":\"echo \\\"Hello\\\" && sleep 10 && ls -la && sleep 10 && ps auxf\",\"input\":\"\",\"files\":[]}";
694 std::stringstream logMsg;
697 Poco::Thread::sleep(1000);
704 printSuccess(
"!!! Test Terminate Expired Sync Task");
709 std::string requestJson =
"{\"session\":{\"type\":0,\"tmode\":2,\"cleanup\":1,\"time_max\":8000,\"port\":0,\"user\":\"\",\"password\":\"\",\"shell\":\"\",\"environment\":[{}]},\"command\":\"echo \\\"Hello\\\" && sleep 20 && ls -la && sleep 10 && ps auxf\",\"input\":\"\",\"files\":[]}";
716 for (
size_t i=0;i<3;++i)
719 std::stringstream logMsg;
722 Poco::Thread::sleep(1000);
729 printSuccess(
"!!! Test Terminate Expired Async Task");
738 sessionOptions.
sessionType = SessionOptions::SessionType::stHostShell;
740 sessionOptions.
tmode = threadMode;
742 sessionOptions.
cleanup = SessionOptions::CleanupFlag::cfNotDelete;
744 taskRequestSetExecute.
setSessionOptions(std::forward<SessionOptions>(sessionOptions));
748 std::stringstream sourceJson;
749 sourceJson << taskRequestSetExecute;
751 ASSERT_FALSE(taskRequestSetExecute.isError()) <<
printError(taskRequestSetExecute);
752 ASSERT_EQ(taskRequestSetExecute.getErrorCode(),
NO_ERROR);
753 ASSERT_TRUE(taskRequestSetExecute.getErrorMsg().empty());
754 printSuccess(
"DRCETaskRequestSetExecute serialize");
757 inputJsonMessage.
setRequestType(DRCETaskRequest::RequestType::rtSetTaskExecute);
762 sourceJson << inputJsonMessage;
764 ASSERT_FALSE(inputJsonMessage.isError()) <<
printError(inputJsonMessage);
765 ASSERT_EQ(inputJsonMessage.getErrorCode(),
NO_ERROR);
766 ASSERT_TRUE(inputJsonMessage.getErrorMsg().empty());
767 printSuccess(
"DRCEInputJsonMessage serialize");
771 std::string resultJson = fObj.
Process(sourceJson.str());
776 printSuccess(
"DRCEFunctionalObject Process");
784 ASSERT_TRUE(resultJsonMessage.
getErrorMsg().empty());
785 printSuccess(
"DRCEOutputJsonMessage unserialize");
788 if (threadMode==SessionOptions::ThreadMode::tmSync)
815 if (threadMode==SessionOptions::ThreadMode::tmAsync)
819 Poco::Thread::sleep(5000);
820 std::cout <<
"wait the end ...." <<
std::endl;
822 Poco::Thread::sleep(2000);
829 printSuccess(
"Test Request Time Limits");
835 const std::string requestJson =
"{\"session\":{\"type\":0,\"tmode\":2,\"cleanup\":1,\"time_max\":120000,\"port\":0,\"user\":\"\",\"password\":\"\",\"shell\":\"\",\"environment\":[]},\"command\":\"echo \\\"scale=4000; 4*a(1)\\\" | bc -l && sleep 60 && ps xau\",\"input\":\"\",\"files\":[]}";
843 for (
unsigned int i=0;i<repeatCount;++i)
853 Poco::Thread::sleep(5000);
856 Poco::Thread::sleep(2000);
857 Poco::Timestamp::TimeDiff diff = now.elapsed();
859 std::cout <<
"Count tasks = " << repeatCount <<
std::endl;
860 std::cout <<
"All time: " << (diff/1000) <<
" msec." << std::endl;
867 const std::string requestJson =
"{\"session\":{\"type\":0,\"tmode\":2,\"cleanup\":1,\"time_max\":40000,\"port\":0,\"user\":\"\",\"password\":\"\",\"shell\":\"\",\"environment\":[]},\"command\":\"sleep 20\",\"input\":\"\",\"files\":[]}";
874 for (
unsigned int i=0;i<repeatCount;++i)
876 std::cout << i <<
") test enter\n";
878 std::cout << i <<
") test leave\n===========\n";
884 Poco::Thread::sleep(5000);
885 std::cout <<
"wait the end ...." <<
std::endl;
887 Poco::Thread::sleep(2000);
890 Poco::Timestamp::TimeDiff diff = now.elapsed();
892 std::cout <<
"All threads = " << repeatCount <<
" each can sleep 20 sec."<<
std::endl;
893 std::cout <<
"All time: " << (diff/1000) <<
" msec." << std::endl;
904 const std::string requestJson =
"{\"session\":{\"type\":0,\"tmode\":2,\"time_max\":40000,\"cleanup\":1,\"port\":0,\"user\":\"\",\"password\":\"\",\"shell\":\"\",\"environment\":[{\"LINES\":\"80\",\"HOSTNAME\":\"node22\"}]},\"command\":\"sort\",\"input\":\"def\\nabc\\n123\\n\",\"files\":[{\"name\":\"file1\",\"data\":\"test content of file1\\n\",\"action\":13},{\"name\":\"file2\",\"data\":\"test content of file2\\n\",\"action\":1}]}";
908 while (fObj.getAsyncTasksCount())
910 Poco::Thread::sleep(2000);
911 std::cout <<
"wait the end ...." <<
std::endl;
913 Poco::Thread::sleep(5000);
916 ASSERT_EQ(res,
false);
919 printSuccess(
"!!! Test request local shell async cleanup");
927 fObj.setNodePort(
"NODE_PORT");
928 fObj.setNodeName(
"NODE_NAME");
929 fObj.setTasksQueueDumpPeriod(1000);
930 const unsigned int taskId = 567;
934 ASSERT_EQ(res,
true);
938 while (res !=
false && --waitRepeat>0)
940 Poco::Thread::sleep(5000);
942 std::cout <<
"task " << taskId <<
" awhile exist...\n";
944 ASSERT_EQ(res,
false);
947 printSuccess(
"!!! Test Terminate task request with cleanup");
956 fObj.setNodePort(
"NODE_PORT");
957 fObj.setNodeName(
"NODE_NAME");
959 fObj.setNotificationFunctor(testFunctor);
960 fObj.setTasksQueueDumpPeriod(1000);
962 unsigned int taskId = 567;
966 fObj.setNotificationFunctor(treadingModetest);
978 while (fObj.getAsyncTasksCount())
980 Poco::Thread::sleep(5000);
981 std::cout <<
"wait the end ...." <<
std::endl;
983 Poco::Thread::sleep(5000);
1020 unsigned int requestCount = 10;
1037 fObj.setNodePort(
"NODE_PORT");
1038 fObj.setNodeName(
"NODE_NAME");
1039 fObj.setResourceMonitorTimePeriod(1000);
1042 const std::string syncRequestJson =
"{\"session\":{\"type\":0,\"tmode\":1,\"time_max\":40000,\"port\":0,\"user\":\"\",\"password\":\"\",\"shell\":\"\",\"environment\":[{\"LINES\":\"80\",\"HOSTNAME\":\"node22\"}]},\"limits\":{\"proc_max\":400},\"command\":\"sort\",\"input\":\"def\\nabc\\n123\\n\",\"files\":[{\"name\":\"file1\",\"data\":\"test content of file1\\n\",\"action\":5},{\"name\":\"file2\",\"data\":\"test content of file2\\n\",\"action\":1}]}";
1043 const std::string shortRequestJson =
"{\"session\":{\"type\":0,\"tmode\":2,\"time_max\":40000,\"port\":0,\"user\":\"\",\"password\":\"\",\"shell\":\"\",\"environment\":[{\"LINES\":\"80\",\"HOSTNAME\":\"node22\"}]},\"command\":\"sort\",\"input\":\"def\\nabc\\n123\\n\",\"files\":[{\"name\":\"file1\",\"data\":\"test content of file1\\n\",\"action\":5},{\"name\":\"file2\",\"data\":\"test content of file2\\n\",\"action\":1}]}";
1044 const std::string expiredRequestJson =
"{\"session\":{\"type\":0,\"tmode\":2,\"time_max\":5000,\"port\":0,\"user\":\"\",\"password\":\"\",\"shell\":\"\",\"environment\":[{}]},\"command\":\"sleep 20\",\"input\":\"\",\"files\":[{\"name\":\"file1\",\"data\":\"test content of file1\\n\",\"action\":5},{\"name\":\"file2\",\"data\":\"test content of file2\\n\",\"action\":1}]}";
1045 const std::string longRequestJson =
"{\"session\":{\"type\":0,\"tmode\":2,\"cleanup\":1,\"time_max\":120000,\"port\":0,\"user\":\"\",\"password\":\"\",\"shell\":\"\",\"environment\":[]},\"command\":\"echo \\\"scale=4000; 4*a(1)\\\" | bc -l && sleep 60 && ps xau\",\"input\":\"\",\"files\":[]}";
1046 const std::string bcJson =
"{\"session\":{\"type\":0,\"tmode\":2,\"cleanup\":1,\"time_max\":120000,\"port\":0,\"user\":\"\",\"password\":\"\",\"shell\":\"\",\"environment\":[]},\"command\":\"echo \\\"scale=4000; 4*a(1)\\\" | bc -l && echo \\\"scale=400; 4*a(1)\\\" | bc -l && sleep 10\",\"input\":\"\",\"files\":[]}";
1048 const size_t requestCount = 10;
1050 const unsigned int offsetTaskId = 500;
1051 std::vector<std::string> jsonList = {syncRequestJson, shortRequestJson, expiredRequestJson, longRequestJson};
1052 std::vector<std::pair<unsigned int, std::string> > tasks;
1053 unsigned int count = 0;
1054 while(count < requestCount)
1056 for (
size_t k=0;k<jsonList.size();++k)
1058 tasks.push_back(std::pair<unsigned int, std::string>(++count+offsetTaskId, jsonList[k]));
1059 if (count >= requestCount)
1064 for (
size_t i=0;i<requestCount;++i)
1071 Poco::Thread::sleep(5000);
1074 std::cout << std::string(80,
'=') <<
std::endl;
1092 std::cout << std::string(80,
'=') <<
std::endl;
1094 }
while (fObj.getAsyncTasksCount());
1104 fObj.setNodePort(
"NODE_PORT");
1105 fObj.setNodeName(
"NODE_NAME");
1106 const std::string requestJson =
"{\"session\":{\"type\":0,\"tmode\":2,\"cleanup\":0,\"time_max\":120000,\"port\":0,\"user\":\"\",\"password\":\"\",\"shell\":\"\",\"environment\":[]},\"command\":\"echo \\\"scale=40; 4*a(1)\\\" | bc -l && sleep 10 && ps xau\",\"input\":\"\",\"files\":[]}";
1110 const unsigned int requestCount = 5;
1111 const unsigned int startTaskId = 500;
1113 for (
unsigned int i=0;i<requestCount;++i)
1117 inputJsonMessage.
setRequestType(DRCETaskRequest::RequestType::rtSetTaskExecute);
1121 std::stringstream sourceJson;
1122 sourceJson << inputJsonMessage;
1124 ASSERT_FALSE(inputJsonMessage.isError()) <<
printError(inputJsonMessage);
1125 ASSERT_EQ(inputJsonMessage.getErrorCode(),
NO_ERROR);
1126 ASSERT_TRUE(inputJsonMessage.getErrorMsg().empty());
1128 std::string resultJson = fObj.Process(sourceJson.str());
1130 ASSERT_FALSE(fObj.isError()) <<
printError(fObj);
1131 ASSERT_EQ(fObj.getErrorCode(),
NO_ERROR);
1132 ASSERT_TRUE(fObj.getErrorMsg().empty());
1134 Poco::Thread::sleep(100);
1138 std::string currentTasksQueue = fObj.getCurrentTasksQueue();
1148 ASSERT_EQ(tasksQueue.
getItem(i).
id, (startTaskId+i));
1150 ASSERT_TRUE(tasksQueue.
getItem(i).
state==DRCETaskRequest::TaskState::SET_AS_NEW ||
1151 tasksQueue.
getItem(i).
state==DRCETaskRequest::TaskState::IN_PROGRESS ||
1152 tasksQueue.
getItem(i).
state==DRCETaskRequest::TaskState::FINISHED||
1153 tasksQueue.
getItem(i).
state==DRCETaskRequest::TaskState::CRASHED);
1154 ASSERT_EQ(tasksQueue.
getItem(i).
tmode, SessionOptions::ThreadMode::tmAsync);
1157 while (fObj.getAsyncTasksCount() || fObj.hasTask(startTaskId))
1159 Poco::Thread::sleep(5000);
1162 Poco::Thread::sleep(2000);
1164 currentTasksQueue = fObj.getCurrentTasksQueue();
1171 printSuccess(
"!!! Test Getting Current Tasks Queue");
1179 fObj.setNodePort(
"NODE_PORT");
1180 fObj.setNodeName(
"NODE_NAME");
1182 const std::string requestJson =
"{\"session\":{\"type\":0,\"cleanup\":0,\"tmode\":2,\"time_max\":40000,\"port\":0,\"user\":\"\",\"password\":\"\",\"shell\":\"\",\"environment\":[]},\"command\":\"sort\",\"input\":\"def\\nabc\\n123\\n\",\"files\":[]}";
1184 const unsigned int requestCount = 5;
1185 const unsigned int startTaskId = 700;
1187 for (
unsigned int i=0;i<requestCount;++i)
1191 inputJsonMessage.
setRequestType(DRCETaskRequest::RequestType::rtSetTaskExecute);
1195 std::stringstream sourceJson;
1196 sourceJson << inputJsonMessage;
1198 ASSERT_FALSE(inputJsonMessage.isError()) <<
printError(inputJsonMessage);
1199 ASSERT_EQ(inputJsonMessage.getErrorCode(),
NO_ERROR);
1200 ASSERT_TRUE(inputJsonMessage.getErrorMsg().empty());
1202 std::string resultJson = fObj.Process(sourceJson.str());
1204 ASSERT_FALSE(fObj.isError()) <<
printError(fObj);
1205 ASSERT_EQ(fObj.getErrorCode(),
NO_ERROR);
1206 ASSERT_TRUE(fObj.getErrorMsg().empty());
1209 while (fObj.getAsyncTasksCount())
1211 Poco::Thread::sleep(2000);
1213 Poco::Thread::sleep(2000);
1214 std::string listAllTasks = fObj.getListInfoAllTasks();
1227 std::vector<unsigned int> ids;
1228 for (
unsigned int i=0;i<requestCount;++i)
1229 ids.push_back(startTaskId+i);
1231 unsigned int found = 0;
1234 for (
unsigned int k=0;k<ids.size();++k)
1245 ASSERT_EQ(found, requestCount) <<
"Count found of tasks: " << found;
1247 for (
unsigned int i=0;i<ids.size();++i)
1250 ASSERT_EQ(res,
true) <<
"Task data not found" << ids[i];
1254 printSuccess(
"!!! Test Getting Current Tasks Queue");
1263 const std::string
commandLine =
"echo \"Hello\" && sleep 10 && ps xau && sleep 10 && ls -la";
1265 std::string sourceJson = DRCECleanupTest::getInputJson(requestId, threadMode, cleanupFlag, commandLine, 5000);
1269 std::string resultJson = fObj.
Process(sourceJson);
1274 printSuccess(
"DRCEFunctionalObject Process");
1283 ASSERT_TRUE(resultJsonMessage.
getErrorMsg().empty());
1284 printSuccess(
"DRCEOutputJsonMessage unserialize");
1286 if (threadMode==SessionOptions::ThreadMode::tmSync)
1313 printSuccess(
"!!! Test Task Request Expired Time for Sync mode");
1319 Poco::Thread::sleep(5000);
1324 ASSERT_EQ((cleanupFlag==SessionOptions::CleanupFlag::cfDelete), !dataFile.exists());
1326 if (dataFile.exists())
1336 ASSERT_EQ(resultDataItem.
getState(),
static_cast<unsigned int>(DRCETaskRequest::TaskState::TERMINATED_BY_TTL));
1350 ASSERT_TRUE(resultDataItem.
getSubtaskItem(0).
getState()==
static_cast<unsigned int>(DRCETaskRequest::TaskState::TERMINATED_BY_TTL))
1366 ASSERT_EQ(resultDataItem.
getSubtaskItem(1).
getState(),
static_cast<unsigned int>(DRCETaskRequest::TaskState::TERMINATED_BY_TTL))
1371 printSuccess(
"!!! Test Task Request Expired Time for Async mode");