281 lines
No EOL
14 KiB
C++
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
|