merge stabilization/2106 into development
Signed-off-by: hultonha <hultonha@amazon.co.uk>
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user