Move RECONNECT_DELAY to AbstractKeepAliveNetworkHandlerSelector and set it to 0 in tests

This commit is contained in:
Him188 2021-06-16 19:47:37 +08:00
parent cde13062d9
commit 5efced6167
5 changed files with 40 additions and 13 deletions

View File

@ -102,7 +102,7 @@ internal abstract class AbstractKeepAliveNetworkHandlerSelector<H : NetworkHandl
exceptionCollector.collectException(lastFailure) exceptionCollector.collectException(lastFailure)
} }
if (attempted > 1) { if (attempted > 1) {
delay(3000) // make it slower to avoid massive reconnection on network failure. delay(RECONNECT_DELAY) // make it slower to avoid massive reconnection on network failure.
} }
attempted += 1 attempted += 1
runImpl() // will create new instance (see the `else` branch). runImpl() // will create new instance (see the `else` branch).
@ -138,6 +138,12 @@ internal abstract class AbstractKeepAliveNetworkHandlerSelector<H : NetworkHandl
var DEFAULT_MAX_ATTEMPTS = var DEFAULT_MAX_ATTEMPTS =
systemProp("mirai.network.handler.selector.max.attempts", Long.MAX_VALUE) systemProp("mirai.network.handler.selector.max.attempts", Long.MAX_VALUE)
.coerceIn(1..Int.MAX_VALUE.toLongUnsigned()).toInt() .coerceIn(1..Int.MAX_VALUE.toLongUnsigned()).toInt()
/**
* millis
*/
@JvmField
var RECONNECT_DELAY = systemProp("mirai.network.reconnect.delay", 3000)
} }
} }

View File

@ -402,12 +402,4 @@ internal open class NettyNetworkHandler(
} }
override fun initialState(): BaseStateImpl = StateInitialized() override fun initialState(): BaseStateImpl = StateInitialized()
companion object {
/**
* millis
*/
@JvmField
var RECONNECT_DELAY = systemProp("mirai.network.reconnect.delay", 5000)
}
} }

View File

@ -21,7 +21,6 @@ import net.mamoe.mirai.internal.network.handler.NetworkHandler
import net.mamoe.mirai.internal.network.handler.state.LoggingStateObserver import net.mamoe.mirai.internal.network.handler.state.LoggingStateObserver
import net.mamoe.mirai.internal.network.handler.state.SafeStateObserver import net.mamoe.mirai.internal.network.handler.state.SafeStateObserver
import net.mamoe.mirai.internal.network.handler.state.StateObserver import net.mamoe.mirai.internal.network.handler.state.StateObserver
import net.mamoe.mirai.internal.test.AbstractTest
import net.mamoe.mirai.internal.utils.subLogger import net.mamoe.mirai.internal.utils.subLogger
import net.mamoe.mirai.utils.MiraiLogger import net.mamoe.mirai.utils.MiraiLogger
import network.framework.components.TestEventDispatcherImpl import network.framework.components.TestEventDispatcherImpl
@ -29,7 +28,7 @@ import org.junit.jupiter.api.TestInstance
import kotlin.test.assertEquals import kotlin.test.assertEquals
@TestInstance(TestInstance.Lifecycle.PER_METHOD) @TestInstance(TestInstance.Lifecycle.PER_METHOD)
internal abstract class AbstractMockNetworkHandlerTest : AbstractTest() { internal abstract class AbstractMockNetworkHandlerTest : AbstractNetworkHandlerTest() {
protected open fun createNetworkHandlerContext() = TestNetworkHandlerContext(bot, logger, components) protected open fun createNetworkHandlerContext() = TestNetworkHandlerContext(bot, logger, components)
protected open fun createNetworkHandler() = TestNetworkHandler(bot, createNetworkHandlerContext()) protected open fun createNetworkHandler() = TestNetworkHandler(bot, createNetworkHandlerContext())

View File

@ -0,0 +1,31 @@
/*
* Copyright 2019-2021 Mamoe Technologies and contributors.
*
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
*
* https://github.com/mamoe/mirai/blob/master/LICENSE
*/
package net.mamoe.mirai.internal.network.framework
import net.mamoe.mirai.internal.network.handler.selector.AbstractKeepAliveNetworkHandlerSelector
import net.mamoe.mirai.internal.test.AbstractTest
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.BeforeEach
internal sealed class AbstractNetworkHandlerTest : AbstractTest() {
///////////////////////////////////////////////////////////////////////////
// Defaults
///////////////////////////////////////////////////////////////////////////
@BeforeEach
fun be() {
AbstractKeepAliveNetworkHandlerSelector.RECONNECT_DELAY = 0
}
@AfterEach
fun af() {
AbstractKeepAliveNetworkHandlerSelector.RECONNECT_DELAY = 3000
}
}

View File

@ -26,7 +26,6 @@ import net.mamoe.mirai.internal.network.handler.NetworkHandlerContextImpl
import net.mamoe.mirai.internal.network.handler.NetworkHandlerFactory import net.mamoe.mirai.internal.network.handler.NetworkHandlerFactory
import net.mamoe.mirai.internal.network.protocol.data.jce.SvcRespRegister import net.mamoe.mirai.internal.network.protocol.data.jce.SvcRespRegister
import net.mamoe.mirai.internal.network.protocol.packet.login.StatSvc import net.mamoe.mirai.internal.network.protocol.packet.login.StatSvc
import net.mamoe.mirai.internal.test.AbstractTest
import net.mamoe.mirai.internal.utils.subLogger import net.mamoe.mirai.internal.utils.subLogger
import net.mamoe.mirai.utils.MiraiLogger import net.mamoe.mirai.utils.MiraiLogger
import net.mamoe.mirai.utils.debug import net.mamoe.mirai.utils.debug
@ -41,7 +40,7 @@ import kotlin.test.assertEquals
* With real factory and components as in [QQAndroidBot.components]. * With real factory and components as in [QQAndroidBot.components].
*/ */
@TestInstance(TestInstance.Lifecycle.PER_METHOD) @TestInstance(TestInstance.Lifecycle.PER_METHOD)
internal abstract class AbstractRealNetworkHandlerTest<H : NetworkHandler> : AbstractTest() { internal abstract class AbstractRealNetworkHandlerTest<H : NetworkHandler> : AbstractNetworkHandlerTest() {
abstract val factory: NetworkHandlerFactory<H> abstract val factory: NetworkHandlerFactory<H>
abstract val network: NetworkHandler abstract val network: NetworkHandler