218 lines
No EOL
11 KiB
C++
218 lines
No EOL
11 KiB
C++
////////////////////////////////////////////////////////////////////////////////
|
|
// (c) Copyright, Ubisoft Entertainment Inc. || Created by Harbour //
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
#include "tests/config.h"
|
|
#if defined(US_SDK_S2S)
|
|
#error This file shall not be part of the solution
|
|
#endif
|
|
#include "tests/fixture/paramFixture.h"
|
|
#include "tests/mock/parametersMockHelper.h"
|
|
#include <ubiservices/core/debug/assert.h>
|
|
#include <ubiservices/services/parameters/parametersInfo.h>
|
|
|
|
namespace US_NS {;
|
|
US_DEFINE_TEST(TestParametersUpdateSettingsWebsocketInternal);
|
|
};
|
|
|
|
#if !defined(US_DLL)
|
|
|
|
namespace US_NS {;
|
|
|
|
typedef LeakChecker PARAMETERS_UPDATE_SETTINGS_WEBSOCKET_INTERNAL;
|
|
|
|
namespace ParametersUpdateSettingsWebsocketInternal_BF
|
|
{
|
|
struct ParamsSettingsWebsocket
|
|
{
|
|
bool hasExtraField;
|
|
bool missingFieldMaxCount;
|
|
bool hasMissingConnectionPing;
|
|
bool hasMissingRetryIncrementFactor;
|
|
bool hasMissingRetryInitialDelay;
|
|
bool hasMissingRetryRandomDelay;
|
|
bool hasMissingTimeoutIncrementFactor;
|
|
bool hasMissingTimeoutInitialDelay;
|
|
};
|
|
|
|
const uint32 s_WEBSOCKET_MAX_COUNT = 3;
|
|
const uint32 s_CONNECTION_PING_INTERVAL_SEC = 20;
|
|
const uint32 s_WEBSOCKET_RETRY_INITIAL_DELAY_MSEC = 6 * 1000;
|
|
const uint32 s_WEBSOCKET_RETRY_INCREMENT_FACTOR_MSEC = 7 * 1000;
|
|
const uint32 s_WEBSOCKET_RETRY_RANDOM_DELAY_MSEC = 8 * 1000;
|
|
const uint32 s_WEBSOCKET_TIMEOUT_INCREMENT_FACTOR_MSEC = 15u * 1000;
|
|
const uint32 s_WEBSOCKET_TIMEOUT_INITIAL_DELAY_MSEC = 20u * 1000;
|
|
|
|
Json buildParams(const ParamsSettingsWebsocket& params)
|
|
{
|
|
// Ensure the values used in the test are different from the default values used when parsing the params
|
|
US_ASSERT(s_WEBSOCKET_MAX_COUNT != ParametersSettingsWebsocketInternal::s_DEFAULT_VALUE_MAX_COUNT, "Do not use default value in parsing tests");
|
|
US_ASSERT(s_CONNECTION_PING_INTERVAL_SEC != ParametersSettingsWebsocketInternal::s_DEFAULT_VALUE_CONNECTION_PING_INTERVAL_SEC, "Do not use default value in parsing tests");
|
|
US_ASSERT(s_WEBSOCKET_RETRY_INCREMENT_FACTOR_MSEC != ParametersSettingsWebsocketInternal::s_DEFAULT_VALUE_RETRY_INCREMENT_FACTOR_MSEC, "Do not use default value in parsing tests");
|
|
US_ASSERT(s_WEBSOCKET_RETRY_INITIAL_DELAY_MSEC != ParametersSettingsWebsocketInternal::s_DEFAULT_VALUE_RETRY_INITIAL_DELAY_MSEC, "Do not use default value in parsing tests");
|
|
US_ASSERT(s_WEBSOCKET_RETRY_RANDOM_DELAY_MSEC != ParametersSettingsWebsocketInternal::s_DEFAULT_VALUE_RETRY_RANDOM_DELAY_MSEC, "Do not use default value in parsing tests");
|
|
US_ASSERT(s_WEBSOCKET_TIMEOUT_INCREMENT_FACTOR_MSEC != ParametersSettingsWebsocketInternal::s_DEFAULT_VALUE_TIMEOUT_INCREMENT_FACTOR_MSEC, "Do not use default value in parsing tests");
|
|
US_ASSERT(s_WEBSOCKET_TIMEOUT_INITIAL_DELAY_MSEC != ParametersSettingsWebsocketInternal::s_DEFAULT_VALUE_TIMEOUT_INITIAL_DELAY_MSEC, "Do not use default value in parsing tests");
|
|
|
|
JsonWriter websocketParamJson;
|
|
|
|
if (params.hasExtraField)
|
|
{
|
|
websocketParamJson["extraField"] = "extraValue";
|
|
}
|
|
if (!params.missingFieldMaxCount)
|
|
{
|
|
websocketParamJson[ParametersSettingsWebsocketInternal::s_FIELD_NAME_MAX_COUNT] = s_WEBSOCKET_MAX_COUNT;
|
|
}
|
|
if (!params.hasMissingConnectionPing)
|
|
{
|
|
websocketParamJson[ParametersSettingsWebsocketInternal::s_FIELD_NAME_CONNECTION_PING_INTERVAL_SEC] = s_CONNECTION_PING_INTERVAL_SEC;
|
|
}
|
|
if (!params.hasMissingRetryIncrementFactor)
|
|
{
|
|
websocketParamJson[ParametersSettingsWebsocketInternal::s_FIELD_NAME_RETRY_INCREMENT_FACTOR_MSEC] = s_WEBSOCKET_RETRY_INCREMENT_FACTOR_MSEC;
|
|
}
|
|
if (!params.hasMissingRetryInitialDelay)
|
|
{
|
|
websocketParamJson[ParametersSettingsWebsocketInternal::s_FIELD_NAME_RETRY_INITIAL_DELAY_MSEC] = s_WEBSOCKET_RETRY_INITIAL_DELAY_MSEC;
|
|
}
|
|
if (!params.hasMissingRetryRandomDelay)
|
|
{
|
|
websocketParamJson[ParametersSettingsWebsocketInternal::s_FIELD_NAME_RETRY_RANDOM_DELAY_MSEC] = s_WEBSOCKET_RETRY_RANDOM_DELAY_MSEC;
|
|
}
|
|
if (!params.hasMissingTimeoutIncrementFactor)
|
|
{
|
|
websocketParamJson[ParametersSettingsWebsocketInternal::s_FIELD_NAME_TIMEOUT_INCREMENT_FACTOR_MSEC] = s_WEBSOCKET_TIMEOUT_INCREMENT_FACTOR_MSEC;
|
|
}
|
|
if (!params.hasMissingTimeoutInitialDelay)
|
|
{
|
|
websocketParamJson[ParametersSettingsWebsocketInternal::s_FIELD_NAME_TIMEOUT_INITIAL_DELAY_MSEC] = s_WEBSOCKET_TIMEOUT_INITIAL_DELAY_MSEC;
|
|
}
|
|
return websocketParamJson.getJson();
|
|
}
|
|
|
|
void checkParams(const ParametersInfo& parametersInfo, const ParamsSettingsWebsocket& websocketParams)
|
|
{
|
|
#if !defined(US_SDK_S2S)
|
|
if (websocketParams.missingFieldMaxCount)
|
|
{
|
|
EXPECT_EQ(ParametersSettingsWebsocketInternal::s_DEFAULT_VALUE_MAX_COUNT, parametersInfo.m_paramsSettingsWebsocketInternal.m_maxCount);
|
|
}
|
|
else
|
|
{
|
|
EXPECT_EQ(s_WEBSOCKET_MAX_COUNT, parametersInfo.m_paramsSettingsWebsocketInternal.m_maxCount);
|
|
}
|
|
if (websocketParams.hasMissingConnectionPing)
|
|
{
|
|
EXPECT_EQ(ParametersSettingsWebsocketInternal::s_DEFAULT_VALUE_CONNECTION_PING_INTERVAL_SEC,
|
|
parametersInfo.m_paramsSettingsWebsocketInternal.m_connectionPingIntervalSec);
|
|
}
|
|
else
|
|
{
|
|
EXPECT_EQ(s_CONNECTION_PING_INTERVAL_SEC,
|
|
parametersInfo.m_paramsSettingsWebsocketInternal.m_connectionPingIntervalSec);
|
|
}
|
|
if (websocketParams.hasMissingRetryIncrementFactor)
|
|
{
|
|
EXPECT_EQ(ParametersSettingsWebsocketInternal::s_DEFAULT_VALUE_RETRY_INCREMENT_FACTOR_MSEC,
|
|
parametersInfo.m_paramsSettingsWebsocketInternal.m_retryIncrementFactorMsec.getCount());
|
|
}
|
|
else
|
|
{
|
|
EXPECT_EQ(s_WEBSOCKET_RETRY_INCREMENT_FACTOR_MSEC,
|
|
parametersInfo.m_paramsSettingsWebsocketInternal.m_retryIncrementFactorMsec.getCount());
|
|
}
|
|
if (websocketParams.hasMissingRetryInitialDelay)
|
|
{
|
|
EXPECT_EQ(ParametersSettingsWebsocketInternal::s_DEFAULT_VALUE_RETRY_INITIAL_DELAY_MSEC,
|
|
parametersInfo.m_paramsSettingsWebsocketInternal.m_retryInitialDelayMsec.getCount());
|
|
}
|
|
else
|
|
{
|
|
EXPECT_EQ(s_WEBSOCKET_RETRY_INITIAL_DELAY_MSEC,
|
|
parametersInfo.m_paramsSettingsWebsocketInternal.m_retryInitialDelayMsec.getCount());
|
|
}
|
|
if (websocketParams.hasMissingRetryRandomDelay)
|
|
{
|
|
EXPECT_EQ(ParametersSettingsWebsocketInternal::s_DEFAULT_VALUE_RETRY_RANDOM_DELAY_MSEC,
|
|
parametersInfo.m_paramsSettingsWebsocketInternal.m_retryRandomDelayMsec.getCount());
|
|
}
|
|
else
|
|
{
|
|
EXPECT_EQ(s_WEBSOCKET_RETRY_RANDOM_DELAY_MSEC,
|
|
parametersInfo.m_paramsSettingsWebsocketInternal.m_retryRandomDelayMsec.getCount());
|
|
}
|
|
if (websocketParams.hasMissingTimeoutIncrementFactor)
|
|
{
|
|
EXPECT_EQ(ParametersSettingsWebsocketInternal::s_DEFAULT_VALUE_TIMEOUT_INCREMENT_FACTOR_MSEC,
|
|
parametersInfo.m_paramsSettingsWebsocketInternal.m_timeoutIncrementFactorMsec.getCount());
|
|
}
|
|
else
|
|
{
|
|
EXPECT_EQ(s_WEBSOCKET_TIMEOUT_INCREMENT_FACTOR_MSEC,
|
|
parametersInfo.m_paramsSettingsWebsocketInternal.m_timeoutIncrementFactorMsec.getCount());
|
|
}
|
|
if (websocketParams.hasMissingTimeoutInitialDelay)
|
|
{
|
|
EXPECT_EQ(ParametersSettingsWebsocketInternal::s_DEFAULT_VALUE_TIMEOUT_INITIAL_DELAY_MSEC,
|
|
parametersInfo.m_paramsSettingsWebsocketInternal.m_timeoutInitialDelayMsec.getCount());
|
|
}
|
|
else
|
|
{
|
|
EXPECT_EQ(s_WEBSOCKET_TIMEOUT_INITIAL_DELAY_MSEC,
|
|
parametersInfo.m_paramsSettingsWebsocketInternal.m_timeoutInitialDelayMsec.getCount());
|
|
}
|
|
#else
|
|
US_UNUSED(parametersInfo);
|
|
US_UNUSED(websocketParams);
|
|
#endif
|
|
}
|
|
|
|
class ParametersSpaceSettingsWebsocketInternal : public ParametersSpaceMockHelper
|
|
{
|
|
public:
|
|
ParametersSpaceSettingsWebsocketInternal(const ParamsSettingsWebsocket& websocketParams)
|
|
: m_websocketParams(websocketParams)
|
|
{
|
|
}
|
|
private:
|
|
Json buildParameterGroupSettingsWebsocketInternal() const override
|
|
{
|
|
Json fields(buildParams(m_websocketParams));
|
|
return renderParameterGroup(fields);
|
|
}
|
|
|
|
const ParamsSettingsWebsocket m_websocketParams;
|
|
};
|
|
}
|
|
|
|
typedef ParamFixture<PARAMETERS_UPDATE_SETTINGS_WEBSOCKET_INTERNAL, ParametersUpdateSettingsWebsocketInternal_BF::ParamsSettingsWebsocket> PARAMETERS_UPDATE_SETTINGS_WEBSOCKET_INTERNAL_FIXTURE;
|
|
INSTANTIATE_TEST_CASE_P(ParamsSettingsWebsocket, PARAMETERS_UPDATE_SETTINGS_WEBSOCKET_INTERNAL_FIXTURE, ::testing::Values(
|
|
ParametersUpdateSettingsWebsocketInternal_BF::ParamsSettingsWebsocket{ true, false, false, false, false, false, false, false }, // Local_CheckInternalParametersSettingsWebsocketExtraField
|
|
ParametersUpdateSettingsWebsocketInternal_BF::ParamsSettingsWebsocket{ false, true, false, false, false, false, false, false }, // Local_CheckInternalParametersSettingsWebsocketMissingMaxCount
|
|
ParametersUpdateSettingsWebsocketInternal_BF::ParamsSettingsWebsocket{ false, false, true, false, false, false, false, false }, // Local_CheckInternalParametersSettingsWebsocketRetryConnectionPing
|
|
ParametersUpdateSettingsWebsocketInternal_BF::ParamsSettingsWebsocket{ false, false, false, true, false, false, false, false }, // Local_CheckInternalParametersSettingsWebsocketRetryIncrementFactor
|
|
ParametersUpdateSettingsWebsocketInternal_BF::ParamsSettingsWebsocket{ false, false, false, false, true, false, false, false }, // Local_CheckInternalParametersSettingsWebsocketRetryInitialDelay
|
|
ParametersUpdateSettingsWebsocketInternal_BF::ParamsSettingsWebsocket{ false, false, false, false, false, true, false, false }, // Local_CheckInternalParametersSettingsWebsocketRetryRandomDelay
|
|
ParametersUpdateSettingsWebsocketInternal_BF::ParamsSettingsWebsocket{ false, false, false, false, false, false, true, false }, // Local_CheckInternalParametersSettingsWebsocketTimeoutIncrementFactor
|
|
ParametersUpdateSettingsWebsocketInternal_BF::ParamsSettingsWebsocket{ false, false, false, false, false, false, false, true } // Local_CheckInternalParametersSettingsWebsocketTimeoutInitialDelay
|
|
));
|
|
|
|
/// @test Validates the parsing of parameter settings websocket internal
|
|
TEST_P(PARAMETERS_UPDATE_SETTINGS_WEBSOCKET_INTERNAL_FIXTURE, LOCAL_CheckParametersUpdateSettingsWebsocketInternal)
|
|
{
|
|
const ParametersUpdateSettingsWebsocketInternal_BF::ParamsSettingsWebsocket& websocketParams = this->getParam();
|
|
|
|
SAVE_ALLOC_COUNT(testCount);
|
|
|
|
TestParametersInfoHelper parametersHelper;
|
|
EXPECT_TRUE(parametersHelper.setSpaceSettingsGroups(
|
|
ParametersUpdateSettingsWebsocketInternal_BF::ParametersSpaceSettingsWebsocketInternal(websocketParams).createParametersResponseMap()));
|
|
|
|
ParametersUpdateSettingsWebsocketInternal_BF::checkParams(parametersHelper.m_info, websocketParams);
|
|
|
|
EXPECT_ALLOC_COUNT_PC_X1_EQ(2158u, 2164, testCount);
|
|
}
|
|
|
|
};
|
|
|
|
#endif // US_DLL
|