Beispiel #1
0
        public new void Setup()
        {
            // Do base generic setup
            base.Setup();

            try
            {
                // Only use event firing if we are logging
                if (LoggingConfig.GetLoggingEnabledSetting() != LoggingEnabled.NO)
                {
                    this.SetupEventFiringTester();
                }
                else
                {
                    this.SetupNoneEventFiringTester();
                }
            }
            catch (Exception e)
            {
                this.TryToLog(MessageType.ERROR, "Setup failed because: {0}\r\n{1}", e.Message, e.StackTrace);

                // Make sure we do the standard teardown
                this.Teardown();
                throw e;
            }

            this.PostSetupLogging();
        }
Beispiel #2
0
        /// <summary>
        /// Create a logger
        /// </summary>
        /// <returns>A logger</returns>
        protected Logger CreateLogger()
        {
            this.LoggedExceptionList   = new List <string>();
            this.LoggingEnabledSetting = LoggingConfig.GetLoggingEnabledSetting();

            // Setup the exception listener
            AppDomain currentDomain = AppDomain.CurrentDomain;

            if (LoggingConfig.GetFirstChanceHandler())
            {
                currentDomain.FirstChanceException += this.FirstChanceHandler;
            }

            if (this.LoggingEnabledSetting != LoggingEnabled.NO)
            {
                return(LoggingConfig.GetLogger(
                           StringProcessor.SafeFormatter(
                               "{0} - {1}",
                               this.GetFullyQualifiedTestClassName(),
                               DateTime.UtcNow.ToString("yyyy-MM-dd-hh-mm-ss-ffff", CultureInfo.InvariantCulture))));
            }
            else
            {
                return(new ConsoleLogger());
            }
        }
        public void GetLoggingEnabledSettings()
        {
            LoggingEnabled[] loggingEnableds = (LoggingEnabled[])Enum.GetValues(typeof(LoggingEnabled));

            for (int i = 0; i < loggingEnableds.Length; i++)
            {
                Config.AddTestSettingValues("Log", loggingEnableds[i].ToString(), "MagenicMaqs", true);
                Assert.AreEqual(loggingEnableds[i], LoggingConfig.GetLoggingEnabledSetting());
            }
        }
Beispiel #4
0
        /// <summary>
        /// Listen for any thrown exceptions
        /// </summary>
        /// <param name="source">Source object</param>
        /// <param name="e">The first chance exception</param>
        private void FirstChanceHandler(object source, FirstChanceExceptionEventArgs e)
        {
            // Config settings for logging are messed up so we cannot safely log to anything but the console
            if (e.Exception is MaqsLoggingConfigException)
            {
                Console.WriteLine(StringProcessor.SafeExceptionFormatter(e.Exception));
                return;
            }

            try
            {
                // Only do this is we are logging
                if (LoggingConfig.GetLoggingEnabledSetting() == LoggingEnabled.NO)
                {
                    return;
                }

                Exception ex = e.Exception;

                // Check for an inner exception or if it is from the NUnit core
                if (ex.InnerException == null || ex.Source.Equals("nunit.core"))
                {
                    // This is not the test run exception we are looking for
                    return;
                }

                // Get the inner exception and specific test name
                Exception inner      = ex.InnerException;
                string    innerStack = inner.StackTrace ?? string.Empty;

                var message  = StringProcessor.SafeExceptionFormatter(inner);
                var messages = this.LoggedExceptionList;

                // Make sure this error is associated with the current test and that we have not logged it yet
                if (innerStack.ToLower().Contains("magenic.maqs") || innerStack.Contains("at " + this.GetFullyQualifiedTestClassName() + "("))
                {
                    // Check if this is a duplicate massage
                    if (messages.Count > 0 && messages.Last().Equals(message))
                    {
                        return;
                    }

                    this.TryToLog(MessageType.ERROR, message);
                    messages.Add(message);
                }
            }
            catch (Exception ex)
            {
                this.TryToLog(MessageType.WARNING, "Failed to log exception because: " + ex.Message);
            }
        }
