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)
}
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
runImpl() // will create new instance (see the `else` branch).
@ -138,6 +138,12 @@ internal abstract class AbstractKeepAliveNetworkHandlerSelector<H : NetworkHandl
var DEFAULT_MAX_ATTEMPTS =
systemProp("mirai.network.handler.selector.max.attempts", Long.MAX_VALUE)
.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()
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.SafeStateObserver
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.utils.MiraiLogger
import network.framework.components.TestEventDispatcherImpl
@ -29,7 +28,7 @@ import org.junit.jupiter.api.TestInstance
import kotlin.test.assertEquals
@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 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.protocol.data.jce.SvcRespRegister
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.utils.MiraiLogger
import net.mamoe.mirai.utils.debug
@ -41,7 +40,7 @@ import kotlin.test.assertEquals
* With real factory and components as in [QQAndroidBot.components].
*/
@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 network: NetworkHandler