Example #1
0
        public void Enqueue(Event ev)
        {
            if (AreQueuedItemsDiscarded)
            {
                _log.Info(typeof(ExceptionlessClient), "Queue items are currently being discarded. The event will not be queued.");
                return;
            }

            _storage.Enqueue(_config.GetQueueName(), ev);
        }
Example #2
0
        public void CanUpdateSettingsFromServer()
        {
            var config = new ExceptionlessConfiguration(DependencyResolver.Default)
            {
                ApiKey   = "LhhP1C9gijpSKCslHHCvwdSIz298twx271n1l6xw",
                Settings =
                {
                    ["LocalSetting"]           = "1",
                    ["LocalSettingToOverride"] = "1"
                }
            };

            var submissionClient = new Mock <ISubmissionClient>();

            submissionClient.Setup(m => m.PostEvents(It.IsAny <IEnumerable <Event> >(), config, It.IsAny <IJsonSerializer>()))
            .Callback(() => SettingsManager.CheckVersion(1, config))
            .Returns(() => new SubmissionResponse(202, "Accepted"));
            submissionClient.Setup(m => m.GetSettings(config, 0, It.IsAny <IJsonSerializer>()))
            .Returns(() => new SettingsResponse(true, new SettingsDictionary {
                { "Test", "Test" }, { "LocalSettingToOverride", "2" }
            }, 1));

            config.Resolver.Register <ISubmissionClient>(submissionClient.Object);
            var client = new ExceptionlessClient(config);

            Assert.Equal(2, client.Configuration.Settings.Count);
            Assert.False(client.Configuration.Settings.ContainsKey("Test"));
            Assert.Equal("1", client.Configuration.Settings["LocalSettingToOverride"]);
            client.SubmitEvent(new Event {
                Type = "Log", Message = "Test"
            });
            client.ProcessQueue();
            Assert.True(client.Configuration.Settings.ContainsKey("Test"));
            Assert.Equal("2", client.Configuration.Settings["LocalSettingToOverride"]);
            Assert.Equal(3, client.Configuration.Settings.Count);

            var storage = config.Resolver.GetFileStorage() as InMemoryObjectStorage;

            Assert.NotNull(storage);
            Assert.NotNull(config.GetQueueName());
            Assert.True(storage.Exists(Path.Combine(config.GetQueueName(), "server-settings.json")));

            config.Settings.Clear();
            config.ApplySavedServerSettings();
            Assert.True(client.Configuration.Settings.ContainsKey("Test"));
            Assert.Equal("2", client.Configuration.Settings["LocalSettingToOverride"]);
            Assert.Equal(2, client.Configuration.Settings.Count);
        }
        public static void CheckVersion(int version, ExceptionlessConfiguration config) {
            var persistedClientData = config.Resolver.Resolve<PersistedDictionary>();
            if (version <= persistedClientData.GetInt32(String.Concat(config.GetQueueName(), "-ServerConfigVersion"), -1))
                return;

            UpdateSettings(config);
        }
        public static void UpdateSettings(ExceptionlessConfiguration config) {
            if (String.IsNullOrEmpty(config.ApiKey) || String.Equals(config.ApiKey, "API_KEY_HERE", StringComparison.OrdinalIgnoreCase)) {
                config.Resolver.GetLog().Error(typeof(SettingsManager), "Unable to update settings: ApiKey is not set.");
                return;
            }

            var serializer = config.Resolver.GetJsonSerializer();
            var client = config.Resolver.GetSubmissionClient();

            var response = client.GetSettings(config, serializer);
            if (!response.Success || response.Settings == null)
                return;

            var savedServerSettings = GetSavedServerSettings(config);
            config.Settings.Apply(response.Settings);

            // TODO: Store snapshot of settings after reading from config and attributes and use that to revert to defaults.
            // Remove any existing server settings that are not in the new server settings.
            foreach (string key in savedServerSettings.Keys.Except(response.Settings.Keys)) {
                if (config.Settings.ContainsKey(key))
                    config.Settings.Remove(key);
            }

            var persistedClientData = config.Resolver.Resolve<PersistedDictionary>();
            persistedClientData[String.Concat(config.GetQueueName(), "-ServerConfigVersion")] = response.SettingsVersion.ToString();

            var fileStorage = config.Resolver.GetFileStorage();
            fileStorage.SaveObject(GetConfigPath(config), response.Settings);
        }
        public void CanUpdateSettingsFromServer() {
            var config = new ExceptionlessConfiguration(DependencyResolver.Default);
            config.ApiKey = "e3d51ea621464280bbcb79c11fd6483e";
            config.Settings["LocalSetting"] = "1";
            config.Settings["LocalSettingToOverride"] = "1";

            var submissionClient = new Mock<ISubmissionClient>();
            submissionClient.Setup(m => m.Submit(It.IsAny<IEnumerable<Event>>(), config, It.IsAny<IJsonSerializer>()))
                .Callback(() => SettingsManager.CheckVersion(1, config))
                .Returns(() => new SubmissionResponse(202, "Accepted"));
            submissionClient.Setup(m => m.GetSettings(config, It.IsAny<IJsonSerializer>()))
                .Returns(() => new SettingsResponse(true, new SettingsDictionary { { "Test", "Test" }, { "LocalSettingToOverride", "2" } }, 1));

            config.Resolver.Register<ISubmissionClient>(submissionClient.Object);
            var client = new ExceptionlessClient(config);

            Assert.Equal(2, client.Configuration.Settings.Count);
            Assert.False(client.Configuration.Settings.ContainsKey("Test"));
            Assert.Equal("1", client.Configuration.Settings["LocalSettingToOverride"]);
            client.SubmitEvent(new Event { Type = "Log", Message = "Test" });
            client.ProcessQueue();
            Assert.True(client.Configuration.Settings.ContainsKey("Test"));
            Assert.Equal("2", client.Configuration.Settings["LocalSettingToOverride"]);
            Assert.Equal(3, client.Configuration.Settings.Count);

            var storage = config.Resolver.GetFileStorage() as InMemoryFileStorage;
            Assert.True(storage.Exists(config.GetQueueName() + "\\server-settings.json"));

            config.Settings.Clear();
            config.ApplySavedServerSettings();
            Assert.True(client.Configuration.Settings.ContainsKey("Test"));
            Assert.Equal("2", client.Configuration.Settings["LocalSettingToOverride"]);
            Assert.Equal(2, client.Configuration.Settings.Count);
        }