Beispiel #5
0
        /// <summary>
        /// Get the web driver
        /// </summary>
        /// <returns>The web driver</returns>
        public IWebDriver GetWebDriver()
        {
            IWebDriver tempDriver;

            if (!this.IsDriverIntialized() && LoggingConfig.GetLoggingEnabledSetting() != LoggingEnabled.NO)
            {
                tempDriver = GetDriver() as IWebDriver;
                tempDriver = new EventFiringWebDriver(tempDriver);
                this.MapEvents(tempDriver as EventFiringWebDriver);
                this.BaseDriver = tempDriver;

                // Log the setup
                this.LoggingStartup(tempDriver);
            }

            return(GetBase() as IWebDriver);
        }
Beispiel #6
0
        /// <summary>
        /// Get the http driver
        /// </summary>
        /// <returns>The http driver</returns>
        public WebServiceDriver GetWebServiceDriver()
        {
            if (this.driver == null)
            {
                if (LoggingConfig.GetLoggingEnabledSetting() == LoggingEnabled.NO)
                {
                    this.Log.LogMessage(MessageType.INFORMATION, "Getting web service driver");
                    this.driver = new WebServiceDriver(GetBase() as HttpClient);
                }
                else
                {
                    this.Log.LogMessage(MessageType.INFORMATION, "Getting event firing web service driver");
                    this.driver = new EventFiringWebServiceDriver(GetBase() as HttpClient);
                    this.MapEvents(this.driver as EventFiringWebServiceDriver);
                }
            }

            return(this.driver);
        }
        /// <summary>
        /// Get the email connection driver
        /// </summary>
        /// <returns>The email connection driver</returns>
        public EmailDriver GetEmailDriver()
        {
            if (this.driver == null)
            {
                if (LoggingConfig.GetLoggingEnabledSetting() == LoggingEnabled.NO)
                {
                    this.Log.LogMessage(MessageType.INFORMATION, "Getting email driver");
                    this.driver = new EmailDriver(() => GetBase() as ImapClient);
                }
                else
                {
                    this.Log.LogMessage(MessageType.INFORMATION, "Getting event firing email driver");
                    this.driver = new EventFiringEmailDriver(() => GetBase() as ImapClient);
                    this.MapEvents(this.driver as EventFiringEmailDriver);
                }
            }

            return(this.driver);
        }
        /// <summary>
        /// Get the database driver
        /// </summary>
        /// <returns>The database driver</returns>
        public DatabaseDriver GetDatabaseDriver()
        {
            if (this.driver == null)
            {
                if (LoggingConfig.GetLoggingEnabledSetting() == LoggingEnabled.NO)
                {
                    this.Log.LogMessage(MessageType.INFORMATION, "Getting database driver");
                    this.driver = new DatabaseDriver(GetBase() as IDbConnection);
                }
                else
                {
                    this.Log.LogMessage(MessageType.INFORMATION, "Getting event firing database driver");
                    this.driver = new EventFiringDatabaseDriver(GetBase() as IDbConnection);
                    this.MapEvents(this.driver as EventFiringDatabaseDriver);
                }
            }

            return(this.driver);
        }
Beispiel #9
0
        /// <summary>
        /// Get the Mongo driver
        /// </summary>
        /// <returns>The Mongo driver</returns>
        public MongoDBDriver <T> GetMongoDriver()
        {
            if (this.driver == null)
            {
                IMongoCollection <T> temp = (IMongoCollection <T>)GetBase();

                if (LoggingConfig.GetLoggingEnabledSetting() == LoggingEnabled.NO)
                {
                    this.Log.LogMessage(MessageType.INFORMATION, "Getting Mongo driver");
                    this.driver = new MongoDBDriver <T>(temp);
                }
                else
                {
                    this.Log.LogMessage(MessageType.INFORMATION, "Getting event firing Mongo driver");
                    this.driver = new EventFiringMongoDBDriver <T>(temp);
                    this.MapEvents((EventFiringMongoDBDriver <T>) this.driver);
                }
            }

            return(this.driver);
        }
Beispiel #10
0
        /// <summary>
        /// Get the Mongo driver
        /// </summary>
        /// <returns>The Mongo driver</returns>
        public MongoDBDriver <T> GetMongoDriver()
        {
            if (this.driver == null)
            {
                ValueTuple <string, string, string> temp = (ValueTuple <string, string, string>)GetBase();

                if (LoggingConfig.GetLoggingEnabledSetting() == LoggingEnabled.NO)
                {
                    this.Log.LogMessage(MessageType.INFORMATION, "Getting Mongo driver");
                    this.driver = new MongoDBDriver <T>(temp.Item1, temp.Item2, temp.Item3);
                }
                else
                {
                    this.Log.LogMessage(MessageType.INFORMATION, "Getting event firing Mongo driver");
                    this.driver = new EventFiringMongoDBDriver <T>(temp.Item1, temp.Item2, temp.Item3);
                    this.MapEvents((EventFiringMongoDBDriver <T>) this.driver);
                }
            }

            return(this.driver);
        }
