소스 검색

#IQRV #comment 添加安装耗时的记录

gifur 3 년 전
부모
커밋
c7fe3353f1
3개의 변경된 파일63개의 추가작업 그리고 3개의 파일을 삭제
  1. 10 3
      Module/mod_healthmanager/HealthManagerFSM.cpp
  2. 45 0
      Module/mod_healthmanager/mod_healthmanager.cpp
  3. 8 0
      Module/mod_healthmanager/mod_healthmanager.h

+ 10 - 3
Module/mod_healthmanager/HealthManagerFSM.cpp

@@ -2412,7 +2412,7 @@ void CHealthManagerFSM::ToLogWarnTermAboutInfo(BOOL bSuccessFlag)
 
     CSmartPointer<IConfigInfo> pConfig;
 	GetEntityBase()->GetFunction()->OpenConfig(Config_Cache, pConfig);
-    int stepStatus(0), curStep(0), lastRecordTime(0);
+    int stepStatus(0), curStep(0), lastRecordTime(0), beginInstallRecordTime(0);
 	CSimpleStringA strInstallVersion(true);
     CSimpleStringA strAdditonalMsg(true);
     pConfig->ReadConfigValueInt("TerminalDeploy", "CurrStep", curStep);
@@ -2424,10 +2424,16 @@ void CHealthManagerFSM::ToLogWarnTermAboutInfo(BOOL bSuccessFlag)
         pConfig->ReadConfigValueInt("TerminalDeploy", "TimeStamp", lastRecordTime);
 		pConfig->ReadConfigValue("TerminalDeploy", "InstallVersion", strInstallVersion);
         pConfig->ReadConfigValue("TerminalDeploy", "LastInfo", strAdditonalMsg);
+		pConfig->ReadConfigValueInt("TerminalDeploy", "StartTimeStamp", beginInstallRecordTime);
+
+		const DWORD consumeTick = lastRecordTime - beginInstallRecordTime;
 
         LogWarn(Severity_High, Error_Debug, LOG_WARN_HEALTH_INSTALL_TIMESTAMP, 
-				CSimpleString::Format("[{\"timeStamp\":\"%s\",\"step\":%d,\"state\":%d, \"version\":\"%s\", \"msg\":\"%s\"}]", 
-									  CSmallDateTime(lastRecordTime).ToTimeString().GetData(), curStep, stepStatus
+				CSimpleString::Format("{\"begin\":\"%s\",\"finished\":\"%s\", \"consume\":\"%s\", \"step\":%d,\"state\":%d, \"version\":\"%s\", \"msg\":\"%s\"}", 
+                                      CSmallDateTime(beginInstallRecordTime).ToTimeString().GetData(),
+									  CSmallDateTime(lastRecordTime).ToTimeString().GetData(), 
+                                      CSmallDateTime(consumeTick).ToTimeString().GetData(),
+									  curStep, stepStatus
 									  , strInstallVersion.GetData(), strAdditonalMsg.GetData()));
 
         pConfig->WriteConfigValueInt("TerminalDeploy", "CurrStep", DeployStep_Begin);
@@ -2436,6 +2442,7 @@ void CHealthManagerFSM::ToLogWarnTermAboutInfo(BOOL bSuccessFlag)
 		if (!strAdditonalMsg.IsNullOrEmpty()) {
             pConfig->WriteConfigValue("TerminalDeploy", "LastInfo", NULL);
 		}
+        pConfig->WriteConfigValue("TerminalDeploy", "StartTimeStamp", NULL);
     }
 }
 

+ 45 - 0
Module/mod_healthmanager/mod_healthmanager.cpp

@@ -2427,6 +2427,41 @@ ErrorCodeEnum CHealthManagerEntity::GetTmpRootFilePath(CSimpleStringA& rootPath,
 	return ec;
 }
 