Example #6
0
        public static void UpdateSettings(ExceptionlessConfiguration config)
        {
            var serializer = config.Resolver.GetJsonSerializer();
            var client     = config.Resolver.GetSubmissionClient();

            var response = client.GetSettings(config, serializer);

            if (!response.Success || response.Settings == null)
            {
                return;
            }

            var savedServerSettings = GetSavedServerSettings(config);

            config.Settings.Apply(response.Settings);

            // TODO: Store snapshot of settings after reading from config and attributes and use that to revert to defaults.
            // Remove any existing server settings that are not in the new server settings.
            foreach (string key in savedServerSettings.Keys.Except(response.Settings.Keys))
            {
                if (config.Settings.ContainsKey(key))
                {
                    config.Settings.Remove(key);
                }
            }

            var persistedClientData = config.Resolver.Resolve <PersistedDictionary>();

            persistedClientData[String.Concat(config.GetQueueName(), "-ServerConfigVersion")] = response.SettingsVersion.ToString();

            var fileStorage = config.Resolver.GetFileStorage();

            fileStorage.SaveObject(GetConfigPath(config), response.Settings, serializer);
        }
Example #7
0
        public static void CheckVersion(int version, ExceptionlessConfiguration config)
        {
            var persistedClientData = config.Resolver.Resolve <PersistedDictionary>();

            if (version <= persistedClientData.GetInt32(String.Concat(config.GetQueueName(), "-ServerConfigVersion"), -1))
            {
                return;
            }

            UpdateSettings(config);
        }
        public static void CheckVersion(int version, ExceptionlessConfiguration config) {
            if (String.IsNullOrEmpty(config.ApiKey) || String.Equals(config.ApiKey, "API_KEY_HERE", StringComparison.OrdinalIgnoreCase)) {
                config.Resolver.GetLog().Error(typeof(SettingsManager), "Unable to check version: ApiKey is not set.");
                return;
            }

            var persistedClientData = config.Resolver.Resolve<PersistedDictionary>();
            if (version <= persistedClientData.GetInt32(String.Concat(config.GetQueueName(), "-ServerConfigVersion"), -1))
                return;

            UpdateSettings(config);
        }
        public static void UpdateSettings(ExceptionlessConfiguration config) {
            var serializer = config.Resolver.GetJsonSerializer();
            var client = config.Resolver.GetSubmissionClient();

            var response = client.GetSettings(config, serializer);
            if (!response.Success)
                return;

            config.Settings.Apply(response.Settings);

            var persistedClientData = config.Resolver.Resolve<PersistedDictionary>();
            persistedClientData[String.Concat(config.GetQueueName(), "-ServerConfigVersion")] = response.SettingsVersion.ToString();

            var fileStorage = config.Resolver.GetFileStorage();
            fileStorage.SaveObject(GetConfigPath(config), response.Settings, serializer);
        }
