diff --git a/config.gradle b/config.gradle index f0867bb959..f3f81b0b37 100644 --- a/config.gradle +++ b/config.gradle @@ -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", diff --git a/core/function-impl/mogo-core-function-devatools/build.gradle b/core/function-impl/mogo-core-function-devatools/build.gradle index 276ae1e585..98bad0c717 100644 --- a/core/function-impl/mogo-core-function-devatools/build.gradle +++ b/core/function-impl/mogo-core-function-devatools/build.gradle @@ -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') diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index 2b3cfffca7..c1e8cb829f 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -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() { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt index c2fcbd8793..9b76d886ce 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/TraceManager.kt @@ -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) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/weaknetwork/DetectResultImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/weaknetwork/DetectResultImpl.kt new file mode 100644 index 0000000000..713d74975f --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/weaknetwork/DetectResultImpl.kt @@ -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) + } +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/weaknetwork/WeakNetworkStrategy.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/weaknetwork/WeakNetworkStrategy.kt new file mode 100644 index 0000000000..653969382f --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/weaknetwork/WeakNetworkStrategy.kt @@ -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) + } +} \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt index dff8f76de8..690def9139 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt @@ -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" diff --git a/gradle.properties b/gradle.properties index a2d250794e..19cac62742 100644 --- a/gradle.properties +++ b/gradle.properties @@ -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