Compare commits
1 Commits
v11.3.3
...
bsergean-p
Author | SHA1 | Date | |
---|---|---|---|
5698ed879f |
@ -14,27 +14,14 @@ namespace ix
|
||||
uint32_t maxWaitBetweenReconnectionRetries,
|
||||
uint32_t minWaitBetweenReconnectionRetries)
|
||||
{
|
||||
// It's easy with a power function to go beyond 2^32, and then
|
||||
// have unexpected results, so prepare for that
|
||||
const uint32_t maxRetryCountWithoutOverflow = 26;
|
||||
|
||||
uint32_t waitTime = 0;
|
||||
if (retryCount < maxRetryCountWithoutOverflow)
|
||||
{
|
||||
waitTime = std::pow(2, retryCount) * 100;
|
||||
}
|
||||
uint32_t waitTime = (retryCount < 26) ? (std::pow(2, retryCount) * 100) : 0;
|
||||
|
||||
if (waitTime < minWaitBetweenReconnectionRetries)
|
||||
{
|
||||
waitTime = minWaitBetweenReconnectionRetries;
|
||||
}
|
||||
|
||||
if (waitTime > maxWaitBetweenReconnectionRetries)
|
||||
{
|
||||
waitTime = maxWaitBetweenReconnectionRetries;
|
||||
}
|
||||
|
||||
if (retryCount >= maxRetryCountWithoutOverflow)
|
||||
if (waitTime > maxWaitBetweenReconnectionRetries || waitTime == 0)
|
||||
{
|
||||
waitTime = maxWaitBetweenReconnectionRetries;
|
||||
}
|
||||
|
@ -23,7 +23,6 @@ set (TEST_TARGET_NAMES
|
||||
IXWebSocketSubProtocolTest
|
||||
# IXWebSocketBroadcastTest ## FIXME was depending on cobra / take a broadcast server from ws
|
||||
IXStrCaseCompareTest
|
||||
IXExponentialBackoffTest
|
||||
)
|
||||
|
||||
# Some unittest don't work on windows yet
|
||||
|
@ -1,39 +0,0 @@
|
||||
/*
|
||||
* IXExponentialBackoffTest.cpp
|
||||
* Author: Benjamin Sergeant
|
||||
* Copyright (c) 2022 Machine Zone. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "IXTest.h"
|
||||
#include "catch.hpp"
|
||||
#include <iostream>
|
||||
#include <ixwebsocket/IXExponentialBackoff.h>
|
||||
#include <string.h>
|
||||
|
||||
using namespace ix;
|
||||
|
||||
namespace ix
|
||||
{
|
||||
TEST_CASE("exponential_backoff", "[exponential_backoff]")
|
||||
{
|
||||
SECTION("1")
|
||||
{
|
||||
// First parameter is retrycount
|
||||
REQUIRE(calculateRetryWaitMilliseconds(0, 10000, 100) == 100);
|
||||
REQUIRE(calculateRetryWaitMilliseconds(1, 10000, 100) == 200);
|
||||
REQUIRE(calculateRetryWaitMilliseconds(2, 10000, 100) == 400);
|
||||
REQUIRE(calculateRetryWaitMilliseconds(3, 10000, 100) == 800);
|
||||
REQUIRE(calculateRetryWaitMilliseconds(4, 10000, 100) == 1600);
|
||||
REQUIRE(calculateRetryWaitMilliseconds(5, 10000, 100) == 3200);
|
||||
REQUIRE(calculateRetryWaitMilliseconds(6, 10000, 100) == 6400);
|
||||
REQUIRE(calculateRetryWaitMilliseconds(20, 10000, 100) == 10000);
|
||||
REQUIRE(calculateRetryWaitMilliseconds(25, 10000, 100) == 10000);
|
||||
|
||||
// Things get special after 26 retries
|
||||
REQUIRE(calculateRetryWaitMilliseconds(26, 10000, 100) == 10000);
|
||||
REQUIRE(calculateRetryWaitMilliseconds(27, 10000, 100) == 10000);
|
||||
REQUIRE(calculateRetryWaitMilliseconds(27, 10000, 100) == 10000);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace ix
|
Reference in New Issue
Block a user