Example #10
0
        public static void CheckVersion(int version, ExceptionlessConfiguration config)
        {
            if (String.IsNullOrEmpty(config.ApiKey) || String.Equals(config.ApiKey, "API_KEY_HERE", StringComparison.OrdinalIgnoreCase))
            {
                config.Resolver.GetLog().Error(typeof(SettingsManager), "Unable to check version: ApiKey is not set.");
                return;
            }

            var persistedClientData = config.Resolver.Resolve <PersistedDictionary>();

            if (version <= persistedClientData.GetInt32(String.Concat(config.GetQueueName(), "-ServerConfigVersion"), -1))
            {
                return;
            }

            UpdateSettings(config);
        }
        public static int GetVersion(ExceptionlessConfiguration config) {
            if (config == null)
                return 0;

            if (String.IsNullOrEmpty(config.ApiKey) || String.Equals(config.ApiKey, "API_KEY_HERE", StringComparison.OrdinalIgnoreCase)) {
                config.Resolver.GetLog().Error(typeof(SettingsManager), "Unable to get version: ApiKey is not set.");
                return 0;
            }

            try {
                var persistedClientData = config.Resolver.Resolve<PersistedDictionary>();
                return persistedClientData.GetInt32(String.Concat(config.GetQueueName(), "-ServerConfigVersion"), 0);
            } catch (Exception ex) {
                config.Resolver.GetLog().Error(typeof(SettingsManager), ex, "Error occurred getting settings version.");
                return 0;
            }
        }
Example #12
0
        public static void UpdateSettings(ExceptionlessConfiguration config, int?version = null)
        {
            if (config == null || !config.IsValid || !config.Enabled || _isUpdatingSettings)
            {
                return;
            }

            try {
                _isUpdatingSettings = true;
                if (!version.HasValue || version < 0)
                {
                    version = GetVersion(config);
                }

                var serializer = config.Resolver.GetJsonSerializer();
                var client     = config.Resolver.GetSubmissionClient();

                var response = client.GetSettings(config, version.Value, serializer);
                if (!response.Success || response.Settings == null)
                {
                    return;
                }

                var savedServerSettings = GetSavedServerSettings(config);
                config.Settings.Apply(response.Settings);

                // TODO: Store snapshot of settings after reading from config and attributes and use that to revert to defaults.
                // Remove any existing server settings that are not in the new server settings.
                foreach (string key in savedServerSettings.Keys.Except(response.Settings.Keys))
                {
                    config.Settings.Remove(key);
                }

                var persistedClientData = config.Resolver.Resolve <PersistedDictionary>();
                persistedClientData[String.Concat(config.GetQueueName(), "-ServerConfigVersion")] = response.SettingsVersion.ToString();

                var fileStorage = config.Resolver.GetFileStorage();
                fileStorage.SaveObject(GetConfigPath(config), response.Settings);
            } catch (Exception ex) {
                config.Resolver.GetLog().Error(typeof(SettingsManager), ex, "Error occurred updating settings.");
            } finally {
                _isUpdatingSettings = false;
            }
        }
Example #13
0
        public static int GetVersion(ExceptionlessConfiguration config)
        {
            if (config == null)
            {
                return(0);
            }

            if (String.IsNullOrEmpty(config.ApiKey) || String.Equals(config.ApiKey, "API_KEY_HERE", StringComparison.OrdinalIgnoreCase))
            {
                config.Resolver.GetLog().Error(typeof(SettingsManager), "Unable to get version: ApiKey is not set.");
                return(0);
            }

            try {
                var persistedClientData = config.Resolver.Resolve <PersistedDictionary>();
                return(persistedClientData.GetInt32(String.Concat(config.GetQueueName(), "-ServerConfigVersion"), 0));
            } catch (Exception ex) {
                config.Resolver.GetLog().Error(typeof(SettingsManager), ex, "Error occurred getting settings version.");
                return(0);
            }
        }
