Esempio n. 1
0
        public void Log_WithFailingProvider_LogsToRemainingLoggers()
        {
            // Arrange
            var logger1 = new FailingLoggingProvider("Failure")
            {
                ExceptionToThrow = new Exception()
            };
            var logger2             = CreateInitializedMemoryLogger("MemoryLogger");
            var configuredProviders = new LoggingProviderCollection()
            {
                logger1, logger2
            };
            var providerUnderTest = CreateInitializedCompositeLoggingProvider(configuredProviders);
            var expectedMessage   = "Some message";

            // Act
            try
            {
                providerUnderTest.Log(expectedMessage);

                // Assert
                Assert.Fail("An exception was expected to be thrown.");
            }
            catch
            {
                // We're not interested in the exception
            }

            Assert.AreEqual(1, logger2.GetLoggedEntries().Length);
            Assert.AreEqual(expectedMessage, logger2.GetLoggedEntries().First().Message);
        }
Esempio n. 2
0
        public void CompleteInitialization_NonExistingProviderNameOnCustomProvider_ThrowsException()
        {
            // Arrange
            string providerName            = "Valid provider name";
            string nonExistingProviderName = "Non existing provider name";
            var    providerUnderTest       = new CustomProvider();
            var    validConfiguration      = new NameValueCollection();

            validConfiguration["provider1"] = nonExistingProviderName;
            providerUnderTest.Initialize(providerName, validConfiguration);

            // List of configured providers in order
            var configuredProviders = new LoggingProviderCollection()
            {
                providerUnderTest
            };

            try
            {
                // Act
                providerUnderTest.CompleteInitialization(configuredProviders, providerUnderTest);

                // Assert
                Assert.Fail("Exception expected.");
            }
            catch (ProviderException ex)
            {
                Assert.IsTrue(ex.Message.Contains(typeof(CustomProvider).FullName),
                              "Exception message should state the provider's full name, because the type is not a " +
                              "type defined by the library itself. Actual: " + ex.Message);
            }
        }
Esempio n. 3
0
        public void CompleteInitialization_WithValidConfiguration_Succeeds()
        {
            // Arrange
            var expectedReferencedProvider = CreateInitializedMemoryLogger("Other Provider");
            var defaultProvider            = CreateInitializedMemoryLogger("Default Provider");
            var providerUnderTest          = new CompositeLoggingProvider();
            var validConfiguration         = CreateValidConfiguration(expectedReferencedProvider.Name);

            providerUnderTest.Initialize("Valid provider name", validConfiguration);

            var configuredProviders = new LoggingProviderCollection()
            {
                providerUnderTest,
                expectedReferencedProvider,
                defaultProvider
            };

            // Act
            providerUnderTest.CompleteInitialization(configuredProviders, defaultProvider);
            var actualReferencedProvider = providerUnderTest.Providers[0];

            // Assert
            Assert.AreEqual(1, providerUnderTest.Providers.Count,
                            "The provider is expected to reference a single provider.");

            Assert.IsNotNull(actualReferencedProvider,
                             "The referenced provider should not be a null reference.");

            Assert.AreEqual(expectedReferencedProvider, actualReferencedProvider,
                            "The referenced provider is not the expected provider. Actual referenced provider: " +
                            actualReferencedProvider.Name);
        }
        public void Add_WithNullArgument_ThrowsException()
        {
            // Arrange
            var          collection      = new LoggingProviderCollection();
            ProviderBase invalidProvider = null;

            // Act
            collection.Add(invalidProvider);
        }
        public void Add_WithInvalidType_ThrowsException()
        {
            // Arrange
            var collection      = new LoggingProviderCollection();
            var invalidProvider = new UnrelatedProvider();

            invalidProvider.Initialize("Valid provider name", new NameValueCollection());

            // Act
            collection.Add(invalidProvider);
        }
        public void Add_WithValidArgument_Succeeds()
        {
            // Arrange
            var collection    = new LoggingProviderCollection();
            var validProvider = new MemoryLoggingProvider();

            validProvider.Initialize("Valid provider name", new NameValueCollection());

            // Act
            collection.Add(validProvider);
        }
Esempio n. 7
0
        private static CompositeLoggingProvider CreateInitializedCompositeLoggingProvider(
            LoggingProviderCollection providers)
        {
            var provider      = new CompositeLoggingProvider();
            var configuration = new NameValueCollection();

            foreach (var p in providers.Select((p, i) => new { Provider = p, Index = i }))
            {
                configuration["provider" + p.Index] = p.Provider.Name;
            }

            provider.Initialize("Valid provider name", configuration);

            provider.CompleteInitialization(providers, provider);

            return(provider);
        }
