!263 merge master into master

wukong二进制文件瘦身

Created-by: caixincen
Commit-by: caixincen
Merged-by: openharmony_ci
Description: ### 一、内容说明(相关的Issue)
		wukong二进制文件超基线,需要瘦身


### 二、建议测试周期和提测地址  
  建议测试完成时间:2026.5.20  
  投产上线时间:2026.5.27   

### 三、变更内容
  * 3.1 关联PR列表
		不涉及
  * 3.2 数据库和部署说明  
        不涉及
  * 3.4 其他技术优化内容(做了什么,变更了什么)
        不涉及
  * 3.5 废弃通知(什么字段、方法弃用?)
		不涉及
  * 3.6  后向不兼容变更(是否有无法向后兼容的变更?)
		
  
### 四、研发自测点(自测哪些?冒烟用例全部自测?)
    自测测试结论:
    自动化用例OK,实验室压测超2000小时,无工具本身的问题


### 五、测试关注点(需要提醒QA重点关注的、可能会忽略的地方)
  	关注是否有工具本身导致的crash等问题

See merge request: openharmony/ostest_wukong!263
This commit is contained in:
openharmony_ci
2026-05-26 21:04:57 +08:00
29 changed files with 82 additions and 136 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ import("//build/ohos.gni")
ability_runtime_root = "//foundation/ability/ability_runtime"
config("wukong_common_config") {
cflags = [ "-D__OHOS__" ]
cflags = [ "-D__OHOS__", "-Os", "-fno-rtti", "-fdata-sections", "-ffunction-sections", "-flto" ]
cflags_cc = [ "-fexceptions" ]
}
+13 -1
View File
@@ -18,7 +18,6 @@
#include "errors.h"
#include "wukong_logger.h"
#include "wukong_util.h"
namespace OHOS {
namespace WuKong {
@@ -26,6 +25,19 @@ const uint32_t INVALIDVALUE = 0xFFFFFFFF;
const uint32_t WAIT_TIME = 1000000;
const uint32_t THREE_SECOND = 3000000;
const uint32_t LOG_MAX_NUM = 500;
const int ONE_MINUTE = 60000;
const int ONE_HUNDRED_PERCENT = 100;
const int ROTATE = 114;
const uint32_t DECIMAL_LENGTH = 2;
const float PERCENTAGE = 100.0f;
const float SAMEPERCENT = 0.8f;
const int ONELAYER = 1;
const int ZEROLAYER = 0;
const float MINCOVERAGE = 0.9f;
const int TWOSECONDS = 2000000;
const int NUMBER_TWO = 2;
const int CHARGE_STRIDE = 11;
#define COMPONENT_LEFT_SWAP 0X10000000
#define PARAM_COUNT_TIME_ERROR "has set '-T', can not set '-T' and '-c' at the same time"
-1
View File
@@ -46,7 +46,6 @@ namespace WuKong {
enum SWIPE_DIRECTION { UP = 'u', DOWN = 'd', LEFT = 'l', RIGHT = 'r' };
enum MOUSE_ACTION_ENUM { CLICK = 'c', DOUBLE_CLICK = 'b', DRAG = 'g', MOVE = 'm' };
const int DIRECTION_LEN = 4;
const uint32_t CHARGE_STRIDE = 11;
const int STEP = 2;
class WuKongUtil : public DelayedSingleton<WuKongUtil> {
public:
-1
View File
@@ -26,7 +26,6 @@ const std::string permissionBundleName = "com.ohos.permissionmanager";
const int DIV = 2;
const int DOWNTIME = 10;
const int ONESECOND = 1000000;
const int TWOSECONDS = 2000000;
const int OFFSET = 10;
} // namespace
+1 -2
View File
@@ -53,7 +53,6 @@ namespace WuKong {
namespace {
const std::string DEFAULT_DIR = "/data/local/tmp/wukong/report/";
const uint32_t LAP_HEIGHT = 200;
const uint32_t CHARGE_STRIDE = 11;
const uint32_t BLANK_THR = 30;
const uint32_t WHITE_THR = 225;
int g_bwCount = 0;
@@ -708,7 +707,7 @@ bool WuKongUtil::DeleteFile(std::string targetDir)
if (realPathSource != nullptr) {
struct dirent *dp;
dirdp = opendir(targetDir.c_str());
while ((dp = readdir(dirdp)) != NULL) {
while ((dp = readdir(dirdp)) != nullptr) {
std::string currentFileName(dp->d_name);
std::string sourceFile = targetDir + currentFileName;
char *realFileSource = realpath(sourceFile.c_str(), filepathSource);
@@ -21,10 +21,6 @@
namespace OHOS {
namespace WuKong {
namespace {
const float SAMEPERCENT = 0.8;
const int ONELAYER = 1;
const int ZEROLAYER = 0;
const float MINCOVERAGE = 0.9;
uint8_t LISTITEM_COUNT = 0;
uint8_t GRID_COUNT = 0;
uint8_t NUMBER_ZERO = 0;
+5 -4
View File
@@ -21,7 +21,6 @@ namespace OHOS {
namespace WuKong {
namespace {
const int MAXINPUTNUM = 3;
const int ONEHUNDRED = 100;
const int NEWPERCENT = 75;
const int OLDPERCENT = 20;
} // namespace
@@ -35,7 +34,7 @@ NormalScene::~NormalScene()
ErrCode NormalScene::SetInputComponentList(std::vector<std::shared_ptr<ComponentTree>> &componentList)
{
ErrCode result = OHOS::ERR_OK;
int randomNumber = rand() % ONEHUNDRED;
int randomNumber = rand() % ONE_HUNDRED_PERCENT;
uint32_t count = 0;
DEBUG_LOG_STR("randomNumber: %d", randomNumber);
std::vector<uint32_t> indexList;
@@ -62,7 +61,8 @@ ErrCode NormalScene::SetInputComponentList(std::vector<std::shared_ptr<Component
}
}
if (count >= componentList.size()) {
if ((componentList.size() == 0) || (randomNumber < ONEHUNDRED && randomNumber >= (NEWPERCENT + OLDPERCENT))) {
if ((componentList.size() == 0) ||
(randomNumber < ONE_HUNDRED_PERCENT && randomNumber >= (NEWPERCENT + OLDPERCENT))) {
isBack_ = true;
} else {
SubtractComponent(componentList, indexList);
@@ -73,7 +73,8 @@ ErrCode NormalScene::SetInputComponentList(std::vector<std::shared_ptr<Component
TRACK_LOG_STR("componentList size: %d", componentList.size());
TRACK_LOG_STR("indexList size: %d", indexList.size());
SubtractComponent(componentList, indexList);
if ((componentList.size() == 0) || (randomNumber < ONEHUNDRED && randomNumber >= (NEWPERCENT + OLDPERCENT))) {
if ((componentList.size() == 0) ||
(randomNumber < ONE_HUNDRED_PERCENT && randomNumber >= (NEWPERCENT + OLDPERCENT))) {
isBack_ = true;
}
indexList.clear();
-4
View File
@@ -21,10 +21,6 @@
namespace OHOS {
namespace WuKong {
namespace {
const float SAMEPERCENT = 0.8;
const int ONELAYER = 1;
const int ZEROLAYER = 0;
const float MINCOVERAGE = 0.9;
uint8_t LISTITEM_COUNT = 0;
uint8_t GRID_COUNT = 0;
uint8_t NUMBER_ZERO = 0;
-1
View File
@@ -24,7 +24,6 @@
namespace OHOS {
namespace WuKong {
namespace {
const int TWOSECONDS = 2000000;
const int MAXRECURSION = 5000;
class ComponentManagerMonitor : public ComponentManagerListener {
void OnStatusUpdated(ComponentStatus status) override
-1
View File
@@ -54,7 +54,6 @@ enum InputType {
enum FingerNumber { F_ONE = 1, F_TWO, F_THREE, F_FOUR };
const std::string DIRECTION = "udlr";
const std::string MOUSE_ACTION_STR = "bcgm";
const int PERCENT_ONE_HUNDRED = 100;
enum CollapseStatus { C_EXPANDED = 1, C_HALF_FOLDED, C_FOLDED, C_UNKNOWN };
// 创建一个映射,将枚举值映射到字符串
const std::map<int, std::string> StatusToDesc = {
+1
View File
@@ -57,6 +57,7 @@ ErrCode AppswitchInput::OrderInput(const std::shared_ptr<SpcialTestObject>& spec
ErrCode result = AppManager::GetInstance()->StartAbilityByBundleInfo(abilityList[index], bundleList[index]);
// print the result of start event
PrintResultOfStartAbility(result, index);
Report::GetInstance()->SyncInputInfo(inputedMsgObject_);
usleep(WAIT_TIME);
return result;
}
+1
View File
@@ -46,6 +46,7 @@ ErrCode HardkeyInput::OrderInput(const std::shared_ptr<SpcialTestObject>& specia
util->runProcess(hCmds);
}
g_shouldWakeup = !g_shouldWakeup;
Report::GetInstance()->SyncInputInfo(inputedMsgObject_);
return OHOS::ERR_OK;
}
-1
View File
@@ -25,7 +25,6 @@ namespace OHOS {
namespace WuKong {
namespace {
const int SINGLE_CODE_PER = 30;
const int ONE_HUNDRED_PERCENT = 100;
const int DOWN_TIME = 100;
struct KeyCombination {
+1 -1
View File
@@ -51,7 +51,7 @@ ErrCode KnuckleInput::RandomInput()
static std::random_device rd;
static std::mt19937 gen(rd());
std::uniform_int_distribution<> dist1(1, ONE_HALF);
std::uniform_int_distribution<> dist2(0, PERCENT_ONE_HUNDRED - 1);
std::uniform_int_distribution<> dist2(0, ONE_HUNDRED_PERCENT - 1);
// 默认不带-f参数,随机生成单指或者多指事件
if (!this->enableFingerArg) {
+1 -2
View File
@@ -31,7 +31,6 @@ namespace WuKong {
namespace {
const int INTERVALTIME = 1000;
const int OPERATIONINTERVAL = 400;
const int NUMTWO = 2;
std::string g_defaultDir = "/data/local/tmp/wukong/record";
std::ofstream g_outFile;
int64_t g_timeTemp = -1;
@@ -120,7 +119,7 @@ ErrCode ReadEventLine(std::ifstream &inFile)
auto caseInfo = split(line, delim);
xPosi = std::stoi(caseInfo[0]);
yPosi = std::stoi(caseInfo[1]);
interval = std::stoi(caseInfo[NUMTWO]);
interval = std::stoi(caseInfo[NUMBER_TWO]);
INFO_LOG_STR("Position: (%d,%d) interval: %d", xPosi, yPosi, interval);
auto recordTouchInput = MultimodeManager::GetInstance();
result = recordTouchInput->PointerInput(xPosi, yPosi, MMI::PointerEvent::SOURCE_TYPE_TOUCHSCREEN,
+2 -1
View File
@@ -57,6 +57,7 @@ ErrCode SwapInput::OrderInput(const std::shared_ptr<SpcialTestObject> &specialTe
yDstPosition = swapPtr->startY_;
}
result = MultimodeManager::GetInstance()->IntervalSwap(xSrcPosition, ySrcPosition, xDstPosition, yDstPosition);
Report::GetInstance()->SyncInputInfo(inputedMsgObject_);
return result;
}
@@ -77,7 +78,7 @@ ErrCode SwapInput::RandomInput()
// 带-f,-D,-o参数的,根据配置的比例,随便选取滑动指数和方向、是否停顿
INFO_LOG("SwapInput::RandomInput(), start with param -f.");
srand(time(0));
int index = rand() % PERCENT_ONE_HUNDRED + 1;
int index = rand() % ONE_HUNDRED_PERCENT + 1;
int finger = fingerVector_[index];
// 如果没有指定方向,则从4个方向里随机取一个
SWIPE_DIRECTION randomDirection =
+1
View File
@@ -48,6 +48,7 @@ ErrCode TouchInput::OrderInput(const std::shared_ptr<SpcialTestObject>& specialT
}
result = multiinput->PointerInput(touchX, touchY, MMI::PointerEvent::SOURCE_TYPE_TOUCHSCREEN,
MMI::PointerEvent::POINTER_ACTION_UP);
Report::GetInstance()->SyncInputInfo(inputedMsgObject_);
INFO_LOG_STR("Touch: (%d, %d)", touchX, touchY);
return result;
}
+20 -34
View File
@@ -56,41 +56,27 @@ public:
}
std::string GetInputType()
{
std::string inputString = "";
static const std::map<InputType, std::string> inputTypeMap = {
{INPUTTYPE_TOUCHINPUT, "touch"},
{INPUTTYPE_SWAPINPUT, "swap"},
{INPUTTYPE_MOUSEINPUT, "mouse"},
{INPUTTYPE_KEYBOARDINPUT, "keyboard"},
{INPUTTYPE_APPSWITCHINPUT, "appswitch"},
{INPUTTYPE_HARDKEYINPUT, "hardkey"},
{INPUTTYPE_ROTATEINPUT, "rotate"},
{INPUTTYPE_KNUCKLEINPUT, "knuckle"},
{INPUTTYPE_PINCHINPUT, "pinch"},
{INPUTTYPE_CROWNINPUT, "watch_crown"},
{INPUTTYPE_IDLEINPUT, "watch_idle"},
{INPUTTYPE_GESTURESINPUT, "watch_gestures"},
{INPUTTYPE_KEYPRESSINPUT, "watch_keypress"},
{INPUTTYPE_FLOATSPLITINPUT, "floatOrsplit"},
{INPUTTYPE_COLLAPSEINPUT, "collapse"},
{INPUTTYPE_BROWSERINPUT, "browser"}
};
DEBUG_LOG_STR("inputType{%d}", inputType_);
switch (inputType_) {
case INPUTTYPE_TOUCHINPUT:
/* code */
inputString = "touch";
break;
case INPUTTYPE_SWAPINPUT:
/* code */
inputString = "swap";
break;
case INPUTTYPE_MOUSEINPUT:
/* code */
inputString = "mouse";
break;
case INPUTTYPE_KEYBOARDINPUT:
/* code */
inputString = "keyboard";
break;
case INPUTTYPE_APPSWITCHINPUT:
/* code */
inputString = "appswitch";
break;
case INPUTTYPE_HARDKEYINPUT:
/* code */
inputString = "hardkey";
break;
case INPUTTYPE_ROTATEINPUT:
/* code */
inputString = "rotate";
break;
default:
break;
}
return inputString;
auto it = inputTypeMap.find(inputType_);
return (it != inputTypeMap.end()) ? it->second : "";
}
virtual ~MultimodeInputMsg() = default;
InputType inputType_ = INPUTTYPE_INVALIDINPUT;
+1
View File
@@ -20,6 +20,7 @@
#include "statistics.h"
#include "wukong_define.h"
#include "wukong_util.h"
namespace OHOS {
namespace WuKong {
+24 -33
View File
@@ -17,43 +17,34 @@
namespace OHOS {
namespace WuKong {
namespace {
const std::map<InputType, std::string> INPUT_TYPE_STRING_MAP = {
{INPUTTYPE_TOUCHINPUT, "touch"},
{INPUTTYPE_SWAPINPUT, "swap"},
{INPUTTYPE_MOUSEINPUT, "mouse"},
{INPUTTYPE_KEYBOARDINPUT, "keyboard"},
{INPUTTYPE_APPSWITCHINPUT, "appswitch"},
{INPUTTYPE_HARDKEYINPUT, "hardkey"},
{INPUTTYPE_ROTATEINPUT, "rotate"},
{INPUTTYPE_KNUCKLEINPUT, "knuckle"},
{INPUTTYPE_PINCHINPUT, "pinch"},
{INPUTTYPE_CROWNINPUT, "watch_crown"},
{INPUTTYPE_IDLEINPUT, "watch_idle"},
{INPUTTYPE_GESTURESINPUT, "watch_gestures"},
{INPUTTYPE_KEYPRESSINPUT, "watch_keypress"},
{INPUTTYPE_FLOATSPLITINPUT, "floatOrsplit"},
{INPUTTYPE_COLLAPSEINPUT, "collapse"},
{INPUTTYPE_BROWSERINPUT, "browser"},
};
} // namespace
std::string InputInfo::InputTypeToString()
{
std::string inputString = "";
switch (inputType_) {
case INPUTTYPE_TOUCHINPUT:
/* code */
inputString = "touch";
break;
case INPUTTYPE_SWAPINPUT:
/* code */
inputString = "swap";
break;
case INPUTTYPE_MOUSEINPUT:
/* code */
inputString = "mouse";
break;
case INPUTTYPE_KEYBOARDINPUT:
/* code */
inputString = "keyboard";
break;
case INPUTTYPE_APPSWITCHINPUT:
/* code */
inputString = "appswitch";
break;
case INPUTTYPE_HARDKEYINPUT:
/* code */
inputString = "hardkey";
break;
case INPUTTYPE_ROTATEINPUT:
/* code */
inputString = "rotate";
break;
default:
break;
auto it = INPUT_TYPE_STRING_MAP.find(inputType_);
if (it != INPUT_TYPE_STRING_MAP.end()) {
return it->second;
}
return inputString;
return "";
}
} // namespace WuKong
} // namespace OHOS
+2 -2
View File
@@ -139,7 +139,7 @@ void Report::EnvInit()
}
while (dirp != nullptr) {
struct dirent *dp;
if ((dp = readdir(dirp)) == NULL) {
if ((dp = readdir(dirp)) == nullptr) {
break;
}
std::string currentStringName(dp->d_name);
@@ -476,7 +476,7 @@ void Report::HilogFileRecord()
ERROR_LOG_STR("dir{%s} opendir error", hilogDirs_.c_str());
return;
}
while ((dp = readdir(dirpHilog)) != NULL) {
while ((dp = readdir(dirpHilog)) != nullptr) {
std::string targetFile(dp->d_name);
if ((strcmp(dp->d_name, ".") != 0) && (strcmp(dp->d_name, "..") != 0)) {
std::vector<std::string>::iterator iterDir = find(hilogFiles_.begin(), hilogFiles_.end(), targetFile);
-5
View File
@@ -25,11 +25,6 @@
namespace OHOS {
namespace WuKong {
namespace {
const uint32_t DECIMAL_LENGTH = 2;
const float PERCENTAGE = 100.0;
}
void StatisticsAbility::StatisticsDetail(std::vector<std::map<std::string, std::string>> srcDatas,
std::map<std::string, std::shared_ptr<Table>> &destTables)
{
-5
View File
@@ -23,11 +23,6 @@
namespace OHOS {
namespace WuKong {
namespace {
const uint32_t DECIMAL_LENGTH = 2;
const float PERCENTAGE = 100.0;
} // namespace
void StatisticsComponment::StatisticsDetail(std::vector<std::map<std::string, std::string>> srcDatas,
std::map<std::string, std::shared_ptr<Table>> &destTables)
{
-5
View File
@@ -21,11 +21,6 @@
namespace OHOS {
namespace WuKong {
namespace {
const uint32_t DECIMAL_LENGTH = 2;
const float PERCENTAGE = 100.0;
} // namespace
void StatisticsEvent::StatisticsDetail(std::vector<std::map<std::string, std::string>> srcDatas,
std::map<std::string, std::shared_ptr<Table>> &destTables)
{
-4
View File
@@ -24,10 +24,6 @@
namespace OHOS {
namespace WuKong {
namespace {
const uint32_t DECIMAL_LENGTH = 2;
const float PERCENTAGE = 100.0;
} // namespace
void StatisticsException::StatisticsDetail(std::vector<std::map<std::string, std::string>> srcDatas,
std::map<std::string, std::shared_ptr<Table>> &destTables)
{
+6 -6
View File
@@ -34,8 +34,6 @@
using namespace OHOS::WuKong;
static const unsigned int NUMBER_TWO = 2;
static bool FreeSingtion()
{
AppManager::DestroyInstance();
@@ -91,7 +89,6 @@ static bool IsRunning(NamedSemaphore& sem)
{
bool result = false;
sem.Open();
// the wukong pidof buffer size.
const int bufferSize = 32;
int value = sem.GetValue();
TRACK_LOG_STR("Semaphore Is Open: (%d)", value);
@@ -127,7 +124,7 @@ static bool IsRunning(NamedSemaphore& sem)
return result;
}
int main(int argc, char* argv[])
int main(int argc, char *argv[])
{
if (!OHOS::system::GetBoolParameter("const.security.developermode.state", true)) {
std::cout << "Not a development mode state, please check device mode." << std::endl;
@@ -135,7 +132,10 @@ int main(int argc, char* argv[])
}
const uint64_t dataPathSize = OHOS::GetFolderSize(DATA_PATH);
const uint64_t wukongPathSize = OHOS::GetFolderSize(WUKONG_PATH);
HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::FILEMANAGEMENT, "USER_DATA_SIZE", OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC, "COMPONENT_NAME", "wukong","PARTITION_NAME",DATA_PATH,"REMAIN_PARTITION_SIZE",dataPathSize,"FILE_OR_FOLDER_PATH",WUKONG_PATH,"FILE_OR_FOLDER_SIZE",wukongPathSize);
HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::FILEMANAGEMENT,
"USER_DATA_SIZE", OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC, "COMPONENT_NAME",
"wukong", "PARTITION_NAME", DATA_PATH, "REMAIN_PARTITION_SIZE", dataPathSize,
"FILE_OR_FOLDER_PATH", WUKONG_PATH, "FILE_OR_FOLDER_SIZE", wukongPathSize);
std::shared_ptr<WuKongLogger> WuKonglogger = WuKongLogger::GetInstance();
// first start logger
WuKonglogger->SetLevel(LOG_LEVEL_INFO);
@@ -171,4 +171,4 @@ int main(int argc, char* argv[])
WuKonglogger->Stop();
std::cout << "exit main" << std::endl;
return 0;
}
}
+2 -7
View File
@@ -107,11 +107,6 @@ const map<int, InputType> OPTION_INPUT_PERCENT = {
{'r', INPUTTYPE_ROTATEINPUT} // input rotate event
};
const int ONE_HUNDRED_PERCENT = 100;
// one minute (ms)
const int ONE_MINUTE = 60000;
// rotate
const int ROTATE = 114;
bool g_commandSEEDENABLE = false;
bool g_commandHELPENABLE = false;
bool g_commandTIMEENABLE = false;
@@ -339,8 +334,8 @@ bool FocusTestFlow::SetBlockPage()
bool inputFlag = true;
char const *systemPath = "pages/system";
char const *passwordPath = "pages/biometricsandpassword";
if (strstr(path.c_str(), systemPath) != NULL ||
strstr(path.c_str(), passwordPath) != NULL) {
if (strstr(path.c_str(), systemPath) != nullptr ||
strstr(path.c_str(), passwordPath) != nullptr) {
inputFlag = false;
}
TRACK_LOG_STR("Componentpage path: (%s)", path.c_str());
-8
View File
@@ -155,11 +155,6 @@ const map<int, InputType> OPTION_INPUT_PERCENT = {
*/
std::vector<std::string> systemPaths;
const int ONE_HUNDRED_PERCENT = 100;
// one minute (ms)
const int ONE_MINUTE = 60000;
// rotate
const int ROTATE = 114;
bool g_commandSEEDENABLE = false;
bool g_commandHELPENABLE = false;
bool g_commandTIMEENABLE = false;
@@ -640,7 +635,6 @@ ErrCode RandomTestFlow::HandleUnknownOption(const char optopt)
{
ErrCode result = OHOS::ERR_OK;
if (NEED_ARG_OPTIONS.find(optopt) != std::string::npos) {
// error: option 'x' requires a value.
shellcommand_.ResultReceiverAppend("error: option '-");
shellcommand_.ResultReceiverAppend(string(1, optopt));
shellcommand_.ResultReceiverAppend("' requires a value.\n");
@@ -716,7 +710,6 @@ ErrCode RandomTestFlow::CheckArgumentOptionOfE()
ErrCode RandomTestFlow::CheckArgumentOptionOfc()
{
// check if the '-c' and 'T' is exist at the same time
if (g_commandTIMEENABLE == false) {
std::stringstream ss(optarg);
if (ss >> countArgs_) {
@@ -737,7 +730,6 @@ ErrCode RandomTestFlow::CheckArgumentOptionOfc()
ErrCode RandomTestFlow::CheckArgumentOptionOfT()
{
// check if the '-c' and 'T' is exist at the same time
if (g_commandCOUNTENABLE == false) {
std::stringstream ss(optarg);
if (ss >> totalTime_) {
-2
View File
@@ -62,7 +62,6 @@ const struct option LONG_OPTIONS[] = {
{"replay", required_argument, nullptr, 'R'}, // replay user operation
{"uitest", no_argument, nullptr, 'u'} // uitest dumpLayout
};
const int ONE_MINUTE = 60000;
bool g_commandSWAPENABLE = false;
bool g_commandHELPENABLE = false;
bool g_commandTIMEENABLE = false;
@@ -76,7 +75,6 @@ bool g_commandRECORDABLE = false;
bool g_commandREPLAYABLE = false;
bool g_commandUITEST = false;
const int NUMBER_TWO = 2;
} // namespace
using namespace std;