Example #14
0
        public static void UpdateSettings(ExceptionlessConfiguration config)
        {
            if (String.IsNullOrEmpty(config.ApiKey) || String.Equals(config.ApiKey, "API_KEY_HERE", StringComparison.OrdinalIgnoreCase))
            {
                config.Resolver.GetLog().Error(typeof(SettingsManager), "Unable to update settings: ApiKey is not set.");
                return;
            }

            var serializer = config.Resolver.GetJsonSerializer();
            var client     = config.Resolver.GetSubmissionClient();

            var response = client.GetSettings(config, serializer);

            if (!response.Success || response.Settings == null)
            {
                return;
            }

            var savedServerSettings = GetSavedServerSettings(config);

            config.Settings.Apply(response.Settings);

            // TODO: Store snapshot of settings after reading from config and attributes and use that to revert to defaults.
            // Remove any existing server settings that are not in the new server settings.
            foreach (string key in savedServerSettings.Keys.Except(response.Settings.Keys))
            {
                if (config.Settings.ContainsKey(key))
                {
                    config.Settings.Remove(key);
                }
            }

            var persistedClientData = config.Resolver.Resolve <PersistedDictionary>();

            persistedClientData[String.Concat(config.GetQueueName(), "-ServerConfigVersion")] = response.SettingsVersion.ToString();

            var fileStorage = config.Resolver.GetFileStorage();

            fileStorage.SaveObject(GetConfigPath(config), response.Settings);
        }
        public static void UpdateSettings(ExceptionlessConfiguration config)
        {
            var serializer = config.Resolver.GetJsonSerializer();
            var client     = config.Resolver.GetSubmissionClient();

            var response = client.GetSettings(config, serializer);

            if (!response.Success)
            {
                return;
            }

            config.Settings.Apply(response.Settings);

            var persistedClientData = config.Resolver.Resolve <PersistedDictionary>();

            persistedClientData[String.Concat(config.GetQueueName(), "-ServerConfigVersion")] = response.SettingsVersion.ToString();

            var fileStorage = config.Resolver.GetFileStorage();

            fileStorage.SaveObject(GetConfigPath(config), response.Settings, serializer);
        }
Example #16
0
 private static string GetConfigPath(ExceptionlessConfiguration config)
 {
     return(config.GetQueueName() + "\\server-settings.json");
 }
Example #17
0
        private static string GetConfigPath(ExceptionlessConfiguration config)
        {
            string queueName = config != null?config.GetQueueName() : String.Empty;

            return(Path.Combine(queueName ?? String.Empty, "server-settings.json"));
        }
        public static void UpdateSettings(ExceptionlessConfiguration config, int? version = null) {
            if (config == null || !config.IsValid || !config.Enabled)
                return;

            try {
                if (!version.HasValue || version < 0)
                    version = GetVersion(config);

                var serializer = config.Resolver.GetJsonSerializer();
                var client = config.Resolver.GetSubmissionClient();

                var response = client.GetSettings(config, version.Value, serializer);
                if (!response.Success || response.Settings == null)
                    return;

                var savedServerSettings = GetSavedServerSettings(config);
                config.Settings.Apply(response.Settings);

                // TODO: Store snapshot of settings after reading from config and attributes and use that to revert to defaults.
                // Remove any existing server settings that are not in the new server settings.
                foreach (string key in savedServerSettings.Keys.Except(response.Settings.Keys)) {
                    if (config.Settings.ContainsKey(key))
                        config.Settings.Remove(key);
                }

                var persistedClientData = config.Resolver.Resolve<PersistedDictionary>();
                persistedClientData[String.Concat(config.GetQueueName(), "-ServerConfigVersion")] = response.SettingsVersion.ToString();

                var fileStorage = config.Resolver.GetFileStorage();
                fileStorage.SaveObject(GetConfigPath(config), response.Settings);
            } catch (Exception ex) {
                config.Resolver.GetLog().Error(typeof(SettingsManager), ex, "Error occurred updating settings.");
            }
        }
 private static string GetConfigPath(ExceptionlessConfiguration config) {
     string queueName = config != null ? config.GetQueueName() : String.Empty;
     return Path.Combine(queueName ?? String.Empty, "server-settings.json");
 }
 private static string GetConfigPath(ExceptionlessConfiguration config) {
     return config.GetQueueName() + "\\server-settings.json";
 }