Esempio n. 8
0
        public void CompleteInitialization_WithArbitraryNumberedProviders_Succeeds()
        {
            // Arrange
            // List of referenced providers which names would sort them in opposite order.
            var firstExpectedReferencedProvider  = CreateInitializedMemoryLogger("First provider");
            var secondExpectedReferencedProvider = CreateInitializedMemoryLogger("Second provider");
            var thirdExpectedReferencedProvider  = CreateInitializedMemoryLogger("Third provider");
            var defaultProvider    = CreateInitializedMemoryLogger("Default Provider");
            var providerUnderTest  = new CompositeLoggingProvider();
            var validConfiguration = new NameValueCollection();

            // Configuration with provider attributes other than 1, 2 and 3.
            validConfiguration["provider3"]   = firstExpectedReferencedProvider.Name;
            validConfiguration["provider143"] = thirdExpectedReferencedProvider.Name;
            validConfiguration["provider66"]  = secondExpectedReferencedProvider.Name;
            providerUnderTest.Initialize("Valid provider name", validConfiguration);

            // List of configured providers in order
            var configuredProviders = new LoggingProviderCollection()
            {
                thirdExpectedReferencedProvider,
                defaultProvider,
                firstExpectedReferencedProvider,
                secondExpectedReferencedProvider,
                providerUnderTest
            };

            // Act
            providerUnderTest.CompleteInitialization(configuredProviders, defaultProvider);
            var actualFirstReferencedProvider      = providerUnderTest.Providers[0];
            var actualSecondReferencedProvider     = providerUnderTest.Providers[1];
            var actualThirdReferencedFirstProvider = providerUnderTest.Providers[2];

            // Assert
            Assert.IsTrue(firstExpectedReferencedProvider == actualFirstReferencedProvider,
                          "The first provider in the list is not the expected provider. Expected: {0}, Actual: {1}",
                          firstExpectedReferencedProvider.Name, actualFirstReferencedProvider.Name);

            Assert.AreEqual(secondExpectedReferencedProvider, actualSecondReferencedProvider,
                            "The second provider in the list is not the expected provider. Expected: {0}, Actual: {1}",
                            firstExpectedReferencedProvider.Name, actualFirstReferencedProvider.Name);

            Assert.AreEqual(thirdExpectedReferencedProvider, actualThirdReferencedFirstProvider,
                            "The third provider in the list is not the expected provider. Expected: {0}, Actual: {1}",
                            firstExpectedReferencedProvider.Name, actualFirstReferencedProvider.Name);
        }
Esempio n. 9
0
        public void CompleteInitialization_NonExistingProviderName_ThrowsException()
        {
            // Arrange
            string providerName            = "Valid provider name";
            string nonExistingProviderName = "Non existing provider name";
            var    providerUnderTest       = new CompositeLoggingProvider();
            var    validConfiguration      = new NameValueCollection();

            validConfiguration["provider1"] = nonExistingProviderName;
            providerUnderTest.Initialize(providerName, validConfiguration);

            // List of configured providers in order
            var configuredProviders = new LoggingProviderCollection()
            {
                providerUnderTest
            };

            try
            {
                // Act
                providerUnderTest.CompleteInitialization(configuredProviders, providerUnderTest);

                // Assert
                Assert.Fail("Exception expected.");
            }
            catch (ProviderException ex)
            {
                string msg = ex.Message ?? string.Empty;

                Assert.IsTrue(msg.Contains("references a provider") && msg.Contains("that does not exist"),
                              "Exception message should describe the problem. Actual: " + msg);

                Assert.IsTrue(msg.Contains("CompositeLoggingProvider"),
                              "Exception message should describe the provider type. Actual: " + msg);

                Assert.IsTrue(msg.Contains(providerName),
                              "Exception message should describe the provider name. Actual: " + msg);

                Assert.IsTrue(msg.Contains(nonExistingProviderName),
                              "Exception message should describe the name of the referenced provider. Actual: " + msg);

                Assert.IsTrue(msg.Contains("Make sure the name is spelled correctly."),
                              "Exception message should describe how to solve the problem. Actual: " + msg);
            }
        }
