[3.3.0][Opt]新增弱网监测功能

This commit is contained in:
chenfufeng
2023-06-12 16:52:44 +08:00
parent 6488716ac3
commit 59dd44a14b
8 changed files with 146 additions and 10 deletions

View File

@@ -214,7 +214,9 @@ ext {
//========================= autosize ======================
androidautoSize : 'com.github.JessYanCoding:AndroidAutoSize:v1.2.1',
thread_opt : "com.mogo.thread.opt:lib:${plugin_version}"
thread_opt : "com.mogo.thread.opt:lib:${plugin_version}",
weak_network : "com.mogo.weak:network:1.0.0"
]
android = [
launcherApplicationId : "com.mogo.launcher",

View File

@@ -94,6 +94,7 @@ dependencies {
implementation group: "com.tencent.matrix", name: "matrix-trace-canary", version: MATRIX_VERSION, changing: true
implementation group: "com.tencent.matrix", name: "matrix-io-canary", version: MATRIX_VERSION, changing: true
implementation group: "com.tencent.matrix", name: "matrix-hooks", version: MATRIX_VERSION, changing: true
implementation rootProject.ext.dependencies.weak_network
implementation project(':foudations:mogo-commons')
implementation project(':core:mogo-core-utils')

View File

@@ -33,6 +33,7 @@ import com.tencent.matrix.trace.config.SharePluginInfo
import com.tencent.matrix.trace.config.TraceConfig
import com.zhjt.mogo_core_function_devatools.apm.*
import com.mogo.eagle.core.function.api.upgrade.*
import com.mogo.weak.network.SdtManager
import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager
import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig
import com.zhjt.mogo_core_function_devatools.binding.*
@@ -53,6 +54,8 @@ import com.zhjt.mogo_core_function_devatools.strict.*
import com.zhjt.mogo_core_function_devatools.trace.TraceManager.Companion.traceManager
import com.zhjt.mogo_core_function_devatools.tts.TtsManager.Companion.ttsManager
import com.zhjt.mogo_core_function_devatools.upgrade.UpgradeManager.Companion.upgradeManager
import com.zhjt.mogo_core_function_devatools.weaknetwork.DetectResultImpl
import com.zhjt.mogo_core_function_devatools.weaknetwork.WeakNetworkStrategy
import com.zhjt.service.chain.ChainLog
import com.zhjt.service.chain.TracingConstants.Endpoint.Companion.PAD
@@ -97,6 +100,11 @@ class DevaToolsProvider : IDevaToolsProvider {
BindingCarManager.init(mContext!!)
apmEnvProvider.init(if(DebugConfig.isDebug()) "0" else "1", "${ DebugConfig.getNetMode() }", mDockerVersion ?: "")
BadCaseManager.init()
if (DebugConfig.isDebug()) {
SdtManager.init(mContext!!, true, DetectResultImpl())
// 监听弱网
WeakNetworkStrategy.startListen()
}
}
override fun checkMonitorDb() {

View File

@@ -73,6 +73,8 @@ class TraceManager : IMoGoCloudListener, IMoGoAutopilotCarConfigListener {
FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_CLOUD_WEB_SOCKET_V2N)
fwBuildMap[ChainConstant.CHAIN_LINK_LOG_HD_MAP] =
FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_HD_MAP_BIZ)
fwBuildMap[ChainConstant.CHAIN_LINK_LOG_WEAK_NETWORK] =
FwBuild(true, -1, pkgName + ChainConstant.CHAIN_LINK_LOG_RECORD_WEAK_NETWORK)
traceInfoCache[ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS] =
@@ -101,6 +103,8 @@ class TraceManager : IMoGoCloudListener, IMoGoAutopilotCarConfigListener {
ChainLogParam(true, "Cloud WebSocket V2N")
traceInfoCache[ChainConstant.CHAIN_LINK_LOG_HD_MAP] =
ChainLogParam(true, "HD Map Caller")
traceInfoCache[ChainConstant.CHAIN_LINK_LOG_WEAK_NETWORK] =
ChainLogParam(true, "WeakNetWork Record")
FileWriteManager.getInstance()
.init(context, MoGoAiCloudClientConfig.getInstance().sn, pkgName, fwBuildMap)

View File

@@ -0,0 +1,30 @@
package com.zhjt.mogo_core_function_devatools.weaknetwork
import android.util.Log
import com.mogo.eagle.core.data.deva.chain.ChainConstant
import com.mogo.weak.network.StubImpl
import com.zhjt.service.chain.ChainLog
import com.zhjt.service.chain.TracingConstants
class DetectResultImpl: StubImpl.ReportDetectResultListener {
companion object {
private const val TAG = "DetectResultImpl"
}
override fun onDetectResult(resultsJson: String?) {
resultsJson?.let { invokeWeakResult(it) }
}
@ChainLog(
linkChainLog = ChainConstant.CHAIN_LINK_LOG_WEAK_NETWORK,
linkCode = ChainConstant.CHAIN_LINK_WEAK_NETWORK,
endpoint = TracingConstants.Endpoint.PAD,
nodeAliasCode = ChainConstant.CHAIN_ALIAS_CODE_RECORD_WEAK_NETWORK,
paramIndexes = [0],
clientPkFileName = "sn"
)
private fun invokeWeakResult(jsonStr: String) {
Log.d(TAG, jsonStr)
}
}

View File

@@ -0,0 +1,86 @@
package com.zhjt.mogo_core_function_devatools.weaknetwork
import android.util.Log
import com.mogo.cloud.network.WeakNetworkManager
import com.mogo.cloud.network.WeakNetworkManager.setListener
import com.mogo.eagle.core.data.deva.chain.ChainConstant
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.weak.network.SdtManager
import com.zhjt.service.chain.ChainLog
import com.zhjt.service.chain.TracingConstants
import java.util.concurrent.locks.ReentrantReadWriteLock
object WeakNetworkStrategy {
private const val TAG = "WeakNetworkStrategy"
// 记录到链路日志中的时间间隔
private const val OUTPUT_TIME_INTERVAL = 15000
private var lastOutputTime = 0L
private val lock by lazy {
ReentrantReadWriteLock()
}
private val writeLock by lazy {
lock.writeLock()
}
private val readLock by lazy {
lock.readLock()
}
fun startListen() {
setListener(object : WeakNetworkManager.OnWeakHttpListener {
override fun onHttpRttReceived(hashCode: Int, url: String, timeStamp: Long) {
outputLog(url, timeStamp)
}
override fun onFailEvent(hashCode: Int, url: String, timeStamp: Long, currentFailCount: Long) {
outputLog(url, timeStamp, true)
}
override fun onWeakNetworkEvent() {
// // 大而全接口干扰,需排除掉
// Log.d(TAG, "收到弱网事件!")
}
})
}
fun stopListen() {
setListener(null)
}
private fun outputLog(url: String, timeStamp: Long, isFail: Boolean = false) {
ThreadUtils.getIoPool().submit {
writeLock.lock()
try {
val currentTime = System.currentTimeMillis()
if (currentTime - lastOutputTime > OUTPUT_TIME_INTERVAL) {
invokeWeakResult("url为:$url, 耗时为:$timeStamp${if (isFail) " 连接失败!" else ""}")
SdtManager.startActiveCheck()
lastOutputTime = currentTime
}
} catch (e: Exception) {
Log.e(TAG, "out put exception:${e.message}")
} finally {
writeLock.unlock()
}
}
}
@ChainLog(
linkChainLog = ChainConstant.CHAIN_LINK_LOG_WEAK_NETWORK,
linkCode = ChainConstant.CHAIN_LINK_WEAK_NETWORK,
endpoint = TracingConstants.Endpoint.PAD,
nodeAliasCode = ChainConstant.CHAIN_ALIAS_CODE_RECORD_WEAK_NETWORK,
paramIndexes = [0],
clientPkFileName = "sn"
)
private fun invokeWeakResult(jsonStr: String) {
Log.d(TAG, jsonStr)
}
}

View File

@@ -16,6 +16,8 @@ class ChainConstant {
const val CHAIN_LINK_LEAK = 10
// ANR
const val CHAIN_LINK_ANR = 11
// 弱网监测
const val CHAIN_LINK_WEAK_NETWORK = 12
const val CHAIN_LINK_LOG_CONNECT_STATUS = 0
const val CHAIN_LINK_LOG_WEB_SOCKET_GNSSINFO = 1
@@ -30,6 +32,7 @@ class ChainConstant {
const val CHAIN_LINK_LOG_CLOUD_V2N = 200
const val CHAIN_LINK_LOG_HD_MAP = 300
const val CHAIN_LINK_LOG_ANR = 400
const val CHAIN_LINK_LOG_WEAK_NETWORK = 500
const val CHAIN_LINK_LOG_ADAS_INIT = "-eagleInitStatus"
const val CHAIN_LINK_LOG_ADAS_GNSS = "-adasWsGnssInfo"
@@ -44,6 +47,7 @@ class ChainConstant {
const val CHAIN_LINK_LOG_CLOUD_WEB_SOCKET_V2N = "-eagleCloudWSV2N"
const val CHAIN_LINK_LOG_HD_MAP_BIZ = "-eagleHDMapBiz"
const val CHAIN_LINK_LOG_RECORD_ANR = "-eagleRecordANR"
const val CHAIN_LINK_LOG_RECORD_WEAK_NETWORK = "-eagleRecordWeakNetwork"
const val CHAIN_ALIAS_CODE_MULTI_CONNECT = "CHAIN_ALIAS_CODE_MULTI_CONNECT"
const val CHAIN_ALIAS_CODE_ADAS_MESSAGE_CAR_CONFIG = "CHAIN_ALIAS_CODE_CAR_CONFIG"
@@ -64,6 +68,7 @@ class ChainConstant {
const val CHAIN_ALIAS_CODE_RECORD_NATIVE_LEAK = "CHAIN_ALIAS_CODE_RECORD_NATIVE_LEAK"
const val CHAIN_ALIAS_CODE_RECORD_ANR = "CHAIN_ALIAS_CODE_RECORD_ANR"
const val CHAIN_ALIAS_CODE_RECORD_WEAK_NETWORK = "CHAIN_ALIAS_CODE_RECORD_WEAK_NETWORK"
const val CHAIN_ALIAS_CODE_HD_MAP_CALL = "CHAIN_ALIAS_CODE_HD_MAP_CALL"
const val CHAIN_ALIAS_CODE_HD_MAP_BIZ = "CHAIN_ALIAS_CODE_HD_MAP_BIZ"

View File

@@ -66,23 +66,23 @@ SERVICE_BIZ_VERSION=1.2.4
LOGLIB_VERSION=1.5.27
######## MogoAiCloudSDK Version ########
# 网络请求LOGLIB_VERSION
MOGO_NETWORK_VERSION=1.4.7.4
MOGO_NETWORK_VERSION=1.4.7.9
# 鉴权
MOGO_PASSPORT_VERSION=1.4.7.4
MOGO_PASSPORT_VERSION=1.4.7.9
# 常链接
MOGO_SOCKET_VERSION=1.4.7.4
MOGO_SOCKET_VERSION=1.4.7.9
# 数据采集
MOGO_REALTIME_VERSION=1.4.7.4
MOGO_REALTIME_VERSION=1.4.7.9
# 探路,道路事件发布,获取
MOGO_TANLU_VERSION=1.4.7.4
MOGO_TANLU_VERSION=1.4.7.9
# 直播推流
MOGO_LIVE_VERSION=1.4.7.4
MOGO_LIVE_VERSION=1.4.7.9
# 直播拉流
MOGO_TRAFFICLIVE_VERSION=1.4.7.4
MOGO_TRAFFICLIVE_VERSION=1.4.7.9
# 定位服务
MOGO_LOCATION_VERSION=1.4.7.4
MOGO_LOCATION_VERSION=1.4.7.9
# 远程通讯模块
MOGO_TELEMATIC_VERSION=1.4.7.4
MOGO_TELEMATIC_VERSION=1.4.7.9
######## MogoAiCloudSDK Version ########
# 自研地图
MAP_SDK_VERSION=2.13.1.5