merge stabilization/2106 into development

Signed-off-by: hultonha <hultonha@amazon.co.uk>
This commit is contained in:
hultonha
2021-07-06 17:34:04 +01:00
377 changed files with 6549 additions and 9214 deletions
@@ -17,12 +17,16 @@ namespace AWSMetrics
class ClientConfiguration
{
public:
static constexpr const char AWSMetricsMaxQueueSizeInMbKey[] = "/Gems/AWSMetrics/MaxQueueSizeInMb";
static constexpr const char AWSMetricsQueueFlushPeriodInSecondsKey[] = "/Gems/AWSMetrics/QueueFlushPeriodInSeconds";
static constexpr const char AWSMetricsOfflineRecordingEnabledKey[] = "/Gems/AWSMetrics/OfflineRecording";
static constexpr const char AWSMetricsMaxNumRetriesKey[] = "/Gems/AWSMetrics/MaxNumRetries";
ClientConfiguration();
//! Reset the client settings based on the provided configuration file.
//! @param settingsRegistryPath Full path to the configuration file.
//! Initialize the client settings based on the global setting registry.
//! @return whether the operation is successful
bool ResetClientConfiguration(const AZStd::string& settingsRegistryPath);
bool InitClientConfiguration();
//! Retrieve the max queue size setting.
//! @return Max queue size in bytes.
@@ -33,9 +33,8 @@ namespace AWSMetrics
~MetricsManager();
//! Initializing the metrics manager
//! @param settingsRegistryPath Path to the settings registry file.
//! @return Whether the operation is successful.
bool Init(const AZStd::string& settingsRegistryPath = "");
bool Init();
//! Start sending metircs to the backend or a local file.
void StartMetrics();
//! Stop sending metircs to the backend or a local file.
@@ -192,11 +192,7 @@ namespace AWSMetrics
void AWSMetricsSystemComponent::Init()
{
AZStd::string priorAlias = AZ::IO::FileIOBase::GetInstance()->GetAlias("@devroot@");
AZStd::string configFilePath = priorAlias + "\\Gems\\AWSMetrics\\Code\\" + AZ::SettingsRegistryInterface::RegistryFolder + "\\awsMetricsClientConfiguration.setreg";
AzFramework::StringFunc::Path::Normalize(configFilePath);
m_metricsManager->Init(configFilePath);
m_metricsManager->Init();
}
void AWSMetricsSystemComponent::Activate()
@@ -9,6 +9,7 @@
#include <AzCore/IO/FileIO.h>
#include <AzCore/Settings/SettingsRegistryImpl.h>
#include <AzCore/Settings/SettingsRegistryMergeUtils.h>
#include <AzCore/std/smart_ptr/unique_ptr.h>
#include <AzFramework/StringFunc/StringFunc.h>
@@ -23,38 +24,44 @@ namespace AWSMetrics
{
}
bool ClientConfiguration::ResetClientConfiguration(const AZStd::string& settingsRegistryPath)
bool ClientConfiguration::InitClientConfiguration()
{
AZStd::unique_ptr<AZ::SettingsRegistryInterface> settingsRegistry = AZStd::make_unique<AZ::SettingsRegistryImpl>();
AZ_Printf("AWSMetrics", "Reset client settings using the confiugration file %s", settingsRegistryPath.c_str());
if (!settingsRegistry->MergeSettingsFile(settingsRegistryPath, AZ::SettingsRegistryInterface::Format::JsonMergePatch))
AZ::SettingsRegistryInterface* settingsRegistry = AZ::SettingsRegistry::Get();
if (!settingsRegistry)
{
AZ_Warning("AWSMetrics", false, "Failed to merge the configuration file");
AZ_Warning("AWSMetrics", false, "Failed to load the setting registry");
return false;
}
if (!settingsRegistry->Get(m_maxQueueSizeInMb, "/Amazon/Gems/AWSMetrics/MaxQueueSizeInMb"))
if (!settingsRegistry->Get(
m_maxQueueSizeInMb,
AZStd::string::format("%s%s", AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSMetricsMaxQueueSizeInMbKey)))
{
AZ_Warning("AWSMetrics", false, "Failed to read the maximum queue size setting in the configuration file");
AZ_Warning("AWSMetrics", false, "Failed to read the maximum queue size setting from the setting registry");
return false;
}
if (!settingsRegistry->Get(m_queueFlushPeriodInSeconds, "/Amazon/Gems/AWSMetrics/QueueFlushPeriodInSeconds"))
if (!settingsRegistry->Get(
m_queueFlushPeriodInSeconds,
AZStd::string::format("%s%s", AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSMetricsQueueFlushPeriodInSecondsKey)))
{
AZ_Warning("AWSMetrics", false, "Failed to read the queue flush period setting in the configuration file");
AZ_Warning("AWSMetrics", false, "Failed to read the queue flush period setting from the setting registry");
return false;
}
bool enableOfflineRecording = false;
if (!settingsRegistry->Get(enableOfflineRecording, "/Amazon/Gems/AWSMetrics/OfflineRecording"))
if (!settingsRegistry->Get(
enableOfflineRecording,
AZStd::string::format("%s%s", AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSMetricsOfflineRecordingEnabledKey)))
{
AZ_Warning("AWSMetrics", false, "Failed to read the submission target setting in the configuration file");
AZ_Warning("AWSMetrics", false, "Failed to read the submission target setting from the setting registry");
return false;
}
m_offlineRecordingEnabled = enableOfflineRecording;
if (!settingsRegistry->Get(m_maxNumRetries, "/Amazon/Gems/AWSMetrics/MaxNumRetries"))
if (!settingsRegistry->Get(
m_maxNumRetries,
AZStd::string::format("%s%s", AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSMetricsMaxNumRetriesKey)))
{
AZ_Warning("AWSMetrics", false, "Failed to read the maximum number of retries setting in the configuration file");
return false;
@@ -34,9 +34,9 @@ namespace AWSMetrics
ShutdownMetrics();
}
bool MetricsManager::Init(const AZStd::string& settingsRegistryPath)
bool MetricsManager::Init()
{
if (!m_clientConfiguration->ResetClientConfiguration(settingsRegistryPath))
if (!m_clientConfiguration->InitClientConfiguration())
{
return false;
}
@@ -52,10 +52,14 @@ namespace AWSMetrics
m_settingsRegistry->SetContext(m_serializeContext.get());
m_settingsRegistry->SetContext(m_registrationContext.get());
AZ::SettingsRegistry::Register(m_settingsRegistry.get());
}
void TearDown() override
{
AZ::SettingsRegistry::Unregister(m_settingsRegistry.get());
m_registrationContext->EnableRemoveReflection();
AZ::JsonSystemComponent::Reflect(m_registrationContext.get());
m_registrationContext->DisableRemoveReflection();
@@ -130,7 +134,7 @@ namespace AWSMetrics
AZStd::unique_ptr<AZ::SerializeContext> m_serializeContext;
AZStd::unique_ptr<AZ::JsonRegistrationContext> m_registrationContext;
AZStd::shared_ptr<AZ::SettingsRegistryImpl> m_settingsRegistry;
AZStd::unique_ptr<AZ::SettingsRegistryImpl> m_settingsRegistry;
private:
AZStd::string GetTestFolderPath()
@@ -135,7 +135,8 @@ namespace AWSMetrics
m_metricsManager = AZStd::make_unique<MetricsManager>();
AZStd::string configFilePath = CreateClientConfigFile(true, (double) TestMetricsEventSizeInBytes / MbToBytes * 2, DefaultFlushPeriodInSeconds, 0);
m_metricsManager->Init(configFilePath);
m_settingsRegistry->MergeSettingsFile(configFilePath, AZ::SettingsRegistryInterface::Format::JsonMergePatch, {});
m_metricsManager->Init();
RemoveFile(m_metricsManager->GetMetricsFilePath());
@@ -161,7 +162,8 @@ namespace AWSMetrics
RevertMockIOToLocalFileIO();
AZStd::string configFilePath = CreateClientConfigFile(offlineRecordingEnabled, maxQueueSizeInMb, queueFlushPeriodInSeconds, MaxNumRetries);
m_metricsManager->Init(configFilePath);
m_settingsRegistry->MergeSettingsFile(configFilePath, AZ::SettingsRegistryInterface::Format::JsonMergePatch, {});
m_metricsManager->Init();
ReplaceLocalFileIOWithMockIO();
}
@@ -555,10 +557,11 @@ namespace AWSMetrics
AZStd::unique_ptr<ClientConfiguration> m_clientConfiguration;
};
TEST_F(ClientConfigurationTest, ResetClientConfiguration_ValidConfigurationFile_Success)
TEST_F(ClientConfigurationTest, ResetClientConfiguration_ValidClientConfiguration_Success)
{
AZStd::string configFilePath = CreateClientConfigFile(true, DEFAULT_MAX_QUEUE_SIZE_IN_MB, DefaultFlushPeriodInSeconds, DEFAULT_MAX_NUM_RETRIES);
ASSERT_TRUE(m_clientConfiguration->ResetClientConfiguration(configFilePath));
m_settingsRegistry->MergeSettingsFile(configFilePath, AZ::SettingsRegistryInterface::Format::JsonMergePatch, {});
ASSERT_TRUE(m_clientConfiguration->InitClientConfiguration());
ASSERT_TRUE(m_clientConfiguration->OfflineRecordingEnabled());
ASSERT_EQ(m_clientConfiguration->GetMaxQueueSizeInBytes(), DEFAULT_MAX_QUEUE_SIZE_IN_MB * 1000000);
@@ -573,12 +576,4 @@ namespace AWSMetrics
ASSERT_EQ(strcmp(m_clientConfiguration->GetMetricsFileDir(), resolvedPath), 0);
ASSERT_EQ(m_clientConfiguration->GetMetricsFileFullPath(), expectedMetricsFilePath);
}
TEST_F(ClientConfigurationTest, ResetClientConfiguration_InvalidConfigurationFile_Fail)
{
AZStd::string configFilePath = "invalidConfig";
AZ_TEST_START_TRACE_SUPPRESSION;
ASSERT_FALSE(m_clientConfiguration->ResetClientConfiguration(configFilePath));
AZ_TEST_STOP_TRACE_SUPPRESSION(1);
}
}