Esempio n. 10
0
        public void CompleteInitialization_WithMultipleProviders_Succeeds()
        {
            // Arrange
            // List of referenced providers which names would sort them in opposite order.
            var firstExpectedReferencedProvider  = CreateInitializedMemoryLogger("Z first provider");
            var secondExpectedReferencedProvider = CreateInitializedMemoryLogger("Y second provider");
            var thirdExpectedReferencedProvider  = CreateInitializedMemoryLogger("X third provider");
            var defaultProvider    = CreateInitializedMemoryLogger("Default Provider");
            var providerUnderTest  = new CompositeLoggingProvider();
            var validConfiguration = CreateValidConfiguration(
                firstExpectedReferencedProvider.Name,
                secondExpectedReferencedProvider.Name,
                thirdExpectedReferencedProvider.Name);

            providerUnderTest.Initialize("Valid provider name", validConfiguration);

            // List of configured providers in order
            var configuredProviders = new LoggingProviderCollection()
            {
                thirdExpectedReferencedProvider,
                defaultProvider,
                firstExpectedReferencedProvider,
                secondExpectedReferencedProvider,
                providerUnderTest
            };

            // Act
            providerUnderTest.CompleteInitialization(configuredProviders, defaultProvider);
            var actualFirstReferencedProvider      = providerUnderTest.Providers[0];
            var actualSecondReferencedProvider     = providerUnderTest.Providers[1];
            var actualThirdReferencedFirstProvider = providerUnderTest.Providers[2];

            // Assert
            Assert.IsTrue(firstExpectedReferencedProvider == actualFirstReferencedProvider,
                          "The first provider in the list is not the expected provider. Expected: {0}, Actual: {1}",
                          firstExpectedReferencedProvider.Name, actualFirstReferencedProvider.Name);

            Assert.AreEqual(secondExpectedReferencedProvider, actualSecondReferencedProvider,
                            "The second provider in the list is not the expected provider. Expected: {0}, Actual: {1}",
                            firstExpectedReferencedProvider.Name, actualFirstReferencedProvider.Name);

            Assert.AreEqual(thirdExpectedReferencedProvider, actualThirdReferencedFirstProvider,
                            "The third provider in the list is not the expected provider. Expected: {0}, Actual: {1}",
                            firstExpectedReferencedProvider.Name, actualFirstReferencedProvider.Name);
        }
Esempio n. 11
0
        public void Log_WithSingleReferencedProvider_LogsToReferencedProvider()
        {
            // Arrange
            var memoryLogger        = CreateInitializedMemoryLogger("MemoryLogger");
            var configuredProviders = new LoggingProviderCollection()
            {
                memoryLogger
            };
            var providerUnderTest = CreateInitializedCompositeLoggingProvider(configuredProviders);
            var expectedMessage   = "Some message";

            // Act
            providerUnderTest.Log("Some message");

            // Assert
            Assert.AreEqual(1, memoryLogger.GetLoggedEntries().Length);
            Assert.AreEqual(expectedMessage, memoryLogger.GetLoggedEntries().First().Message);
        }
Esempio n. 12
0
        public void Log_WithMultipleReferencedProviders_LogsToAllReferencedProviders()
        {
            // Arrange
            var logger1             = CreateInitializedMemoryLogger("MemoryLogger1");
            var logger2             = CreateInitializedMemoryLogger("MemoryLogger2");
            var configuredProviders = new LoggingProviderCollection()
            {
                logger1, logger2
            };
            var providerUnderTest = CreateInitializedCompositeLoggingProvider(configuredProviders);
            var expectedMessage   = "Some message";

            // Act
            providerUnderTest.Log("Some message");

            // Assert
            Assert.AreEqual(1, logger1.GetLoggedEntries().Length);
            Assert.AreEqual(1, logger2.GetLoggedEntries().Length);
            Assert.AreEqual(expectedMessage, logger1.GetLoggedEntries().First().Message);
            Assert.AreEqual(expectedMessage, logger2.GetLoggedEntries().First().Message);
        }
Esempio n. 13
0
        public void Log_WithFailingProviders_ThrowsExceptionWithExpectedTypeAndMessage()
        {
            // Arrange
            var logger1 = new FailingLoggingProvider("Faile1")
            {
                ExceptionToThrow = new Exception("foo")
            };
            var logger2 = new FailingLoggingProvider("Faile2")
            {
                ExceptionToThrow = new Exception("bar")
            };
            var logger3             = CreateInitializedMemoryLogger("MemoryLogger");
            var configuredProviders = new LoggingProviderCollection()
            {
                logger1, logger2, logger3
            };
            var providerUnderTest = CreateInitializedCompositeLoggingProvider(configuredProviders);
            var expectedMessage   = "Some message";

            // Act
            try
            {
                providerUnderTest.Log(expectedMessage);

                // Assert
                Assert.Fail("An exception was expected to be thrown.");
            }
            catch (Exception ex)
            {
                // When logging to multiple providers, the provider should wrap the thrown exceptions in a
                // CompositeException, even if there is only one Exception (re throwing the same exception
                // would make us loose the stack trace).
                Assert.IsInstanceOfType(ex, typeof(CompositeException));
                Assert.IsTrue(ex.Message.Contains("foo"),
                              "Exception message should contain all inner exception messages. (foo missing)");
                Assert.IsTrue(ex.Message.Contains("bar"),
                              "Exception message should contain all inner exception messages. (bar missing)");
            }
        }