JD2022-TU1/main/extern/UbiServices/custom/testsUnit/testParametersUpdateSettings.cpp

281 lines
No EOL
14 KiB
C++

////////////////////////////////////////////////////////////////////////////////
// (c) Copyright, Ubisoft Entertainment Inc. || Created by Harbour //
////////////////////////////////////////////////////////////////////////////////
#include "tests/config.h"
#include "tests/fixture/paramFixture.h"
#include "tests/mock/parametersMockHelper.h"
#include <ubiservices/core/debug/assert.h>
#include <../private/ubiservices/core/websocket/closeWebsocketOnSuspendingMode.h>
#include <ubiservices/services/parameters/parametersInfo.h>
#include <ubiservices/services/parameters/parametersSettings.h>
namespace US_NS {;
US_DEFINE_TEST(TestParametersUpdateSettings);
};
#if !defined(US_DLL)
namespace US_NS {;
typedef LeakChecker PARAMETERS_UPDATE_SETTINGS;
namespace ParametersUpdateSettings_BF
{
struct ParamsSettings
{
bool hasExtraField;
#if !defined(US_SDK_S2S)
bool missingNotificationRandomDelay;
#endif
bool missingPopEventsTimeout;
bool missingPrimaryStoreSyncDelay;
bool missingMinBackgroundDuration;
#if defined(US_TARGET_XONE)
bool missingResumeFromSuspendedDelay;
bool missingCloseWebsocketOnSuspendingMode;
#endif
bool missingCreateSessionRestPeriod;
bool missingCreateSessionRestRandom;
bool missingWaitRemoteLogCompletionOnDeleteSession;
};
#if !defined(US_SDK_S2S)
const uint32 s_NOTIFICATION_UPDATE_RANDOM_DURATION_MSEC = 8 * 1000;
#endif
const uint32 s_POP_EVENTS_TIMEOUT_MSEC = 6 * 1000;
const uint32 s_PRIMARY_STORE_SYNC_DELAY_MSEC = 7 * 1000;
const uint32 s_MIN_BACKGROUND_DURATION_MSEC = 8 * 1000;
#if defined(US_TARGET_XONE)
const uint32 s_RESUME_FROM_SUSPENDED_DELAY_MSEC = 9 * 1000;
const CloseWebsocketOnSuspendingMode::Enum s_CLOSE_WEBSOCKET_ON_SUSPENDED_MODE = CloseWebsocketOnSuspendingMode::Disabled;
#endif
const uint32 s_CREATE_SESSION_REST_PERIOD_MSEC = 8 * 1000;
const uint32 s_CREATE_SESSION_REST_RANDOM_MSEC = 7 * 1000;
Json buildParams(const ParamsSettings& params)
{
// Ensure the values used in the test are different from the default values used when parsing the params
#if !defined(US_SDK_S2S)
US_ASSERT(s_NOTIFICATION_UPDATE_RANDOM_DURATION_MSEC != ParametersSettings::s_DEFAULT_VALUE_NOTIFICATION_TYPES_UPDATE_RANDOM_DELAY_MSEC, "Do not use default value in parsing tests");
#endif
US_ASSERT(s_POP_EVENTS_TIMEOUT_MSEC != ParametersSettings::s_DEFAULT_VALUE_POP_EVENTS_TIMEOUT_MSEC, "Do not use default value in parsing tests");
US_ASSERT(s_PRIMARY_STORE_SYNC_DELAY_MSEC != ParametersSettings::s_DEFAULT_VALUE_PRIMARY_STORE_SYNC_DELAY_MSEC, "Do not use default value in parsing tests");
US_ASSERT(s_MIN_BACKGROUND_DURATION_MSEC != ParametersSettings::s_DEFAULT_VALUE_MIN_BACKGROUND_DURATION_FOR_INVENTORY_INVALIDATION_MSEC, "Do not use default value in parsing tests");
#if defined(US_TARGET_XONE)
US_ASSERT(s_RESUME_FROM_SUSPENDED_DELAY_MSEC != ParametersSettings::s_DEFAULT_VALUE_RESUME_FROM_SUSPENDED_DELAY_MSEC, "Do not use default value in parsing tests");
US_ASSERT(s_CLOSE_WEBSOCKET_ON_SUSPENDED_MODE != ParametersSettings::s_DEFAULT_VALUE_CLOSE_WEBSOCKET_ON_SUSPENDING_MODE, "Do not use default value in parsing tests");
#endif
US_ASSERT(s_CREATE_SESSION_REST_PERIOD_MSEC != ParametersSettings::s_DEFAULT_VALUE_CREATE_SESSION_REST_PERIOD_MSEC, "Do not use default value in parsing tests");
US_ASSERT(s_CREATE_SESSION_REST_RANDOM_MSEC != ParametersSettings::s_DEFAULT_VALUE_CREATE_SESSION_REST_RANDOM_MSEC, "Do not use default value in parsing tests");
JsonWriter settingsParamJson;
#if !defined(US_SDK_S2S)
if (!params.missingNotificationRandomDelay)
{
settingsParamJson[ParametersSettings::s_FIELD_NAME_NOTIFICATION_TYPES_UPDATE_RANDOM_DELAY_MSEC] = s_NOTIFICATION_UPDATE_RANDOM_DURATION_MSEC;
}
#endif
if (!params.missingPopEventsTimeout)
{
settingsParamJson[ParametersSettings::s_FIELD_NAME_POP_EVENTS_TIMEOUT_MSEC] = s_POP_EVENTS_TIMEOUT_MSEC;
}
if (!params.missingPrimaryStoreSyncDelay)
{
settingsParamJson[ParametersSettings::s_FIELD_NAME_PRIMARY_STORE_SYNC_DELAY_MSEC] = s_PRIMARY_STORE_SYNC_DELAY_MSEC;
}
if (!params.missingMinBackgroundDuration)
{
settingsParamJson[ParametersSettings::s_FIELD_NAME_MIN_BACKGROUND_DURATION_FOR_INVENTORY_INVALIDATION_MSEC] = s_MIN_BACKGROUND_DURATION_MSEC;
}
#if defined(US_TARGET_XONE)
if (!params.missingResumeFromSuspendedDelay)
{
settingsParamJson[ParametersSettings::s_FIELD_NAME_RESUME_FROM_SUSPENDED_DELAY_MSEC] = s_RESUME_FROM_SUSPENDED_DELAY_MSEC;
}
if (!params.missingCloseWebsocketOnSuspendingMode)
{
settingsParamJson[ParametersSettings::s_FIELD_NAME_CLOSE_WEBSOCKET_ON_SUSPENDING_MODE] =
CloseWebsocketOnSuspendingMode::getCloseWebsocketOnSuspendingModeString(s_CLOSE_WEBSOCKET_ON_SUSPENDED_MODE);
}
#endif
if (!params.missingCreateSessionRestPeriod)
{
settingsParamJson[ParametersSettings::s_FIELD_NAME_CREATE_SESSION_REST_PERIOD_MSEC] = s_CREATE_SESSION_REST_PERIOD_MSEC;
}
if (!params.missingCreateSessionRestRandom)
{
settingsParamJson[ParametersSettings::s_FIELD_NAME_CREATE_SESSION_REST_RANDOM_MSEC] = s_CREATE_SESSION_REST_RANDOM_MSEC;
}
if (!params.missingWaitRemoteLogCompletionOnDeleteSession)
{
settingsParamJson[ParametersSettings::s_FIELD_NAME_WAIT_REMOTE_LOG_COMPLETION_ON_DELETE_SESSION] = true;
}
if (params.hasExtraField)
{
settingsParamJson["extraField"] = "extraValue";
}
return settingsParamJson.getJson();
}
void checkParams(const ParametersInfo& parametersInfo, const ParamsSettings& httpParams)
{
#if !defined(US_SDK_S2S)
if (httpParams.missingNotificationRandomDelay)
{
EXPECT_EQ(ParametersSettings::s_DEFAULT_VALUE_NOTIFICATION_TYPES_UPDATE_RANDOM_DELAY_MSEC, parametersInfo.m_paramsSettings.m_notificationTypesUpdateRandomDelayMsec);
}
else
{
EXPECT_EQ(s_NOTIFICATION_UPDATE_RANDOM_DURATION_MSEC, parametersInfo.m_paramsSettings.m_notificationTypesUpdateRandomDelayMsec);
}
#endif
if (httpParams.missingPopEventsTimeout)
{
EXPECT_EQ(ParametersSettings::s_DEFAULT_VALUE_POP_EVENTS_TIMEOUT_MSEC, parametersInfo.m_paramsSettings.m_popEventsTimeoutMsec);
}
else
{
EXPECT_EQ(s_POP_EVENTS_TIMEOUT_MSEC, parametersInfo.m_paramsSettings.m_popEventsTimeoutMsec);
}
if (httpParams.missingPrimaryStoreSyncDelay)
{
EXPECT_EQ(ParametersSettings::s_DEFAULT_VALUE_PRIMARY_STORE_SYNC_DELAY_MSEC, parametersInfo.m_paramsSettings.m_primaryStoreSyncDelayMsec);
}
else
{
EXPECT_EQ(s_PRIMARY_STORE_SYNC_DELAY_MSEC, parametersInfo.m_paramsSettings.m_primaryStoreSyncDelayMsec);
}
if (httpParams.missingMinBackgroundDuration)
{
EXPECT_EQ(ParametersSettings::s_DEFAULT_VALUE_MIN_BACKGROUND_DURATION_FOR_INVENTORY_INVALIDATION_MSEC, parametersInfo.m_paramsSettings.m_minBackgroundDurationForInventoryInvalidationMsec);
}
else
{
EXPECT_EQ(s_MIN_BACKGROUND_DURATION_MSEC, parametersInfo.m_paramsSettings.m_minBackgroundDurationForInventoryInvalidationMsec);
}
#if defined(US_TARGET_XONE)
if (httpParams.missingResumeFromSuspendedDelay)
{
EXPECT_EQ(ParametersSettings::s_DEFAULT_VALUE_RESUME_FROM_SUSPENDED_DELAY_MSEC, parametersInfo.m_paramsSettings.m_resumeFromSuspendedDelayMsec);
}
else
{
EXPECT_EQ(s_RESUME_FROM_SUSPENDED_DELAY_MSEC, parametersInfo.m_paramsSettings.m_resumeFromSuspendedDelayMsec);
}
if (httpParams.missingCloseWebsocketOnSuspendingMode)
{
EXPECT_EQ(ParametersSettings::s_DEFAULT_VALUE_CLOSE_WEBSOCKET_ON_SUSPENDING_MODE, parametersInfo.m_paramsSettings.m_closeWebsocketOnSuspendingMode);
}
else
{
EXPECT_EQ(s_CLOSE_WEBSOCKET_ON_SUSPENDED_MODE, parametersInfo.m_paramsSettings.m_closeWebsocketOnSuspendingMode);
}
#endif
if (httpParams.missingCreateSessionRestPeriod)
{
EXPECT_EQ(ParametersSettings::s_DEFAULT_VALUE_CREATE_SESSION_REST_PERIOD_MSEC, parametersInfo.m_paramsSettings.m_createSessionRestPeriodMSec);
}
else
{
EXPECT_EQ(s_CREATE_SESSION_REST_PERIOD_MSEC, parametersInfo.m_paramsSettings.m_createSessionRestPeriodMSec);
}
if (httpParams.missingCreateSessionRestRandom)
{
EXPECT_EQ(ParametersSettingsHttpGame::s_DEFAULT_VALUE_RETRY_RANDOM_DELAY_MSEC, parametersInfo.m_paramsSettings.m_createSessionRestRandomMSec);
}
else
{
EXPECT_EQ(s_CREATE_SESSION_REST_RANDOM_MSEC, parametersInfo.m_paramsSettings.m_createSessionRestRandomMSec);
}
if (httpParams.missingWaitRemoteLogCompletionOnDeleteSession)
{
EXPECT_FALSE(parametersInfo.m_paramsSettings.m_waitRemoteLogCompletionOnDeleteSession);
}
else
{
EXPECT_TRUE(parametersInfo.m_paramsSettings.m_waitRemoteLogCompletionOnDeleteSession);
}
}
class ParametersSettings : public ParametersSpaceMockHelper
{
public:
ParametersSettings(const ParamsSettings& httpParams)
: m_httpParams(httpParams)
{
}
private:
Json buildParameterGroupSettings() const override
{
Json fields(buildParams(m_httpParams));
return renderParameterGroup(fields);
}
const ParamsSettings m_httpParams;
};
}
#if defined(US_TARGET_XONE)
typedef ParamFixture<PARAMETERS_UPDATE_SETTINGS, ParametersUpdateSettings_BF::ParamsSettings> PARAMETERS_UPDATE_SETTINGS_FIXTURE;
INSTANTIATE_TEST_CASE_P(ParamsSettingsHttp, PARAMETERS_UPDATE_SETTINGS_FIXTURE, ::testing::Values(
ParametersUpdateSettings_BF::ParamsSettings{ true, false, false, false, false, false, false, false }, // LOCAL_CheckParametersUpdateSettingsExtraField
ParametersUpdateSettings_BF::ParamsSettings{ false, true, false, false, false, false, false, false }, // LOCAL_CheckParametersUpdateSettingsPopEvent
ParametersUpdateSettings_BF::ParamsSettings{ false, false, true, false, false, false, false, false }, // LOCAL_CheckParametersUpdateSettingsPrimaryStoreSync
ParametersUpdateSettings_BF::ParamsSettings{ false, false, false, true, false, false, false, false }, // LOCAL_CheckParametersUpdateSettingsMinBackground
ParametersUpdateSettings_BF::ParamsSettings{ false, false, false, false, true, false, false, false }, // LOCAL_CheckParametersUpdateSettingsResumSuspended
ParametersUpdateSettings_BF::ParamsSettings{ false, false, false, false, false, true, false, false }, // LOCAL_CheckParametersUpdateSettingsCloseWebsocketOnSuspending
ParametersUpdateSettings_BF::ParamsSettings{ false, false, false, false, false, false, true, false }, // LOCAL_CheckParametersUpdateSettingsCreateSessionRestPeriod
ParametersUpdateSettings_BF::ParamsSettings{ false, false, false, false, false, false, false, true } // LOCAL_CheckParametersUpdateSettingsCreateSessionRestRandom
));
#else
#if defined(US_SDK_S2S)
typedef ParamFixture<PARAMETERS_UPDATE_SETTINGS, ParametersUpdateSettings_BF::ParamsSettings> PARAMETERS_UPDATE_SETTINGS_FIXTURE;
INSTANTIATE_TEST_CASE_P(ParamsSettings, PARAMETERS_UPDATE_SETTINGS_FIXTURE, ::testing::Values(
ParametersUpdateSettings_BF::ParamsSettings{ true, false, false, false, false, false }, // LOCAL_CheckParametersUpdateSettingsExtraField
ParametersUpdateSettings_BF::ParamsSettings{ false, true, false, false, false, false }, // LOCAL_CheckParametersUpdateSettingsPopEvent
ParametersUpdateSettings_BF::ParamsSettings{ false, false, true, false, false, false }, // LOCAL_CheckParametersUpdateSettingsPrimaryStoreSync
ParametersUpdateSettings_BF::ParamsSettings{ false, false, false, true, false, false }, // LOCAL_CheckParametersUpdateSettingsMinBackground
ParametersUpdateSettings_BF::ParamsSettings{ false, false, false, false, true, false }, // LOCAL_CheckParametersUpdateSettingsCreateSessionRestPeriod
ParametersUpdateSettings_BF::ParamsSettings{ false, false, false, false, false, true } // LOCAL_CheckParametersUpdateSettingsCreateSessionRestRandom
));
#else
typedef ParamFixture<PARAMETERS_UPDATE_SETTINGS, ParametersUpdateSettings_BF::ParamsSettings> PARAMETERS_UPDATE_SETTINGS_FIXTURE;
INSTANTIATE_TEST_CASE_P(ParamsSettings, PARAMETERS_UPDATE_SETTINGS_FIXTURE, ::testing::Values(
ParametersUpdateSettings_BF::ParamsSettings{ false, true, false, false, false, false, false }, // LOCAL_CheckParametersUpdateSettingsExtraField
ParametersUpdateSettings_BF::ParamsSettings{ true, false, false, false, false, false, false }, // LOCAL_CheckParametersUpdateSettingsNotificationDelay
ParametersUpdateSettings_BF::ParamsSettings{ false, false, true, false, false, false, false }, // LOCAL_CheckParametersUpdateSettingsPopEvent
ParametersUpdateSettings_BF::ParamsSettings{ false, false, false, true, false, false, false }, // LOCAL_CheckParametersUpdateSettingsPrimaryStoreSync
ParametersUpdateSettings_BF::ParamsSettings{ false, false, false, false, true, false, false }, // LOCAL_CheckParametersUpdateSettingsMinBackground
ParametersUpdateSettings_BF::ParamsSettings{ false, false, false, false, false, true, false }, // LOCAL_CheckParametersUpdateSettingsCreateSessionRestPeriod
ParametersUpdateSettings_BF::ParamsSettings{ false, false, false, false, false, false, true } // LOCAL_CheckParametersUpdateSettingsCreateSessionRestRandom
));
#endif
#endif
/// @test Validates the parsing of parameter settings
TEST_P(PARAMETERS_UPDATE_SETTINGS_FIXTURE, LOCAL_CheckParametersUpdateSettings)
{
const ParametersUpdateSettings_BF::ParamsSettings& httpParams = this->getParam();
SAVE_ALLOC_COUNT(testCount);
TestParametersInfoHelper parametersHelper;
EXPECT_TRUE(parametersHelper.setSpaceSettingsGroups(ParametersUpdateSettings_BF::ParametersSettings(httpParams).createParametersResponseMap()));
ParametersUpdateSettings_BF::checkParams(parametersHelper.m_info, httpParams);
EXPECT_ALLOC_COUNT_PC_X1_EQ(2158u, 2164, testCount);
}
};
#endif // US_DLL