/Blocks/Logging/Tests/Configuration.Manageability/TraceListeners/SystemDiagnosticsTraceListenerDataManageabilityProviderFixture.cs
C# | 237 lines | 184 code | 38 blank | 15 comment | 1 complexity | a5db6ab7e07439e7517f50dd47cc0b88 MD5 | raw file
- //===============================================================================
- // Microsoft patterns & practices Enterprise Library
- // Logging Application Block
- //===============================================================================
- // Copyright Š Microsoft Corporation. All rights reserved.
- // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY
- // OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
- // LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- // FITNESS FOR A PARTICULAR PURPOSE.
- //===============================================================================
-
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Reflection;
- using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
- using Microsoft.Practices.EnterpriseLibrary.Common.Configuration.Manageability;
- using Microsoft.Practices.EnterpriseLibrary.Common.Configuration.Manageability.Adm;
- using Microsoft.Practices.EnterpriseLibrary.Common.TestSupport.Configuration.Manageability.Mocks;
- using Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.Manageability.TraceListeners;
- using Microsoft.VisualStudio.TestTools.UnitTesting;
-
- namespace Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.Manageability.Tests.TraceListeners
- {
- [TestClass]
- public class SystemDiagnosticsTraceListenerDataManageabilityProviderFixture
- {
- SystemDiagnosticsTraceListenerDataManageabilityProvider provider;
- MockRegistryKey machineKey;
- MockRegistryKey machineOptionsKey;
- MockRegistryKey userKey;
- MockRegistryKey userOptionsKey;
- SystemDiagnosticsTraceListenerData configurationObject;
-
- [TestInitialize]
- public void SetUp()
- {
- provider = new SystemDiagnosticsTraceListenerDataManageabilityProvider();
- machineKey = new MockRegistryKey(true);
- machineOptionsKey = new MockRegistryKey(false);
- userKey = new MockRegistryKey(true);
- userOptionsKey = new MockRegistryKey(false);
- configurationObject = new SystemDiagnosticsTraceListenerData();
- }
-
- [TestMethod]
- public void ManageabilityProviderIsProperlyRegistered()
- {
- ConfigurationElementManageabilityProviderAttribute selectedAttribute = null;
-
- Assembly assembly = typeof(SystemDiagnosticsTraceListenerDataManageabilityProvider).Assembly;
- foreach (ConfigurationElementManageabilityProviderAttribute providerAttribute
- in assembly.GetCustomAttributes(typeof(ConfigurationElementManageabilityProviderAttribute), false))
- {
- if (providerAttribute.ManageabilityProviderType.Equals(typeof(SystemDiagnosticsTraceListenerDataManageabilityProvider)))
- {
- selectedAttribute = providerAttribute;
- break;
- }
- }
-
- Assert.IsNotNull(selectedAttribute);
- Assert.AreSame(typeof(LoggingSettingsManageabilityProvider), selectedAttribute.SectionManageabilityProviderType);
- Assert.AreSame(typeof(SystemDiagnosticsTraceListenerData), selectedAttribute.TargetType);
- }
-
- [TestMethod]
- public void ConfigurationObjectIsNotModifiedIfThereAreNoPolicyOverrides()
- {
- // no need to test for attributes, it's tested for parent class
- configurationObject.Type = typeof(Object);
- configurationObject.InitData = "init data";
- configurationObject.TraceOutputOptions = TraceOptions.None;
- configurationObject.Filter = SourceLevels.Error;
-
- provider.OverrideWithGroupPolicies(configurationObject, true, null, null);
-
- Assert.AreSame(typeof(Object), configurationObject.Type);
- Assert.AreEqual("init data", configurationObject.InitData);
- Assert.AreEqual(TraceOptions.None, configurationObject.TraceOutputOptions);
- Assert.AreEqual(SourceLevels.Error, configurationObject.Filter);
- }
-
- [TestMethod]
- public void ConfigurationObjectIsModifiedIfThereAreMachinePolicyOverrides()
- {
- // no need to test for attributes, it's tested for parent class
- configurationObject.Type = typeof(Object);
- configurationObject.InitData = "init data";
- configurationObject.TraceOutputOptions = TraceOptions.None;
- configurationObject.Filter = SourceLevels.Error;
-
- machineKey.AddStringValue(SystemDiagnosticsTraceListenerDataManageabilityProvider.ProviderTypePropertyName, typeof(Object).AssemblyQualifiedName);
- machineKey.AddStringValue(SystemDiagnosticsTraceListenerDataManageabilityProvider.AttributesPropertyName, "");
- machineKey.AddStringValue(SystemDiagnosticsTraceListenerDataManageabilityProvider.InitDataPropertyName, "overriden init data");
- machineKey.AddStringValue(SystemDiagnosticsTraceListenerDataManageabilityProvider.FilterPropertyName, "Critical");
- machineKey.AddSubKey(MsmqTraceListenerDataManageabilityProvider.TraceOutputOptionsPropertyName, machineOptionsKey);
- machineOptionsKey.AddIntValue(TraceOptions.ProcessId.ToString(), 1);
- machineOptionsKey.AddIntValue(TraceOptions.ThreadId.ToString(), 1);
-
- provider.OverrideWithGroupPolicies(configurationObject, true, machineKey, null);
-
- Assert.AreEqual("overriden init data", configurationObject.InitData);
- Assert.AreEqual(TraceOptions.ProcessId | TraceOptions.ThreadId, configurationObject.TraceOutputOptions);
- Assert.AreEqual(SourceLevels.Critical, configurationObject.Filter);
- }
-
- [TestMethod]
- public void ConfigurationObjectIsModifiedIfThereAreUserPolicyOverrides()
- {
- // no need to test for attributes, it's tested for parent class
- configurationObject.Type = typeof(Object);
- configurationObject.InitData = "init data";
- configurationObject.TraceOutputOptions = TraceOptions.None;
- configurationObject.Filter = SourceLevels.Error;
-
- userKey.AddStringValue(SystemDiagnosticsTraceListenerDataManageabilityProvider.ProviderTypePropertyName, typeof(Object).AssemblyQualifiedName);
- userKey.AddStringValue(SystemDiagnosticsTraceListenerDataManageabilityProvider.AttributesPropertyName, "");
- userKey.AddStringValue(SystemDiagnosticsTraceListenerDataManageabilityProvider.InitDataPropertyName, "overriden init data");
- userKey.AddStringValue(SystemDiagnosticsTraceListenerDataManageabilityProvider.FilterPropertyName, "Critical");
- userKey.AddSubKey(MsmqTraceListenerDataManageabilityProvider.TraceOutputOptionsPropertyName, userOptionsKey);
- userOptionsKey.AddIntValue(TraceOptions.ProcessId.ToString(), 1);
- userOptionsKey.AddIntValue(TraceOptions.ThreadId.ToString(), 1);
-
- provider.OverrideWithGroupPolicies(configurationObject, true, null, userKey);
-
- Assert.AreEqual("overriden init data", configurationObject.InitData);
- Assert.AreEqual(TraceOptions.ProcessId | TraceOptions.ThreadId, configurationObject.TraceOutputOptions);
- Assert.AreEqual(SourceLevels.Critical, configurationObject.Filter);
- }
-
- [TestMethod]
- public void ConfigurationObjectIsNotModifiedIfThereArePolicyOverridesButGroupPoliciesAreDisabled()
- {
- // no need to test for attributes, it's tested for parent class
- configurationObject.Type = typeof(Object);
- configurationObject.InitData = "init data";
- configurationObject.TraceOutputOptions = TraceOptions.None;
- configurationObject.Filter = SourceLevels.Error;
-
- machineKey.AddStringValue(SystemDiagnosticsTraceListenerDataManageabilityProvider.InitDataPropertyName, "overriden init data");
- machineKey.AddStringValue(SystemDiagnosticsTraceListenerDataManageabilityProvider.FilterPropertyName, "Critical");
- machineKey.AddSubKey(MsmqTraceListenerDataManageabilityProvider.TraceOutputOptionsPropertyName, machineOptionsKey);
- machineOptionsKey.AddIntValue(TraceOptions.ProcessId.ToString(), 1);
- machineOptionsKey.AddIntValue(TraceOptions.ThreadId.ToString(), 1);
-
- provider.OverrideWithGroupPolicies(configurationObject, false, machineKey, userKey);
-
- Assert.AreSame(typeof(Object), configurationObject.Type);
- Assert.AreEqual("init data", configurationObject.InitData);
- Assert.AreEqual(TraceOptions.None, configurationObject.TraceOutputOptions);
- Assert.AreEqual(SourceLevels.Error, configurationObject.Filter);
- }
-
- [TestMethod]
- public void ManageabilityProviderGeneratesProperAdmContent()
- {
- DictionaryConfigurationSource configurationSource = new DictionaryConfigurationSource();
- LoggingSettings section = new LoggingSettings();
- configurationSource.Add(LoggingSettings.SectionName, section);
-
- configurationObject.Type = typeof(object);
-
- MockAdmContentBuilder contentBuilder = new MockAdmContentBuilder();
-
- contentBuilder.StartCategory("category");
- provider.AddAdministrativeTemplateDirectives(contentBuilder, configurationObject, configurationSource, "TestApp");
- contentBuilder.EndCategory();
-
- MockAdmContent content = contentBuilder.GetMockContent();
- IEnumerator<AdmCategory> categoriesEnumerator = content.Categories.GetEnumerator();
- categoriesEnumerator.MoveNext();
- IEnumerator<AdmPolicy> policiesEnumerator = categoriesEnumerator.Current.Policies.GetEnumerator();
- Assert.IsTrue(policiesEnumerator.MoveNext());
- IEnumerator<AdmPart> partsEnumerator = policiesEnumerator.Current.Parts.GetEnumerator();
-
- Assert.IsTrue(partsEnumerator.MoveNext());
- Assert.AreSame(typeof(AdmEditTextPart), partsEnumerator.Current.GetType());
- Assert.IsNull(partsEnumerator.Current.KeyName);
-
- Assert.IsTrue(partsEnumerator.MoveNext());
- Assert.AreSame(typeof(AdmEditTextPart), partsEnumerator.Current.GetType());
- Assert.IsNull(partsEnumerator.Current.KeyName);
-
- Assert.IsTrue(partsEnumerator.MoveNext());
- Assert.AreSame(typeof(AdmEditTextPart), partsEnumerator.Current.GetType());
- Assert.IsNull(partsEnumerator.Current.KeyName);
- Assert.AreEqual(SystemDiagnosticsTraceListenerDataManageabilityProvider.InitDataPropertyName,
- partsEnumerator.Current.ValueName);
-
- Assert.IsTrue(partsEnumerator.MoveNext());
- Assert.AreSame(typeof(AdmTextPart), partsEnumerator.Current.GetType());
- Assert.IsNull(partsEnumerator.Current.KeyName);
- Assert.IsNull(partsEnumerator.Current.ValueName);
-
- // trace output options checkboxes
- Assert.IsTrue(partsEnumerator.MoveNext());
- Assert.AreSame(typeof(AdmCheckboxPart), partsEnumerator.Current.GetType());
- Assert.IsNotNull(partsEnumerator.Current.KeyName);
- Assert.AreEqual("LogicalOperationStack", partsEnumerator.Current.ValueName);
-
- Assert.IsTrue(partsEnumerator.MoveNext());
- Assert.AreSame(typeof(AdmCheckboxPart), partsEnumerator.Current.GetType());
- Assert.IsNotNull(partsEnumerator.Current.KeyName);
- Assert.AreEqual("DateTime", partsEnumerator.Current.ValueName);
-
- Assert.IsTrue(partsEnumerator.MoveNext());
- Assert.AreSame(typeof(AdmCheckboxPart), partsEnumerator.Current.GetType());
- Assert.IsNotNull(partsEnumerator.Current.KeyName);
- Assert.AreEqual("Timestamp", partsEnumerator.Current.ValueName);
-
- Assert.IsTrue(partsEnumerator.MoveNext());
- Assert.AreSame(typeof(AdmCheckboxPart), partsEnumerator.Current.GetType());
- Assert.IsNotNull(partsEnumerator.Current.KeyName);
- Assert.AreEqual("ProcessId", partsEnumerator.Current.ValueName);
-
- Assert.IsTrue(partsEnumerator.MoveNext());
- Assert.AreSame(typeof(AdmCheckboxPart), partsEnumerator.Current.GetType());
- Assert.IsNotNull(partsEnumerator.Current.KeyName);
- Assert.AreEqual("ThreadId", partsEnumerator.Current.ValueName);
-
- Assert.IsTrue(partsEnumerator.MoveNext());
- Assert.AreSame(typeof(AdmCheckboxPart), partsEnumerator.Current.GetType());
- Assert.IsNotNull(partsEnumerator.Current.KeyName);
- Assert.AreEqual("Callstack", partsEnumerator.Current.ValueName);
-
- Assert.IsTrue(partsEnumerator.MoveNext());
- Assert.AreSame(typeof(AdmDropDownListPart), partsEnumerator.Current.GetType());
- Assert.IsNull(partsEnumerator.Current.KeyName);
- Assert.AreEqual(SystemDiagnosticsTraceListenerDataManageabilityProvider.FilterPropertyName,
- partsEnumerator.Current.ValueName);
-
- Assert.IsFalse(partsEnumerator.MoveNext());
- Assert.IsFalse(policiesEnumerator.MoveNext());
- }
- }
- }