+void CHealthManagerEntity::RecordInstallBeginTimeStamp(const CSimpleString& strTimeStamp, BOOL forceReset)
+{
+    if (!forceReset) {
+        CSimpleStringA strReserved(true);
+        const ErrorCodeEnum rc = GetInstallBeginTimeStamp(strReserved);
+		if (!strReserved.IsNullOrEmpty()) {
+			return;
+		}
+    }
+
+    CSmartPointer<IConfigInfo> pConfig;
+    GetFunction()->OpenConfig(Config_Cache, pConfig);
+
+	if (strTimeStamp.IsNullOrEmpty()) {
+        pConfig->WriteConfigValue("TerminalDeploy", "StartTimeStamp", CSimpleStringA::Format("0x%08X", (DWORD)CSmallDateTime::GetNow()));
+	} else {
+        pConfig->WriteConfigValue("TerminalDeploy", "StartTimeStamp", strTimeStamp);
+	}
+}
+
+ErrorCodeEnum CHealthManagerEntity::GetInstallBeginTimeStamp(CSimpleString& strTimeStamp)
+{
+    CSmartPointer<IConfigInfo> pConfig;
+    GetFunction()->OpenConfig(Config_Cache, pConfig);
+	CSimpleStringA strValue(true);
+	pConfig->ReadConfigValue("TerminalDeploy", "StartTimeStamp", strValue);
+	if (strValue.IsNullOrEmpty()) {
+		return Error_DataCheck;
+	}
+
+	strTimeStamp = strValue;
+	return Error_Succeed;
+
+}
+
 ErrorCodeEnum CHealthManagerEntity::GetGuidePageUrlWithStep(int whichStep, CSimpleStringA& strUrl)
 {
 	strUrl.Clear();
@@ -2708,6 +2743,10 @@ void CHealthManagerEntity::DeployTerminal(SpReqAnsContext<HealthManagerService_D
 				}
 			}
 
+			/*读取第一启动的时间戳,有用*/
+			CSimpleStringA strBeginTimeReserved(true);
+			GetInstallBeginTimeStamp(strBeginTimeReserved);
+
 			CSimpleStringA strCachePath;
             CSimpleStringA strRootTmpFile;
             CSimpleStringA strRootIniFullPath;
@@ -2740,6 +2779,12 @@ void CHealthManagerEntity::DeployTerminal(SpReqAnsContext<HealthManagerService_D
 				fileutil_delete_file(strRootIniFullPath);
 			}
             LogWarn(Severity_High, Error_Debug, LOG_WARN_HEALTH_INSTALL_RESET, "user requires installation reset!");
+
+			/** 将首次安装的时间写进去*/
+			if (!strBeginTimeReserved.IsNullOrEmpty()) {
+				RecordInstallBeginTimeStamp(strBeginTimeReserved);
+			}
+
 		} else {
 			result = Error_NotImpl;
 		}

+ 8 - 0
Module/mod_healthmanager/mod_healthmanager.h

@@ -126,6 +126,10 @@ public:
 		int curStep(0);
 		bool isNeedConfig = IsNotConfigMode(curStep);
 		if (isNeedConfig) {
+			if (curStep == -1) { /** 无root.ini [Gifur@2022422]*/
+				CSimpleStringA strNow(true);
+				RecordInstallBeginTimeStamp(strNow);
+			}
             m_fsm.SetConfigMode(true);
 		} else {
 			DoRestart();
@@ -318,6 +322,10 @@ private:
 	bool IsTestMode();
 
 	ErrorCodeEnum GetTmpRootFilePath(CSimpleStringA& rootPath, CSimpleStringA& rootTmpPath, CSimpleStringA& rootBackPath);
+
+	void RecordInstallBeginTimeStamp(const CSimpleString& strTimeStamp, BOOL forceReset = FALSE);
+    ErrorCodeEnum GetInstallBeginTimeStamp(CSimpleString& strTimeStamp);
+
 	ErrorCodeEnum GetGuidePageUrlWithStep(int whichStep, CSimpleStringA& strUrl);
 
 	ErrorCodeEnum TellChromiumOpenGuidePage(const CSimpleStringA& pageUrl);