public void ConfigurationError()
        {
            var payload = new ConfigurationErrorPayload
            {
                ConfigurationName = "config",
                Message           = "some message",
                UsedConfiguration = "some value"
            };

            foreach (ConfigurationErrorType value in Enum.GetValues(typeof(ConfigurationErrorType)))
            {
                payload.ErrorType = value;
                var obj = new ConfigurationError(new ConfigurationErrorPayload[] { payload });
                obj.ValidateSchema();
            }
        }
        /// <summary>
        /// Validate maxCacheSize > maxMessageSize
        /// </summary>
        /// <param name="remoteConfiguration">Configuration to validate</param>
        /// <param name="configurationErrorPayload">configurationErrorPayload</param>
        /// <returns>true if valid</returns>
        private static bool ValidateMaxCacheSize(RemoteConfiguration remoteConfiguration, out ConfigurationErrorPayload configurationErrorPayload)
        {
            configurationErrorPayload = null;
            if (remoteConfiguration.MaxMessageSize > remoteConfiguration.MaxLocalCacheSize)
            {
                configurationErrorPayload = new ConfigurationErrorPayload
                {
                    ConfigurationName = JsonUtils.GetJsonLabel(nameof(remoteConfiguration.MaxLocalCacheSize), typeof(RemoteConfiguration)),
                    ErrorType         = ConfigurationErrorType.Conflict,
                    UsedConfiguration = AgentConfiguration.RemoteConfiguration.MaxLocalCacheSize.ToString(),
                    Message           = $"MaxLocalCacheSize is smaller than MaxMessageSize"
                };

                return(false);
            }

            return(true);
        }
        /// <summary>
        /// Validate HighPriorityIntervals is lower or equal to LowPriorityInterval
        /// </summary>
        /// <param name="remoteConfiguration">Configuration to validate</param>
        /// <param name="configurationErrorPayload"></param>
        /// <returns>true if valid</returns>
        private static bool ValidateIntervals(RemoteConfiguration remoteConfiguration, out ConfigurationErrorPayload configurationErrorPayload)
        {
            configurationErrorPayload = null;
            if (remoteConfiguration.HighPriorityMessageFrequency > remoteConfiguration.LowPriorityMessageFrequency)
            {
                configurationErrorPayload = new ConfigurationErrorPayload
                {
                    ConfigurationName = JsonUtils.GetJsonLabel(nameof(remoteConfiguration.HighPriorityMessageFrequency), typeof(RemoteConfiguration)),
                    ErrorType         = ConfigurationErrorType.Conflict,
                    UsedConfiguration = AgentConfiguration.RemoteConfiguration.HighPriorityMessageFrequency.ToString(),
                    Message           = $"High priority interval is longer than low priority interval"
                };

                return(false);
            }

            return(true);
        }
        /// <summary>
        /// Validate maxMessageSize is multiple of 4Kb
        /// </summary>
        /// <param name="remoteConfiguration">Configuration to validate</param>
        /// <param name="configurationErrorPayload">configuration error payload</param>
        /// <returns>true if valid</returns>
        private static bool ValidateMaxMessageSize(RemoteConfiguration remoteConfiguration, out ConfigurationErrorPayload configurationErrorPayload)
        {
            configurationErrorPayload = null;
            if (remoteConfiguration.MaxMessageSize % Constants.OptimalMessageSizeMultipleInKb != 0)
            {
                configurationErrorPayload = new ConfigurationErrorPayload
                {
                    ConfigurationName = JsonUtils.GetJsonLabel(nameof(remoteConfiguration.MaxMessageSize), typeof(RemoteConfiguration)),
                    ErrorType         = ConfigurationErrorType.NotOptimal,
                    UsedConfiguration = AgentConfiguration.RemoteConfiguration.MaxMessageSize.ToString(),
                    Message           = $"Message size should be multiple of {Constants.OptimalMessageSizeMultipleInKb}"
                };

                return(false);
            }

            return(true);
        }