Beispiel #11
0
        /// <summary>
        /// Listen for any thrown exceptions
        /// </summary>
        /// <param name="source">Source object</param>
        /// <param name="e">The first chance exception</param>
        private void FirstChanceHandler(object source, FirstChanceExceptionEventArgs e)
        {
            try
            {
                // Only do this is we are logging
                if (LoggingConfig.GetLoggingEnabledSetting() == LoggingEnabled.NO)
                {
                    return;
                }

                Exception ex = e.Exception;

                // Check for an inner exception or if it is from the NUnit core
                if (ex.InnerException == null || ex.Source.Equals("nunit.core"))
                {
                    // This is not the test run exception we are looking for
                    return;
                }

                // Get the inner exception and specific test name
                Exception inner      = ex.InnerException;
                string    innerStack = inner.StackTrace ?? string.Empty;

                string        message  = inner.Message + Environment.NewLine + innerStack;
                List <string> messages = this.LoggedExceptionList;

                // Make sure this error is associated with the current test and that we have not logged it yet
                if (innerStack.ToLower().Contains("magenic.maqs") ||
                    (innerStack.Contains("at " + this.GetFullyQualifiedTestClassName() + "(") && !messages.Contains(message)))
                {
                    this.TryToLog(MessageType.ERROR, message);
                    messages.Add(message);
                }
            }
            catch (Exception ex)
            {
                this.TryToLog(MessageType.WARNING, "Failed to log exception because: " + ex.Message);
            }
        }
Beispiel #12
0
        /// <summary>
        /// Map selenium events to log events
        /// </summary>
        /// <param name="eventFiringDriver">The event firing web driver that we want mapped</param>
        private void MapEvents(EventFiringWebDriver eventFiringDriver)
        {
            LoggingEnabled enbled = LoggingConfig.GetLoggingEnabledSetting();

            if (enbled == LoggingEnabled.YES || enbled == LoggingEnabled.ONFAIL)
            {
                eventFiringDriver.ElementClicked       += this.WebDriver_ElementClicked;
                eventFiringDriver.ElementClicking      += this.WebDriver_ElementClicking;
                eventFiringDriver.ElementValueChanged  += this.WebDriver_ElementValueChanged;
                eventFiringDriver.ElementValueChanging += this.WebDriver_ElementValueChanging;
                eventFiringDriver.FindElementCompleted += this.WebDriver_FindElementCompleted;
                eventFiringDriver.FindingElement       += this.WebDriver_FindingElement;
                eventFiringDriver.ScriptExecuted       += this.WebDriver_ScriptExecuted;
                eventFiringDriver.ScriptExecuting      += this.WebDriver_ScriptExecuting;
                eventFiringDriver.Navigated            += this.WebDriver_Navigated;
                eventFiringDriver.Navigating           += this.WebDriver_Navigating;
                eventFiringDriver.NavigatedBack        += this.WebDriver_NavigatedBack;
                eventFiringDriver.NavigatedForward     += this.WebDriver_NavigatedForward;
                eventFiringDriver.NavigatingBack       += this.WebDriver_NavigatingBack;
                eventFiringDriver.NavigatingForward    += this.WebDriver_NavigatingForward;
                eventFiringDriver.ExceptionThrown      += this.WebDriver_ExceptionThrown;
            }
        }
Beispiel #13
0
        /// <summary>
        /// Create a Selenium test object
        /// </summary>
        protected new void SetupTestObject()
        {
            ILogger newLogger = this.CreateAndSetupLogger(GetFileNameWithoutExtension(), LoggingConfig.GetLogType(), LoggingConfig.GetLoggingEnabledSetting(), LoggingConfig.GetFirstChanceHandler());

            this.TestObject = CreateSpecificTestObject(newLogger);
        }
 public void GetLoggingEnabledSettingsDefault()
 {
     Config.AddTestSettingValues("Log", "Default", "MagenicMaqs", true);
     LoggingConfig.GetLoggingEnabledSetting();
 }