示例#1
0
        public void VerifyLogHasCreatedStatusWhenItIsCreated()
        {
            //Arrange
            var loggerController = new LoggerController();

            //Act
            var logToSave = new LoggerEntities.Log("LogType", "LogMessage");

            //Assert
            Assert.IsTrue(logToSave.LogStatus.Equals(AppConstant.LogStatus.Created));
        }
示例#2
0
        public void VerifyLogIsSuccessfullySavedFromFileEngine()
        {
            //Arrange
            var loggerController = new LoggerController();
            var engineLogger     = AppConstant.LogEngine.File;
            var assemblyName     = "FileLogger";
            var domainName       = "FileNewDomain";
            var logToSave        = new LoggerEntities.Log("LogType", "LogMessage");
            var methodToInvoke   = AppConstant.LogMethod.DoLog;

            loggerController.LoadAssembly(engineLogger, assemblyName, domainName);

            //Act
            loggerController.ProcessMethod(engineLogger, methodToInvoke, logToSave);

            //Assert
            Assert.IsTrue(logToSave.LogStatus.Equals(AppConstant.LogStatus.Saved));
        }
示例#3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnLogMessage_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                var isValid = DoLogValidations();
                if (!isValid)
                {
                    return;
                }

                var logMessage     = txtLogMessage.Text.Trim();
                var logEngineType  = cmbLoggerEngineTest.SelectedValue.ToString();
                var logMessageType = cmbLogMessageTypeTest.SelectedValue.ToString();
                var log            = new LoggerEntities.Log(logMessageType, logMessage);
                var methodToInvoke = AppConstant.LogMethod.DoLog;

                //Processing the Log regarding the LogEngine selected
                var wasAssemblyAlreadyLoaded = LoggerController.IsAlreadyLoaded(logEngineType);
                if (wasAssemblyAlreadyLoaded)
                {
                    LoggerController.ProcessMethod(logEngineType, methodToInvoke, log);
                }
                else
                {
                    MessageBox.Show(string.Format("The Assembly {0} is not loaded.", logEngineType));
                    return;
                }

                //Notifiying if the Log was successfully processed
                if (log.LogStatus.Equals(AppConstant.LogStatus.Saved))
                {
                    MessageBox.Show(string.Format("The Log was successfully Saved."), "Results");
                }
                else
                {
                    MessageBox.Show(string.Format("The Log was not Saved."), "Results");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(string.Format("Unable to Log: {0}", ex.Message));
            }
        }
示例#4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="loggerEngineType"></param>
        /// <param name="methodToInvoke"></param>
        /// <returns></returns>
        public bool ProcessMethod(string loggerEngineType, string methodToInvoke, LoggerEntities.Log logMessage)
        {
            ValidationUtil.CheckArgumentNull(loggerEngineType, "loggerEngineType");
            ValidationUtil.CheckArgumentNull(methodToInvoke, "methodToInvoke");
            ValidationUtil.CheckArgumentNull(logMessage, "logMessage");

            bool methodProcessed = true;

            try
            {
                if (!CurrentAssemblies.ContainsKey(loggerEngineType))
                {
                    return(false);
                }

                var assemblyToUse = CurrentAssemblies[loggerEngineType];

                //Getting the Logger component -- All assemblies (DatabaseLogger, FileLogger, ConsoleLogger) has the same Name
                Type type         = assemblyToUse.GetTypes().FirstOrDefault(typess => typess.Name == "Logger");
                var  totalMethods = type.GetMethods();
                var  loggerMethod = type.GetMethod(methodToInvoke);

                object classInstance    = Activator.CreateInstance(type, null);
                var    logMessageParams = new object[] { logMessage.LogType, logMessage.LogMessage };
                object result           = loggerMethod.Invoke(classInstance, logMessageParams);

                //The DoLog method in all assemblies should return a boolean
                methodProcessed = Convert.ToBoolean(result);

                //updating the status of the Log
                logMessage.LogStatus = methodProcessed ? AppConstant.LogStatus.Saved : AppConstant.LogStatus.Failed;
            }
            catch (Exception ex)
            {
                methodProcessed      = false;
                logMessage.LogStatus = AppConstant.LogStatus.Failed;
            }

            return(methodProcessed);
        }
示例#5
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="loggerEngineType"></param>
 /// <param name="method"></param>
 /// <param name="parameters"></param>
 public bool ProcessMethod(string loggerEngineType, string method, LoggerEntities.Log logMessage)
 {
     return(LoggerAssemblyManager.ProcessMethod(loggerEngineType, method, logMessage));
 }